搭建iscsi網絡磁盤

前言
傳統存儲分類:
1,DAS技術(直連存儲)
將存儲設備通過scsi接口或光線通道直接連接到計算機上
不能實現數據與其他主機的共享
佔用服務器操作系統資源,如cpu,io等
數據量越大,性能越差

2,NAS技術(文件系統存儲)
Network-Attached Storage
常見應用:samba,nfs
網絡存儲,提供文件系統的共享
提示:磁盤(塊設備)->分區(塊設備)->格式化(xfs,ext4,ntfs)(文件系統)
一種專用的數據存儲服務器,以數據爲中心,將存儲設備與服務器徹底分離,集中管理數據,從而釋放帶寬,提高性能,降低總成本,保護投資
用戶通過tcp/ip協議訪問數據--採用標準的nfs/http/cifs等

3,SAN技術(塊存儲)
Storage Area Network
常見應用:iscsi
網絡存儲,塊存儲ethernet(以太網,雙絞線連接),fc(光線)
通過光線交換機,光線路由器,光線集線器等設備將磁盤陣列,磁帶等存儲設備與相關服務器連接起來,形成高速專用網絡

一 實驗環境
proxy:
ip:192.168.2.5 192.168.4.5

web1:
ip:192.168.2.10 192.168.4.10

二 單路徑ISCSI搭建
服務端:
1,安裝軟件
[root@proxy ~]# yum -y install targetcli
[root@proxy ~]# yum info targetcli

2,非交互分區
[root@proxy rules.d]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 20G 0 disk
[root@proxy ~]# parted /dev/vdb mklabel gpt
[root@proxy ~]# parted /dev/vdb mkpart primary 1 100%

3,使用targetcli定義後端存儲
[root@proxy ~]# targetcli
/> ls                   #查看配置信息
/> backstores/block create store /dev/vdb1 #使用targetcli定義後端存儲
備註:store爲任意名稱
/> /iscsi create iqn.2018-01.cn.tedu:server1  #創建iqn對象
/>iscsi/iqn.2018-01.cn.tedu:server1/tpg1/luns create /backstores/block/store
#綁定存儲,#注意:block後面的store必須與前面步驟2定義後端存儲create創建的名稱一致。
/> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/acls create iqn.2018-01.cn.tedu:client1      #授權客戶機訪問
/> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/portals/ create 0.0.0.0 #默認本機任意ip
/> saveconfig
/> exit      #存儲綁定服務監聽的地址,並保存配置
[root@proxy ~]# systemctl start target #開啓iscsi
[root@proxy ~]# systemctl enable target     #設置開機自啓
[root@proxy ~]# ss -utlnp | grep :3260      #查看是否啓動成功
[root@proxy ~]# systemctl stop firewalld      #關閉防火牆
[root@proxy ~]# setenforce 0           #設置selinux爲寬鬆模式

客戶端:
1,客戶端安裝軟件
[root@web1 ~]# yum -y install iscsi-initiator-utils

2,設置本機的iqn名稱
[root@web1 ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-01.cn.tedu:client
注意:必須跟服務器上配置的ACL一致!
[root@web1 ~]# systemctl restart iscsid iscsid是守護進程
[root@web1 ~]# systemctl enable iscsid
3,發現遠程target存儲
提示:參考man iscsiadm! /example搜索
[root@web1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover #發現磁盤
[root@web1 ~]# iscsiadm --mode node --targetname iqn.2018-01.cn.tedu:server1 --portal 192.168.2.5:3260 --login  #連接磁盤,可不操作(重啓iscsi即可)

4,客戶端掛載iSCSI共享
[root@web1 ~]# systemctl restart iscsi #iscsi用於自動login遠程存儲
[root@web1 ~]# systemctl enable iscsi
[root@web1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk            #此處是發先的網絡共享磁盤
sr0 11:0 1 1024M 0 rom
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
vda 252:0 0 20G 0 disk

5,分區、格式化、掛載
[root@web1 ~]# parted /dev/sda mklabel gpt        #設置分區爲gpt模式
[root@web1 ~]# parted /dev/sda mkpart primary 1 10G    #分10G
[root@web1 ~]# mkfs.xfs /dev/sda1             #格式化分區爲xfs格式
[root@web1 ~]# mount /dev/sda1 /mnt           #掛載使用
[root@web1 ~]# umount /mnt               #卸載

注意:不上傳,不寫入數據,不能多臺主機同時掛載同一個iscsi服務
   要是隻是(僅僅)共享數據,可以多臺主機同時掛載同一個iscsi服務

三 部署Multipath多路徑環境
通過Multipath,實現以下目標:
  在共享存儲服務器上配置iSCSI,爲應用服務器共享存儲空間
  應用服務器上配置iSCSI,發現遠程共享存儲
  應用服務器上配置Multipath,將相同的共享存儲映射爲同一個名稱
搭建iscsi網絡磁盤

服務器:
服務端與步驟二搭建的一樣

客戶端:
1,前面的步驟,步驟二已經完成了,這裏只需要發現存儲服務器的共享磁盤
因爲有兩條鏈路都可以連接到共享存儲,所以需要在兩條鏈路上都發現它。
注意:兩次發現使用的IP地址不同!
[root@web1 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover
192.168.4.5:3260,1 iqn.2018-01.cn.tedu:client1   #前面用的是192.168.2.5,此處用的是192.168.4.5

2,登陸共享存儲
[root@web1 ~]# systemctl restart iscsi
[root@web1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 20G 0 part
sdb 8:0 0 20G 0 disk
├─sdb1 8:1 0 20G 0 part
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
提示:登陸的是同一個服務器的同一個iSCSI,但客戶端看到的是兩個獨立的設備,sda和sdb。其實,這兩個設備是同一個設備。

3,配置Multipath多路徑
1)安裝多路徑軟件包
[root@web1 ~]# yum list | grep multipath     #列出相關軟件包,非必須操作
device-mapper-multipath.x86_64 0.4.9-111.el7 Server
device-mapper-multipath-libs.i686 0.4.9-111.el7 Server
device-mapper-multipath-libs.x86_64 0.4.9-111.el7 Server
[root@web1 ~]# yum install -y device-mapper-multipath  #安裝軟件包

2)生成配置文件
[root@web1 ~]# cd /usr/share/doc/device-mapper-multipath-0.4.9/
[root@web1 ~]# ls multipath.conf
[root@web1 ~]# cp multipath.conf /etc/multipath.conf     #拷貝配置文件到/etc目錄下才生效

3)獲取wwid
登陸共享存儲後,系統多了兩塊硬盤,這兩塊硬盤實際上是同一個存儲設備。應用服務器使用哪個都可以,但是如果使用sdb時,sdb對應的鏈路出現故障,它不會自動切換到sda。
爲了能夠實現系統自動選擇使用哪條鏈路,需要將這兩塊磁盤綁定爲一個名稱。
通過磁盤的wwid來判定哪些磁盤是相同的。
[root@web1 ~]# /usr/lib/udev/scsi_id --whitelisted --device=/dev/sdb        #磁盤路徑看情況來寫
36001405e80f94c806f94df18360c4454                     #記住這個id

4)修改配置文件
[root@web1 ~]# vim /etc/multipath.conf
defaults {
user_friendly_names yes
find_multipaths yes
}
然後在文件的最後加入多路徑聲明,如果哪個存儲設備的wwid和第(3)步獲取的wwid一樣,那麼,爲其取一個別名,叫mpatha。
multipaths {
multipath {
wwid "360014059e8ba68638854e9093f3ba3a0"     #打開相應註釋,寫入id
alias mpatha                      #寫入別名
}
}

4)啓用Multipath多路徑
[root@web1 ~]# systemctl start multipathd
[root@web1 ~]# systemctl enable multipathd

5)檢查多路徑設備文件
如果多路長設置成功,那麼將在/dev/mapper下面生成名爲mpatha的設備文件:
[root@web1 ~]# ls /dev/mapper/
control mpatha mpatha1
[root@web1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
└─mpatha 253:2 0 20G 0 mpath
└─mpatha1 253:3 0 9.3G 0 part  #由於在前面我分區10G並格式化文件系統了,所以出現mpatha1
sdb 8:16 0 20G 0 disk
└─mpatha 253:2 0 20G 0 mpath
└─mpatha1 253:3 0 9.3G 0 part #由於在前面我分區10G並格式化文件系統了,所以出現mpatha1
sr0 11:0 1 1024M 0 rom
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]

4,驗證多路徑
1)查看多路徑,sda和sdb都是running狀態
[root@web1 ~]# multipath -rr
reload: mpatha (360014059e8ba68638854e9093f3ba3a0) undef LIO-ORG ,store
size=9.3G features='0' hwhandler='0' wp=undef
|-+- policy='service-time 0' prio=1 status=undef
| - 2:0:0:0 sda 8:0 active ready running<br/>|-+- policy='service-time 0' prio=1 status=undef
| `- 3:0:0:0 sdb 8:16 active ready running

2)關閉某個鏈路後,再次查看效果,此時會發現sdb爲運行失敗狀態
[root@web1 ~]# nmcli connection down eth1
[root@web1 ~]# multipath -rr
reject: mpatha (360014059e8ba68638854e9093f3ba3a0) undef LIO-ORG ,store
size=9.3G features='0' hwhandler='0' wp=undef
|-+- policy='service-time 0' prio=0 status=undef
| `- 2:0:0:0 sda 8:0 active undef running

四 注意事項

提示:首先保證sda,sdb沒有進行任何掛載,否則多路經multipath操作最後將掛載不上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章