什麼是 Multipath
一般電腦主機裡是由一個硬碟直接連到主機上, 這個情況下, 儲存裝置到主機只有單一路徑,
另一種情形是 儲存裝置到主機有多條路徑, 這就叫作 Multipath, 一般在外接 Storage 上較常看到
Multipath 一般常看到的是在 Storage 上有一個以上的 Controller 或是 供外部主機存取的介面, 這個情況下你會發現, 我在 Storage 上明明只切了一塊空間給主機, 但是再主機上卻看到兩個空間
另一種情形是 儲存裝置到主機有多條路徑, 這就叫作 Multipath, 一般在外接 Storage 上較常看到
Multipath 一般常看到的是在 Storage 上有一個以上的 Controller 或是 供外部主機存取的介面, 這個情況下你會發現, 我在 Storage 上明明只切了一塊空間給主機, 但是再主機上卻看到兩個空間
為什麼要用 Multipath ?
簡單來說就是可以提高可用性, 以上面的例子來說, 主機上看到的兩個空間其實是同一個東西, 但是因為路徑不同造成主機認為是兩個空間. 這個時候我們必須透過軟體來將兩個空間綁在一起
上面的例子, 主機看到兩個空間, 如果你要直接這樣用也是可以, 但是當你用的那個路徑剛好故障, 那你就必須手動去切換路徑, 若是你設定好 Multipath, 系統會幫你自動切換, 這也就是為什麼要作 Multipath 的原因
上面的例子, 主機看到兩個空間, 如果你要直接這樣用也是可以, 但是當你用的那個路徑剛好故障, 那你就必須手動去切換路徑, 若是你設定好 Multipath, 系統會幫你自動切換, 這也就是為什麼要作 Multipath 的原因
環境說明
OS:
CentOS 5.4 64bit
選擇這個OS只是因為遇到的客戶環境剛好是這個XD
選擇這個OS只是因為遇到的客戶環境剛好是這個XD
所需套件
CentOS 安裝時應該會自動安裝, 若沒有可執行以下指令:
yum –y install device-mapper device-mapper-multipath
yum –y install device-mapper device-mapper-multipath
指令與設定檔
Multipath 主要服務
/etc/init.d/multipathd
Multipath 主要設定檔
/etc/multipath.conf
最簡單的設定下, 只有兩個地方需要修改:
這個區塊是設定哪些裝置不作 Multipath, 預設的 devnode "*" 會把所有裝都列入不作 Multipath, 把他註解掉即可(前面加 #)
blacklist {
devnode "*"
}
這個區塊是作 Multipath 的設定, 把前面的註解移掉即可
#defaults {
# udev_dir /dev
# polling_interval 10
# selector "round-robin 0"
# path_grouping_policy multibus
# getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
# prio_callout /bin/true
# path_checker readsector0
# rr_min_io 100
# max_fds 8192
# rr_weight priorities
# failback immediate
# no_path_retry fail
# user_friendly_names yes
#}
設定完之後啟動服務
chkconfig multipathd on
service multipathd restart
使用 multipath -l 來檢視
mpath1 這個裝置是由 sdb sde 組成, 也就是說其實 sdb sde 是同一塊空間
後面的 NETAPP,LUN 代表這是 NETAPP上所切出來的 LUN, 依廠牌不同所看到資訊也會不同
[root@localhost etc]# multipath -l
mpath1 (360a98000503365705a34746d6b556a2f) dm-2 NETAPP,LUN
[size=10G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][active]
\_ 5:0:0:3 sdb 8:16 [active][undef]
\_ 5:0:1:3 sde 8:64 [active][undef]
使用 scsi_id 來檢視 sdb sde 的 wwid, wwid 相同代表為同一塊空間
[root@localhost etc]# scsi_id -g -u -s /block/sdb
360a98000503365705a34746d6b556a2f
[root@localhost etc]# scsi_id -g -u -s /block/sde
360a98000503365705a34746d6b556a2f
/etc/init.d/multipathd
Multipath 主要設定檔
/etc/multipath.conf
最簡單的設定下, 只有兩個地方需要修改:
這個區塊是設定哪些裝置不作 Multipath, 預設的 devnode "*" 會把所有裝都列入不作 Multipath, 把他註解掉即可(前面加 #)
blacklist {
devnode "*"
}
這個區塊是作 Multipath 的設定, 把前面的註解移掉即可
#defaults {
# udev_dir /dev
# polling_interval 10
# selector "round-robin 0"
# path_grouping_policy multibus
# getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
# prio_callout /bin/true
# path_checker readsector0
# rr_min_io 100
# max_fds 8192
# rr_weight priorities
# failback immediate
# no_path_retry fail
# user_friendly_names yes
#}
設定完之後啟動服務
chkconfig multipathd on
service multipathd restart
使用 multipath -l 來檢視
mpath1 這個裝置是由 sdb sde 組成, 也就是說其實 sdb sde 是同一塊空間
後面的 NETAPP,LUN 代表這是 NETAPP上所切出來的 LUN, 依廠牌不同所看到資訊也會不同
[root@localhost etc]# multipath -l
mpath1 (360a98000503365705a34746d6b556a2f) dm-2 NETAPP,LUN
[size=10G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][active]
\_ 5:0:0:3 sdb 8:16 [active][undef]
\_ 5:0:1:3 sde 8:64 [active][undef]
使用 scsi_id 來檢視 sdb sde 的 wwid, wwid 相同代表為同一塊空間
[root@localhost etc]# scsi_id -g -u -s /block/sdb
360a98000503365705a34746d6b556a2f
[root@localhost etc]# scsi_id -g -u -s /block/sde
360a98000503365705a34746d6b556a2f
裝置位置
/dev/mapper/
multipath 作出來的裝置會放在這個目錄下, 預設會使用 mpath1 mpath2 mpath3......
若你要使用這個裝置, 直接對他作 fdisk 即可
fdisk /dev/mapper/mpath1
要注意的是, 作出來的名字會變 mpath1p1 mpath1p2....等等, 不像一般作出來會像 sdb1 sdb2, 而是前面會多一個 p 代表 partition
另外 fdisk 完之後, 你必須重開機, 作出來的 partition 才能使用
若你要使用這個裝置, 直接對他作 fdisk 即可
fdisk /dev/mapper/mpath1
要注意的是, 作出來的名字會變 mpath1p1 mpath1p2....等等, 不像一般作出來會像 sdb1 sdb2, 而是前面會多一個 p 代表 partition
另外 fdisk 完之後, 你必須重開機, 作出來的 partition 才能使用
其它補充
1. 在還沒作 Multipath 之前, 使用 fdisk -l 會看到許多磁碟裝置, 但還算好檢視, 啟動 Multipath 後會出現更多裝置, 像是 dm-0 dm-1 等等, 若你在作 Multipath 之前就先作好 fdisk , 那再用 fdisk -l 的會看到更亂的資訊
因此建議千萬不要在之前就先切空間, 另外可以使用 multipath -l 來確認 multipath 的裝置
2. /etc/multipath.conf
blacklist 寫法如下, 一行一筆設定, 建議使用 wwid
blacklist {
# devnode "*"
devnode "^hd[a-z]"
wwid 360a98000503365705a34746d6c35424a
wwid 360a98000503365705a34746d6b413161
}
因此建議千萬不要在之前就先切空間, 另外可以使用 multipath -l 來確認 multipath 的裝置
2. /etc/multipath.conf
blacklist 寫法如下, 一行一筆設定, 建議使用 wwid
blacklist {
# devnode "*"
devnode "^hd[a-z]"
wwid 360a98000503365705a34746d6c35424a
wwid 360a98000503365705a34746d6b413161
}