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

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

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

郭曉金,王 超

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

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

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

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

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

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

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

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

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

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

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

圖2 MulPath驅(qū)動實現(xiàn)方框圖

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

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

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

2.2 MulPath的I/O流程

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

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

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

2.3 MulPath的選擇路徑

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4 小結(jié)

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

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

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

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

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

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

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

[7]崔超.淺析存儲虛擬化和數(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è)備檢測
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
小波變換在PCB缺陷檢測中的應(yīng)用
500kV輸變電設(shè)備運行維護(hù)探討
主站蜘蛛池模板: 国产性生交xxxxx免费| 欧美激情综合| www.狠狠| 亚洲欧美综合在线观看| 亚洲综合色婷婷| 亚洲国产中文综合专区在| 亚洲精品福利网站| 高清码无在线看| 日本午夜精品一本在线观看 | 亚洲综合婷婷激情| 另类综合视频| 91精品网站| 亚洲精品无码不卡在线播放| 人妻丰满熟妇啪啪| 青青青视频免费一区二区| 国产精品第| 亚洲精品男人天堂| 精品一区二区无码av| 色综合a怡红院怡红院首页| 亚洲欧洲日产国产无码AV| 国产在线观看精品| 久久香蕉国产线看观看精品蕉| 成人在线不卡| 中文字幕不卡免费高清视频| 99热这里只有精品免费国产| 尤物成AV人片在线观看| 九九线精品视频在线观看| 国产新AV天堂| 毛片网站在线播放| 国产高清在线观看| 久久人妻系列无码一区| 亚洲欧美色中文字幕| 国产乱子伦精品视频| AV网站中文| 日本成人福利视频| 国产激情在线视频| 日韩av电影一区二区三区四区 | 亚洲天堂成人| 亚洲热线99精品视频| 亚洲综合天堂网| 久久精品视频一| 国产综合色在线视频播放线视| 亚洲系列无码专区偷窥无码| 国产精品偷伦视频免费观看国产| 国产亚洲视频中文字幕视频| 国产免费高清无需播放器| 天天综合色网| 国产AV无码专区亚洲A∨毛片| 欧美激情第一欧美在线| 日韩AV手机在线观看蜜芽| 国产一区二区色淫影院| 天天综合天天综合| 国产免费观看av大片的网站| 美女无遮挡免费网站| 免费观看亚洲人成网站| 色综合中文综合网| 国产SUV精品一区二区| 国产精鲁鲁网在线视频| 扒开粉嫩的小缝隙喷白浆视频| 久久毛片基地| 日韩精品高清自在线| 国产精品久久久久久久久kt| 丰满人妻中出白浆| 国内精品一区二区在线观看| 亚洲专区一区二区在线观看| 九九热视频精品在线| 国产又爽又黄无遮挡免费观看| 国产成人精品2021欧美日韩| 亚洲人人视频| 宅男噜噜噜66国产在线观看| 麻豆国产精品| 国产午夜精品一区二区三| 高清色本在线www| 伦精品一区二区三区视频| 99热最新网址| 亚洲国产日韩欧美在线| 中文字幕av无码不卡免费| 永久免费av网站可以直接看的| 在线观看国产精品一区| 天堂网国产| 国产欧美日韩综合一区在线播放| 亚洲欧洲自拍拍偷午夜色无码|