版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、什么是 multipath 普通的電腦主機(jī)都是一個(gè)硬盤(pán)掛接到一個(gè)總線上,這里是一對(duì)一的關(guān)系。而到了有光纖組 成的SA環(huán)境,由于主機(jī)和存儲(chǔ)通過(guò)了光纖交換機(jī)連接,這樣的話,就構(gòu)成了多對(duì)多的關(guān)系。也就是說(shuō),主機(jī)到存儲(chǔ)可以有多條路徑可以選擇。主機(jī)到存儲(chǔ)之間的10由多條路徑可以選擇。既然,每個(gè)主機(jī)到所對(duì)應(yīng)的存儲(chǔ)可以經(jīng)過(guò)幾條不同的路徑,如果是同時(shí)使用的話,I/0 流量如何分配?其中一條路徑壞掉了,如何處理?還有在操作系統(tǒng)的角度來(lái)看,每條路徑,操 作系統(tǒng)會(huì)認(rèn)為是一個(gè)實(shí)際存在的物理盤(pán), 但實(shí)際上只是通向同一個(gè)物理盤(pán)的不同路徑而已, 這樣是在使用的時(shí)候,就給用戶帶來(lái)了困惑。多路徑軟件就是為了解決上面的問(wèn)題應(yīng)
2、運(yùn)而 生的。多路徑的主要功能就是和存儲(chǔ)設(shè)備一起配合實(shí)現(xiàn)如下功能:1. 故障的切換和恢復(fù)2. I0 流量的負(fù)載均衡3. 磁盤(pán)的虛擬化二、為什么使用 multipath 由于多路徑軟件是需要和存儲(chǔ)在一起配合使用的,不同的廠商基于不同的操作系統(tǒng),都提 供了不同的版本。并且有的廠商,軟件和硬件也不是一起賣(mài)的,如果要使用多路徑軟件的 話,可能還需要向廠商購(gòu)買(mǎi)license才行。比如EMC公司基于linux下的多路徑軟件,就需要 單獨(dú)的購(gòu)買(mǎi) license 。其中,EMC提供的就是PowerPath,HDSI供的就是HDLM更多的存儲(chǔ)廠商提供的軟件,可參 考這里。當(dāng)然,使用系統(tǒng)自帶的免費(fèi)多路徑軟件包,同時(shí)
3、也是一個(gè)比較通用的包,可以支持大多數(shù) 存儲(chǔ)廠商的設(shè)備,即使是一些不是出名的廠商,通過(guò)對(duì)配置文件進(jìn)行稍作修改,也是可以 支持并運(yùn)行的很好的。% 請(qǐng)與IBM的RDAC Qlogic的failover驅(qū)動(dòng)區(qū)分開(kāi),它們都僅提供了 Failover的功能,不 支持Load Bala nee負(fù)載均衡 方式。但multipath根據(jù)選擇的策略不同,可支持多種方式,如: Failover 、Multipath 等。Failover 的功能解釋?zhuān)和ㄋ椎卣f(shuō),即當(dāng) A 無(wú)法為客戶服務(wù)時(shí),系統(tǒng)能夠自動(dòng)地切換,使B 能夠及時(shí)地頂上繼續(xù)為客戶提供服務(wù),且客戶感覺(jué)不到這個(gè)為他提供服務(wù)的對(duì)象已經(jīng)更換。這里的A和B可以存在于各
4、種領(lǐng)域,但一般 fail-over 特指計(jì)算機(jī)領(lǐng)域的數(shù)據(jù)庫(kù)、應(yīng)用服務(wù)、硬件設(shè) 備等的失效轉(zhuǎn)移。三、multipath 的組成我這里以紅帽x86_64為例,雖然版本比較老,但下面的配置方式基本適用后面的所有版本。引用# cat /etc/redflag-releaseRed Flag DC Server release 5.0 (Trinity SP2)# uname -aLinux localhost.localdomain 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009x86_64 x86_64 x86_64 GNU/Linux# rpm
5、 -qa|grep devicedevice-mapper-event-1.02.32-1.el5device-mapper-1.02.32-1.el5device-mapper-multipath-0.4.7-30.el5device-mapper-1.02.32-1.el5 這些是需要安裝的安裝包,如果沒(méi)有安裝需要到安裝光盤(pán)中# rpm -ivh device-mapper-*將以上這些包全部安裝# chkconfig -list |grep multipathmultipathd0:關(guān)閉 1:關(guān)閉 2:關(guān)閉 3:關(guān)閉 4:關(guān)閉5:關(guān)閉 6:關(guān)閉# chkconfig multipathd
6、 on可見(jiàn),一套完整的 multipath 由下面幾部分組成:1. device-mapper-multipath提供 multipathd 和 multipath 等工具和 multipath.conf 等配置文件。這些工具通過(guò) device mapper的ioctr的接口創(chuàng)建和配置 multipath 設(shè)備(調(diào)用device-mapper的用戶空間庫(kù)。創(chuàng)建 的多路徑設(shè)備會(huì)在 /dev/mapper 中);2. device-mapperdevice-mapper 包括兩大部分:內(nèi)核部分和用戶部分。內(nèi)核部分由 device-mapper 核心( multipath.ko )和一些 targe
7、t driver ( dm-multipath.ko ) 構(gòu)成。dm-mod.ko是實(shí)現(xiàn)multipath 的基礎(chǔ),dm-multipath 其實(shí)是dm的個(gè)target驅(qū)動(dòng)。核心完成設(shè)備的映射,而 target 根據(jù)映射關(guān)系和自身特點(diǎn)具體處理從 mappered device 下來(lái) 的i/o。同時(shí),在核心部分,提供了一個(gè)接口,用戶通過(guò)ioctr可和內(nèi)核部分通信,以指導(dǎo)內(nèi)核驅(qū)動(dòng)的行為,比如如何創(chuàng)建mappered device,這些device的屬性等。用戶空間部分包括device-mapper這個(gè)包。其中包括dmsetup工具和一些幫助創(chuàng)建和配置 mappered device 的庫(kù)。這些庫(kù)主
8、要抽象,封裝了與 ioctr 通信的接口,以便方便創(chuàng)建和配 置mappered device。device-mapper-multipath的程序中就需要調(diào)用這些庫(kù);3. scsi_id其包含在udev程序包中,可以在 multipath.conf中配置該程序來(lái)獲取scsi設(shè)備的序號(hào)。通過(guò)序號(hào),便可以判斷多個(gè)路徑對(duì)應(yīng)了同一設(shè)備。這個(gè)是多路徑實(shí)現(xiàn)的關(guān)鍵。scsi_id 是通過(guò)sg驅(qū)動(dòng),向設(shè)備發(fā)送 EVPDpage80或page83的in query命令來(lái)查詢scsi設(shè)備的標(biāo)識(shí)。但一些 設(shè)備并不支持EVPD的in query命令,所以他們無(wú)法被用來(lái)生成 multipath設(shè)備。但可以改寫(xiě) scsi
9、_id ,為不能提供 scsi 設(shè)備標(biāo)識(shí)的設(shè)備虛擬一個(gè)標(biāo)識(shí)符,并輸出到標(biāo)準(zhǔn)輸出。multipath 程序在創(chuàng)建 multipath 設(shè)備時(shí),會(huì)調(diào)用 scsi_id ,從其標(biāo)準(zhǔn)輸出中獲得該設(shè)備的 scsi id 。在改寫(xiě)時(shí),需要修改 scsi_id 程序的返回值為 0。因?yàn)樵?multipath 程序中,會(huì)檢 查該直來(lái)確定 scsi id 是否已經(jīng)成功得到。四、配置 multipath原理看了一堆,實(shí)際配置還是比較簡(jiǎn)單的。配置文件只有一個(gè): /etc/multipath.conf 。 配置前,請(qǐng)用fdisk -l確認(rèn)已可正確識(shí)別盤(pán)柜的所有 LUN邏輯單元號(hào),HD支持多鏈路負(fù)載均衡,因此每條鏈路都
10、是正常的;而如果是類(lèi)似EMCCX30C這樣僅支持負(fù)載均衡的設(shè)備,則冗余的鏈路會(huì)出現(xiàn) I/O Error 的錯(cuò)誤。multipath.conf 的配置參數(shù)、默認(rèn)值,可參考:1、編輯黑名單默認(rèn)情況下, multipath 會(huì)把所有設(shè)備都加入到黑名單( devnode "*" ),也就是禁止使用。 所以,我們首先需要取消該設(shè)置,把配置文件修改為類(lèi)似下面的內(nèi)容:# vim /etc/multipath.confdevnode_blacklist #dev node "*"用#將此行注釋掉devnode "hda"wwid 3600508e00
11、0000000dc7200032e08af0b 這里禁止使用hda,也就是光驅(qū)。另外,還限制使用本地的sda設(shè)備,這個(gè)wwid,可通過(guò)下面的命令獲得:# scsi_id -g -u -s /block/sda3600508e000000000dc7200032e08af0b2、編輯默認(rèn)規(guī)則不同的device-mapper-multipath或操作系統(tǒng)發(fā)行版,其默認(rèn)的規(guī)則都有點(diǎn)不同,以RedHatx86_64為例,其path_grouping_policy默認(rèn)為failover 失效轉(zhuǎn)移,也就是主備的方式。這明顯不符合我們的要求。(HD支持多路徑負(fù)載均衡,EMC CX30等只支持Failover
12、 )。 所以,我們需要修改默認(rèn)的規(guī)則:defaults udev_dir/devpath_group in g_policy multibusfailbackimmediaten o_path_retry failuser_frie ndly_ nameyes關(guān)鍵是path_grouping_policy 項(xiàng),其他選項(xiàng)可參考說(shuō)明文檔。3、啟動(dòng)服務(wù)及生成映射# modprobe dm-multipath# service multipathd restart# multipath -v04、查看復(fù)合后的設(shè)備# multipath -ll會(huì)看到類(lèi)似下面的信息:mpath0 (360060e8005
13、8e980000008e9800000007)size=20 GBfeatures="0"hwhandler="0"_ round-robin 0 prio=1active_ 3:0:0:7 sdaa 65:160 activeready_ round-robin 0 prio=1enabled_ 4:0:0:7 sdas 66:192 activeready_ round-robin 0 prio=1enabled_ 5:0:0:7 sdbk 67:224 activeready_ round-robin 0 prio=1enabled_ 2:0:0:
14、7 sdi 8:128 activeready這說(shuō)明,已由四條鏈路 sdaa/sdas/sdbk/sdi 復(fù)合成一條鏈路,設(shè)備名為 mpath0 狀態(tài)正常的話,把 multipathd 設(shè)置為自啟動(dòng):# chkconfig multipathd on# mkdir /oradata# mkfs.ext3 /dev/mapper/mpath0# mkfs.ext3 /dev/mapper/mpath1# blkid /dev/mapper/mpath0 生成該存儲(chǔ)設(shè)備的 UUID# blkid /dev/mapper/mpath1# vim /etc/fstab( 修改該配置文件并添加如下 )U
15、UID=47931c90-140b-45fe-9dfa-5a0f56810db3 /oradata ext3 defaults 0 0 保存退出# mount -a注意:要使用哪塊存儲(chǔ)設(shè)備就在 fastab 里面掛載就可以了5、使用mpath設(shè)備用multipath生成映射后,會(huì)在/dev目錄下產(chǎn)生多個(gè)指向同一條鏈路的設(shè)備:/dev/mapper/mpath n/dev/mpath/mpath n /dev/dm-n/dev/mpath/mpath n是udev設(shè)備管理器創(chuàng)建的,實(shí)際上就是指向下面的dm-n設(shè)備,僅為了方便,不能用來(lái)掛載;/dev/dm-n是軟件內(nèi)部自身使用的,不能被軟件以外使
16、用,不可掛載。簡(jiǎn)單來(lái)說(shuō),就是我們應(yīng)該使用/dev/mapper/下的設(shè)備符。對(duì)該設(shè)備即可用fdisk進(jìn)行分區(qū),或創(chuàng)建為pv。6、分區(qū)或創(chuàng)建lvm以前,我考慮到從系統(tǒng)iostat看到的都是dm-n的設(shè)備,所以一直都是直接對(duì) dm-n操作。但 這會(huì)產(chǎn)生一個(gè)問(wèn)題,就是沒(méi)法分區(qū)。而對(duì)/dev/mapper/mpathn設(shè)備操作就沒(méi)有這問(wèn)題。只要要注意,用fdisk分區(qū)并保存后,必須刷新 multipath的映射表,以便其創(chuàng)建分區(qū)對(duì)應(yīng)的 設(shè)備符,例如:# fdisk -l /dev/mapper/mpathODisk /dev/mapper/mpath0: 214.7 GB, 214748364800
17、bytes255 heads, 63 sectors/track, 26108 cyli ndersUnits = cyli nders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/mapper/mpath0p1126108 209712478+ 83 Linux# multipath -F#刪除現(xiàn)有路徑兩個(gè)新的路徑就會(huì)被刪除# multipath -v0#格式化路徑# ll /dev/mapper/mpath0p1brw-rw- 1 root disk 253, 2 5月 7 07:40 /
18、dev/mapper/mpath0p1同樣的,mpath n或其分區(qū)都可用來(lái)做pv使用:# pvcreate /dev/mapper/mpath0p1# vgcreate test /dev/mapper/mpath0p1# lvcreate -L 1g -n lv1 test# lvdisplay # mkfs.ext3 /dev/test/lv1 注意: 根據(jù)網(wǎng)上的資料,有部分 multipath 版本存在與 lvm 兼容的問(wèn)題。具體表現(xiàn)是,使用 device-mapper設(shè)備創(chuàng)建lvm完成,重啟后,雖然lvm仍存在,但/dev/mapper下的設(shè)備丟失。 為了防止可能的意外,建議還是修改
19、一下lvm的配置文件/etc/lvm/lvm.conf,加入:types="device-mapper", 17、其他最簡(jiǎn)單的測(cè)試方法,是用dd往磁盤(pán)讀寫(xiě)數(shù)據(jù),然后用iostat觀察各通道的流量和狀態(tài),以 判斷 Failover 失效轉(zhuǎn)移 或負(fù)載均衡方式是否正常:# dd if=/dev/zero of=/dev/mapper/mpath0# iostat -k 2另外,如果是在由多臺(tái)服務(wù)器構(gòu)建集群環(huán)境中,為了讓每臺(tái)服務(wù)器識(shí)別的mpathn設(shè)備順序一致,需進(jìn)行wwid的綁定工作,請(qǐng)參考后面 自定義設(shè)備名稱(chēng)"中的內(nèi)容。五、答疑1、為什么黑名單中不直接使用 devno
20、de "sda" 呢?因?yàn)榘碙inux對(duì)設(shè)備的編號(hào),當(dāng)設(shè)備從 sda到sdz時(shí),后一個(gè)設(shè)備應(yīng)該是sdaa。而multipath 對(duì)黑名單的設(shè)置是以匹配的方式進(jìn)行的,也就是說(shuō),如果你設(shè)置為 devnode "sda" ,那么除 了sda為,sdaa、sdab等的設(shè)備(通道)都會(huì)被加入到黑名單中,而禁止使用。當(dāng)然,你也 可以參考配置文件中的樣式,以正規(guī)表達(dá)式的形式進(jìn)行描述:dev node "Asda$"。但考慮到每次重啟后,udev分配的盤(pán)符可能都不同(沒(méi)有做 udev綁定的情況),所以,我 覺(jué)得以wwid的方式處理更可靠。2、為存儲(chǔ)定
21、制特定的策略在前面的配置中,我們已經(jīng)在 /etc/mulitpah.conf 中配置了多路徑的默認(rèn)path_grouping_policy 為multibus。但有時(shí)候,同一臺(tái)機(jī)器上如果連接了一個(gè)以上的存儲(chǔ) 時(shí),可能默認(rèn)規(guī)則并不完全適用。這時(shí),我們可以給特定的存儲(chǔ)定制多路徑符合的策略。 a、 mulipath 命令 該命令提供了一個(gè) -p 的參數(shù),可以修改默認(rèn)策略,參數(shù)有: -p policy force all maps to specified policy :failover 1 path per priority group multibusall paths in 1 priorit
22、y groupgroup_by_serial 1 priority group per serial group_by_prio1 priority group per priority lvlgroup_by_node_name 1 priority group per target node例如,執(zhí)行:# multipath -F# multipath -p failover -v0 有如下結(jié)果:引用mpath18 (360060e8010463ef004f2b79f00000006) size=320 GBfeatures="0"hwhandler="0&q
23、uot;_ round-robin 0 prio=2active_ 5:0:0:6 sdaf 65:240 activeready_ 4:0:0:6 sdv 65:80 activeready_ round-robin 0 enabled_ 2:0:0:6 sdb 8:16 activeready_ 3:0:0:6 sdl 8:176 activeready這說(shuō)明,當(dāng)你對(duì)mpath18設(shè)備讀寫(xiě)時(shí),sdaf、sdv會(huì)處于active狀態(tài),都有數(shù)據(jù)流,但sdb、 sdl 組成的鏈路是 enabled ,作為 ready 情況。這為 Failover (主備)情況,僅當(dāng) sdaf 、 sdv 組成的
24、鏈路出現(xiàn)問(wèn)題時(shí),才會(huì)切換到 sdb、 sdl 的鏈路上。b、修改配置文件看看存儲(chǔ)的可以在配置文件中為指定的存儲(chǔ)定義策略。首先,可以用multipath -v3 -ll信息,例如,我這里的機(jī)器就同時(shí)連接了兩個(gè)不同的存儲(chǔ):= path info sdaa (mask 0x5) = bus = 1 dev_t = 65:160 size = 10487040 vendor = HITACHI product = OPEN-V rev = 6006 h:b:t:l = 2:0:1:24 tgt_node_name = 0x50060e80058e9800 path checker = readsect
25、or0 (internal default) state = 2 uid = 360060e80058e980000008e9800000058 (cache) = path info sdaf (mask 0x5) = bus = 1 dev_t = 65:240 size = 671088640 vendor = HITACHI product = DF600F rev = 0000 h:b:t:l = 3:0:0:6 tgt_node_name = 0x50060e8010463ef1 path checker = readsector0 (internal default) state
26、 = 2 uid = 360060e8010463ef004f2b79f00000006 (cache)默認(rèn)情況下, multipath 已經(jīng)支持大部分常見(jiàn)的存儲(chǔ)型號(hào) (可見(jiàn) multipath.conf.defaults ), 但不同的 multipath 版本可能都有些不同。這時(shí),建議參考存儲(chǔ)的官方文檔: devices device vendor"HITACHI"/product "OPEN-V" / path_grouping_policy group_by_prio /getuid_callout "/sbin/scsi_id -p
27、0x80 -g -u -s /block/%n" /一設(shè)備號(hào)使用的默認(rèn)程序path_checker readsector0 /path_selector "round-robin 0" prio_callout "/sbin/mpath_prio_alua 程序failback immediate /hardware_handler"0"/特定的操作的模塊。no_path_retryqueue/效路徑的次數(shù)的數(shù)值rr_min_io 100 / 路徑之前的 IO 請(qǐng)求的數(shù)目 千萬(wàn)不要寫(xiě)錯(cuò) path_checker (可能值有:廠商名稱(chēng)產(chǎn)品型號(hào)默認(rèn)的路徑組策略獲得唯決定路徑狀態(tài)的方法/選擇那條路徑進(jìn)行下一個(gè)10操作的方法/dev/%n" / 獲取有限級(jí)數(shù)值使用的默認(rèn)故障恢復(fù)的模式確認(rèn)用來(lái)在路徑切換和10錯(cuò)誤時(shí),執(zhí)行在 disable queue 之前系統(tǒng)嘗試使用失在當(dāng)前的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)制構(gòu)件供應(yīng)購(gòu)銷(xiāo)協(xié)議
- 家長(zhǎng)對(duì)孩子進(jìn)行生命教育的保證書(shū)
- 大樓租賃合同范本
- 自覺(jué)維護(hù)公共秩序
- 防水工程保證書(shū)范文編寫(xiě)規(guī)范
- 土方建設(shè)勞務(wù)分包合同
- 信息化顧問(wèn)服務(wù)合同
- 圍墻建設(shè)合同模板范本
- 木結(jié)構(gòu)勞務(wù)分包協(xié)議
- 酒店家紡采購(gòu)合同
- 幼兒園班級(jí)幼兒圖書(shū)目錄清單(大中小班)
- 烈士陵園的數(shù)字化轉(zhuǎn)型與智能服務(wù)
- 醫(yī)院與陪護(hù)公司的協(xié)議范文
- 古琴介紹(英文)(部編)課件
- DL-T5704-2014火力發(fā)電廠熱力設(shè)備及管道保溫防腐施工質(zhì)量驗(yàn)收規(guī)程
- 2024年山東省煙臺(tái)市中考道德與法治試題卷
- 女性生殖健康與疾病智慧樹(shù)知到期末考試答案章節(jié)答案2024年山東中醫(yī)藥大學(xué)
- (高清版)JGT 225-2020 預(yù)應(yīng)力混凝土用金屬波紋管
- 2023-2024學(xué)年四川省綿陽(yáng)市九年級(jí)上冊(cè)期末化學(xué)試題(附答案)
- 心電圖進(jìn)修匯報(bào)
- 中醫(yī)科進(jìn)修總結(jié)匯報(bào)
評(píng)論
0/150
提交評(píng)論