使用mpath設備
用multipath生成映射後,會在/dev目錄下產生多個指向同一條鏈路的設備:
/dev/mapper/mpathn
/dev/mpath/mpathn
/dev/dm-n
但它們的來源是完全不同的:
/dev/mapper/mpathn 是multipath虛擬出來的多路徑設備,我們應該使用這個設備;
/dev/mpath/mpathn 是udev設備管理器創建的,實際上就是指向下面的dm-n設備,僅為了方便,不能用來掛載;
/dev/dm-n 是軟件內部自身使用的,不能被軟件以外使用,不可掛載。
簡單來說,就是我們應該使用/dev/mapper/下的設備符。對該設備即可用fdisk進行分區,或創建為pv。
測試multpath路徑
然後用iostat觀察各通道的流量和狀態,以判斷Failover或負載均衡方式是否正常:
# dd if=/dev/zero of=/dev/mapper/mpath0
# iostat -k 2
容錯模式:
mpath18設備讀寫時,sdaf、sdv會處於active狀態,都有數據流,但sdb、sdl組成的鏈路是enabled,作為ready情況。這為Failover(主備)情況
修改多路徑模式
默認情況下,multipath已經支持大部分常見的存儲型號(可見multipath.conf.defaults),但不同的multipath版本可能都有些不同。這時,建議參考存儲的官方文檔:
在前面的配置中,我們已經在/etc/mulitpah.conf中配置了多路徑的默認path_grouping_policy為multibus。但有時候,同一台機器上如果連接了一個以上的存儲時,可能默認規則並不完全適用。這時,我們可以給特定的存儲定制多路徑符合的策略。
devices {
device {
vendor "HITACHI" //廠商名稱
product "OPEN-V" //產品型號
path_grouping_policy group_by_prio //默認的路徑組策略
path_grouping_policy failover
#getuid_callout "/sbin/scsi_id -p 0x80-g -u -s /block/%n" //獲得唯一設備號使用的默認程序
path_checker readsector0 //決定路徑狀態的方法
path_checker tur
path_selector "round-robin 0" //選擇那條路徑進行下一個IO操作的方法
prio_callout "/sbin/mpath_prio_alua/dev/%n" //獲取有限級數值使用的默認程序
failback immediate //故障恢復的模式
#hardware_handler "0" //確認用來在路徑切換和IO錯誤時,執行特定的操作的模塊。
#no_path_retry queue //在disablequeue之前系統嘗試使用失效路徑的次數的數值
#rr_min_io 100 //在當前的用戶組中,在切換到另外一條路徑之前的IO請求的數目
}
}
※千萬不要寫錯path_checker(可能值有:readsector0, tur, emc_clariion, hp_sw, directio)。不清楚的,可從存儲的官方資料查看
本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/
排錯過程
# multipath -v3 -ll
# dmsetup ls
# multipathd -k
> > show config
> >reconfigure
> >show paths
> > CTRL-D
/var/lib/multipath/bindings
/dev/mapper/
# cat /sys/block/sda/device/vendor
# cat /sys/block/sda/device/model
※注意:
/var/lib/multipath/bindings顯示的內容包括黑名單中的wwid,其mpathn順序與multipath-ll的結果可能不同。實際以multipath -ll 的結果為可用設備。
路徑切換處理
自定義設備
※注意:1、綁定後,需重新生成路徑的映射表;2、當加入該wwid綁定後,沒有綁定的設備將不能使用,用-ll也無法看到這些設備,但/var/lib/multipath/bindings 中可見。
啟動服務和生成映
# modprobe dm-multipath
# service multipathd start
# multipath -v0
更新config文件
在您更新/etc/multipath.conf文件後,您必須手動讓m ultipathd 守護進程重新載入該文件。以下命令可重新載入更新的/etc/multipath.conf 文件。
# servicemultipathd reload
作者:csdn博客 徐長亮