專利名稱:一種多路徑軟件的實現(xiàn)裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種多路徑軟件的實現(xiàn)裝置及方法。
背景技術(shù):
多路徑傳輸是計算機與存儲設(shè)備之間的數(shù)據(jù)傳輸方式,多路徑軟件就是 運行在主機上,用于管理主機和存儲設(shè)備之間多條連接路徑的一種軟件。當(dāng) 連接路徑中斷時,多路徑軟件可以將發(fā)送到存儲設(shè)備的輸入輸出
(Input/Output, IO)流自動切換到其它路徑上,此過程可以簡稱為Failover; 當(dāng)原連接路徑恢復(fù)連接后再將IO流自動切換回原連接路徑,此過程可以簡稱 為Failback;同時,多路徑軟件還可以在多條連接路徑上將IO流按照預(yù)置策略 進(jìn)行負(fù)荷分擔(dān)發(fā)送,以提高IO訪問性能。在存儲領(lǐng)域,多路徑軟件是整個存 儲網(wǎng)絡(luò)的重要組成部分,作為一種路徑保護(hù)和性能提升軟件,為服務(wù)器和存 儲設(shè)備之間提供可靠的連接,并在這些連接上提供優(yōu)化的負(fù)荷分擔(dān)。
由于目前運行于計算機中的有多種操作系統(tǒng),如微軟Windows體系的 Windows 2000、 Windows 2003等,Linux體系的RedHat、 Suse、 TurboLi腿 各種發(fā)行版本等,Unix體系的Sun Solaris、 HP HP-UX、 IBM AIX等,運行不 同操作系統(tǒng)的服務(wù)器在連接存儲設(shè)備時都需要安裝相應(yīng)的多路徑軟件。由于 各種操作系統(tǒng)之間具有很大的差異性,如內(nèi)核結(jié)構(gòu)不同、性能不同、處理位 數(shù)(32位/64位)不同,所以在每個操作系統(tǒng)上運行的多路徑軟件也是各不相 同的。
例如,Device Mapper for Linux是一種Linux Kernel 2.6中自帶的多路徑軟 件,它屬于特定操作系統(tǒng)平臺下的一種多路徑軟件,和系統(tǒng)本身緊密綁定, 能夠提供多路徑的保護(hù)功能,另外一種Microsoft Windows MPIO是由微軟提供 的多路徑軟件開發(fā)架構(gòu),它本身不是一種可用的多路徑軟件,需要在MS MPIO 基礎(chǔ)上進(jìn)行二次開發(fā),提供DSM模塊才能實現(xiàn)多路徑的功能,例如Device Mapper for Linux僅能適用于Linux Kernel 2.6版本,不適用于其他Windows才喿作 系統(tǒng),Microsoft Windows MPIO同樣僅能適用于Windows家族,并且底層由
MPIO封裝,不便于深度開發(fā)和維護(hù),可以看出,現(xiàn)有的多路徑軟件,大多是 在某個操作系統(tǒng)下所特有的,具有不能跨多個操作系統(tǒng)平臺的缺點。
進(jìn)一步的,由于存儲設(shè)備的類型各不相同,也導(dǎo)致了存儲設(shè)備和服務(wù)器 之間有多種接口,而每種物理接口的驅(qū)動程序、處理方式、性能等均不相同, 所以存儲設(shè)備接口的不兼容導(dǎo)致不同類型的存儲設(shè)備運行的多路徑軟件也各不相同。例如,Device Mapper for Linux并不支持SAS、 iSCSI等較新的存儲接 口,因此,現(xiàn)有的多路徑軟件也具有不適應(yīng)多種存儲設(shè)備的缺點。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明一個或多個實施例的目的在于提供一種適應(yīng)多個操作 系統(tǒng)平臺的多路徑軟件的實現(xiàn)裝置及方法。
本發(fā)明實施例提供了一種多路徑軟件的實現(xiàn)裝置,包括操作系統(tǒng)接口模塊,用于將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函數(shù) 名稱和參數(shù)形式,以供設(shè)備管理模塊可以按照預(yù)定義的函數(shù)接口進(jìn)行調(diào)用;配置數(shù)據(jù)管理模塊,用于向所述設(shè)備管理模塊提供所述多路徑軟件默認(rèn) 配置數(shù)據(jù);設(shè)備管理模塊,用于根據(jù)所述操作系統(tǒng)接口模塊轉(zhuǎn)換的函數(shù)名稱和參數(shù) 形式從所述配置數(shù)據(jù)管理模塊獲取所述多路徑軟件默認(rèn)配置數(shù)據(jù),并根據(jù)所 述配置數(shù)據(jù)建立路徑信息、虛擬LUN信息、虛擬LUN和實際LUN的對應(yīng)關(guān)系;多路徑策略控制模塊,用于從所述設(shè)備管理模塊獲取所述路徑信息、虛擬LUN信息,并根據(jù)所述路徑信息和虛擬LUN信息按照負(fù)載均衡策略為各 傳輸路徑進(jìn)行負(fù)載分擔(dān)。
本發(fā)明實施例還提供了 一種多路徑軟件的實現(xiàn)方法,包括將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函數(shù)名稱和參數(shù)形式;根據(jù)所述函數(shù)名稱和參數(shù)形式從配置數(shù)據(jù)管理模塊獲取多路徑軟件默認(rèn) 配置數(shù)據(jù);依據(jù)所述配置數(shù)據(jù)建立路徑信息、虛擬LUN信息、虛擬LUN和實際LUN
的對應(yīng)關(guān)系;
根據(jù)所述路徑信息、虛擬LUN信息、虛擬LUN和實際LUN的對應(yīng)關(guān)系, 并按照負(fù)載均衡策略為各傳輸路徑進(jìn)行負(fù)載分擔(dān)。
本發(fā)明實施例通過將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函數(shù)名稱和 參數(shù)形式,并根據(jù)所述函數(shù)名稱獲取相應(yīng)的多路徑軟件默認(rèn)配置數(shù)據(jù),從而 可以使本發(fā)明實施例公開的一種實現(xiàn)多路徑傳輸?shù)难b置,能夠適應(yīng)多個操作 系統(tǒng)平臺。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實 施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下 面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講, 在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明的一種實現(xiàn)多路徑傳輸?shù)难b置實施例1的結(jié)構(gòu)框圖2是本發(fā)明的一種實現(xiàn)多路徑傳輸?shù)难b置實施例2的結(jié)構(gòu)框圖3是本發(fā)明的一種實現(xiàn)多路徑傳輸?shù)姆椒▽嵤├?的流程圖4是本發(fā)明的一種實現(xiàn)多路徑傳輸?shù)姆椒▽嵤├?的流程圖。
具體實施例方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行 清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而 不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作 出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
參考圖1,示出了本發(fā)明的一種多路徑軟件的實現(xiàn)裝置實施例1的結(jié)構(gòu)框 圖,所述多路徑軟件的實現(xiàn)裝置可以包括以下模塊
操作系統(tǒng)接口模塊101,用于將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函 數(shù)名稱和參數(shù)形式,以供設(shè)備管理模塊可以按照預(yù)定義的函數(shù)接口進(jìn)行調(diào)用;
在實際應(yīng)用中,設(shè)備管理模塊在需要使用所述操作系統(tǒng)的函數(shù)接口時,
可以按照預(yù)先定義好的、固定的函數(shù)接口 ,從操作系統(tǒng)接口模塊進(jìn)行調(diào)用所
述函數(shù)名稱和參數(shù)形式;
其中,所述操作系統(tǒng)接口模塊101可以分為第一控制層和第一適配層, 所述第一適配層用于獲取不同的操作系統(tǒng)信息,并對所述不同操作系統(tǒng)的相 同功能或者類似功能的函數(shù)接口進(jìn)行統(tǒng)一的定義,所述函K接口為對函數(shù)參 數(shù)配置的說明,并將所述函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函數(shù)名稱和參數(shù)形式;所述 第一控制層根據(jù)所述第一適配層轉(zhuǎn)換后的信息,從而可以控制多路徑軟件內(nèi) 部模塊的工作流程;
可以理解的是,所述操作系統(tǒng)接口模塊101,可以把現(xiàn)有技術(shù)中分布在整 個多路徑軟件中的可能使用到和操作系統(tǒng)相關(guān)的代碼和程序,集中起來放在 所述第一適配層中處理,完成將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函數(shù) 名稱和參數(shù)形式的目的,所述函數(shù)接口模塊本身需要考慮不同操作系統(tǒng)環(huán)境 進(jìn)行開發(fā),是不兼容的,但是通過所述第一適配層的轉(zhuǎn)換,可以帶來多路徑 軟件開發(fā)的簡化以及源代碼重用。
配置數(shù)據(jù)管理模塊102,用于進(jìn)行多路徑傳輸?shù)某跏蓟⑻峁┧龆嗦?徑軟件默認(rèn)配置數(shù)據(jù);
其中,所述配置數(shù)據(jù)管理模塊可以包括讀寫管理子模塊1021和提供數(shù) 據(jù)子模塊1022,所述讀寫管理子模塊1021用于負(fù)責(zé)多路徑軟件默認(rèn)配置數(shù)據(jù) 的讀寫管理,所述配置數(shù)據(jù)為多路徑軟件運行時的各種參數(shù);所述提供數(shù)據(jù) 子模塊1022用于向所述設(shè)備管理模塊提供所述多路徑軟件默認(rèn)配置數(shù)據(jù)。
設(shè)備管理模塊103,用于根據(jù)操作系統(tǒng)接口模塊101轉(zhuǎn)換的函數(shù)名稱和參 數(shù)形式從配置數(shù)據(jù)管理模塊102中獲取多路徑軟件默認(rèn)配置數(shù)據(jù),并根據(jù)所述 配置數(shù)據(jù)建立路徑信息、虛擬LUN信息、虛擬LUN和實際LUN的對應(yīng)關(guān)系;
其中,所述設(shè)備管理模塊103具體可以包括第一獲取數(shù)據(jù)子模塊1031和生 成信息子模塊1032,所述第一獲取數(shù)據(jù)子模塊1031用于根據(jù)所述操作系統(tǒng)接 口模塊101轉(zhuǎn)換的函數(shù)名稱和參數(shù)形式從配置數(shù)據(jù)管理模塊獲取多路徑軟件 默認(rèn)配置數(shù)據(jù),所述生成信息子模塊1032用于根據(jù)所述配置數(shù)據(jù)建立路徑信 息、虛擬邏輯單元號信息、實際邏輯單元號信息;
所述設(shè)備管理模塊103在接收到所述操作系統(tǒng)接口模塊101轉(zhuǎn)換的函數(shù)
名稱和參數(shù)形式后,所述第一獲取數(shù)據(jù)子模塊1031根據(jù)所述函數(shù)名稱和參數(shù) 形式從所述配置數(shù)據(jù)管理模塊102獲取相應(yīng)的配置數(shù)據(jù),所述配置數(shù)據(jù)為不 同操作系統(tǒng)需要的不同的多路徑軟件默認(rèn)配置數(shù)據(jù),所述生成信息子模塊 1032可以根據(jù)所述多路徑軟件默認(rèn)配置數(shù)據(jù)生成路徑信息、虛擬邏輯單元號 信息、實際邏輯單元號信息;所述路徑信息可以包括傳輸路徑的條數(shù)、狀態(tài) 等,所述邏輯單元號(Logical Unit Number, LUN)為一個用于小型計算才幾系 統(tǒng)4妄口 (Small Computer System Interface, SCSI)總線的唯一識別號,每個 LUN是一個能夠識別特定邏輯單元的唯一識別號,可以為一個用戶、 一個文 件或者一個程序;
多路徑策略控制模塊104,用于從所述設(shè)備管理模塊103獲取所述路徑信 息、虛擬LUN信息,并根據(jù)所述路徑信息和虛擬LUN信息按照負(fù)載均衡策 略為各傳輸路徑進(jìn)行負(fù)載分擔(dān);
其中,所述多路徑策略控制模塊104可以包括獲取信息子模塊1041和 負(fù)載均衡子模塊1042,所述獲取信息子模塊用于從所述設(shè)備管理模塊獲取所 述路徑信息、虛擬LUN信息;所述負(fù)載均衡子模塊用于根據(jù)所述路徑信息、
在實際應(yīng)用中,所述獲取信息子模塊1041可以從所述設(shè)備管理模塊103 中獲取需要的路徑信息、虛擬LUN信息、實際LUN信息,所述負(fù)載均衡子 模塊可以根據(jù)所述信息,并按照負(fù)載均衡策略為每條傳輸路徑上進(jìn)行負(fù)載分 擔(dān),從而可以達(dá)到多路徑負(fù)載均衡和路徑保護(hù)的目的,所述負(fù)載均衡子模塊 為傳輸路徑分配負(fù)載均衡時,還可以根據(jù)實際應(yīng)用中其他不同的策略來進(jìn)行 負(fù)載的分擔(dān),本發(fā)明并不對負(fù)載分擔(dān)的策略進(jìn)行限定。
優(yōu)選的,本實施例還可以包括第一路徑檢測模塊,則所述多路徑策略 控制模塊還可以包括路徑倒換子模塊,當(dāng)所述第一路徑檢測模塊檢測到所 述傳輸路徑出現(xiàn)異常時,所述異常信息包括斷路、擁塞等多種情況,將所述 異常信息發(fā)送至路徑倒換子模塊,所述路徑倒換子模塊將所述傳輸路徑切換 為可用的實際路徑,其中,路徑倒換子模塊通過切換主機當(dāng)前使用路徑和通 知存儲設(shè)備同步切換來完成倒換操作。
優(yōu)選的,本實施例還可以包括第二路徑檢測模塊,當(dāng)所述第二路徑檢
測模塊檢測到所述傳輸路徑恢復(fù)正常時,所述路徑倒換子模塊再將已經(jīng)切換 的可用實際路徑切換為原傳輸路徑;
優(yōu)選的,本實施例還可以包括初始化;漠塊,用于在多路徑軟件運行時 啟動設(shè)備管理模塊103工作;
在實際應(yīng)用中,所述初始化;^莫塊可以完成軟件凈皮#:作系統(tǒng)加載時的初始 化,軟件內(nèi)部狀態(tài)參數(shù)的創(chuàng)建,所述內(nèi)部參數(shù)為所述配置數(shù)據(jù)管理才莫塊中的 多路徑默認(rèn)配置數(shù)據(jù),以及初始化控制,其中,實際的動作處理由所述配置 數(shù)據(jù)管理模塊提供;
可以看出,本實施例對應(yīng)于不同的操作系統(tǒng)提供所述操作系統(tǒng)接口模塊, 可以通過對不同操作系統(tǒng)的函數(shù)接口的屏蔽和統(tǒng)一,解決不同操作系統(tǒng)的差 異問題,所述操作系統(tǒng)接口模塊101可以把不同操作系統(tǒng)中不同的處理方法 進(jìn)行封裝,從而達(dá)到封裝差異點的目的;通過多路徑業(yè)務(wù)處理代碼完全一致, 保證了采用本架構(gòu)實現(xiàn)的多路徑軟件在各操作系統(tǒng)平臺下具有同樣的接口 、 處理過程,對用戶來說使用更加方便,不用擔(dān)心各操作系統(tǒng)平臺下多路徑軟 件的功能和性能不一樣,更加有利于開發(fā)多路徑軟件的新功能。
參考圖2,示出了本發(fā)明的一種多路徑軟件的實現(xiàn)裝置實施例2的結(jié)構(gòu)框 圖,可以包括以下模塊
操作系統(tǒng)接口模塊201,用于將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函 數(shù)名稱和參數(shù)形式,以供設(shè)備管理模塊可以按照預(yù)定義的函數(shù)接口進(jìn)行調(diào)用。
在實際應(yīng)用中,不同操作系統(tǒng)的內(nèi)存分配函數(shù)等存在差異,例如,內(nèi)存 分配函數(shù)在Linux操作系統(tǒng)中為Menmalloc (),在Windows操作系統(tǒng)中叫 MemmoyMalloc (),由于兩個函數(shù)名字不一樣,所以在編寫代碼的時候,就 需要考慮多路徑軟件運行在哪個操作系統(tǒng)下,然后才去按照相應(yīng)的名字去調(diào) 用函數(shù),這樣的操作方式實際上就導(dǎo)致了會開發(fā)兩套多路徑軟件, 一套是專 門用于Windows系統(tǒng)的, 一套是專門用于Linux系統(tǒng)的,因此在本實施例中, 給這些相同功能或者類似功能的函數(shù)接口定義一個統(tǒng)一的函數(shù)名字,例如, HW—MemMalloc ()。
所述操作系統(tǒng)接口模塊201可以分為第 一控制層和第 一適配層,在第 一適 配層中開發(fā)兩個接口模塊, 一個用于Windows操作系統(tǒng),另一個用于Linux系 統(tǒng),將這些操作系統(tǒng)函數(shù)分別集中起來做函數(shù)名字轉(zhuǎn)換,對外僅體現(xiàn)統(tǒng)一定
義的函數(shù)名字;第一控制層可以將第一適配層檢測到的不同操作系統(tǒng)的信息 轉(zhuǎn)換為其他模塊的工作流程,例如,當(dāng)?shù)谝贿m配層已經(jīng)完成不同操作系統(tǒng)特
有的接口轉(zhuǎn)換時,在實現(xiàn)各個模塊的功能時,第一控制層可以根據(jù)需要方便 地使用操作系統(tǒng)的功能;例如,使用內(nèi)存分配功能,可以直接在代碼中調(diào)用 HW—MemMalloc ()。
第 一適配層和第 一控制層是多路徑軟件架構(gòu)能夠支持多操作系統(tǒng)的關(guān)鍵 所在;這部分不是跨操作系統(tǒng)平臺的,而是和具體操作系統(tǒng)平臺相關(guān)的;但 是操作系統(tǒng)接口模塊從整個軟件來看是一小部分,因此開發(fā)和維護(hù)工作量可 以做到最?。灰虼?,多路徑軟件也可以無需考慮在哪個操作系統(tǒng)下運行,只 需要考慮自己的功能應(yīng)該怎么實現(xiàn)即可。
配置數(shù)據(jù)管理模塊202,用于提供多路徑軟件默認(rèn)配置數(shù)據(jù)和不同存儲設(shè) 備的配置文件或數(shù)據(jù)信息。
在本實施例中,所述配置數(shù)據(jù)管理模塊202可以包括讀寫管理子模塊 2021、提供數(shù)據(jù)子模塊2022和查詢數(shù)據(jù)子模塊2023,所述讀寫管理子模塊 2021用于負(fù)責(zé)多路徑軟件默認(rèn)配置數(shù)據(jù)的讀寫管理,所述提供數(shù)據(jù)子模塊 2022用于向所述設(shè)備管理模塊提供所述多路徑軟件默認(rèn)配置數(shù)據(jù);所述查詢 數(shù)據(jù)子模塊2023,用于根據(jù)不同存儲設(shè)備的識別信息從數(shù)據(jù)庫中查詢不同存 儲設(shè)備的配置文件或數(shù)據(jù)信息;當(dāng)所述查詢數(shù)據(jù)子模塊2023收到所述不同存 儲設(shè)備的識別信息時,可以從數(shù)據(jù)庫203中查詢相應(yīng)的配置文件或數(shù)據(jù)信息。
數(shù)據(jù)庫203,用于存放不同存儲設(shè)備的配置文件或數(shù)據(jù)信息;
所述數(shù)據(jù)庫203可以存放多路徑軟件支持的設(shè)備型號、有差別的命令數(shù) 據(jù)信息,例如,F(xiàn)C、 SAS、 iSCSI的相應(yīng)信息,這樣可以對不同的存儲設(shè)備設(shè) 計性能最優(yōu)化的處理過程,所述數(shù)據(jù)庫可以為一個獨立的文件,每次多路徑 軟件運行初始化的時候,根據(jù)實際連接的存儲設(shè)備加載對應(yīng)的數(shù)據(jù)庫文件; 所述數(shù)據(jù)庫203有兩種表現(xiàn)形式 一種是在軟件內(nèi)部實現(xiàn),存放在軟件內(nèi), 在本實施例中,也可以集成在所述配置數(shù)據(jù)管理模塊202內(nèi)部; 一種是在軟 件外部實現(xiàn),當(dāng)專欠件運4亍時乂人外部加載。
設(shè)備管理模塊204,用于根據(jù)操作系統(tǒng)接口模塊201轉(zhuǎn)換的函數(shù)名稱和參
數(shù)形式從配置數(shù)據(jù)管理模塊202獲取多路徑軟件默認(rèn)配置數(shù)據(jù),并獲取不同
存儲設(shè)備的配置文件或數(shù)據(jù)信息,根據(jù)所述配置數(shù)據(jù)、所述不同存儲設(shè)備的
配置文件或數(shù)據(jù)信息,建立路徑信息、虛擬LUN信息、虛擬LUN信息和實 際LUN信息之間的對應(yīng)關(guān)系;
在本實施例中,所述設(shè)備管理模塊204可以包括第一獲取數(shù)據(jù)子模塊 2041,用于根據(jù)所述操作系統(tǒng)接口模塊201轉(zhuǎn)換的函數(shù)名稱和參數(shù)形式從配 置數(shù)據(jù)管理模塊202獲取多路徑軟件默認(rèn)配置數(shù)據(jù);在實際應(yīng)用中,所述設(shè) 備管理模塊可以包括第二獲取數(shù)據(jù)子模塊2043,所述第二獲取數(shù)據(jù)子模塊 2043用于獲取不同存儲設(shè)備的配置文件或數(shù)據(jù)信息;生成信息子模塊2042, 用于根據(jù)所述函數(shù)名稱以及所述配置文件或數(shù)據(jù)信息生成路徑信息、虛擬邏 輯單元號信息、實際邏輯單元號信息。其中,所述設(shè)備管理才莫塊204在需要 時還可以更新虛擬LUN信息或者刪除虛擬LUN。
多路徑策略控制模塊205,用于從所述設(shè)備管理模塊203獲取所述路徑信 息、虛擬LUN信息、實際LUN信息,并根據(jù)所述路徑信息、虛擬LUN信息、 實際LUN信息為各傳輸路徑分配負(fù)載。
在本實施例中,所述多路徑策略控制模塊205包括獲取信息子模塊2051 和負(fù)載均衡子模塊2052,所述獲取信息子模塊用于從所述設(shè)備管理模塊獲取 所述路徑信息、虛擬LUN信息、實際LUN信息;所述負(fù)載均衡子模塊用于 根據(jù)所述路徑信息、虛擬LUN信息、實際LUN信息為各傳輸路徑分配負(fù)載; 優(yōu)選的,所述多路徑策略控制模塊還可以包括發(fā)送信息子模塊2053,用于將 所述不同存儲設(shè)備的識別信息發(fā)送至配置數(shù)據(jù)管理模塊202。
其中,所述發(fā)送信息子模塊2053收到所述不同存儲設(shè)備的識別信息時, 將其發(fā)送至配置數(shù)據(jù)管理模塊203,為所述配置數(shù)據(jù)管理模塊203根據(jù)所述不 同存儲設(shè)備的識別信息從數(shù)據(jù)庫203中查找相應(yīng)的配置文件或數(shù)據(jù)信息做準(zhǔn) 備。
SCSI命令接口模塊206,用于獲取不同存儲設(shè)備識別信息,并將所述不 同存儲設(shè)備的識別信息發(fā)送至至多路徑策略控制模塊205的發(fā)送信息子模塊 2053。
在本實施例中,所述SCSI命令接口模塊可以包括第二適配層和第二控制
層,所述第二適配層用于獲取不同存儲設(shè)備的識別信息,與存儲設(shè)備之間通 過SCSI命令進(jìn)行通信,所述第二控制層將所述不同存儲設(shè)備的識別信息發(fā)送 至多路徑策略控制模塊。
優(yōu)選的,本實施例還可以包括
管理接口模塊,所述管理接口模塊用于以界面形式顯示所述多路徑軟件
的數(shù)據(jù)信息,為用戶提供所述多路徑軟件的查詢、設(shè)置接口;
所述管理接口模塊和用戶態(tài)程序相連接,可以通過管理接口模塊使多路 徑軟件的信息呈現(xiàn)給用戶,例如,當(dāng)用戶查詢多路徑軟件當(dāng)前虛擬建立的路 徑信息、路徑流量或路徑故障情況時,所述管理接口模塊可以按照不同操作 系統(tǒng)的程序編寫方法提供不同的返回信息;用戶可以通過所述管理接口模塊 對多路徑軟件進(jìn)行各種管理"t喿作; 優(yōu)選的,本實施例還可以包括
設(shè)備重掃描模塊,用于當(dāng)存儲設(shè)備的Lun配置或者外部實際可用路徑發(fā) 生變化時,下發(fā)重掃描命令更新虛擬Lun;
需要說明的是,設(shè)備重掃描模塊只運行于部分類型的操作系統(tǒng)中,例如, Linux操作系統(tǒng),當(dāng)采用即插即用的操作系統(tǒng)時,設(shè)備重掃描模塊并不工作; 當(dāng)多路徑軟件檢測到新的存儲設(shè)備時,或者,外部實際的可用路徑發(fā)生變化
時,向設(shè)備管理模塊和SCSI命令接口模塊下發(fā)重掃描命令更新多路徑虛擬 Lun;
通過上述實施例公開的所述一種實現(xiàn)多路徑傳輸?shù)难b置實施例,能夠進(jìn) 一步解決跨不同存儲設(shè)備的問題,本實施例將一些已經(jīng)定義的具體存儲設(shè)備 的數(shù)據(jù)文件保存在數(shù)據(jù)庫,通過在連接不同存儲設(shè)備時調(diào)用不同的配置文件 和數(shù)據(jù)信息,可以實現(xiàn)支持FC、 SAS、 iSCSI多種存儲接口的目的,以及, 支持多種存儲設(shè)備型號,從而可以為每種設(shè)備型號提供最優(yōu)化的性能處理過 程,并且通過這種支持多操作系統(tǒng)和多種存儲設(shè)備的運用,還可以節(jié)省開發(fā) 工作量,更有利于維護(hù)工作的進(jìn)行。
參考圖3,示出了本發(fā)明的一種實現(xiàn)多路徑傳輸?shù)姆椒▽嵤├?的流程圖, 具體可以包括以下步驟
步驟301:操作系統(tǒng)接口模塊將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函
數(shù)名稱和參數(shù)形式;
步驟302:設(shè)備管理模塊根據(jù)所述函數(shù)名稱和參數(shù)形式從配置數(shù)據(jù)管理模 塊獲取多路徑軟件默認(rèn)配置數(shù)據(jù);
步驟303:設(shè)備管理模塊根據(jù)所述配置數(shù)據(jù)生成路徑信息、虛擬LUN信 息、實際LUN信息;
步驟304:多路徑策略控制模塊從所述設(shè)備管理模塊獲取所述路徑信息、 虛擬LUN信息、實際LUN信息;
步驟305:負(fù)載均衡子模塊多路徑策略控制模塊根據(jù)所述路徑信息、虛擬 LUN信息、實際LUN信息為各傳輸路徑分配傳輸?shù)呢?fù)載。
參考圖4,示出了本發(fā)明的 一種實現(xiàn)多路徑傳輸?shù)姆椒▽嵤├?的流程圖, 具體可以包括以下步驟
步驟401:操作系統(tǒng)接口模塊將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函 數(shù)名稱和參數(shù)形式;
步驟402:設(shè)備管理模塊根據(jù)所述函數(shù)名稱和參數(shù)形式,從配置數(shù)據(jù)管理 模塊獲取多路徑軟件默認(rèn)配置數(shù)據(jù);
步驟403: SCSI命令接口模塊獲取不同存儲設(shè)備的識別信息,并將所述 不同存儲設(shè)備的識別信息發(fā)送至多路徑策略控制模塊;
在實際應(yīng)用中,所述SCSI命令接口模塊將所述不同存儲設(shè)備的識別信息 發(fā)送至所述發(fā)送信息子模塊;
步驟404:多路徑策略控制模塊將所述不同存儲設(shè)備的識別信息發(fā)送至配 置數(shù)據(jù)管理模塊;
在實際應(yīng)用中,所述發(fā)送信息子模塊將所述識別信息發(fā)送至配置數(shù)據(jù)管 理模塊中的查詢數(shù)據(jù)子模塊;
步驟405:配置數(shù)據(jù)管理模塊根據(jù)所述不同存儲設(shè)備的識別信息從數(shù)據(jù)庫 中查詢不同存儲設(shè)備的配置文件或數(shù)據(jù)信息;
在實際中,數(shù)據(jù)庫可以為EXCEL表格,也可以為DBF文件或文本文件, 用于存儲不同存儲設(shè)備的配置文件或數(shù)據(jù)信息;可以裝載于所述配置數(shù)據(jù)模 塊內(nèi)部,也可以隨著^:件的運朽v人外部加載;
步驟406:設(shè)備管理模塊根據(jù)所述函數(shù)名稱以及所述配置文件或數(shù)據(jù)信息
建立路徑信息、實際LUN以及多路徑虛擬LUN;
步驟407:多路徑策略控制模塊從所述設(shè)備管理模塊獲取所述路徑信息、 虛擬LUN信息、實際LUN信息;
步驟408:多路徑策略控制模塊根據(jù)所述路徑信息、虛擬LUN信息、實 際LUN信息為各傳輸路徑分配傳輸?shù)呢?fù)載。
需要說明的是,在本實施例中,步驟401到步驟402的流程,以及步驟 403到步驟405的處理流程可以是同時進(jìn)行的,也可以是異步的,圖中用箭頭 示出了流程方向,是為了方便閱讀和理解,在實際中,當(dāng)步驟401和步驟403 的處理過程同步進(jìn)行時,后續(xù)的幾個步驟都相應(yīng)的可以有所變動,因此,本 發(fā)明實施例在此并不對其先后順序作出限定。
在本實施例中,通過從所述數(shù)據(jù)庫中查詢不同存儲設(shè)備的配置文件或數(shù) 據(jù)信息,可以根據(jù)不同存儲設(shè)備的接口調(diào)用相應(yīng)的接口函數(shù),可以實現(xiàn)支持 FC、 SAS、 iSCSI多種存儲設(shè)備接口的目的,以及,支持多種存儲設(shè)備型號, 從而達(dá)到適應(yīng)多種存儲設(shè)備接口的目的。
此外,需要說明的是,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方 法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成的,所述程 序可以存儲在一個計算機可讀取存儲介質(zhì)中,同時,該程序?qū)?yīng)的軟件還可 作為獨立的產(chǎn)品銷售或使用。其中,所述存儲介質(zhì)可以為ROM/RAM、磁碟、 光盤等。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明
的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或 者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò) 單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例 方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動的情況下,即可以 理解并實施。
以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限定。任何 在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本 發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種多路徑軟件的實現(xiàn)裝置,其特征在于,包括操作系統(tǒng)接口模塊,用于將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函數(shù)名稱和參數(shù)形式;配置數(shù)據(jù)管理模塊,用于進(jìn)行多路徑傳輸?shù)某跏蓟?,并提供所述多路徑軟件默認(rèn)配置數(shù)據(jù);設(shè)備管理模塊,用于根據(jù)所述操作系統(tǒng)接口模塊轉(zhuǎn)換的函數(shù)名稱和參數(shù)形式從所述配置數(shù)據(jù)管理模塊獲取所述多路徑軟件默認(rèn)配置數(shù)據(jù),并根據(jù)所述配置數(shù)據(jù)建立路徑信息及虛擬LUN信息;多路徑策略控制模塊,用于從所述設(shè)備管理模塊獲取所述路徑信息、虛擬LUN信息,并根據(jù)所述路徑信息和虛擬LUN信息按照負(fù)載均衡策略為各傳輸路徑進(jìn)行負(fù)載分擔(dān)。
2、 根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述操作系統(tǒng)接口模塊包 括第 一適配層和第 一控制層,所述第 一適配層用于將不同操作系統(tǒng)的函數(shù)接 口轉(zhuǎn)換為統(tǒng)一的函數(shù)名稱和參數(shù)形式,所述第一控制層用于根據(jù)所述第一適 配層轉(zhuǎn)換后的信息,控制多路徑軟件內(nèi)部模塊的工作流程。
3、 根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述設(shè)備管理模塊包括第一獲取數(shù)據(jù)子模塊和生成信息子模塊,所述第一獲取數(shù)據(jù)子模塊用于根據(jù)所述函數(shù)名稱和參數(shù)形式從配置數(shù)據(jù)管理模塊獲取多路徑軟件默認(rèn)配置數(shù)據(jù),所述生成信息子模塊用于根據(jù)所述配置數(shù)據(jù)建立路徑信息及虛擬LUN信 自
4、 根據(jù)權(quán)利要求1所述的裝置/其特征在于,所述配置數(shù)據(jù)管理模塊包 括讀寫管理子模塊和提供數(shù)據(jù)子模塊,所述讀寫管理子模塊用于負(fù)責(zé)多路 徑軟件默認(rèn)配置數(shù)據(jù)的讀寫管理,所述提供數(shù)據(jù)子模塊用于向所述設(shè)備管理 模塊提供所述多路徑軟件默認(rèn)配置數(shù)據(jù)。
5、 才艮據(jù)權(quán)利要求l所述的裝置,其特征在于,所述多路徑策略控制模塊 包括獲取信息子模塊和負(fù)載均衡子模塊,所述獲取信息子模塊用于從所述 設(shè)備管理模塊獲取所述路徑信息、虛擬LUN信息;所述負(fù)載均衡子模塊用于 根據(jù)所述路徑信息和虛擬LUN信息按照負(fù)載均衡策略為各傳輸路徑進(jìn)行負(fù)載 分擔(dān)。
6、 根據(jù)權(quán)利要求1至5任一項所述的裝置,其特征在于,還包括SCSI命令接口模塊,用于獲取不同存儲設(shè)備的識別信息,并將所述不同 存儲設(shè)備的識別信息按照內(nèi)部定義格式轉(zhuǎn)化后發(fā)送至多路徑策略控制模塊;數(shù)據(jù)庫,用于存放不同存儲設(shè)備的配置文件或數(shù)據(jù)信息;所述多路徑策略控制模塊還包括發(fā)送信息子模塊,用于將所述不同存儲 設(shè)備的識別信息發(fā)送至配置數(shù)據(jù)管理模塊;所述配置數(shù)據(jù)管理模塊還包括查詢數(shù)據(jù)子模塊,用于根據(jù)所述不同存儲 設(shè)備的識別信息從數(shù)據(jù)庫中查詢不同存儲設(shè)備的配置文件或數(shù)據(jù)信息;所述設(shè)備管理模塊還包括第二獲取數(shù)據(jù)子模塊,用于從配置數(shù)據(jù)管理 模塊獲取不同存儲設(shè)備的配置文件或數(shù)據(jù)信息;所述生成信息子模塊用于根 據(jù)所述函數(shù)名稱以及所述配置文件或數(shù)據(jù)信息生成路徑信息、虛擬邏輯單元 號信息、實際邏輯單元號信息;所述多路徑策略控制模塊,用于從所述設(shè)備管理模塊獲取所述路徑信息、 虛擬LUN信息,并根據(jù)所述路徑信息、虛擬LUN信息、實際LUN信息為各 傳輸路徑分配傳輸?shù)呢?fù)載。
7、 根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括第一路徑檢測模塊,則所述多路徑策略控制模塊還包括路徑倒換子模 塊,所述第一路徑檢測模塊用于當(dāng)傳輸路徑異常時,將所述異常信息發(fā)送至 所述路徑倒換子模塊,所述路徑倒換子模塊用于根據(jù)所述異常信息將所述傳 輸路徑切換為可用的實際路徑。
8、 根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括第二路徑檢測模塊,用于當(dāng)檢測到傳輸路徑恢復(fù)正常時,將所述恢復(fù)信 息發(fā)送至所述路徑倒換子模塊,所述路徑倒換子模塊用于根據(jù)所述恢復(fù)信息 將所述虛擬路徑切換為所述傳輸路徑。
9、 根據(jù)權(quán)利要求l所述的裝置,其特征在于,還包括初始化模塊,用于在多路徑軟件運行時啟動設(shè)備管理模塊工作。
10、 根據(jù)權(quán)利要求1所述的裝置,其特征在于,還包括管理接口模塊,所述管理接口模塊用于以界面形式顯示所述多路徑軟件 的數(shù)據(jù)信息,并為用戶提供所述多路徑軟件的查詢、設(shè)置接口。
11、 根據(jù)權(quán)利要求1所述的裝置,其特征在于,還包括設(shè)備重掃描模塊,用于當(dāng)存儲設(shè)備的邏輯單元號配置或者外部實際可用 路徑發(fā)生變化時,下發(fā)重掃描命令更新虛擬LUN。
12、 一種多路徑軟件的實現(xiàn)方法,其特征在于,包括將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函數(shù)名稱和參數(shù)形式;根據(jù)所述函數(shù)名稱和參數(shù)形式從配置數(shù)據(jù)管理模塊獲取多路徑軟件默認(rèn) 配置數(shù)據(jù);依據(jù)所述配置數(shù)據(jù)建立路徑信息和虛擬LUN信息;根據(jù)所述路徑信息和虛擬LUN信息,并按照負(fù)載均衡策略為各傳輸路徑 進(jìn)行負(fù)載分擔(dān)。
13、 根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括 獲取不同存儲設(shè)備的識別信息;根據(jù)所述識別信,t、獲取不同存儲設(shè)備的配置文件;依據(jù)所述函數(shù)名稱和配置文件或數(shù)據(jù)信息建立路徑信息、虛擬LUN信息、 實際LUN信息;根據(jù)所述路徑信息、虛擬LUN信息、實際LUN信息為各傳輸路徑分配 傳輸?shù)呢?fù)載。
14、 根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括檢測所述傳輸路徑是否異常,當(dāng)所述傳輸路徑異常時,根據(jù)異常信息將 所迷傳輸路徑切換為虛擬路徑。
15、 根據(jù)權(quán)利要求14所述的方法,其特征在于,還包括 檢測所述出現(xiàn)異常的傳輸路徑是否恢復(fù)正常,如果是,則將所述虛擬路 徑恢復(fù)為所述傳輸路徑。
16、根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括當(dāng)存儲設(shè)備的邏輯單元號配置或者外部實際可用路徑發(fā)生變化時,下發(fā) 重掃描命令更新虛擬邏輯單元號。
全文摘要
本發(fā)明實施例公開了一種多路徑軟件的實現(xiàn)裝置和方法,包括操作系統(tǒng)接口模塊,用于將不同操作系統(tǒng)的函數(shù)接口轉(zhuǎn)換為統(tǒng)一的函數(shù)名稱和參數(shù)形式;配置數(shù)據(jù)管理模塊,用于進(jìn)行多路徑軟件的初始化,并向設(shè)備管理模塊提供所述多路徑軟件默認(rèn)配置數(shù)據(jù);設(shè)備管理模塊,用于從配置數(shù)據(jù)管理模塊獲取多路徑軟件默認(rèn)配置數(shù)據(jù),并根據(jù)配置數(shù)據(jù)建立路徑信息、虛擬LUN信息、虛擬LUN和實際LUN的對應(yīng)關(guān)系;多路徑策略控制模塊,用于從設(shè)備管理模塊獲取所述路徑信息、虛擬LUN信息,并根據(jù)所述路徑信息和虛擬LUN信息為各傳輸路徑進(jìn)行負(fù)載分擔(dān)。本發(fā)明實施例在操作系統(tǒng)接口模塊通過對函數(shù)接口的屏蔽和統(tǒng)一,使本發(fā)明實施例可以適應(yīng)多個操作系統(tǒng)平臺。
文檔編號G06F9/44GK101387957SQ20081014930
公開日2009年3月18日 申請日期2008年9月12日 優(yōu)先權(quán)日2008年9月12日
發(fā)明者林 陳, 馬劍濤 申請人:成都市華為賽門鐵克科技有限公司