1. 程式人生 > >搭建iscsi網路磁碟

搭建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,安裝軟體
[[email protected] ~]# yum -y install targetcli
[[email protected]

~]# yum info targetcli

2,非互動分割槽
[[email protected] 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
[[email protected]

~]# parted /dev/vdb mklabel gpt
[[email protected] ~]# parted /dev/vdb mkpart primary 1 100%

3,使用targetcli定義後端儲存
[[email protected] ~]# 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      #儲存繫結服務監聽的地址,並儲存配置
[[email protected] ~]# systemctl start target #開啟iscsi
[[email protected] ~]# systemctl enable target     #設定開機自啟
[[email protected] ~]# ss -utlnp | grep :3260      #檢視是否啟動成功
[[email protected] ~]# systemctl stop firewalld      #關閉防火牆
[[email protected] ~]# setenforce 0           #設定selinux為寬鬆模式

客戶端:
1,客戶端安裝軟體
[[email protected] ~]# yum -y install iscsi-initiator-utils

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

4,客戶端掛載iSCSI共享
[[email protected] ~]# systemctl restart iscsi #iscsi用於自動login遠端儲存
[[email protected] ~]# systemctl enable iscsi
[[email protected] ~]# 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,分割槽、格式化、掛載
[[email protected] ~]# parted /dev/sda mklabel gpt        #設定分割槽為gpt模式
[[email protected] ~]# parted /dev/sda mkpart primary 1 10G    #分10G
[[email protected] ~]# mkfs.xfs /dev/sda1             #格式化分割槽為xfs格式
[[email protected] ~]# mount /dev/sda1 /mnt           #掛載使用
[[email protected] ~]# umount /mnt               #解除安裝

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

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

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

客戶端:
1,前面的步驟,步驟二已經完成了,這裡只需要發現儲存伺服器的共享磁碟
因為有兩條鏈路都可以連線到共享儲存,所以需要在兩條鏈路上都發現它。
注意:兩次發現使用的IP地址不同!
[[email protected] ~]# 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,登陸共享儲存
[[email protected] ~]# systemctl restart iscsi
[[email protected] ~]# 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)安裝多路徑軟體包
[[email protected] ~]# 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
[[email protected] ~]# yum install -y device-mapper-multipath  #安裝軟體包

2)生成配置檔案
[[email protected] ~]# cd /usr/share/doc/device-mapper-multipath-0.4.9/
[[email protected] ~]# ls multipath.conf
[[email protected] ~]# cp multipath.conf /etc/multipath.conf     #拷貝配置檔案到/etc目錄下才生效

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

4)修改配置檔案
[[email protected] ~]# 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多路徑
[[email protected] ~]# systemctl start multipathd
[[email protected] ~]# systemctl enable multipathd

5)檢查多路徑裝置檔案
如果多路長設定成功,那麼將在/dev/mapper下面生成名為mpatha的裝置檔案:
[[email protected] ~]# ls /dev/mapper/
control mpatha mpatha1
[[email protected] ~]# 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狀態
[[email protected] ~]# 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為執行失敗狀態
[[email protected] ~]# nmcli connection down eth1
[[email protected] ~]# 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操作最後將掛載不上