2021-05-12 14:32:11
multipath多路徑實驗01-構建iSCSI模擬環境
跟同事網上閒聊技術,吐槽之前自己沒有設定過多路徑的經歷,雖然多路徑的設定過程很簡單,職責劃分也應是主機或儲存工程師來搞定,DBA只需要直接拿來用,但這樣總感覺少了些踏實感。
本著學習的心態,在虛擬環境下模擬,來做一個多路徑的實驗。
本文主要描述使用iscsi模擬儲存劃出的1個LUN,最終由兩條鏈路連線到主機,顯示為兩個磁碟的場景。為後續設定multipath提供前置環境。
•1.模擬主機環境
•2.準備軟體環境
•3.模擬儲存加盤
•4.設定iSCSI伺服器端
•5.設定iSCSI用戶端
1.模擬主機環境
首先虛擬一個linux伺服器,用作搭建iSCSI伺服器。然後用戶端直接就使用我之前的一套RAC環境的第1個節點,在這裡就相當於普普通通的一個iSCSI用戶端。
要求如下:
用戶端(192.168.56.150),需要新增設定兩塊網絡卡;
伺服器端(192.168.56.99),需要新增設定兩塊網絡卡.
這裡實際使用Virtual Box給每台機器新增兩個內部網路即可。
用戶端設定2塊網絡卡:
--複製現有網絡卡設定
[root@jyrac1 network-scripts]# cat ifcfg-eth3
DEVICE=eth3
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.11
NETMASK=255.255.255.0
[root@jyrac1 network-scripts]# cp ifcfg-eth3 ifcfg-eth4
[root@jyrac1 network-scripts]# cp ifcfg-eth3 ifcfg-eth5
--修改DEVICE名稱和IPADDR資訊,其他不變
eth4 10.10.1.150
eth5 10.10.2.150
--啟動新設定的兩塊網絡卡
ifup eth4
ifup eth5
這裡的eth4和eth5可以想象成是和儲存連線的內部網路。
伺服器端設定2塊網絡卡:
--複製現有網絡卡設定
[root@Storage network-scripts]# cat ifcfg-eth2
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.56.99
NETMASK=255.255.255.0
[root@Storage network-scripts]# cp ifcfg-eth2 ifcfg-eth3
[root@Storage network-scripts]# cp ifcfg-eth2 ifcfg-eth4
--修改DEVICE名稱和IPADDR資訊,其他不變
eth3 10.10.1.99
eth4 10.10.2.99
--啟動新設定的兩塊網絡卡
ifup eth3
ifup eth4
測試伺服器端和用戶端的IP互通沒問題。
2.準備軟體環境
各自安裝scsi相關的軟體包。
參照鳥哥的iSCSI搭建說明:
scsi-target-utils:用來將 Linux 系統模擬成為 iSCSI target 的功能;
iscsi-initiator-utils:掛載來自 target 的磁碟到 Linux 本機上。
這樣我們就知道伺服器端需要安裝scsi-target-utils這個包,用戶端需要安裝iscsi-initiator-utils這個包。
現在來直接yum安裝對應軟體,如果yum本地源設定有問題,可以參考之前文章:
設定yum本地源:http://www.cnblogs.com/jyzhao/p/3938290.html
--伺服器端
yum安裝scsi-target-utils
yum install scsi-target-utils
--用戶端
yum安裝iscsi-initiator-utils
yum install iscsi-initiator-utils
3.模擬儲存加盤
--伺服器端操作
填加一個50G的盤,實際就是用來模擬儲存新增實際的一塊盤。我這裡選擇固定大小儲存50G。
我這裡新增加的盤顯示為/dev/sdb,我將它建立成lvm,並先分出一個10g的lv,供後續使用。
[root@Storage ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
[root@Storage ~]# vgcreate vg_storage /dev/sdb
Volume group "vg_storage" successfully created
[root@Storage ~]# lvcreate -L 10g -n lv_lun1 vg_storage
Logical volume "lv_lun1" created
lvm的資訊:
[root@Storage ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_linuxbase lvm2 a-- 29.51g 0
/dev/sdb vg_storage lvm2 a-- 50.00g 40.00g
[root@Storage ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_linuxbase 1 2 0 wz--n- 29.51g 0
vg_storage 1 1 0 wz--n- 50.00g 40.00g
[root@Storage ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root vg_linuxbase -wi-ao---- 27.54g
lv_swap vg_linuxbase -wi-ao---- 1.97g
lv_lun1 vg_storage -wi-a----- 10.00g
[root@Storage ~]# lvscan
ACTIVE '/dev/vg_storage/lv_lun1' [10.00 GiB] inherit
ACTIVE '/dev/vg_linuxbase/lv_root' [27.54 GiB] inherit
ACTIVE '/dev/vg_linuxbase/lv_swap' [1.97 GiB] inherit
從上面LVM相關資訊的輸出可以看到,我這裡新建的lv已經是正常狀態,可以理解成為模擬儲存上劃分出的一個10g大小的LUN。
4.設定iSCSI伺服器端
iSCSI伺服器端主要組態檔:/etc/tgt/targets.conf
iSCSI 有一套自己分享 target 檔名的定義,基本上,藉由 iSCSI 分享出來的 target 檔名都是以 iqn 為開頭,意思是:『iSCSI Qualified Name (iSCSI 合格名稱)』的意思(註5)。那麼在 iqn 後面要接啥檔名呢?通常是這樣的:
iqn.yyyy-mm.
所以我這裡按照規範設定的名稱,新增好如下設定:
<target iqn.2017-07.com.cnblogs.jyzhao:alfreddisk>
backing-store /dev/vg_storage/lv_lun1 # Becomes LUN 1
</target>
設定完成後,就啟動服務和設定開機自啟動:
[root@Storage ~]# service tgtd start
Starting SCSI target daemon: [ OK ]
[root@Storage ~]# chkconfig tgtd on
[root@Storage ~]# chkconfig --list|grep tgtd
tgtd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@Storage ~]# service tgtd status
tgtd (pid 1763 1760) is running...
然後查詢下相關的資訊,比如占用的埠、LUN資訊(Type:disk):
[root@Storage ~]# netstat -tlunp |grep tgt
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 1760/tgtd
tcp 0 0 :::3260 :::* LISTEN 1760/tgtd
[root@Storage ~]# tgt-admin --show
Target 1: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 10737 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/vg_storage/lv_lun1
Backing store flags:
Account information:
ACL information:
ALL
5.設定iSCSI用戶端
確認開機啟動項設定開啟:
[root@jyrac1 ~]# chkconfig --list|grep scsi
iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off
iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
使用iscsiadm命令掃描伺服器端的LUN
iscsiadm -m discovery -t sendtargets -p 10.10.1.99
--報錯
[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.1.99
[ OK ] iscsid: [ OK ]
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: cannot make connection to 10.10.1.99: No route to host
iscsiadm: connection login retries (reopen_max) 5 exceeded
iscsiadm: Could not perform SendTargets discovery: encountered connection failure
[root@jyrac1 ~]#
--ping可以通
[root@jyrac1 ~]# ping 10.10.1.99
PING 10.10.1.99 (10.10.1.99) 56(84) bytes of data.
64 bytes from 10.10.1.99: icmp_seq=1 ttl=64 time=0.789 ms
64 bytes from 10.10.1.99: icmp_seq=2 ttl=64 time=0.536 ms
^C
--- 10.10.1.99 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1073ms
rtt min/avg/max/mdev = 0.536/0.662/0.789/0.129 ms
上面這個報錯是因為scsi伺服器端的主機防火牆沒有關閉,埠受到限制,關閉防火牆後,再嘗試,就可以正常發現如下內容:
[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.1.99
10.10.1.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
[root@jyrac1 ~]# iscsiadm -m discovery -t sendtargets -p 10.10.2.99
10.10.2.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
檢視/var/lib/iscsi/nodes/下的檔案:
[root@jyrac1 ~]# ll -R /var/lib/iscsi/nodes/
/var/lib/iscsi/nodes/:
total 4
drw------- 4 root root 4096 Jul 18 12:13 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk:
total 8
drw------- 2 root root 4096 Jul 18 12:12 10.10.1.99,3260,1
drw------- 2 root root 4096 Jul 18 12:13 10.10.2.99,3260,1
/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/10.10.1.99,3260,1:
total 4
-rw------- 1 root root 1822 Jul 18 12:12 default
/var/lib/iscsi/nodes/iqn.2017-07.com.cnblogs.jyzhao:alfreddisk/10.10.2.99,3260,1:
total 4
-rw------- 1 root root 1822 Jul 18 12:13 default
檢視iscsiadm -m node
[root@jyrac1 ~]# iscsiadm -m node
10.10.2.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
10.10.1.99:3260,1 iqn.2017-07.com.cnblogs.jyzhao:alfreddisk
iscsiadm -m node -T target名稱 --login
iscsiadm -m node -T iqn.2017-07.com.cnblogs.jyzhao:alfreddisk --login
[root@jyrac1 ~]# iscsiadm -m node -T iqn.2017-07.com.cnblogs.jyzhao:alfreddisk --login
Logging in to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.2.99,3260] (multiple)
Logging in to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.1.99,3260] (multiple)
Login to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.2.99,3260] successful.
Login to [iface: default, target: iqn.2017-07.com.cnblogs.jyzhao:alfreddisk, portal: 10.10.1.99,3260] successful.
最後查詢 fdisk -l結果:
省略之前無關內容...
Disk /dev/sdi: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdj: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
發現通過兩條鏈路(10.10.1.*和10.10.2.*),已經正常識別到兩個大小為10G的磁碟,而實際上這兩個磁碟對應到儲存上的一個底層LUN。
這其實就是多路徑。後續我會再根據這個環境測試multipath(Linux自帶的多路徑軟體)的使用。
重新啟動主機測試,這兩個磁碟資訊依然存在,說明iSCSI的設定沒有問題。
multipath多路徑實驗02-設定多路徑軟體 見 https://www.linuxidc.com/Linux/2018-10/154929.htm
相關文章