專(zhuān)利名稱(chēng)::對(duì)不完全raid盤(pán)寫(xiě)進(jìn)行可靠故障轉(zhuǎn)移的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及客戶(hù)/服務(wù)器計(jì)算環(huán)境中的獨(dú)立磁盤(pán)冗余陣列(RAID),并且更具體地涉及具有與群集中的故障節(jié)點(diǎn)的寫(xiě)操作有關(guān)的可靠故障轉(zhuǎn)移(failover)能力的系統(tǒng)和方法。
背景技術(shù):
:在現(xiàn)代的客戶(hù)/服務(wù)器計(jì)算環(huán)境中,群集是一組稱(chēng)為節(jié)點(diǎn)的相連、獨(dú)立計(jì)算機(jī)系統(tǒng),群集起到單個(gè)系統(tǒng)的作用。客戶(hù)機(jī)在與群集交互時(shí)把它看成是單個(gè)服務(wù)器。群集的組合計(jì)算能力和存儲(chǔ)能力使群集在從在線商務(wù)到科學(xué)建模等許多應(yīng)用中成為有用的工具。在許多實(shí)例中,對(duì)于商業(yè)努力或科學(xué)試驗(yàn)的全面成功,這些系統(tǒng)的可靠性是關(guān)鍵性的。計(jì)算機(jī)系統(tǒng),包括群集系統(tǒng),最脆弱組成部分是整個(gè)電子組件中唯一實(shí)質(zhì)上包含機(jī)械、運(yùn)動(dòng)部件的硬盤(pán)驅(qū)動(dòng)器。寫(xiě)到單個(gè)驅(qū)動(dòng)器的數(shù)據(jù)只和驅(qū)動(dòng)器一樣可靠,但許多驅(qū)動(dòng)器都最終會(huì)出現(xiàn)故障。許多情況中存儲(chǔ)在這些硬盤(pán)驅(qū)動(dòng)器上的數(shù)據(jù)代表關(guān)鍵的客戶(hù)信息、投資信息、學(xué)術(shù)信息等。在對(duì)于所有企業(yè)信息存儲(chǔ)和訪問(wèn)日益變?yōu)橹匾哪甏?,需要更加可靠的?shù)據(jù)存儲(chǔ)方法。一種現(xiàn)有存儲(chǔ)方法是獨(dú)立磁盤(pán)冗余陣列(RAID)。RAID系統(tǒng)將該陣列當(dāng)作單個(gè)大磁盤(pán)來(lái)存儲(chǔ)和訪問(wèn)多個(gè)獨(dú)立的硬盤(pán)驅(qū)動(dòng)器。把數(shù)據(jù)分布在這些多個(gè)的盤(pán)上減小了由于一個(gè)磁盤(pán)機(jī)出故障而丟失數(shù)據(jù)的風(fēng)險(xiǎn),并且還改進(jìn)存取時(shí)間。RAID是為了在事務(wù)處理或應(yīng)用服務(wù)器以及在大的文件服務(wù)器中使用而開(kāi)發(fā)的。目前,RAID也用于需要高傳輸速率的臺(tái)式或工作站系統(tǒng)。在例如上面所說(shuō)明的群集環(huán)境中,實(shí)現(xiàn)RAID和類(lèi)似公用磁盤(pán)陣列可以使客戶(hù)機(jī)能夠訪問(wèn)組合在一起的節(jié)點(diǎn)組的計(jì)算能力并且具有該磁盤(pán)陣列的大的存儲(chǔ)容量。圖1示意地表示現(xiàn)有技術(shù)的群集系統(tǒng)100。在圖中示出一個(gè)節(jié)點(diǎn)群集系統(tǒng)102、一個(gè)網(wǎng)絡(luò)集線器104、一個(gè)群集管理器106以及多個(gè)客戶(hù)機(jī)108。通過(guò)由二個(gè)典型地是計(jì)算機(jī)系統(tǒng)或服務(wù)器的節(jié)點(diǎn)110構(gòu)成的雙節(jié)點(diǎn)系統(tǒng)的例子示出所描繪的節(jié)點(diǎn)群集系統(tǒng)102。節(jié)點(diǎn)群集系統(tǒng)102可由任何數(shù)量的節(jié)點(diǎn)110構(gòu)成,其數(shù)量由所需的存儲(chǔ)和計(jì)算能力決定。RAID控制器112描繪成在各個(gè)節(jié)點(diǎn)110內(nèi),下面會(huì)參照?qǐng)D2更詳細(xì)地討論RAID控制器112。各節(jié)點(diǎn)110通過(guò)RAID控制器112向RAID陣列114傳送數(shù)據(jù)。RAID控制器112通過(guò)數(shù)據(jù)通道116和RAID陣列114通信。在該描述的實(shí)施例中,連接RAID控制器112和RAID陣列114的數(shù)據(jù)通道116最好是小型計(jì)算機(jī)系統(tǒng)接口(SCSI)通道。群集系統(tǒng)102和局域網(wǎng)(LAN)120或者和專(zhuān)用網(wǎng)絡(luò)電纜或互連118連接。在所描述的實(shí)施例中,群集系統(tǒng)102、群集管理器106以及多個(gè)客戶(hù)機(jī)108通過(guò)網(wǎng)絡(luò)集線器104連接。群集管理器106最好監(jiān)視和管理群集操作。偶爾,節(jié)點(diǎn)110中的一個(gè)節(jié)點(diǎn)的RAID控制器112會(huì)出故障,一般因?yàn)樵收匣驍嚯?。?dāng)此種情況發(fā)生時(shí),非高速緩存的寫(xiě)操作可能正在進(jìn)行并且不能完成。后果是可能丟失關(guān)鍵數(shù)據(jù)?,F(xiàn)參照?qǐng)D2,目前的RAID控制器112通常包括微處理器202、SCSI控制器204、閃速只讀存儲(chǔ)器(ROM)模塊206、動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM)模塊208以及非易失性隨機(jī)訪問(wèn)存儲(chǔ)器(NVRAM)模塊210。鏡象競(jìng)爭(zhēng)表(mirrorracetable,MRT)214駐留在NVRAM模塊210內(nèi)。MRT214保持每組還在進(jìn)行RAID盤(pán)上的寫(xiě)操作的數(shù)據(jù)的起始邏輯塊地址。該組數(shù)據(jù)可以在盤(pán)上是成帶的或者按稱(chēng)為高速緩存行組的較小的數(shù)據(jù)組來(lái)組織。圖3a示出MRT214的一種現(xiàn)有技術(shù)實(shí)施例,其中示出有效標(biāo)志位302、邏輯塊地址303和邏輯驅(qū)動(dòng)器號(hào)306。MRT214保持未完成寫(xiě)操作列表。當(dāng)完成某寫(xiě)操作時(shí),RAID控制器112清除該寫(xiě)操作的MRT項(xiàng)。當(dāng)發(fā)生故障時(shí),一旦恢復(fù)功能RAID控制器112進(jìn)行一致性檢驗(yàn)。偶爾,某個(gè)RAID控制器112可能會(huì)出現(xiàn)故障。在這種情況下,其它工作的RAID控制器不能訪問(wèn)該出故障控制器112的MRT214。其余RAID控制器112不能識(shí)別或者不能協(xié)調(diào)該出故障控制器112的未完成寫(xiě)操作。但是,其余RAID控制器112能夠識(shí)別和該出故障控制器112有關(guān)的RAID114的邏輯驅(qū)動(dòng)器。另一個(gè)控制器112會(huì)啟動(dòng)這些邏輯驅(qū)動(dòng)器的每一個(gè)上的從開(kāi)始到結(jié)束的后臺(tái)一致性檢驗(yàn)(BGCC),并且若需要,找出由于不完全寫(xiě)而造成的數(shù)據(jù)不一致的一致性恢復(fù)。在目前所使用的邏輯驅(qū)動(dòng)器尺寸下,對(duì)RAID陣列114的所述邏輯驅(qū)動(dòng)器的BGCC可能耗時(shí)數(shù)小時(shí)。在此期間內(nèi),允許在前臺(tái)對(duì)RAID陣列114的BGCC所涉及的那些尚未完全檢查的邏輯驅(qū)動(dòng)器上進(jìn)行讀和寫(xiě)操作。在RAID盤(pán)陣列114的所述邏輯驅(qū)動(dòng)器之一的一個(gè)物理驅(qū)動(dòng)器定位在一個(gè)尚待進(jìn)行一致性處理的高速緩存行組而發(fā)生讀請(qǐng)求故障的情況下,可能出現(xiàn)數(shù)據(jù)毀壞問(wèn)題。該數(shù)據(jù)毀壞故障是從邏輯驅(qū)動(dòng)器的其它物理驅(qū)動(dòng)器再生數(shù)據(jù)的某RAID控制器112未意識(shí)到該數(shù)據(jù)不一致的后果。該問(wèn)題通常稱(chēng)為“寫(xiě)入洞穴”。從而,從上面的討論可以看出技術(shù)上需要一種用來(lái)解決盤(pán)故障后的不完整RAID盤(pán)寫(xiě)入的改進(jìn)的可靠故障轉(zhuǎn)移方法和設(shè)備。
發(fā)明內(nèi)容根據(jù)現(xiàn)有技術(shù)狀態(tài),尤其根據(jù)技術(shù)上尚未由目前可使用的設(shè)備和方法完全解決的問(wèn)題及需要,開(kāi)發(fā)了本發(fā)明的設(shè)備和方法。從而,本發(fā)明一個(gè)總目的是提供一種克服上面討論的現(xiàn)有技術(shù)的不足的大部分或全部的設(shè)備和方法。為了達(dá)到上述目的并且依據(jù)本文中在各優(yōu)選實(shí)施例里體現(xiàn)出的并概括說(shuō)明的本發(fā)明,提供一種改進(jìn)的可靠故障轉(zhuǎn)移設(shè)備和方法。本發(fā)明的這些和其它目的、特征和優(yōu)點(diǎn)通過(guò)下面的說(shuō)明以及所附權(quán)利要求書(shū)將會(huì)變得更為清楚,或者通過(guò)按照下面闡述那樣實(shí)現(xiàn)本發(fā)明而了解它們。在一些實(shí)施例中,本發(fā)明包括多個(gè)共享盤(pán)和多個(gè)分別配置成訪問(wèn)該多個(gè)盤(pán)的RAID控制器。為了分配和保持盤(pán)上正在進(jìn)行寫(xiě)操作的數(shù)據(jù)的起始邏輯塊地址(LBA)的位置,除可由每個(gè)RAID控制器訪問(wèn)的公用MRT存儲(chǔ)單元之外還實(shí)現(xiàn)一個(gè)鏡象競(jìng)爭(zhēng)表(MRT)。該公用MRT存儲(chǔ)單元還復(fù)制位于每個(gè)RAID控制器上的所有MRT。在本發(fā)明的一優(yōu)選實(shí)施例中,公用MRT存儲(chǔ)單元包含一個(gè)非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)模塊。該NVRAM模塊可在一共享的磁盤(pán)附件內(nèi)實(shí)現(xiàn)。替代地,該NVRAM模塊可位于每個(gè)RAID控制器上。在一實(shí)施例中,該共享磁盤(pán)附件包含一個(gè)SCSI接入容錯(cuò)附件(SAF-TE)。優(yōu)選地,在每個(gè)RAID控制器上,該設(shè)備還包括一個(gè)配置成搜索MRT第一自由項(xiàng)的MRT搜索模塊和一個(gè)配置成通過(guò)輸入要寫(xiě)到該多個(gè)共享盤(pán)上的第一高速緩存行組的邏輯塊地址(LBA)在MRT中建立一項(xiàng)的MRT項(xiàng)模塊。還可以設(shè)置一個(gè)配置成保存一項(xiàng)MRT指針的MRT指針模塊,一個(gè)配置成尋找和檢索項(xiàng)的MRT指針的MRT檢索模塊,一個(gè)配置成必要時(shí)為了進(jìn)行一致性恢復(fù)定位盤(pán)組上的數(shù)據(jù)的高速緩存行組(在節(jié)點(diǎn)引導(dǎo)或群集故障轉(zhuǎn)移后)的MRT讀模塊,一個(gè)配置成從MRT中查找并清除MRT中的項(xiàng)的MRT清除模塊,以及一個(gè)配置成把MRT從該共享磁盤(pán)附件傳送到至少一個(gè)RAID控制器的MRT傳送模塊。提供本發(fā)明的用于建立可由每個(gè)RAID控制器訪問(wèn)的共用MRT存儲(chǔ)單元的方法。在一實(shí)施例中,該方法包括從該公用存儲(chǔ)單元訪問(wèn)MRT,更新MRT,檢測(cè)至少一個(gè)的RAID控制器的故障,以及可靠地分配出故障的RAID的工作負(fù)荷。在一實(shí)施例中,該方法還包括從表的頂?shù)降姿阉鱉RT以查找第一自由項(xiàng);通過(guò)輸入要寫(xiě)到多個(gè)共享盤(pán)的第一高速緩存行組的邏輯塊地址在MRT中建立一項(xiàng);保存該項(xiàng)的MRT指針;查找并檢索該項(xiàng)的MRT指針;以及從MRT查找和清除該項(xiàng)。為了提供可靠的故障轉(zhuǎn)移能力,該方法還可以包括把MRT從共享磁盤(pán)附件傳送到至少一個(gè)的MAID控制器。為了便于理解本發(fā)明的優(yōu)點(diǎn)和目的,通過(guò)參照附圖對(duì)特定實(shí)施例的描述,上面簡(jiǎn)單說(shuō)明的本發(fā)明將得到更具體的說(shuō)明。應(yīng)理解這些附圖僅描繪本發(fā)明的典型實(shí)施例而不構(gòu)成對(duì)本發(fā)明的范圍限制,通過(guò)利用附圖以附加的具體細(xì)節(jié)說(shuō)明和解釋本發(fā)明,附圖中圖1是一個(gè)示意方框圖,示出現(xiàn)有技術(shù)的節(jié)點(diǎn)群集系統(tǒng)的一實(shí)施例。圖2是一個(gè)示意方框圖,示出現(xiàn)有技術(shù)獨(dú)立磁盤(pán)冗余陣列(RAID)的控制器的一實(shí)施例。圖3a是示出現(xiàn)有技術(shù)的鏡象競(jìng)爭(zhēng)表(MRT)的一實(shí)施例的方框圖。圖3b是示出本發(fā)明的驅(qū)動(dòng)器所有權(quán)表(DOT)的一實(shí)施例的方框圖。圖4是示出本發(fā)明的MRT的一實(shí)施例的方框圖。圖5是示出本發(fā)明的SCSI接入容錯(cuò)附件(SAF-TE)電子硬件的一實(shí)施例的方框圖。圖6是示出本發(fā)明的MRT的一特殊實(shí)施例的方框圖。圖7是一個(gè)流程圖,示出本發(fā)明的對(duì)群集系統(tǒng)中的不完整寫(xiě)操作進(jìn)行可靠故障轉(zhuǎn)移的方法。圖8是一個(gè)流程圖,示出通過(guò)利用本發(fā)明的MRT使邏輯驅(qū)動(dòng)器一致的方法。圖9是第二流程圖,示出通過(guò)利用本發(fā)明的MRT使邏輯驅(qū)動(dòng)器一致的方法。圖10是一個(gè)流程圖,示出確定本發(fā)明的SAF-TE附件的支持狀態(tài)的方法。圖11是一個(gè)流程圖,示出在本發(fā)明的MRT里形成和清除項(xiàng)的方法。圖12是一個(gè)流程圖,示出從本發(fā)明的SAF-TE附件傳送MRT段的方法。具體實(shí)施例方式本文中用術(shù)語(yǔ)“模塊”要求并且說(shuō)明本發(fā)明。如本文所使用那樣,該術(shù)語(yǔ)用來(lái)表示配置成實(shí)現(xiàn)模塊的給定用途的軟件代碼指令行或者電子硬件。從而,模塊是一個(gè)結(jié)構(gòu)單元。如軟件開(kāi)發(fā)領(lǐng)域技術(shù)人員所容易理解的那樣,模塊內(nèi)可以存在一條以上的指令。這些指令不必相鄰,而是可以散布在一個(gè)或多個(gè)軟件程序的各個(gè)不同部分之中,包括在不同的對(duì)象、例程、函數(shù)等之內(nèi)。類(lèi)似地,子系統(tǒng)或模塊的硬件組成部分,例如集成電路、邏輯門(mén)、分立器件等,不必組織成單個(gè)電路,而是可以分布在一個(gè)或多個(gè)電路之中。除非另外指出,可以互換地使用硬件或軟件實(shí)現(xiàn)來(lái)達(dá)到所公開(kāi)的各模塊的結(jié)構(gòu)和功能。圖3b是驅(qū)動(dòng)器所有權(quán)表310的圖形表示。驅(qū)動(dòng)器所有權(quán)表310包括邏輯驅(qū)動(dòng)器列312和對(duì)應(yīng)的擁有者控制器序號(hào)列314。利用該驅(qū)動(dòng)器所有權(quán)表310,(圖1的)獨(dú)立磁盤(pán)冗余陣列(RAID)控制器112能確定RAID陣列114中的每個(gè)邏輯驅(qū)動(dòng)器的所有權(quán)。驅(qū)動(dòng)器所有權(quán)表310通常由每個(gè)節(jié)點(diǎn)110的RAID控制器112組成。每個(gè)RAID控制器112把分配的RAID陣列114的邏輯驅(qū)動(dòng)器號(hào)提交到RAID陣列114的保留區(qū)。驅(qū)動(dòng)器所有權(quán)表310還裝到RAID控制器112的DRAM模塊208中?,F(xiàn)在參照?qǐng)D4,圖中示出駐留在本發(fā)明的RAID控制器112里的鏡象競(jìng)爭(zhēng)表(MRT)400的一個(gè)實(shí)施例。MRT400由有效標(biāo)志位列402、邏輯塊地址(LBA)列404和保留列406構(gòu)成。在本發(fā)明的一優(yōu)選實(shí)施例中,按類(lèi)似于圖3a的MRT214的方式排列MRT400,但是調(diào)整成直接按遞增的邏輯驅(qū)動(dòng)器號(hào)索引MRT400中的各項(xiàng)。調(diào)整后的MRT400優(yōu)化了訪問(wèn)和更新。MRT400中的每項(xiàng)包括有效標(biāo)志位402、表示高速緩存行組的起始地址的LBA404以及可選用地用于校驗(yàn)和來(lái)驗(yàn)證項(xiàng)信息的保留字段406。在一實(shí)施例中,MRT400對(duì)每一群集控制器項(xiàng)只需要六字節(jié)的存儲(chǔ)空間。圖5示意性地示出一種稱(chēng)為SCSI接入容錯(cuò)附件(SAF-TE)500的智能型盤(pán)附件的一實(shí)施例。SAF-TE500是一種實(shí)現(xiàn)基于SCSI的處理器部件、盤(pán)外罩、電源和其它組件的結(jié)構(gòu),以把盤(pán)附件狀態(tài)信息傳送到監(jiān)視應(yīng)用。在某些實(shí)施例中,可以從單個(gè)RAID陣列114劃分多個(gè)SAF-TE500內(nèi)的邏輯驅(qū)動(dòng)器。RAID陣列114的這些劃分變成虛擬驅(qū)動(dòng)器并且分配到各個(gè)RAID控制器112。RAID陣列114通常安裝在一個(gè)智能盤(pán)附件內(nèi)。SAF-TE500通常包括一個(gè)SCSI目標(biāo)接口502、多個(gè)SAF-TE寄存器504、多個(gè)狀態(tài)寄存器506、一個(gè)CPU508、一個(gè)可擦可編程只讀存儲(chǔ)器(EPROM)模塊510以及一個(gè)動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM)模塊512。依據(jù)本發(fā)明,還在SAF-TE500內(nèi)示出一個(gè)非易失性隨機(jī)訪問(wèn)存儲(chǔ)器(NVRAM)模塊514。由于本領(lǐng)域技術(shù)人員容易理解各個(gè)組件的功能和用途,所以不對(duì)SAF-TE500的各個(gè)組件作出詳細(xì)說(shuō)明。文中以例子的方式給出SAF-TE500的配置而不是作為限制,從而本領(lǐng)域技術(shù)人員容易在保持盤(pán)附件的意圖的情況下修改該配置。在多節(jié)點(diǎn)群集中,當(dāng)某節(jié)點(diǎn)出故障時(shí),出現(xiàn)自動(dòng)故障轉(zhuǎn)移。在工作節(jié)點(diǎn)(組)上運(yùn)行的群集軟件響應(yīng)出現(xiàn)故障把工作從有故障的系統(tǒng)分散到該群集中的其余系統(tǒng)上。然而,在本發(fā)明之前,其余節(jié)點(diǎn)110處的RAID控制器112不能訪問(wèn)出故障系統(tǒng)的MRT214。為了克服技術(shù)上的限制,在NVRAM514內(nèi)設(shè)置一個(gè)MRT516。后面會(huì)參照?qǐng)D6更詳細(xì)地說(shuō)明MRT516的配置。在本發(fā)明的一優(yōu)選實(shí)施例中,MRT516駐留在NVRAM模塊512內(nèi)并且配置成可由圖1的工作的RAID控制器112訪問(wèn)。在一實(shí)施例中,MRT516包含駐留在多個(gè)RAID控制器112內(nèi)的各個(gè)MRT400的準(zhǔn)確拷貝。替代地,把MRT516配置成含有關(guān)于在該群集內(nèi)運(yùn)行的每個(gè)RAID控制器12的數(shù)據(jù)。例如,MRT516可以包含諸如部件類(lèi)型、廠家名稱(chēng)、平臺(tái)、固件和序列號(hào)的數(shù)據(jù)。這里在SAF-TE500內(nèi)包括NVRAM模塊512和MRT516是作為例子給出的,用替代的共享盤(pán)附件的方法對(duì)于本領(lǐng)域技術(shù)人員應(yīng)該是顯而易見(jiàn)的。圖6示意表示在共享盤(pán)附件例如SAF-TE500內(nèi)實(shí)現(xiàn)的MRT516的一個(gè)具體例子。在圖6的實(shí)施例中,MRT516包括一個(gè)有效標(biāo)志位列602、一個(gè)邏輯塊地址(LBA)列604和一個(gè)保留列606。MRT516中的每項(xiàng)最好包括一個(gè)有效標(biāo)志位、一個(gè)表示高速緩存行組的起始地址的LBA以及一個(gè)用于可選的校驗(yàn)和保留字段,該校驗(yàn)和用來(lái)驗(yàn)證項(xiàng)信息。緩沖區(qū)偏移608包括起始字節(jié)偏移并且包含在傳送的數(shù)據(jù)緩沖區(qū)內(nèi)。大于或等于緩沖區(qū)容量的偏移造成帶有非法請(qǐng)求碼讀出關(guān)鍵字并且還帶有CDB中的無(wú)效字段的附加讀出碼的檢查條件狀態(tài)。現(xiàn)參照?qǐng)D7,圖中的流程圖示出了在本發(fā)明的群集系統(tǒng)中對(duì)不完整寫(xiě)操作進(jìn)行可靠故障轉(zhuǎn)移的方法700。該方法開(kāi)始于702并且提供一個(gè)群集共享盤(pán)附件704。在一實(shí)施例中,該群集系統(tǒng)包含圖1中的系統(tǒng)100。在該方法700中,RAID控制器112判定706該共享盤(pán)附件的支持狀態(tài)。在本發(fā)明的優(yōu)選實(shí)施例中,為此對(duì)查詢(xún)數(shù)據(jù)串增添一個(gè)標(biāo)志位。例如,字節(jié)5的位0可表示對(duì)NVRAM模塊514中添加的MRT516的支持狀態(tài)。在檢測(cè)出控制器故障708時(shí),使該出故障RAID控制器112的邏輯驅(qū)動(dòng)器一致710。下面參照?qǐng)D8和9更詳細(xì)地說(shuō)明使該邏輯驅(qū)動(dòng)器一致710的方法。圖8和9示出通過(guò)利用本發(fā)明的MRT使邏輯驅(qū)動(dòng)器一致的方法800。方法800和一實(shí)施例圖7的步驟710對(duì)應(yīng)。方法800開(kāi)始于802并檢測(cè)節(jié)點(diǎn)引導(dǎo)804。在一實(shí)施例中,節(jié)點(diǎn)引導(dǎo)包括回到某出故障控制器的操作。若判定806該節(jié)點(diǎn)具有驅(qū)動(dòng)器所有權(quán),則該方法轉(zhuǎn)到圖9,圖9中使該邏輯驅(qū)動(dòng)器一致904。在本發(fā)明的一優(yōu)選實(shí)施例中,正如在該節(jié)點(diǎn)的MRT中那樣,采用讀出高速緩存行組的數(shù)據(jù)并且計(jì)算使高速緩存行組一致所需的奇偶校驗(yàn),使該邏輯驅(qū)動(dòng)器一致904。計(jì)算出的奇偶校驗(yàn)和記錄的奇偶校驗(yàn)對(duì)比。若計(jì)算出的奇偶校驗(yàn)與記錄的奇偶校驗(yàn)不匹配,則在該邏輯驅(qū)動(dòng)器中記錄新計(jì)算的奇偶校驗(yàn)。在一致性檢查后,清除該RAID控制器112以及該盤(pán)附件中的MRT項(xiàng)906以確??梢哉_地再生某可能失效成員盤(pán)中的數(shù)據(jù)。然后跟蹤一致性恢復(fù)的完成未決狀態(tài)908。如果在節(jié)點(diǎn)故障期間改變邏輯驅(qū)動(dòng)器所有權(quán),停止該未決一致性恢復(fù)910。接著方法800結(jié)束912。重新參照?qǐng)D8,若判定該返回節(jié)點(diǎn)不具有驅(qū)動(dòng)器所有權(quán)806,則清除該節(jié)點(diǎn)的MRT中的所有項(xiàng)810,在此該方法800結(jié)束912。在沒(méi)有節(jié)點(diǎn)引導(dǎo)804的情況下,當(dāng)檢測(cè)出節(jié)點(diǎn)故障轉(zhuǎn)移814時(shí),其余節(jié)點(diǎn)判定是否必須使邏輯驅(qū)動(dòng)器一致816。若一致性恢復(fù)是必要的,識(shí)別邏輯驅(qū)動(dòng)器822。在本發(fā)明的一優(yōu)選實(shí)施例中,通過(guò)驅(qū)動(dòng)器所有權(quán)表310確定邏輯驅(qū)動(dòng)器標(biāo)識(shí)。接著改變?cè)摴收瞎?jié)點(diǎn)的所有權(quán)824,并且從共享盤(pán)附件的MRT檢索和該故障節(jié)點(diǎn)有關(guān)系的項(xiàng)902。然后如上面說(shuō)明那樣,使邏輯驅(qū)動(dòng)器一致904。在一致性恢復(fù)之后,清除該RAID控制器112以及該盤(pán)附件中的MRT項(xiàng)906以確??梢哉_地再生某可能失效成員盤(pán)中的數(shù)據(jù)。方法800繼續(xù),并跟蹤一致性恢復(fù)的完成未決狀態(tài)908。如果在節(jié)點(diǎn)故障期間改變邏輯驅(qū)動(dòng)器所有權(quán),則停止該未決一致性恢復(fù)910。接著方法800結(jié)束912。替代地,如果判定邏輯驅(qū)動(dòng)器的一致性恢復(fù)是不必要的,則方法708結(jié)束912?;氐脚卸?14,如果沒(méi)有檢測(cè)到節(jié)點(diǎn)故障轉(zhuǎn)移并且分配了新的邏輯驅(qū)動(dòng)器818,則該方法判定對(duì)這些分配的邏輯驅(qū)動(dòng)器是否存在任何未決一致性恢復(fù)操作。若存在未決一致性恢復(fù)操作820,則從共享盤(pán)附件的MRT檢索和這些邏輯驅(qū)動(dòng)器有關(guān)系的段902。然后如上面說(shuō)明那樣,使這些邏輯驅(qū)動(dòng)器一致904。在一致性恢復(fù)之后,清除共享盤(pán)附件MRT以及RAID控制器MRT中的項(xiàng)906以確保可以正確地再生某可能失效成員盤(pán)中的數(shù)據(jù)。方法708繼續(xù),并跟蹤一致性恢復(fù)的完成未決狀態(tài)908。若改變過(guò)邏輯驅(qū)動(dòng)器所有權(quán),則停止未決一致性恢復(fù)910。如果不存在未決一致性恢復(fù)820,方法708結(jié)束912。若未檢測(cè)到新的邏輯驅(qū)動(dòng)器818,方法800結(jié)束912。在一實(shí)施例中,上面參照?qǐng)D8和9說(shuō)明的方法800形成持續(xù)地循環(huán)。替代地,方法800可等待節(jié)點(diǎn)引導(dǎo)、節(jié)點(diǎn)故障轉(zhuǎn)移或新邏輯驅(qū)動(dòng)器事件的發(fā)生?,F(xiàn)參照?qǐng)D10,其中示出一個(gè)說(shuō)明用來(lái)確定本發(fā)明的SAF-TE附件的支持狀態(tài)的方法1000的流程圖。該方法1000是實(shí)現(xiàn)圖7的確定支持步驟706的一個(gè)具體例子。該方法1000開(kāi)始于1002并且某節(jié)點(diǎn)檢查本發(fā)明添加的NVRAM模塊514的存在和緩沖器容量1004。該節(jié)點(diǎn)控制器發(fā)出“查詢(xún)”命令1006并且接收“查詢(xún)”數(shù)據(jù)1006。如前面說(shuō)明那樣,在一實(shí)施例中,命令數(shù)據(jù)緩沖器可包含一個(gè)添加的指示NVRAM模塊514的存在的標(biāo)志位。如果安裝NVRAM緩沖器特征1008,則發(fā)出對(duì)緩沖器描述符的“讀緩沖器”命令1010,并且接收緩沖器容量信息。所收到的緩沖器容量信息用于判定是否存在足夠的緩沖器容量1012。在本發(fā)明的一優(yōu)選實(shí)施例中,如果判定緩沖器容量充足1012,則記錄特征支持狀態(tài)和緩沖器容量1014。代替地,若判定緩沖器容量不充足1012或者判定NVRAM緩沖器特征未安裝1008,則該節(jié)點(diǎn)按參照現(xiàn)有技術(shù)說(shuō)明的方式操作。圖11是一個(gè)說(shuō)明用于在本發(fā)明的MRT中建立和清除項(xiàng)的方法1100的流程圖。該方法1100示出圖9的清除項(xiàng)的步驟906的一個(gè)具體實(shí)施例。該方法1100開(kāi)始于1102并且對(duì)節(jié)點(diǎn)控制器MRT搜索第一自由項(xiàng)1104。在一實(shí)施例中,在節(jié)點(diǎn)控制器MRT中通過(guò)輸入要寫(xiě)入的第一高速緩存行組的起始邏輯塊地址建立一項(xiàng)1106。通過(guò)發(fā)出一條帶有適當(dāng)NVRAM地址的“寫(xiě)緩沖器”命令在共享盤(pán)附件MRT中建立一等同項(xiàng)1108。接著在該節(jié)點(diǎn)控制器的存儲(chǔ)器中保存該項(xiàng)的MRT指針1110。在本發(fā)明的一優(yōu)選實(shí)施例中,為MRT中的項(xiàng)向各邏輯驅(qū)動(dòng)器發(fā)出“寫(xiě)”命令1112并同時(shí)在該MRT中查找其它高速緩存行組1114。當(dāng)判定不存在其它高速緩存行組1114時(shí),繼續(xù)典型的群集操作1116。替代地,當(dāng)完成一次高速緩存行組寫(xiě)入1118時(shí),清除該節(jié)點(diǎn)控制器中的各項(xiàng)1120。通過(guò)發(fā)出帶有適當(dāng)NVRAM地址的“寫(xiě)緩沖器”命令清除共享盤(pán)附件MRT1122。在一優(yōu)選實(shí)施例中,節(jié)點(diǎn)控制器是中斷驅(qū)動(dòng)的,而不是配置成等待活動(dòng)完成。在一實(shí)施例中,用來(lái)清除MRT中的項(xiàng)的“寫(xiě)緩沖器”命令包含發(fā)出寫(xiě)入全都是零的“寫(xiě)緩沖器”命令。現(xiàn)參照?qǐng)D12,其中示出一個(gè)說(shuō)明用于從本發(fā)明的共享盤(pán)附件傳送MRT段的方法1200的流程圖。該方法1200示出圖9的檢索共享盤(pán)附件MRT步驟902的一具體實(shí)施例。該方法1200開(kāi)始于1202,并且從共享盤(pán)附件MRT向節(jié)點(diǎn)控制器MRT傳送MRT段1204。在本發(fā)明的一實(shí)施例中,接著發(fā)出“讀緩沖器”命令1206以規(guī)定用于該整個(gè)段的在預(yù)定NVRAM緩沖器偏移下的數(shù)據(jù)方式。然后從該共享盤(pán)附件接收數(shù)據(jù)1208,并且把數(shù)據(jù)放在節(jié)點(diǎn)控制器指定的分配空間中。本發(fā)明可以在不背離它的精神或基本特征的情況下以其它具體形式實(shí)現(xiàn)。所說(shuō)明的各實(shí)施例在所有方面上只看做是說(shuō)明性的而不是限制性的。從而,本發(fā)明的范圍是由所附權(quán)利要求書(shū)而不是由上述說(shuō)明限定。所有在權(quán)利要求書(shū)的等價(jià)物的含義和范圍之內(nèi)的改變均包含在本發(fā)明的范圍內(nèi)。權(quán)利要求1.一種用于進(jìn)行可靠故障轉(zhuǎn)移的裝置,該裝置包括多個(gè)配置成訪問(wèn)多個(gè)共享盤(pán)的RAID控制器;鏡象競(jìng)爭(zhēng)表(MRT);以及可由每個(gè)RAID控制器訪問(wèn)的公用MRT存儲(chǔ)單元。2.權(quán)利要求1的裝置,其中該公用MRT存儲(chǔ)單元包含一個(gè)非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)模塊。3.權(quán)利要求1的裝置,還包括一個(gè)含有SCSI接入容錯(cuò)附件(SAF-TE)的共享盤(pán)附件。4.權(quán)利要求1的裝置,還包括一個(gè)配置成對(duì)該MRT搜索第一自由項(xiàng)的MRT搜索模塊。5.權(quán)利要求4的裝置,其中該MRT搜索模塊配置成從上向下搜索該MRT。6.權(quán)利要求1的裝置,還包括一個(gè)MRT項(xiàng)模塊,被配置成通過(guò)輸入要寫(xiě)入到該多個(gè)共享盤(pán)的第一高速緩存行組的邏輯塊地址(LBA)在MRT中建立項(xiàng)。7.權(quán)利要求1的裝置,還包括一個(gè)配置成保存項(xiàng)的MRT指針的MRT指針模塊。8.權(quán)利要求1的裝置,還包括一個(gè)配置成查找和檢索項(xiàng)的MRT指針的MRT檢索模塊。9.權(quán)利要求1的裝置,還包括一個(gè)MRT讀模塊,被配置成在節(jié)點(diǎn)引導(dǎo)或群集故障轉(zhuǎn)移之后的一致性恢復(fù),定位盤(pán)上數(shù)據(jù)的高速緩存行組以供一致性恢復(fù)。10.權(quán)利要求1的裝置,還包括一個(gè)配置成從MRT查找并清除項(xiàng)的MRT清除模塊。11.權(quán)利要求1的裝置,還包括一個(gè)配置成把MRT從該共享盤(pán)附件傳送到至少一個(gè)的RAID控制器的MRT傳送模塊。12.一種用于進(jìn)行可靠故障轉(zhuǎn)移的方法,該方法包括訪問(wèn)帶有多個(gè)RAID控制器的多個(gè)共享盤(pán);更新鏡象競(jìng)爭(zhēng)表(MRT);以及提供可由該每個(gè)RAID控制器訪問(wèn)的公用MRT存儲(chǔ)單元。13.權(quán)利要求12的方法,其中建立公用MRT存儲(chǔ)單元還包括在一個(gè)共享盤(pán)附件中建立公用MRT存儲(chǔ)單元。14.權(quán)利要求12的方法,還包括訪問(wèn)該MRT;從該公用MRT存儲(chǔ)單元處更新該MRT;檢測(cè)至少一個(gè)RAID控制器上的故障;以及可靠地分配出故障的RAID控制器的工作負(fù)荷。15.權(quán)利要求12的方法,還包括提供一個(gè)含有SCSI接入容錯(cuò)附件(SAF-TE)的共享盤(pán)附件。16.權(quán)利要求12的方法,還包括對(duì)MRT搜索第一自由項(xiàng)。17.權(quán)利要求14的方法,其中搜索MRT還包括對(duì)MRT從上到下搜索。18.權(quán)利要求12的方法,還包括通過(guò)輸入要寫(xiě)入到該多個(gè)共享盤(pán)上的第一高速緩存行組的邏輯塊地址(LBA)在MRT中建立項(xiàng)。19.權(quán)利要求12的方法,還包括保存項(xiàng)的MRT指針。20.權(quán)利要求12的方法,還包括查找和檢索項(xiàng)的MRT指針。21.權(quán)利要求12的方法,還包括必須時(shí)讀MRT項(xiàng)以定位用于一致性恢復(fù)的數(shù)據(jù)。22.權(quán)利要求12的方法,還包括從MRT查找和清除項(xiàng)。23.權(quán)利要求12的方法,還包括把MRT從該共享盤(pán)附件傳送到至少一個(gè)的RAID控制器。24.一種用于進(jìn)行可靠故障轉(zhuǎn)移的方法,該方法包括提供多個(gè)共享盤(pán);提供多個(gè)RAID控制器;提供一個(gè)鏡象競(jìng)爭(zhēng)表(MRT);建立一個(gè)可由該每個(gè)RAID控制器訪問(wèn)的公用MRT存儲(chǔ)單元;訪問(wèn)該MRT;更新該MRT;檢測(cè)至少一個(gè)RAID控制器上的故障;分配故障RAID控制器的工作負(fù)荷;對(duì)該MRT搜索第一自由項(xiàng);通過(guò)輸入要寫(xiě)到該多個(gè)共享盤(pán)的第一高速緩存行組的邏輯塊地址(LBA)在該MRT中建立項(xiàng);保存項(xiàng)的MRT指針;查找和檢索項(xiàng)的MRT指針;讀MRT項(xiàng)以定位要使一致的數(shù)據(jù);從該MRT查找并清除項(xiàng);把該MRT從該共享盤(pán)附件傳送到至少一個(gè)的RAID控制器;以及執(zhí)行未完成的寫(xiě)操作。25.一種用于進(jìn)行可靠故障轉(zhuǎn)移的系統(tǒng),該系統(tǒng)包括多個(gè)共享盤(pán);多個(gè)RAID控制器;一個(gè)鏡象競(jìng)爭(zhēng)表(MRT);以及一個(gè)可由該每個(gè)RAID控制器訪問(wèn)的公用MRT存儲(chǔ)單元,該公用MRT存儲(chǔ)單元包含非易失性隨機(jī)訪問(wèn)存儲(chǔ)器(NVRAM)模塊。26.一種用于進(jìn)行可靠故障轉(zhuǎn)移的設(shè)備,該設(shè)備包括用于訪問(wèn)多個(gè)帶有多個(gè)RAID控制器的共享盤(pán)的裝置;用于更新一個(gè)鏡象競(jìng)爭(zhēng)表(MRT)的裝置;用于訪問(wèn)該MRT的裝置;以及用于存儲(chǔ)一個(gè)公用MRT以便該公用MRT可由每個(gè)RAID控制器訪問(wèn)的裝置。全文摘要本發(fā)明公開(kāi)了一種用于對(duì)群集系統(tǒng)中的不完整獨(dú)立磁盤(pán)冗余陣列(RAID)寫(xiě)進(jìn)行可靠故障轉(zhuǎn)移的系統(tǒng)和方法。該系統(tǒng)包括重構(gòu)鏡象競(jìng)爭(zhēng)表(MRT)以及可以是一共享盤(pán)附件里的非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)模塊的存儲(chǔ)單元,以便該MRT可由系統(tǒng)中的所有節(jié)點(diǎn)訪問(wèn)。在一實(shí)施例,該NVRAM模塊包括來(lái)自在該群集系統(tǒng)內(nèi)運(yùn)行的每個(gè)節(jié)點(diǎn)的MRT的拷貝。文檔編號(hào)H04L1/22GK1480843SQ0314982公開(kāi)日2004年3月10日申請(qǐng)日期2003年7月25日優(yōu)先權(quán)日2002年7月26日發(fā)明者D·Q-Y·初,A·金,DQ-Y初申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司