999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種新的Linux主機(jī)冗余存儲(chǔ)路徑設(shè)計(jì)與實(shí)現(xiàn)

2012-06-25 03:31:16郭曉金
電視技術(shù) 2012年3期
關(guān)鍵詞:設(shè)備檢測(cè)

郭曉金,王 超

(重慶郵電大學(xué)通信與信息工程學(xué)院,重慶 400065)

多路徑就是使用冗余的物理路徑組件(適配器、電纜和交換機(jī))在服務(wù)器與存儲(chǔ)設(shè)備之間創(chuàng)建邏輯路徑。如果這些組件中的一個(gè)或多個(gè)發(fā)生故障,導(dǎo)致路徑無(wú)法使用,多路徑軟件就使用I/O的備用路徑使應(yīng)用程序仍然能夠訪問(wèn)其數(shù)據(jù)。每個(gè)網(wǎng)絡(luò)接口卡(在使用iSCSI的情況下)或HBA都應(yīng)通過(guò)使用冗余的交換機(jī)基礎(chǔ)結(jié)構(gòu)連接起來(lái),以便在存儲(chǔ)結(jié)構(gòu)組件發(fā)生故障時(shí)能繼續(xù)訪問(wèn)存儲(chǔ)?,F(xiàn)在企業(yè)對(duì)數(shù)據(jù)的穩(wěn)定性、可靠性的要求越來(lái)越高,特別是在企業(yè)級(jí)的數(shù)據(jù)業(yè)務(wù)上,需要非常高的數(shù)據(jù)傳輸可靠性。業(yè)界常用的方法是為數(shù)據(jù)業(yè)務(wù)提供多路徑傳輸通道,來(lái)避免單點(diǎn)故障(單點(diǎn)故障是指網(wǎng)絡(luò)中的某處發(fā)生故障,可能導(dǎo)致整個(gè)網(wǎng)絡(luò)癱瘓)[1]。

由于多路徑軟件是需要和存儲(chǔ)設(shè)備在一起配合使用的,不同的廠商基于不同的操作系統(tǒng),都提供了不同的版本。本文提出一種多路徑的設(shè)計(jì)方法,它基于Linux主機(jī)的設(shè)備驅(qū)動(dòng)程序,用來(lái)控制對(duì)存儲(chǔ)設(shè)備的訪問(wèn),實(shí)現(xiàn)主機(jī)到存儲(chǔ)設(shè)備之間的路徑選擇,提高主機(jī)與存儲(chǔ)設(shè)備之間的路徑可靠性與性能。在有多路徑軟件的情況下,多路徑就可以屏蔽冗余設(shè)備、避免造成混淆,并且創(chuàng)建一個(gè)新的設(shè)備,由新的設(shè)備去對(duì)應(yīng)多條通路。

1 多路徑設(shè)計(jì)的思想和方法

MulPath作為內(nèi)核模塊被加載到Linux操作系統(tǒng)中。它在操作系統(tǒng)內(nèi)部被注冊(cè)成為一個(gè)虛擬設(shè)備。通過(guò)該軟件,可以使應(yīng)用服務(wù)器與存儲(chǔ)系統(tǒng)之間選擇合適的路徑進(jìn)行通信。如圖1所示,當(dāng)存儲(chǔ)系統(tǒng)是多路徑組網(wǎng)時(shí),系統(tǒng)啟動(dòng)時(shí)MulPath通過(guò)設(shè)備的注冊(cè),發(fā)現(xiàn)每條路徑上的設(shè)備,并將路徑狀態(tài)信息記錄在數(shù)據(jù)結(jié)構(gòu)的相應(yīng)位置。對(duì)于每個(gè)設(shè)備(LUN),MulPath下發(fā)命令,查詢?cè)O(shè)備當(dāng)前歸屬于陣列的哪個(gè)控制器,并將主機(jī)到這個(gè)陣列控制器之間的路徑作為優(yōu)先選擇路徑,即主路徑。如果主機(jī)到這個(gè)陣列控制器之間有多條路徑,MulPath就會(huì)將I/O分擔(dān),從而在這幾條路徑上形成負(fù)載均衡[2]。

如圖1所示,當(dāng)主路徑(路徑1和路徑2)由于某種原因出現(xiàn)故障后,MulPath所提供的Faiover功能能夠自動(dòng)將業(yè)務(wù)切換到備用路徑上(路徑3),避免了因單點(diǎn)故障而造成業(yè)務(wù)中斷。當(dāng)主路徑的故障得以解除或修復(fù)后即能夠重新正常傳輸I/O流時(shí),MulPath所提供的Faiback功能會(huì)自動(dòng)地將I/O傳輸路徑從備用路徑切換回主路徑上[3]。

圖1 Linux主機(jī)冗余存儲(chǔ)路徑組網(wǎng)圖

2 多路徑軟件的設(shè)計(jì)

MulPath由安裝程序、管理工具和驅(qū)動(dòng)程序組成,其中安裝程序和管理工具運(yùn)行在用戶態(tài),而驅(qū)動(dòng)程序運(yùn)行在內(nèi)核態(tài)。驅(qū)動(dòng)實(shí)現(xiàn)在內(nèi)核SCSI體系上,這樣比較容易實(shí)現(xiàn)搜集并屏蔽物理設(shè)備信息,而求方便形成虛擬設(shè)備信息。

2.1 MulPath的驅(qū)動(dòng)實(shí)現(xiàn)和系統(tǒng)框圖

MulPath驅(qū)動(dòng)實(shí)現(xiàn)方框圖如圖2所示。

圖2 MulPath驅(qū)動(dòng)實(shí)現(xiàn)方框圖

MulPath軟件編譯后成為驅(qū)動(dòng)程序模塊,它主要位于HBA卡驅(qū)動(dòng)之上,對(duì)應(yīng)用程序提供對(duì)陣列的訪問(wèn)入口而屏蔽掉具體的HBA卡和光纖通道。各種應(yīng)用程序,如數(shù)據(jù)庫(kù)服務(wù)程序、Web服務(wù)程序等,都將具體的對(duì)陣列的I/O請(qǐng)求傳送給驅(qū)動(dòng)程序,而驅(qū)動(dòng)程序負(fù)責(zé)選擇具體傳送數(shù)據(jù)的路徑并返回I/O結(jié)果。

本驅(qū)動(dòng)程序模塊需要運(yùn)行在具有可識(shí)別類型的HBA卡的主機(jī)上,并且主機(jī)上安裝了相應(yīng)的HBA驅(qū)動(dòng)程序,HBA卡通過(guò)光纖與主機(jī)陣列相聯(lián)。

這類實(shí)現(xiàn)方法具有很好的兼容性,能夠兼容多種HBA卡驅(qū)動(dòng)。

2.2 MulPath的I/O流程

當(dāng)應(yīng)用程序下發(fā)讀LUN的命令時(shí),例如dd if=/dev/sdb of=/dev/null,經(jīng)過(guò)系統(tǒng)多個(gè)層次的傳遞,I/O數(shù)據(jù)到達(dá)驅(qū)動(dòng)這一層,使用不同的HBA卡會(huì)有不同的scsi_host_template結(jié)構(gòu)體,對(duì)不同的HBA卡,均有它自己的queuecommand函數(shù)指針,在此函數(shù)中對(duì)下發(fā)的I/O命令排隊(duì),并在恰當(dāng)?shù)臅r(shí)候?qū)⒚畎l(fā)送出去[4]。

由于在MulPath初始化階段,已經(jīng)將真實(shí)HBA卡對(duì)應(yīng)的HOST下的LUN屏蔽,所以用戶程序操作的都是虛擬HOST下的LUN,虛擬HOST(由多路徑軟件創(chuàng)建)的queuecommand(將SCSI命令包加入到等待隊(duì)列中)將收到的I/O命令加入鏈表,并設(shè)置相應(yīng)的回調(diào)函數(shù)、發(fā)送狀態(tài)(如重試、超時(shí)次數(shù)等)。

由于MulPath注冊(cè)使用虛擬的HBA卡,雖然用戶使用dd等命令操作的是虛擬HBA卡,但是虛擬的HBA卡并不具備真實(shí)物理HBA卡真正將數(shù)據(jù)發(fā)送出去的能力。所有MulPath中,需要將利用虛擬HBA卡發(fā)送信息到對(duì)應(yīng)LUN的能力轉(zhuǎn)換為利用真實(shí)HBA卡發(fā)送信息。這一點(diǎn)就是在選路模塊中,將虛擬LUN轉(zhuǎn)換為“物理”LUN來(lái)實(shí)現(xiàn)的。

2.3 MulPath的選擇路徑

系統(tǒng)啟動(dòng)時(shí),MulPath通過(guò)設(shè)備的注冊(cè),發(fā)現(xiàn)每條路徑上的設(shè)備,并將路徑狀態(tài)信息記錄在數(shù)據(jù)結(jié)構(gòu)的相應(yīng)位置。對(duì)于每個(gè)設(shè)備(LUN),MulPath下發(fā)命令,查詢?cè)O(shè)備CurrentOwner,將此信息記錄在 CurrentOwningPath中,作為優(yōu)先選擇路徑的依據(jù)[5]。

每次發(fā)送命令時(shí)要檢測(cè)使用路徑的狀態(tài),MulPath對(duì)路徑狀態(tài)的判斷是通過(guò)讀取存放在RdacInfo數(shù)據(jù)結(jié)構(gòu)中的路徑狀態(tài)變量來(lái)進(jìn)行判斷的,這些狀態(tài)的更新主要是由定時(shí)器定時(shí)掃描路徑后根據(jù)I/O狀態(tài)來(lái)刷新的,因而,它們不一定能實(shí)時(shí)地反映當(dāng)前路徑的狀態(tài)。雖然路徑出現(xiàn)故障了,但是RdacInfo中的狀態(tài)正常,仍然發(fā)送命令,發(fā)送產(chǎn)生的I/O錯(cuò)誤再交給錯(cuò)誤分析函數(shù)處理。

定時(shí)器利用異步發(fā)送命令發(fā)送對(duì)標(biāo)準(zhǔn)頁(yè)的查詢命令,通過(guò)返回的狀態(tài)對(duì)路徑狀態(tài)進(jìn)行檢測(cè)。對(duì)于每條路徑,只要對(duì)一個(gè)LUN發(fā)送成功,就繼續(xù)檢測(cè)下一條路徑,并修改RdacInfo結(jié)構(gòu)中的狀態(tài)信息。

MulPath總是首先選擇使用RdacInfo結(jié)構(gòu)體中定義的CurrentOwningPath所描述的控制器上的路徑作為首選路徑,當(dāng)CurrentOwningPath所描述的控制器上的所有路徑都為FAILED時(shí),才會(huì)選擇下一個(gè)控制器上的路徑。如果當(dāng)前使用的控制器可用,則在此控制器上的所有路徑進(jìn)行輪循操作,分擔(dān)使用每條可用路徑。

通過(guò)選路模塊,MulPath將最初的虛擬LUN通過(guò)查找RdacInfo數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成“物理”LUN,這個(gè)“物理”LUN有真實(shí)HBA卡的發(fā)送數(shù)據(jù)的能力,隨后將數(shù)據(jù)發(fā)送出去[6]。

2.4 MulPath的路徑狀態(tài)定時(shí)刷新

路徑狀態(tài)定時(shí)刷新通過(guò)定時(shí)器進(jìn)行,定時(shí)器每1 s觸發(fā)一次。路徑狀態(tài)包括最優(yōu)、最優(yōu)需要檢測(cè)、最優(yōu)檢測(cè)中、失敗、失敗需要檢測(cè)、失敗檢測(cè)中、系統(tǒng)特定狀態(tài)7種。處理過(guò)程如圖3所示。

圖3 路徑狀態(tài)刷新流程圖

若檢測(cè)時(shí)路徑狀態(tài)處于最優(yōu),則使該路徑處于最優(yōu)狀態(tài)時(shí)間值加1,若此時(shí)該路徑的最優(yōu)狀態(tài)時(shí)間值大于配置文件中設(shè)置的最優(yōu)檢測(cè)時(shí)間IdlePathCheckingInterval,則設(shè)置該路徑狀態(tài)為最優(yōu)需要檢測(cè)。

若檢測(cè)時(shí)路徑狀態(tài)處于最優(yōu)需要檢測(cè),則設(shè)置該路徑狀態(tài)為最優(yōu)檢測(cè)中,并生成一個(gè)異步路徑狀態(tài)檢測(cè)命令。若生成異步路徑狀態(tài)檢測(cè)命令失敗,則還原設(shè)置該路徑狀態(tài)為最優(yōu),并設(shè)置路徑處于最優(yōu)狀態(tài)時(shí)間為0。

若檢測(cè)時(shí)路徑狀態(tài)處于失敗,則使該路徑處于失敗狀態(tài)時(shí)間值加1,若此時(shí)該路徑的失敗狀態(tài)時(shí)間值大于配置文件中設(shè)置的失敗等待時(shí)間RecheckFailedPathWait-Time,則設(shè)置該路徑及路徑上所有設(shè)備的狀態(tài)為失敗需要檢測(cè)[7]。

若檢測(cè)時(shí)路徑狀態(tài)處于失敗需要檢測(cè),則使該路徑處于失敗狀態(tài)時(shí)間值加1,若此時(shí)該路徑的失敗狀態(tài)時(shí)間值大于配置文件中設(shè)置的失敗檢測(cè)時(shí)間FailedPathCheckingInterval,則設(shè)置該路徑及路徑上所有設(shè)備的狀態(tài)為失敗檢測(cè)中,并生成一個(gè)異步路徑狀態(tài)檢測(cè)命令,若生成異步路徑狀態(tài)檢測(cè)命令失敗,則還原設(shè)置該路徑及路徑上所有設(shè)備狀態(tài)為失敗,并設(shè)置路徑處于失敗狀態(tài)時(shí)間為0[8]。

若路徑狀態(tài)為最優(yōu)檢測(cè)中、失敗檢測(cè)中、系統(tǒng)特定這3種狀態(tài),則不做任何處理。

3 模擬性能測(cè)試及結(jié)果分析

針對(duì)多路徑軟件主要解決路徑切換和負(fù)載均衡兩個(gè)問(wèn)題,設(shè)計(jì)了兩種組網(wǎng)來(lái)分別測(cè)試并選擇各大存儲(chǔ)設(shè)備廠商廣泛使用的Iometer作為I/O測(cè)試的工具。

測(cè)試硬件由dell2950主機(jī)(裝有SUSE10和MulPath,并配有雙口4GFC_HBA扣卡),IBM的DS4700存儲(chǔ)陣列(陣列上創(chuàng)建RAID5)以及若干光纖線。

3.1 MulPath的路徑切換測(cè)試(測(cè)試1)

如圖4所示,主機(jī)到存儲(chǔ)陣列有兩條路徑,分別是從主機(jī)HBA扣卡的1口和2口接到存儲(chǔ)陣列的控制器A和控制器B上。存儲(chǔ)陣列上創(chuàng)建有一個(gè)用于測(cè)試的歸屬于控制器A的LUN。根據(jù)MulPath的路徑選擇策略,路徑1為優(yōu)先選擇路徑。

圖4 路徑切換測(cè)試組網(wǎng)圖

每隔10 s拔插一次路徑1(拔一次后間隔10 s再插一次),觀察I/O狀況。測(cè)試結(jié)果如表1所示。

表1 測(cè)試1的結(jié)果

初始狀態(tài)的時(shí)候,路徑1是優(yōu)先選擇的路徑,所以I/O跑在路徑1上;當(dāng)拔掉路徑1的光纖后,MulPath的路徑狀態(tài)定時(shí)刷新發(fā)現(xiàn)路徑1故障,I/O就返回到路徑2上;當(dāng)路徑1回復(fù)后,MulPath的路徑狀態(tài)定時(shí)刷新發(fā)現(xiàn)路徑1恢復(fù),I/O就返回路徑1上。

3.2 MulPath的負(fù)載均衡測(cè)試(測(cè)試2)

如圖5所示,主機(jī)到存儲(chǔ)陣列有兩條路徑,分別是從主機(jī)HBA扣卡的1口和2口全部接到存儲(chǔ)陣列的控制器A。存儲(chǔ)陣列上創(chuàng)建有一個(gè)用于測(cè)試的歸屬于控制器A的LUN。根據(jù)MulPath的路徑選擇策略,路徑1和路徑2都為優(yōu)先選擇路徑。

圖5 負(fù)載均衡測(cè)試組網(wǎng)圖

每隔10 s拔插一次路徑1(拔一次后間隔10 s再插一次),觀察I/O狀況。測(cè)試結(jié)果如表2所示。

表2 測(cè)試2的結(jié)果

本次測(cè)試中,設(shè)置I/O測(cè)試工具iometer的壓力大概在1000 IOPS,由表2可知,MulPath能較好地實(shí)現(xiàn)負(fù)載均衡,提高了I/O的性能。

4 小結(jié)

本文中提出的MulPath實(shí)現(xiàn)基于HBA卡的驅(qū)動(dòng),能在內(nèi)核SCSI體系上很好地實(shí)現(xiàn)主機(jī)到存儲(chǔ)設(shè)備之間的路徑選擇,提高主機(jī)與存儲(chǔ)設(shè)備之間的路徑可靠性與性能,并且有很好的兼容性,能夠兼容多種HBA卡驅(qū)動(dòng)。能夠自動(dòng)選擇優(yōu)選的路徑,當(dāng)前路徑不能使用時(shí),可使用其他冗余路徑,這樣就避免了系統(tǒng)因單點(diǎn)故障造成的業(yè)務(wù)中斷。當(dāng)有多條優(yōu)選路徑時(shí),在多條路徑上能夠?qū)崿F(xiàn)靜態(tài)及動(dòng)態(tài)負(fù)載均衡,極大地提高了I/O的性能。

[1]姜寧康,時(shí)成閣.網(wǎng)絡(luò)存儲(chǔ)導(dǎo)論[M].北京:清華大學(xué)出版社,2007.

[2]闞闖,戚瑋瑋.一種新結(jié)構(gòu)的DM_MulPath與動(dòng)態(tài)負(fù)載平衡[J].計(jì)算機(jī)應(yīng)用,2008,28(2):289-291.

[3]金惠芳,陶利民,張基溫.Linux下多線程技術(shù)分析及應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2003(9):30-32.

[4]董峰,王樹(shù)武,譚毓安.冗余存儲(chǔ)路徑在Linux的設(shè)計(jì)和實(shí)現(xiàn)[J].現(xiàn)代圖書(shū)情報(bào)技術(shù),2004(5):17-20.

[5]曹強(qiáng),黃建忠.海量網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)原理與設(shè)計(jì)[M].武漢:華中科技大學(xué)出版社,2010.

[6]蔡斌,謝長(zhǎng)生,忍勁.SCSI子系統(tǒng)中間層多啟動(dòng)互聯(lián)多路徑I/O的存儲(chǔ)方式的研究[J].小型微型計(jì)算機(jī)系統(tǒng),2005,26(8):1420-1426.

[7]崔超.淺析存儲(chǔ)虛擬化和數(shù)據(jù)遷移技術(shù)[J].信息與電腦:理論版.2010(6):87-88.

[8]LOBUE M T,MASON H.Surveying today’s most popular storage interfaces[J].IEEE Computer,2002,35(12):48-50.

猜你喜歡
設(shè)備檢測(cè)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
“不等式”檢測(cè)題
“一元一次不等式”檢測(cè)題
“一元一次不等式組”檢測(cè)題
“幾何圖形”檢測(cè)題
“角”檢測(cè)題
基于VB6.0+Access2010開(kāi)發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
小波變換在PCB缺陷檢測(cè)中的應(yīng)用
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
主站蜘蛛池模板: 免费一级毛片不卡在线播放| 操美女免费网站| 国产午夜人做人免费视频中文| 久草网视频在线| 亚洲第一成年网| 亚洲中文精品人人永久免费| 国产一区二区精品福利| 欧美福利在线| 老司机精品久久| 亚洲va在线∨a天堂va欧美va| 免费观看无遮挡www的小视频| 欧美日韩中文国产va另类| 专干老肥熟女视频网站| 国产一区二区三区在线观看免费| 亚洲欧美日韩成人高清在线一区| 精品久久高清| 日本手机在线视频| 97久久超碰极品视觉盛宴| 国产成人精品高清不卡在线| 91亚洲免费视频| AV不卡无码免费一区二区三区| 狠狠色丁香婷婷综合| 国产欧美日韩免费| 综合亚洲网| 91国内视频在线观看| 伊人五月丁香综合AⅤ| 91精品在线视频观看| 国产99在线观看| 欧美成人精品在线| 国产精品一线天| 在线a视频免费观看| 乱系列中文字幕在线视频| 国产制服丝袜91在线| 乱系列中文字幕在线视频| 国产黄色视频综合| 99久久精品无码专区免费| 欧美中文字幕在线二区| 香蕉eeww99国产在线观看| 久久黄色免费电影| 国产区免费| 午夜欧美理论2019理论| 日韩一级二级三级| 欧美激情成人网| 刘亦菲一区二区在线观看| 在线精品自拍| 欧美一级爱操视频| 在线观看亚洲国产| 真实国产乱子伦视频| 成年人国产网站| 国产精品片在线观看手机版| 高清欧美性猛交XXXX黑人猛交 | 久久青草视频| 超清无码熟妇人妻AV在线绿巨人 | a毛片在线| 久久精品国产在热久久2019 | 久久a级片| 91伊人国产| 老司机午夜精品视频你懂的| 精品国产三级在线观看| AV无码一区二区三区四区| 亚洲人成影视在线观看| 国产一区二区三区在线观看视频| 成人欧美日韩| 国产在线八区| 九九热视频精品在线| 91av成人日本不卡三区| 欧美日韩国产系列在线观看| 亚洲欧洲日韩综合色天使| 久久国语对白| 色九九视频| 2020国产免费久久精品99| 九九热精品在线视频| 亚洲日本中文字幕乱码中文 | 国产网站免费观看| 99国产精品一区二区| 国产成人精品视频一区视频二区| 激情综合图区| 五月天综合婷婷| 亚洲色图另类| 久久综合结合久久狠狠狠97色| 亚洲AV无码一区二区三区牲色| 丝袜国产一区|