專利名稱:故障轉移和負載平衡的制作方法
領域本公開涉及用于故障轉移和負載平衡的方法、系統和程序。
相關技術描述I_T連接點是一對啟動設備與目標設備。請求輸入/輸出(I/O)操作的設備被稱為啟動者,執行這些操作的設備被稱為目標。例如,主計算機可以是啟動者,存儲設備可以是目標。目標可包括一個或多個單獨的存儲設備。
主機總線適配器(HBA)是“連接”操作系統與小型計算機系統接口(SCSI)總線的硬件設備。HBA管理主計算機與通信路徑之間數據的傳送。HBA成隊(teaming)指的是將若干HBA組合在一起形成“隊”,其中隊中的每一HBA連接,且可將數據路由至特定目標。HBA隊可在因特網小型計算機系統接口(iSCSI)(2003年2月發布的IETF RFC 3347)門戶(portal)組概念上構建。iSCSI由IETF在2003年2月定義為標準。門戶組概念可被描述為iSCSI網絡實體內共同支持使會話與跨這些門戶的連接協調的能力的網絡門戶的集合。HBA成隊可與運行Windows2000、WindowsXP或Windows.NET操作系統的小型計算機系統接口(SCSI)(美國國家標準協會(ANSI)SCSI控制器命令-2(SCC-2)NCITS.3181998)啟動者一起使用。I_T連接點的連接恢復策略可以是基于多個傳輸控制協議(TCP)連接(1981年9月發布的互聯網工程任務組(IETF)因特網標準(草案)(RFC)793)。即,來自運行在Windows操作系統上的iSCSI啟動者的分組在啟動者和目標之間經由多個連接發送和/或接收。如果到同一目標的多個連接建立在一個HBA內,則小型端口驅動器可處理故障轉移(即,當一個連接發生故障時,將分組路由至另一連接)和負載平衡(即,在HBA連接之間平衡負載)。
然而,本領域中存在對跨各自可具有到同一目標的一個或多個連接的若干HBA進行故障轉移和負載平衡的需求。
附圖簡述現在參考附圖,所有附圖中相同的參考標號代表相應的部分
圖1A示出了其中實現某些實施例的計算環境;圖1B示出了其中實現某些特定實施例的計算環境;圖2A以框圖示出了帶有可任選低類過濾驅動器(Class lower filter driver)的Windows存儲設備驅動器棧;圖2B以框圖示出了根據某些實施例可在SCSI環境中使用的具有故障轉移和負載平衡能力的存儲設備驅動器棧;圖3以框圖示出了根據某些實施例具有故障轉移和負載平衡能力的啟動者的配置的示例;圖4A和4B示出了根據某些實施例用于輔助存儲設備棧隱藏的操作;圖5A、5B和5C示出了根據某些實施例的通知機制的操作;以及圖6A和6B示出了根據某些實施例用于負載平衡的操作。
實施例的詳細描述在以下描述中,對構成說明書的一部分并示出若干實施例的附圖進行了參考。可以理解,可利用其他實施例,且可進行結構和操作性的改變而不背離實施例的范圍。
圖1A示出了可在其中實現各實施例的計算環境。計算機102用作啟動者,而數據存儲140用作目標來形成I T連接點。計算機102包括一個或多個中央處理單元(CPU)104、易失性存儲器106、非易失性存儲108(例如,磁盤驅動器、光盤驅動器、磁帶驅動器等)、操作系統110(例如,Windows200、WindowsXP、或Windows.NET)以及一個或多個網絡適配器128。在某些實施例中,每一網絡適配器是主機總線適配器(HBA)。過濾驅動器112、小型端口驅動器114和應用程序124也在存儲器106中執行。
計算機102可包括本領域中已知的計算設備,諸如大型機、服務器、個人計算機、工作站、膝上型計算機、手持式計算機等。可使用任何CPU 104和操作系統110。存儲器106中的程序和數據可作為存儲器管理操作的一部分交換到存儲108內。
數據存儲140包括一個或多個邏輯單元(即,“n”個邏輯單元,其中“n”可以是任何正整數值,在某些實施例中,它小于128)。僅為理解方便起見,示出了邏輯單元0、邏輯單元1和邏輯單元“n”。此外,邏輯單元號(LUN)與每一邏輯設備相關聯。在某些實施例中,HBA隊是基于目標和LUN來組織的(即,將可路由數據至目標的特定LUN的每一HBA組合成一個HBA隊),且一個HBA可屬于不同的HBA隊。
每一網絡適配器128包括以網絡適配器128的硬件實現的各種組件。每一網絡適配器128能夠經由網絡176發送和接收數據分組,網絡176可包括局域網(LAN)、因特網、廣域網(WAN)、存儲區域網(SAN)、WiFi(1999年9月16日發布的電氣和電子工程師學會(IEEE)802.11b)、無線LAN(1999年9月16日發布的IEEE 802.11b)等。
存儲驅動器120在存儲器106中執行,它包括網絡適配器128的特定命令來與網絡適配器128通信并作為操作系統110與每一網絡適配器128之間的接口。網絡適配器128和存儲驅動器120實現處理iSCSI分組的邏輯,其中SCSI命令被包裝在iSCSI分組中,iSCSI分組被包裝在TCP分組中。傳輸協議層將來自所接收的傳輸控制協議(TCP)(1981年9月發布的互聯網工程任務組(IETF)因特網標準(草案)(RFC)793)分組中的有效負荷解包,并將數據傳送到存儲驅動器120來返回至例如應用程序124。此外,發送數據的應用程序124將數據發送到存儲驅動器120,后者然后將數據發送到傳輸協議層以便在經由網絡176發送之前在TCP/IP分組中打包。
總線控制器134允許每一網絡適配器128在計算機總線160上通信,計算機總線160可包括本領域中已知的任何總線接口,諸如外圍部件互連(PCI)總線、PCI Express總線、工業標準體系結構(ISA)、擴展ISA、微通道體系結構(MCA)等。網絡適配器128包括用于實現媒體訪問控制(MAC)功能以便經由網絡176發送網絡分組到遠程數據存儲或從中接收網絡分組的物理通信層132。在某些實施例中,網絡適配器128可實現以太網協議(2002年3月8日發布的IEEE標準802.3),光纖通道(2003年12月發布的IETF RFC 3643)或本領域已知的任何其它網絡通信協議。
存儲108可包括內部存儲設備或者附加或網絡可訪問存儲。存儲108中的程序108被加載至存儲器106中并由CPU 104執行。使用輸入設備150向CPU 104提供用戶輸入,輸入設備可包括鍵盤、鼠標、指示筆、麥克風、觸敏顯示屏或本領域中已知的任何其它激活或輸入機制。輸出設備152能夠呈現從CPU 104或諸如顯示監視器、打印機、存儲等其它組件傳送的信息。
在某些實施例中,除存儲驅動器120以外,計算機102可包括其它驅動器。
網絡適配器128可包括執行附加操作來處理從計算機102或網絡176接收的分組的附加硬件邏輯。此外,網絡適配器128可實現傳輸層卸載引擎(TOE)來實現與計算機存儲驅動器120相對的網絡適配器中的傳輸協議層,以便進一步減少計算機102的處理負擔。或者,傳輸層可在存儲驅動器或其它驅動器120(例如,由操作系統提供)中實現。
在某些實施例中,各種結構和/或緩沖器(未示出)可駐留在存儲器106中,或可位于與存儲器106分開的存儲單元中。
圖1B示出了其中實現某些特定實施例的計算環境。圖1B中,計算機102包括與主機總線適配器(HBA)128a、128b和128c交互的存儲驅動器120。每一HBA128a、128b和128c可被描述為網絡適配器128(圖1A)。計算機102和HBA 128a、128b和128c可被描述為啟動者,而數據存儲140可被描述為目標。數據存儲140示出了代表邏輯單元的邏輯單元號(LUN)。
圖2A在框圖中示出帶有可任選低類過濾驅動器(Class lower filter driver)的Windows存儲設備驅動器棧200。存儲設備驅動器棧200包括上層協議(ULP)210,它可將分組發送至存儲類驅動器212或從中接收分組。存儲類驅動器212可將分組發送到低類過濾驅動器214或從中接收分組。低類過濾驅動器214在某些實施例中是可任選的。低類過濾驅動器214可將分組發送到端口驅動器216或從中接收分組。端口驅動器216可與小型端口驅動器218通信。小型端口驅動器218能夠經由各實施例提供的回調接口與低類過濾驅動器214通信。
各實施例提供了基于端口驅動器216上方的低類過濾驅動器214的特殊的過濾驅動器,以便用于在跨HBA連接之間進行故障轉移和負載平衡。過濾驅動器處理HBA的上下文切換和路徑控制。過濾驅動器也提供分組分發。具體地,過濾驅動器監聽包含在存儲類驅動器212與端口驅動器216之間的輸入/輸出請求分組(IRP)中的SCSI請求塊(SRB)分組。在某些實施例中,過濾驅動器被實現為低級類過濾驅動器。一旦創建存儲設備實例之后即通知過濾驅動器,然后,過濾驅動器將其自己連接至低類過濾驅動器214之下的存儲驅動器棧200。
圖2B以框圖示出了根據某些實施例可在SCSI環境中使用的具有故障轉移和負載平衡能力的存儲設備驅動器棧250。存儲設備驅動器棧250可與Windows200、WindowsXP或Windows.NET操作系統一起使用。存儲設備驅動器棧250包括上層協議(ULP)260,它可將IRP發送給SCSI磁盤類驅動器262或從中接收IRP。SCSI磁盤類驅動器262可將SRB/IRP發送到低級類過濾驅動器264中或從中接收SRB/IRP。低級類過濾驅動器264可將SRB/IRP發送到SCSI端口驅動器266或從中接收SRB/IRP。SCSI端口驅動器266與SCSI小型端口驅動器268通信。SCSI小型端口驅動器268能夠經由回調接口與低級類過濾驅動器264通信。
圖3以框圖示出了根據某些實施例具有故障轉移和負載平衡能力的啟動者的配置的示例。在圖3中,存儲類驅動器與過濾驅動器通信,后者與端口/小型端口驅動器通信。例如,存儲類驅動器使用存儲類驅動器1設備對象310和過濾驅動器1設備對象312與過濾驅動器通信,該過濾驅動器使用過濾驅動器1設備對象312和端口/小型端口驅動器設備對象316、314與端口/小型端口驅動器通信。小型端口經由端口驅動器導出的例程與HBA通信。每一HBA具有至一個或多個目標的通信路徑。例如,HBA1 318具有到目標1 320和目標2 340的通信路徑。HBA2 338具有到目標1 320和目標2340的通信路徑。HBA3 358具有到目標2 340和目標3360的通信路徑。各實施例提供了跨HBA 318、338和358的故障轉移和負載平衡,HBA中的某一些具有到同一目標的連接。在某些實施例中,所提出的故障轉移和負載平衡方法是基于建立在iSCSI門戶組概念上的HBA成隊。
再一次,在某些實施例中,HBA隊是基于目標和LUN來組織的(即,可將數據路由至目標的特定LUN的每一HBA被組合成一個HBA隊),且一個HBA可屬于不同的HBA隊。例如,數據可經由包括過濾驅動器1設備對象312、過濾驅動器4設備對象332和過濾驅動器5設備對象352的數據路徑傳遞至目標2 340內的同一LUN(未示出)。這些數據路徑中的每一條經由不同的HBA(分別是HBA1 318、HBA2 338和HBA3 358)傳遞,因此HBA1 318、HBA2 338和HBA3358在一個HBA隊中。即,對HBA隊中的每一HBA,路由至目標2 340內的一LUN的數據可流經該HBA隊中的任何HBA(用于故障轉移),或可同時流經該HBA隊中的每一HBA(用于負載平衡)。作為另一示例,HBA隊也由HBA1 318和HBA2 338形成,因為相應的數據路徑通過HBA1 318和HBA2 338到目標1 320中的LUN(未示出)。
各實施例提供了用于在過濾驅動器中實現故障轉移和負載平衡能力的新的回調接口。
故障轉移技術提供了當第一HBA或數據路徑認為第一HBA發生故障時到目標的通信路徑的高度可用性(即,分組被路由至連接至同一目標的第二HBA)。為進行故障轉移,各實施例提供了輔助存儲設備棧隱藏和通知機制。
圖4A和4B示出了根據某些實施例用于輔助存儲設備棧隱藏的操作。控制在框400處以為邏輯單元建立存儲設備棧開始。在框402中,確定這是否是用于該邏輯單元的第一存儲設備棧。如果是,則處理繼續至框404,否則處理繼續至框404。即,當存在連接至同一目標的若干HBA時,為每一HBA的目標的每一SCSI LUN創建存儲設備棧,以使過濾驅動器能夠為每一HBA處理和重定向SRB。如果要在為同一目標建立的每一存儲設備棧上安裝文件系統,由于對同一存儲設備實例的多重訪問,這可導致同步問題。從而,為每一LUN建立的第一存儲設備棧成為“主要”存儲設備棧。滯后,為該LUN建立的所有其它存儲設備棧作為“輔助”存儲設備棧來對待。因此,在框404中,存儲設備棧被指定為主要存儲設備棧。在框406中,存儲設備棧被指定為輔助存儲設備棧。
例如,存儲類驅動器1設備對象310、過濾驅動器1設備對象312、端口/小型端口驅動器設備對象314、316的存儲設備棧在該示例中被指定為主要存儲設備棧。存儲類驅動器1a設備對象330、過濾驅動器4設備對象332、端口/小型端口驅動器設備對象334、336的存儲設備棧在該示例中被指定為輔助存儲設備棧。存儲類驅動器1a設備對象350、過濾驅動器5設備對象352、端口/小型端口驅動器設備對象354、356的存儲設備棧在該示例中被指定為輔助存儲設備棧。過濾驅動器允許文件系統安裝在一個主要存儲設備棧(例如,存儲設備棧310、312、314和316)上,并阻止文件系統安裝在其它的輔助存儲設備棧(例如,存儲設備棧330、332、334和336以及存儲設備棧350、352、354和356)上。同樣,以存儲類驅動器2設備對象開始的存儲設備棧是主要存儲設備棧,而以存儲類驅動器2a設備對象開始的存儲設備棧是輔助存儲設備棧。由于輔助存儲設備棧隱藏,因此數據經由主要存儲設備棧而不是輔助存儲設備棧被路由。
圖4B中,控制在框420處以分組以成功狀態從輔助存儲設備棧完成開始。在框422中,過濾驅動器將成功狀態改成出錯狀態。在框424中,過濾驅動器將傳感鍵(sense key)值置為未準備好。在框426中,過濾驅動器對傳感碼置位,用于指示在存儲設備中沒有媒體。因此,在某些實施例中,為防止文件系統安裝在輔助存儲設備棧上,過濾驅動器將以成功狀態從輔助存儲設備棧中完成的SRB的狀態翻轉成出錯狀態(例如,SRB_STATUS_ERROR),將傳感鍵值置為SCSI_SENSE_NOT_READY,并將附加的傳感碼置為SCSI_ADSENSE_NO MEDIA_IN_DEVICE。
圖5A、5B和5C示出了根據某些實施例的通知機制的操作。過濾驅動器和小型端口驅動器實現用于彼此交互的協議。
圖5A示出了根據某些實施例在小型端口驅動器中實現的故障轉移處理的操作。在圖5A中,控制在框500處以在小型端口驅動器處接收對特定HBA數據路徑的分組開始。術語“HBA數據路徑”可被描述為從小型端口經由HBA到目標的數據路徑。一種類型的分組可以是SRB。在框502中,如果HBA數據路徑發生故障,則處理繼續至框504,否則處理繼續至框508。
在框504中,小型端口驅動器使用通知回調方法來通知過濾驅動器HBA數據路徑發生故障。可任選地,小型端口驅動器向過濾驅動器提供新的HBA數據路徑標識符,且過濾驅動器將分組重定向至該新的HBA數據路徑。例如,對由HBA1318、HBA2 338和HBA3 358組成的HBA隊,如果HBA1 318發生故障,則小型端口可指定包括HBA2 338或者HBA3 358中的任一個的新的HBA數據路徑。在某些實施例中,可經由I/O控制(IOCTL)以過濾驅動器的添加設備方法將指向通知回調方法的指針和指向當前HBA數據路徑的過濾設備擴展的指針發送給小型端口驅動器。在某些實施例中,當HBA數據路徑發生故障,小型端口驅動器通過以狀態參數和指針參數調用通知回調方法來向過濾驅動器通知HBA數據路徑發生故障,其中指針指向過濾驅動器的設備擴展,對應于當前路徑。
小型端口驅動器不以出錯狀態完成分組,因為這可引起端口驅動器凍結SRB隊列或啟動總線復位。相反,在框506中,小型端口驅動器以成功狀態為發生故障的HBA數據路徑完成未決(即未完成)和新接收的分組。在框508中,由于HBA數據路徑未發生故障,小型端口驅動器經由HBA數據路徑將分組發送到目標。
例如,如果在小型端口316處接收到SRB以便路由至HBA1 318,且如果HBA1318發生故障,則小型端口驅動器316為HBA1 318完成所有未決的SRB,作為通知過濾驅動器312將SRB重定向至另一HBA的協議的一部分。例如,過濾驅動器312可將SRB重定向至HBA2 338或HBA3 358。
圖5B示出了根據某些實施例用于故障轉移處理的過濾驅動器中實現的操作。控制在框510處以過濾驅動器接收HBA數據路徑故障通知開始。在框512中,如果由小型端口驅動器指定新的HBA數據路徑標識符,則處理繼續至框514,否則處理繼續至框518。在框514中,過濾驅動器將從發生故障的路徑完成的每一分組的狀態從成功狀態改成忙碌狀態。對狀態的這種改變使得類驅動器重發分組。當分組被重發時,過濾驅動器將它們作為新請求來對待,如果可能,則將它們重定向到新路徑。
在框516中,過濾驅動器將類驅動器遺漏的分組發送到所指定的HBA數據路徑。在框518中,由于沒有指定新的路徑標識符,則過濾驅動器選擇新的路徑。在某些實施例中,如果HBA隊中僅存在一條路徑,則過濾驅動器繼續將新分組發送到發生故障的HBA數據路徑(例如,以PATH_THROUGH模式工作)。
圖5C示出了根據某些實施例當HBA還原時小型端口驅動器中實現的操作。控制在框520處以HBA數據路徑還原(例如,使HBA在線或者HBA或數據路徑認為之前發生故障的該HBA還原)開始。當HBA數據路徑還原時,小型端口驅動器通過調用通知回調方法通知過濾驅動器(框522)。在某些實施例中,小型端口驅動器通過以狀態參數和指針參數調用通知回調方法向過濾驅動器通知HBA數據路徑的還原,其中指針指向過濾驅動器的設備擴展,對應于當前路徑。小型端口驅動器也可向過濾驅動器傳送過濾驅動器應將新分組重定向至的新路徑標識符。在框524中,如果指定了新的HBA數據路徑,則處理繼續至框526,否則處理繼續至框528。
當還原通知之后,如果指定了新的HBA數據路徑,則過濾驅動器將新分組發送到新HBA數據路徑(框526)。如果沒有指定新HBA數據路徑,則過濾驅動器繼續在當前活動的路徑上發送分組。
除故障轉移處理之外,各實施例提供了用于在跨多個HBA的多條HBA數據路徑上平衡I/O工作負載的過濾驅動器。各實施例提供了靜態負載平衡和動態負載平衡。
圖6A和6B示出了根據某些實施例用于負載平衡的操作。對負載平衡,HBA隊中的每一HBA數據路徑具有一相關聯的值,被稱為負載平衡份額,它代表總I/O工作負載中給定HBA數據路徑能夠處理的百分比。
圖6A示出了根據某些實施例用于靜態負載平衡的操作。控制在框600處以在過濾驅動器處接收要發送的數據分組開始。在框612中,過濾驅動器確定與HBA隊中的每一HBA數據路徑相關聯的負載平衡份額。對靜態負載平衡,負載平衡份額可手動指定,并將其存儲在例如Windows注冊表中。小型端口驅動器檢索負載平衡份額值,并經由通知回調方法將這些值轉發給過濾驅動器。當接收到所檢索的負載平衡份額值時,過濾驅動器以新值更新負載平衡份額。
在框604中,過濾驅動器為每一HBA數據路徑確定所發送的分組的移動平均數據長度(MDL)(例如,分組的SCSI傳送長度)。在某些實施例中,負載平衡可以是基于所發送的分組的實際數據長度而不是分組數。在框606中,過濾驅動器為每一HBA數據路徑確定數據限額。在某些實施例中,HBA數據路徑的數據限額是HBA數據路徑的MDL乘以該HBA數據路徑的負載平衡份額與HBA隊中負載平衡份額的最小值的比率(即,數據限額=MDL*(負載平衡份額/隊中的最小負載平衡份額))。
在某些實施例中,為每一分組或分組的組重新計算MDL,而周期性地重新計算數據限額(例如,當傳送了某一數量的分組之后)。周期性間隔可由HBA隊中HBA數據路徑的條數與可調負載平衡頻率更新因子的乘積來確定。負載平衡頻率更新因子允許調節負載平衡并提高性能。負載平衡頻率更新因子例如可由系統管理員設定。數據限額的更新頻率越高,所指定的與實際的負載平衡份額之間的差異越小。同樣,較頻繁的更新會占據較多的處理器時間。
在框608中,過濾驅動器為目標邏輯單元確定最大命令數。在框610中,過濾驅動器使用循環技術選擇在其上發送分組的HBA數據路徑,其中沿一條HBA數據路徑發送分組,直到達到了數據限額或達到了每個目標邏輯單元的最大命令數。
即,對靜態負載平衡,可使用循環技術。在某些實施例中,為循環操作在雙鏈表中收集當前HBA隊的有效HBA數據路徑。然后,使用該列表在負載平衡操作期間切換HBA數據路徑。否則,分組流切換至下一HBA隊成員。即,在某些實施例中,繼續對給定路徑的分組發送,直到所傳送的數據量達到為該HBA數據路徑預先計算的數據限額,或達到每個目標LUN的最大SCSI命令數。
對靜態負載平衡,HBA數據路徑之中分組的實際分配可不同于指定分配(即,例如由系統管理員指定的負載平衡份額)。實際與指定分配之間的差異越小,則靜態負載平衡的質量越高。所指定的負載平衡份額值影響靜態負載平衡的性能。
圖6B示出了根據某些實施例的用于動態負載平衡的操作。動態負載平衡只要在其它路徑上存在可用帶寬就可通過在路徑之間動態調節I/O工作負載來避免單個HBA數據路徑上的擁塞。
控制在框620處以過濾驅動器接收數據分組開始。在框622中,過濾驅動器為HBA隊中的每一HBA數據路徑確定數據傳送速度。在某些實施例中,為每一HBA數據路徑計算作為所傳送的總數據與傳送數據所花費的總時間的比率的數據傳送速度。更新例程確定傳送速度以何種頻率更新。對動態負載平衡的可調參數是傳送速度更新頻率因子,它定義每隔多久調用更新例程。傳送速度更新頻率因子可以基于傳遞子系統的具體行為來調節。
在框624中,過濾驅動器為每一HBA數據路徑更新負載平衡份額。對HBA隊中的每一路徑的負載平衡份額可與它們的數據傳送速度成比例地更新(即,所選HBA數據路徑的數據傳送速度除以HBA隊的數據傳送速度)。在框626中,過濾驅動器基于負載平衡份額選擇將在其上發送分組的HBA數據路徑。
當以故障轉移和負載平衡模式工作時,HBA故障將禁用一個或多個HBA隊成員。根據各實施例,其余的HBA隊成員繼續工作,從而維持所指定的負載平衡份額之間的相同比率。
因此,各實施例提供了高度可用性與靜態和動態負載平衡的組合。實現該解決方案的軟件模塊相對較小,且對系統施加最小的開銷。各實施例通過將過濾驅動器插入設備棧/從設備棧移除來提供快速且容易地開啟和關閉由該解決方案的各實施例提供的功能。各實施例可跨各種平臺(例如,Windows平臺,32位或64位)兼容。同樣,各實施例可適用于任何基于SCSI和/或基于iSCSI的SAN和/或網絡附加存儲(NAS)系統。而且,對故障轉移和負載平衡的實施例支持多個(兩個或更多)HBA。
其它實施例細節對故障轉移和負載平衡所描述的技術可被實現為使用標準程序設計和/或工程技術來生產軟件、固件、硬件或其任何組合的方法、裝置或制品。如此處所使用的,術語“制品”指的是以硬件邏輯(例如,集成電路芯片、可編程門陣列(PGA)、專用集成電路(ASIC)等)或諸如磁存儲介質(例如,硬盤驅動器、軟盤、磁帶等)、光存儲(CD-ROM、光盤等)、易失性和非易失性存儲器設備(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可編程邏輯等)等的計算機可讀介質實現的代碼或邏輯。計算機可讀介質中的代碼由處理器訪問和執行。其中實現較佳實施例的代碼還可經由傳輸介質或通過網絡從文件服務器訪問。在這樣的情況中,其中實現代碼的制品可包括傳輸介質,諸如網絡傳輸線、無線傳輸介質、信號傳播空間、無線電波、紅外信號等。因此“制品”可包括其中具體化代碼的介質。此外,制品可包括其中具體化、處理和執行代碼的硬件和軟件組件的組合。當然,本領域的技術人員認識到,可對該配置進行眾多修改,而不背離實施例的范圍,且制品可包括本領域中已知的任何信息承載介質。
在所述實施例中,某些邏輯是在驅動器中實現的。在替換實施例中,在驅動器和/或網絡適配器中實現的邏輯可全部或部分在網絡硬件中實現。
在某些實施例中,網絡適配器可被實現為PCI卡。在替換實施例中,網絡適配器可包括安裝在計算機102主板上的集成電路組件。
在某些實施例中,網絡適配器可被配置成通過連接至網絡適配器上的端口的電纜發送數據。在替換實施例中,網絡適配器實施例可被配置成經由諸如無線LAN等無線網絡或連接發送數據。
圖4A、4B、5A、5B、5C、6A和6C所示的邏輯示出以某一順序發生的某些事件。在替換實施例中,某些操作能以不同的順序執行、修改或移除。而且,可對上述邏輯添加操作,而仍舊遵循所述實施例。此外,此處所述的操作可順序發生,或某些操作可并行處理。再者,操作可由單個處理單元或由分布式處理單元執行。
為說明和描述的目的呈現了對各種實施例的前述描述。它不旨在是詳盡的,或將實施例限于所公開的精確形式。考慮到以上教導,各種修改和變化皆有可能。各實施例的范圍旨在不是由該詳細描述,而是由所附的權利要求書來限制。以上的說明書、示例和數據提供了對各實施例的組成部分的制造和使用的完整描述。由于可進行眾多實施例,而不背離各實施例的精神和范圍,因此這些實施例歸于所附權利要求書。
權利要求
1.一種用于在第一網絡適配器和通過第一網絡適配器的數據路徑的至少其中之一發生時進行故障轉移的計算機系統中的方法,其中所述計算機系統包括過濾驅動器,且其中所述第一網絡適配器連接至第二網絡適配器,所述方法包括使用所述過濾驅動器接收所述第一網絡適配器與通過所述第一網絡適配器的數據路徑的至少其中之一發生故障的路徑故障通知;以及使用所述過濾驅動器將定向到所述第一網絡適配器的分組重新路由到所述第二網絡適配器。
2.如權利要求1所述的方法,其特征在于,還包括使用所述過濾驅動器將在接收到路徑故障通知之前定向到所述第一網絡適配器的每一分組的成功狀態改成忙碌狀態。
3.如權利要求1所述的方法,其特征在于,還包括使用所述過濾驅動器確定包含所述第二網絡適配器的新的數據路徑。
4.如權利要求1所述的方法,其特征在于,還包括使用所述過濾驅動器接收所述第一網絡適配器還原的通知;以及使用所述過濾驅動器基于所述通知是否指定新的數據路徑來為新數據分組確定數據路徑。
5.如權利要求1所述的方法,其特征在于,還包括響應于為邏輯單元建立第一存儲設備棧,使用所述過濾驅動器將所述第一存儲設備棧指定為主要存儲設備棧;以及響應于為所述邏輯單元建立后繼存儲設備棧,使用所述過濾驅動器將所述后繼存儲設備棧指定為輔助存儲設備棧。
6.如權利要求5所述的方法,其特征在于,還包括使用所述過濾驅動器防止文件系統安裝在所述輔助存儲設備棧上。
7.一種用于在網絡適配器和通過所述網絡適配器的數據路徑的至少其中之一發生故障時進行故障轉移的方法,其中所述網絡適配器被連接至與過濾驅動器相連的小型端口驅動器,所述方法包括使用所述小型端口驅動器確定所述網絡適配器發生故障;以及使用所述小型端口驅動器向所述過濾驅動器通知所述網絡適配器發生故障。
8.如權利要求7所述的方法,其特征在于,還包括使用所述小型端口驅動器指定將由所述過濾驅動器用來重新路由分組的新數據路徑。
9.如權利要求7所述的方法,其特征在于,還包括使用所述小型端口驅動器以成功的狀態完成對定向到所述第一網絡適配器的未決分組的處理。
10.如權利要求7所述的方法,其特征在于,還包括使用所述小型端口驅動器確定所述網絡適配器被還原;以及使用小型端口驅動器向過濾驅動器通知所述網絡適配器被還原。
11.一種用于在過濾驅動器中實現的靜態負載平衡的方法,其中所述過濾驅動器執行為多條數據路徑中的每一條確定數據限額;為目標邏輯單元標識最大命令數;以及基于所述數據限額和最大命令數選擇在其上發送分組的數據路徑。
12.如權利要求11所述的方法,其特征在于,所述過濾驅動器還執行確定與隊中每一數據路徑相關聯的負載平衡份額;以及為每一數據路徑確定所發送分組的平均數據長度。
13.如權利要求11所述的方法,其特征在于,所述數據路徑是使用循環技術選擇的,且其中分組沿所選數據路徑發送,直到滿足所述數據路徑的數據限額和直到達到最大命令數這兩者的至少其中之一。
14.一種用于在過濾驅動器中實現的動態負載平衡的方法,其中所述過濾驅動器執行為多條數據路徑中的每一條確定數據傳送速度;基于所述多條數據路徑中的每一條的數據傳送速度,為所述多條數據路徑中額每一條更新負載平衡份額;以及基于所述多條數據路徑的每一條的負載平衡份額選擇在其上發送分組的數據路徑。
15.如權利要求14所述的方法,其特征在于,所述數據傳送速度是對所述多條數據路徑中的每一條作為所傳送的總數據與傳送數據所花費的總時間的比率來計算的。
16.如權利要求14所述的方法,其特征在于,確定所述數據傳送速度的頻率是可調的。
17.一種耦合至網絡和數據存儲的系統,包括主計算機;管理對所述數據存儲的輸入/輸出(I/O)訪問的存儲控制器,其中所述存儲控制器被耦合至所述主計算機;第一網絡適配器;第二網絡適配器;以及所述主計算機處的過濾驅動器,其中所述過濾驅動器能夠接收所述第一網絡適配器和通過所述第一網絡適配器的數據路徑的至少其中之一發生故障的路徑故障通知,并將定向到所述第一網絡適配器的分組重新路由至所述第二網絡適配器。
18.如權利要求17所述的系統,其特征在于,所述過濾驅動器還能夠將在接收到所述路徑故障通知之前定向到所述第一網絡適配器的每一分組的成功狀態改成忙碌狀態。
19.如權利要求17所述的系統,其特征在于,所述過濾驅動器還能夠確定包含所述第二網絡適配器的新數據路徑。
20.如權利要求17所述的系統,其特征在于,所述過濾驅動器還能夠接收所述第一網絡適配器被還原的通知;以及基于所述通知是否指定新數據路徑來為新數據分組確定數據路徑。
21.如權利要求17所述的系統,其特征在于,所述過濾驅動器還能夠響應于為邏輯單元建立第一存儲設備棧,將所述第一存儲設備棧指定為主要存儲設備棧;以及響應于為所述邏輯單元建立后繼存儲設備棧,將所述后繼存儲設備棧指定為輔助存儲設備棧。
22.如權利要求21所述的系統,其特征在于,所述過濾驅動器還能夠防止文件系統安裝在所述輔助存儲設備棧上。
23.一種耦合至網絡和數據存儲的系統,包括主計算機;管理對所述數據存儲的輸入/輸出(I/O)訪問的存儲控制器,其中所述存儲控制器耦合至所述主計算機;所述主計算機處的過濾驅動器;所述主計算機處的至少兩個網絡適配器;以及所述主計算機處的小型端口驅動器,其中所述小型端口驅動器能夠確定所述網絡適配器的至少其中之一發生故障并向所述過濾驅動器通知所述網絡適配器發生故障。
24.如權利要求23所述的系統,其特征在于,所述小型端口驅動器還能夠指定將由所述過濾驅動器用來重新路由分組的新數據路徑。
25.如權利要求23所述的系統,其特征在于,所述小型端口驅動器還能夠以成功狀態完成對定向到所述發生故障的網絡適配器的未決分組的處理。
26.如權利要求23所述的系統,其特征在于,所述小型端口驅動器還能夠確定所述發生故障的網絡適配器被還原;以及向所述過濾驅動器通知所述發生故障的網絡適配器被還原。
27.一種耦合至網絡和數據存儲的系統,包括主計算機;管理對所述數據存儲的輸入/輸出(I/O)訪問的存儲控制器,其中所述存儲控制器耦合至所述主計算機;以及能夠為多條數據路徑中的每一條確定數據限額、為目標邏輯單元標識最大命令數、以及基于所述數據限額和所述最大命令數選擇在其上發送分組的數據路徑的過濾驅動器。
28.如權利要求27所述的系統,其特征在于,所述過濾驅動器還執行確定與隊中的每一數據路徑相關聯的負載平衡份額;以及為每一數據路徑確定所發送的分組的平均數據長度。
29.如權利要求27所述的系統,其特征在于,所述數據路徑是使用循環技術來選擇的,且其中沿所選擇的數據路徑發送分組,直到滿足所述數據路徑的數據限額和直到達到最大命令數這兩者中的至少其中之一。
30.一種耦合至網絡和數據存儲的系統,包括主計算機;管理對所述數據存儲的輸入/輸出(I/O)訪問的存儲控制器,其中所述存儲控制器耦合至所述主計算機;以及能夠為多條數據路徑的每一條確定數據傳送速度、基于所述多條數據路徑的每一條的數據傳送速度為所述多條數據路徑的每一條更新負載平衡份額、以及基于所述多條數據路徑的每一條的負載平衡份額確定在其上發送分組的數據路徑的過濾驅動器。
31.如權利要求30所述的系統,其特征在于,所述數據傳送速度是對所述多條數據路徑中的每一條作為所傳送的總數據與傳送數據所花費的總時間的比率來計算的。
32.如權利要求30所述的系統,其特征在于,確定所述數據傳送速度的頻率是可調的。
33.一種包含其中存儲指令的存儲介質的制品,所述指令在由計算設備執行時導致接收第一網絡適配器與通過所述第一網絡適配器的數據路徑的至少其中之一發生故障的路徑故障通知;以及將定向到所述第一網絡適配器的分組重新路由至第二網絡適配器。
34.如權利要求33所述的制品,其特征在于,所述指令在被執行時還導致將在接收到所述路徑故障通知之前定向到所述第一網絡適配器的每一分組的成功狀態改成忙碌狀態。
35.如權利要求33所述的制品,其特征在于,所述指令在被執行時還導致確定包含所述第二網絡適配器的新數據路徑。
36.如權利要求33所述的制品,其特征在于,所述指令在被執行時還導致接收所述第一網絡適配器被還原的通知;以及基于所述通知是否指定新數據路徑來為新數據分組確定數據路徑。
37.如權利要求33所述的制品,其特征在于,所述指令在被執行時還導致響應于為邏輯單元建立第一存儲設備棧,將所述第一存儲設備棧指定為主要存儲設備棧;以及響應于為所述邏輯單元建立后繼存儲設備棧,將所述后繼存儲設備棧指定為輔助存儲設備棧。
38.如權利要求37所述的制品,其特征在于,所述指令在被執行時還導致防止文件系統安裝在所述輔助存儲設備棧上。
39.一種包含其中存儲指令的存儲介質的制品,所述指令在由計算設備執行時導致確定所述網絡適配器發生故障;以及向所述過濾驅動器通知所述網絡適配器發生故障。
40.如權利要求39所述的制品,其特征在于,所述指令在被執行時還導致指定將由所述過濾驅動器用來重新路由分組的新數據路徑。
41.如權利要求39所述的制品,其特征在于,所述指令在被執行時還導致以成功的狀態完成對定向到所述第一網絡適配器的未決分組的處理。
42.如權利要求39所述的制品,其特征在于,所述指令在被執行時還導致確定所述網絡適配器被還原;以及向過濾驅動器通知所述網絡適配器被還原。
43.一種包含其中存儲指令的存儲介質的制品,所述指令在由計算設備執行時導致為多條數據路徑中的每一條確定數據限額;為目標邏輯單元標識最大命令數;以及基于所述數據限額和最大命令條數選擇在其上發送分組的數據路徑。
44.如權利要求43所述的制品,其特征在于,所述指令在被執行時還導致確定與隊中每一數據路徑相關聯的負載平衡份額;以及為每一數據路徑確定所發送分組的平均數據長度。
45.如權利要求43所述的制品,其特征在于,所述數據路徑是使用循環技術來選擇的,且其中分組沿所選數據路徑發送,直到滿足所述數據路徑的數據限額和直到達到最大命令數這兩者中的至少其中之一。
46.一種包含其中存儲指令的存儲介質的制品,所述指令在由計算設備執行時導致為多條數據路徑中的每一條確定數據傳送速度;基于所述多條數據路徑中的每一條的數據傳送速度,為所述多條數據路徑中額每一條更新負載平衡份額;以及基于所述多條數據路徑的每一條的負載平衡份額選擇在其上發送分組的數據路徑。
47.如權利要求46所述的制品,其特征在于,所述數據傳送速度是對所述多條數據路徑中的每一條作為所傳送的總數據與傳送數據所花費的總時間的比率來計算的。
48.如權利要求46所述的系統,其特征在于,確定所述數據傳送速度的頻率是可調的。
全文摘要
本發明涉及用于故障轉移和用于平衡靜態和動態負載的技術。過濾驅動器接收第一網絡適配器和通過第一網絡適配器的數據路徑的至少其中之一發生故障的路徑故障通知,并將定向到第一網絡適配器的分組重新路由到第二網絡適配器。小型端口驅動器確定網絡適配器和通過網絡適配器的數據路徑的至少其中之一發生故障,并向過濾驅動器通知網絡適配器和通過網絡適配器的數據路徑的至少其中之一發生故障。過濾驅動器為多條數據路徑的每一條確定數據限額,為給定的目標邏輯單元確定最大命令數,并基于數據限額和最大命令數選擇在其上發送分組的數據路徑。過濾驅動器為多條數據路徑的每一條確定數據傳送速度,基于多條數據路徑的每一條的數據傳送速度為多條數據路徑的每一條更新負載平衡份額,并基于多條數據路徑的每一條的負載平衡份額選擇在其上發送分組的數據路徑。
文檔編號H04L12/66GK1942862SQ200480041815
公開日2007年4月4日 申請日期2004年3月19日 優先權日2004年3月19日
發明者A·別利亞科夫, M·賽尼科夫司基, A·德羅茲多夫 申請人:“英特爾A/O”股份公司