一、安裝部署
1、前言
普通的電腦主機都是一個硬盤掛接到一個總線上,這里是一對一的關系。而到了有光纖組成的SAN環境,或者由iSCSI組成的IPSAN環境,由於主機和存儲通過了光纖交換機或者多塊網卡及IP來連接,這樣的話,就構成了多對多的關系。也就是說,主機到存儲可以有多條路徑可以選擇。主機到存儲之間的IO由多條路徑可以選擇。每個主機到所對應的存儲可以經過幾條不同的路徑,如果是同時使用的話,I/O流量如何分配?其中一條路徑壞掉了,如何處理?還有在操作系統的角度來看,每條路徑,操作系統會認為是一個實際存在的物理盤,但實際上只是通向同一個物理盤的不同路徑而已,這樣是在使用的時候,就給用戶帶來了困惑。多路徑軟件就是為了解決上面的問題應運而生的。
多路徑的主要功能就是和存儲設備一起配合實現如下功能:
- 故障的切換和恢復
- IO流量的負載均衡
- 磁盤的虛擬化
為了主機可以使用 iSCSI 多路徑訪問存儲設備,我們需要在主機上安裝多路徑設備映射器 (DM-Multipath)。多路徑設備映射器可以實現主機節點和后端存儲之間的多個 I/O 路徑配置為一個單一邏輯設備,從而可以提供鏈路冗余和提高性能。主機通過訪問包含多個 I/O 路徑的邏輯設備,就可以有效提高后端存儲系統的可靠性。
2、部署說明
節點主機名 | 節點IP | 角色 | 系統版本 |
---|---|---|---|
node230 | 66.66.66.230 | mon、osd | CentOS7.2 |
node231 | 66.66.66.231 | mon、mds、osd、target | CentOS7.2 |
node232 | 66.66.66.232 | mon、mds、osd、target | CentOS7.2 |
本次示例由分布式存儲提供一個1TB大小的rbd(lun01),通過node231、node232分別創建一個target服務共享lun01出去,客戶端node220通過iscsi分別與node231、node232建立連接
注:以下操作均在initiator端node220節點下執行
2.1、initiator與target建立連接
node220節點分別通過節點node231、node232與lun01建立連接,映射到本地磁盤下
lun01通過node231、node232兩個節點兩條鏈路映射到node220節點下,映射盤符為sdc和sdd
[root@node220 ~]# iscsiadm -m discovery -t st -p 66.66.66.231
66.66.66.231:3260,1 iqn.vcluster.com:target01
[root@node220 ~]# iscsiadm -m discovery -t st -p 66.66.66.232
66.66.66.232:3260,1 iqn.vcluster.com:target01
[root@node220 ~]# iscsiadm -m node -T iqn.vcluster.com:target01 --login
Logging in to [iface: default, target: iqn.vcluster.com:target01, portal: 66.66.66.231,3260] (multiple)
Logging in to [iface: default, target: iqn.vcluster.com:target01, portal: 66.66.66.232,3260] (multiple)
Login to [iface: default, target: iqn.vcluster.com:target01, portal: 66.66.66.231,3260] successful.
Login to [iface: default, target: iqn.vcluster.com:target01, portal: 66.66.66.232,3260] successful.
[root@node220 ~]# iscsiadm -m node ll
66.66.66.231:3260,1 iqn.vcluster.com:target01
66.66.66.232:3260,1 iqn.vcluster.com:target01
[root@node220 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223.6G 0 disk
└─md126 9:126 0 212.4G 0 raid1
├─md126p1 259:0 0 200M 0 md /boot/efi
├─md126p2 259:1 0 500M 0 md /boot
└─md126p3 259:2 0 211.7G 0 md
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 4G 0 lvm [SWAP]
└─centos-home 253:2 0 157.7G 0 lvm /home
sdb 8:16 0 223.6G 0 disk
└─md126 9:126 0 212.4G 0 raid1
├─md126p1 259:0 0 200M 0 md /boot/efi
├─md126p2 259:1 0 500M 0 md /boot
└─md126p3 259:2 0 211.7G 0 md
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 4G 0 lvm [SWAP]
└─centos-home 253:2 0 157.7G 0 lvm /home
sdc 8:32 0 1T 0 disk
sdd 8:48 0 1T 0 disk
2.2、multipath配置
- 安裝multipath軟件
[root@node220 ~]# yum install -y device-mapper-multipath
[root@node220 ~]# rpm -qa | grep multipath
device-mapper-multipath-0.4.9-123.el7.x86_64
device-mapper-multipath-libs-0.4.9-123.el7.x86_64
- 生成multipath配置
執行命令mpathconf --enable
,在/etc目錄下生成配置文件multipath.conf
[root@node220 ~]# mpathconf --enable
- 修改multipath配置
修改配置文件/etc/mulipath.conf信息如下,之后執行命令systemctl restart multipathd
重啟服務
[root@node220 ~]# cat /etc/multipath.conf defaults { user_friendly_names yes }
設置黑名單列表,示例環境sda、sdb磁盤為系統RAID盤,故而排除
blacklist {
devnode "^sd[a-b]"
}multipaths {
multipath {
path_grouping_policy multibus
#path_checker readsector0
prio "random"
path_selector "round-robin 0"
}
}devices {
device {
vendor "vcluster"
product "12.2.12"
path_checker readsector0
path_selector "round-robin 0"
failback immediate
no_path_retry fail
}
}
[root@node220 ~]# systemctl restart multipathd
- 查看multipath狀態
此時本地可以看到新增的虛擬磁盤/dev/mapper/mpathc
,該虛擬磁盤通過兩條iscsi路徑提供,當前配置為主備模式(同一時刻只有一條路徑處於活動狀態,可寫入數據)
[root@node220 ~]# multipath -ll mpathc (360000000000000000e00000000150001) dm-3 vcluster,VIRTUAL-DISK size=1.0T features='0' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=1 status=enabled | `- 45:0:0:1 sdc 8:32 active ready running `-+- policy='service-time 0' prio=1 status=active `- 46:0:0:1 sdd 8:48 active ready running
[root@node220 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223.6G 0 disk
└─md126 9:126 0 212.4G 0 raid1
├─md126p1 259:0 0 200M 0 md /boot/efi
├─md126p2 259:1 0 500M 0 md /boot
└─md126p3 259:2 0 211.7G 0 md
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 4G 0 lvm [SWAP]
└─centos-home 253:2 0 157.7G 0 lvm /home
sdb 8:16 0 223.6G 0 disk
└─md126 9:126 0 212.4G 0 raid1
├─md126p1 259:0 0 200M 0 md /boot/efi
├─md126p2 259:1 0 500M 0 md /boot
└─md126p3 259:2 0 211.7G 0 md
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 4G 0 lvm [SWAP]
└─centos-home 253:2 0 157.7G 0 lvm /home
sdc 8:32 0 1T 0 disk
└─mpathc 253:3 0 1T 0 mpath
sdd 8:48 0 1T 0 disk
└─mpathc 253:3 0 1T 0 mpath[root@node220 ~]# cat /proc/partitions
major minor #blocks name
8 16 234431064 sdb
8 0 234431064 sda
9 126 222715904 md126
259 0 204800 md126p1
259 1 512000 md126p2
259 2 221997056 md126p3
253 0 52428800 dm-0
253 1 4194304 dm-1
253 2 165310464 dm-2
8 32 1073741824 sdc
8 48 1073741824 sdd
253 3 1073741824 dm-3
2.3、multipath驗證
驗證multipath效果,看能否實現活動路徑故障,備用路徑接管寫入的效果
- 將多路徑設備
/dev/mapper/mpathc
掛載到本地目錄/client
下,通過vdbench持續讀寫數據
查看multipath主鏈路為node232節點,映射磁盤為/dev/sdd
- 停止multipath主鏈路node232節點的target服務,客戶端讀寫未出現中斷情況
此時multipath主鏈路切換至node231節點下
查看multipath狀態,主鏈路切換至node231節點下
查看/var/log/messages日志打印,multipath檢測到sdd磁盤異常,標記為fail狀態,當前鏈路數為1
查看磁盤流量,此時磁盤讀寫流量切換至sdc磁盤下
當恢復node232節點target服務之后,node232節點重新加入到multipath備鏈路下
二、常用操作
1、常用命令
- 加載內核模塊: modprobe dm-multipath; modprobe dm-round-robin
- 刷新所有多路徑配置: multipath -F
- 查看多路徑: multipath -ll