專利名稱:用于置換資源控制器鎖的所有權(quán)的裝置、系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及共享的可控制資源并且更特別地涉及自行置換共享可控制資源的全局資源鎖。
背景技術(shù):
在以聯(lián)合或是交替的方式對多個可控制資源(例如,諸如硬盤驅(qū)動器、磁帶驅(qū)動器和光存儲驅(qū)動器之類的存儲資源)進(jìn)行共享的服務(wù)器環(huán)境中,對部分可控制資源的訪問可以由單一的資源控制器(例如,服務(wù)器)排它地進(jìn)行,從而執(zhí)行處理,同時確保相符的數(shù)據(jù)保持一致和準(zhǔn)確。通常該服務(wù)器環(huán)境包括兩個或多個資源控制器,這些控制器互相共享來自多個相連接的主機(jī)適配器的請求,并且在多個相連接的存儲適配器(例如,可控制資源)上執(zhí)行這些請求。對于資源控制器的一個要求就是能夠?qū)蚕矶鄠€可控制資源的并行處理進(jìn)行協(xié)調(diào)。
通常,當(dāng)資源控制器接收到執(zhí)行處理的請求時,該資源控制器就會獲得資源鎖。該資源鎖對于資源控制器執(zhí)行特定處理所需要的可控制資源進(jìn)行臨時排它控制。該資源鎖可以對于單一可控制資源的一部分、全部可控制資源或是連接到系統(tǒng)的所有可控制資源的一部分進(jìn)行排它訪問。如果所請求的可控制資源的一部分當(dāng)前正在使用,則對該資源鎖請求進(jìn)行排隊,直到所請求的可控制資源的所有部分為可用時為止。當(dāng)確保資源鎖后,處理得以執(zhí)行,隨后釋放該資源鎖。
在持續(xù)發(fā)展的信息時代,有一件事情保持不變對于任務(wù)關(guān)鍵的(mission-critical)數(shù)據(jù)和應(yīng)用程序的百分之百的可用性的需求。無論是對于股票市場、公司薪金名冊、電子商務(wù)、企業(yè)數(shù)據(jù)庫、醫(yī)療記錄、因特網(wǎng)銀行還是出于國家安全的原因,這些任務(wù)關(guān)鍵的資源的可用性隨著對增加的存儲容量的需求而增長。
對于服務(wù)器環(huán)境中所有權(quán)的較低的總成本來說最大的障礙之一就是與管理涉及存儲的問題相關(guān)聯(lián)的工作量。由系統(tǒng)資源自動地管理存儲資源和數(shù)據(jù)而不是手工管理可以幫助使該成本最小化。然而,確保任務(wù)關(guān)鍵的數(shù)據(jù)和應(yīng)用程序在系統(tǒng)范圍內(nèi)的可用性繼續(xù)提出了獨(dú)特的管理挑戰(zhàn)。任務(wù)關(guān)鍵的商業(yè)系統(tǒng)通??缭街鳈C(jī)和分布式的計算環(huán)境,為了組織的成功而管理著很多商業(yè)處理。在該環(huán)境下與其它的戰(zhàn)略性的系統(tǒng)和應(yīng)用程序共享來自商業(yè)處理的數(shù)據(jù)要求全面的解決方案。然而,這種解決方案應(yīng)當(dāng)足夠簡單從而通過管理員最小限度的監(jiān)管就可以自行并入而無需過度增加系統(tǒng)運(yùn)行的負(fù)擔(dān)。
用于這種需要對大規(guī)模數(shù)據(jù)庫進(jìn)行管理的任務(wù)關(guān)鍵的應(yīng)用程序的主導(dǎo)服務(wù)器仍然是大型機(jī)。例如IBM z9-109系列企業(yè)服務(wù)器之類的大型機(jī)是為高可靠性、高性能、基礎(chǔ)廣泛的連通性選擇以及廣泛的企業(yè)存儲解決方案而設(shè)計的。然而,雖然在存儲管理中有大量的優(yōu)勢,但是在任務(wù)關(guān)鍵的資源的高可靠性方面仍然有改進(jìn)的余地。當(dāng)將用于對所有合并的可控制資源的排它性訪問的資源鎖給予單一的資源控制器而該控制器發(fā)生了故障但同時卻保持著該鎖的所有權(quán)時就會產(chǎn)生問題。
例如,當(dāng)在兩組資源控制器之間進(jìn)行通信時,或是當(dāng)多個資源控制器中的一個資源控制器崩潰時,對于資源控制器存在協(xié)議用以競爭所有可控制資源的全局所有權(quán),即取代所有現(xiàn)有資源鎖的全局排它性。贏得競爭的第一資源控制器得到對于所有可控制資源的所有權(quán),而實(shí)際上輸?shù)袅烁偁幍馁Y源控制器則變?yōu)榉腔顒拥?,并被鎖在外面不能再訪問任何可控制資源。這個全局排它性不能被清除,直到兩個資源控制器被重新啟動并且變得具有全部的功能,或是輸?shù)袅烁偁幍馁Y源控制器變回聯(lián)機(jī)狀態(tài),具有完整的功能性并且通信被恢復(fù)。
除了包括死鎖、匱乏以及優(yōu)先級倒置的共有排它算法的一般副作用之外,在全局排它算法的情況下存在一個問題。例如,當(dāng)持有全局資源鎖的資源控制器意外地死機(jī)(例如,崩潰)時,其它的資源控制器不能自行接管可控制資源的全部所有權(quán)。對于所有可控制資源的訪問丟失,導(dǎo)致了任務(wù)關(guān)鍵的數(shù)據(jù)和應(yīng)用程序的可用性的全然喪失,繼而引發(fā)了為了恢復(fù)系統(tǒng)資源而增加的管理工作量和存儲管理成本。例如,假設(shè)服務(wù)器A和服務(wù)器B競爭所有權(quán)而服務(wù)器A贏得了關(guān)于得到對于所有可控制資源的全局排它性的競爭。接著服務(wù)器A崩潰并且由于硬件問題而不能變回聯(lián)機(jī)狀態(tài)。在這些情況下,服務(wù)器B被孤立,并且由于在脫機(jī)的服務(wù)器A的內(nèi)部丟失了釋放所有權(quán)鎖的能力,因此服務(wù)器B被阻止接管全局資源鎖的所有權(quán)。
存在傳統(tǒng)的程序用以解決丟失鎖的場景。一種方法涉及同時一起啟動兩個資源控制器從而清除全局資源鎖,恢復(fù)對于系統(tǒng)資源的共有訪問,以及生成可用于將來的競爭的全局資源鎖。然而,除了要求兩個資源控制器對于系統(tǒng)管理員來說可用從而手工地將其帶回到全功能狀態(tài)下之外,對于任務(wù)關(guān)鍵的數(shù)據(jù)和應(yīng)用程序的高可用性不能得以維持。其它傳統(tǒng)的恢復(fù)使得作為全局資源鎖的當(dāng)前所有者的資源控制器必須自己鎖定回聯(lián)機(jī)狀態(tài)。然而,這就要求具有全局資源排它性的資源控制器緊接在導(dǎo)致其崩潰的故障之后處于全功能狀態(tài)下?;謴?fù)僅僅是建立相同的場景,只不過現(xiàn)在持有全局資源鎖的資源控制器最近崩潰過,從而使得丟失鎖的場景的重復(fù)很有可能再次發(fā)生。
鑒于以上討論,很明顯的是需要一種裝置、系統(tǒng)和方法,其能夠克服傳統(tǒng)的手工介入鎖置換方法的局限性。特別地,這種裝置、系統(tǒng)和方法有益地獨(dú)立于管理監(jiān)督,從而提供了自主的設(shè)備級的恢復(fù)。該裝置、系統(tǒng)和方法還有益地降低了管理工作量并且維持了對于任務(wù)關(guān)鍵的數(shù)據(jù)和應(yīng)用程序的高可用性。
發(fā)明內(nèi)容
本發(fā)明的多個實(shí)施例是針對現(xiàn)有技術(shù)的現(xiàn)狀,并且特別地,是針對現(xiàn)有技術(shù)中尚未完全被當(dāng)今可獲得的鎖恢復(fù)方法解決的問題和需要而研發(fā)的。相應(yīng)地,已經(jīng)對本發(fā)明進(jìn)行了研發(fā)以提供一種用于自行置換全局資源鎖的裝置、系統(tǒng)和方法,其克服了上面所討論的現(xiàn)有技術(shù)的許多和全部缺點(diǎn)。
該用以恢復(fù)全局資源鎖的裝置具有邏輯單元,該邏輯單元包含多個模塊,這些模塊配置為從功能上執(zhí)行對于全局資源鎖的自主恢復(fù)所必需的操作。在所描述的實(shí)施例中的這些模塊包括判斷模塊、置換模塊以及聲明模塊。進(jìn)一步的實(shí)施例包括全局資源鎖、驗(yàn)證模塊、檢測模塊以及實(shí)現(xiàn)模塊。
全局資源鎖包括鎖指示符以及活動性指示符。該全局資源鎖準(zhǔn)許對于作為存儲系統(tǒng)的一部分的所連接的所有可控制資源的全局的排它的訪問。該鎖指示符可以包括一個字段,該字段配置為保持持有全局資源鎖的資源控制器的唯一ID(標(biāo)識符)。當(dāng)資源控制器獲取了全局資源鎖時,一個唯一地標(biāo)識該資源控制器的數(shù)字被存儲到鎖指示符中。在一個實(shí)施例中,資源控制器的該唯一標(biāo)識數(shù)字是硬件序列號,或是類似的唯一標(biāo)識數(shù)字。
活動性指示符指示持有全局資源鎖的資源控制器一旦取得全局資源鎖的所有權(quán)后就具有該全局資源鎖的活動的所有權(quán)(activeownership)?;顒拥乃袡?quán)包括在預(yù)定間隔內(nèi)周期性地更新活動性指示符。
判斷模塊可以包括驗(yàn)證模塊和檢測模塊。判斷模塊判斷全局資源鎖是否由資源控制器擁有。如果資源控制器還擁有全局資源鎖,則判斷模塊還判斷該資源控制器為脫機(jī)。當(dāng)活動性指示符未能在預(yù)定的間隔內(nèi)改變時,資源控制器被認(rèn)為是脫機(jī)的。響應(yīng)于關(guān)于全局資源鎖由脫機(jī)的資源控制器持有的判斷,該判斷模塊可以發(fā)送恢復(fù)命令到置換模塊。在一個實(shí)施例中,系統(tǒng)管理員可以通過發(fā)布恢復(fù)命令來試圖重啟第二資源控制器。
驗(yàn)證模塊包括檢查間隔。該驗(yàn)證模塊被配置為兩部分驗(yàn)證處理中的一部分,該兩部分驗(yàn)證處理由在這里也被稱為恢復(fù)設(shè)施的恢復(fù)裝置的鎖恢復(fù)協(xié)議來定義。在一個實(shí)施例中,該驗(yàn)證模塊驗(yàn)證存儲在鎖指示符中的唯一ID包含當(dāng)前擁有全局資源鎖的資源控制器的唯一標(biāo)識數(shù)字。
在一個實(shí)施例中,驗(yàn)證模塊驗(yàn)證活動性指示符未能在預(yù)定的檢查間隔內(nèi)改變。該檢查間隔可以配置為活動性指示符的期望改變率的周期的兩倍。響應(yīng)于關(guān)于已經(jīng)取得全局資源鎖的判斷,驗(yàn)證模塊檢驗(yàn)活動性指示符的當(dāng)前值并且驗(yàn)證在預(yù)定檢查間隔的跨度內(nèi)該活動性指示符保持不變。如果活動性指示符保持不變,該驗(yàn)證模塊驗(yàn)證具有全局資源鎖的所有權(quán)的資源控制器為脫機(jī)。
檢測模塊可以檢測資源控制器之間消息業(yè)務(wù)量的中斷。響應(yīng)于所檢測到的消息業(yè)務(wù)量的中斷,該檢測模塊可以向每一個資源控制器發(fā)送信號以競爭全局資源鎖的所有權(quán)。
置換模塊包括清除模塊和寫入模塊。該置換模塊響應(yīng)于接收到來自判斷模塊的恢復(fù)命令而不可分割地(atomically)置換全局資源鎖的所有權(quán)。清除模塊清除存儲在鎖指示符中的唯一ID,并且寫入模塊寫入當(dāng)前取得全局資源鎖的資源控制器的唯一ID。
在一個實(shí)施例中,清除模塊和寫入模塊作為不可分割的操作(atomic operation)的一部分而執(zhí)行,從而防止除了清除和寫入鎖指示符之外的任何其它操作,直到該不可分割的操作結(jié)束。
聲明模塊可以包括實(shí)現(xiàn)模塊。聲明模塊聲明取得了全局資源鎖的所有權(quán)的資源控制器對于全局資源鎖的活動的所有權(quán)。如上所述,活動的所有權(quán)包括在預(yù)定的心跳間隔內(nèi)周期性地更新活動性指示符。實(shí)現(xiàn)模塊包括心跳間隔。該實(shí)現(xiàn)模塊在預(yù)定的心跳間隔內(nèi)遞增活動性指示符。
心跳間隔是期望在其間活動性指示符會發(fā)生改變的周期。檢查間隔基于心跳間隔的周期。在一個實(shí)施例中,檢查間隔配置為心跳間隔的周期的兩倍。這樣,在驗(yàn)證模塊緊接在活動性指示符的更新之后對活動性指示符進(jìn)行檢查的情況下,驗(yàn)證模塊將仍然檢測到活動性指示符在檢查間隔的周期內(nèi)的至少一次改變,指示該全局資源鎖的活動的所有權(quán)。
本發(fā)明還提出了用于自行置換全局資源鎖的系統(tǒng)。該系統(tǒng)可以實(shí)現(xiàn)為資源控制器,該資源控制器配置為分配多個可控制資源的各部分。
特別地,在一個實(shí)施例中,該系統(tǒng)包括與多個可控制資源相連接的第一資源控制器,該第一資源控制器配置為分配多個可控制資源。該系統(tǒng)還包括與該多個可控制資源相連接的第二資源控制器,該第二資源控制器配置為分配該多個可控制資源;以及與該第一資源控制器和該第二資源控制器相連接的全局資源鎖,該全局資源鎖具有多個寄存器。該系統(tǒng)還包括與第一資源控制器和第二資源控制器進(jìn)行通信的恢復(fù)裝置,該恢復(fù)裝置配置為響應(yīng)于關(guān)于該第一資源控制器未能更新活動性指示符的判斷而自行地將全局資源鎖的所有權(quán)從第一資源控制器轉(zhuǎn)移到第二資源控制器。
在另一個實(shí)施例中,該系統(tǒng)可以包括ID持有器和計數(shù)器,該ID持有器連接到全局資源鎖,且可以配置為存儲唯一標(biāo)識信息的字符串,該計數(shù)器連接到全局資源鎖,且可以配置為在預(yù)定的心跳間隔內(nèi)改變。
還提出了一種信號承載介質(zhì)用以存儲程序,當(dāng)被執(zhí)行時,該程序執(zhí)行操作以自行置換全局資源鎖。在一個實(shí)施例中,這些操作包括判斷全局資源鎖是否由第一資源控制器擁有并且響應(yīng)于第一資源控制器擁有全局資源鎖而判斷該第一資源控制器為脫機(jī)。在另一個實(shí)施例中,這些操作包括不可分割地從第一資源控制器置換全局資源鎖的所有權(quán)并且聲明第二資源控制器對于全局資源鎖的活動的所有權(quán)。
在另一個實(shí)施例中,該操作可以包括驗(yàn)證鎖指示符包含第一資源控制器的唯一ID,檢測第一資源控制器和第二資源控制器之間消息業(yè)務(wù)量的中斷,指示當(dāng)前擁有全局資源鎖的資源控制器的唯一ID,以及指示第一資源控制器具有全局資源鎖的活動的所有權(quán)。
在另一個實(shí)施例中,這些操作可以包括在預(yù)定的心跳間隔內(nèi)周期性地更新活動性指示符,驗(yàn)證該活動性指示符未能在檢查間隔內(nèi)改變,作為不可分割的操作的一部分而清除鎖指示符并且將資源控制器的唯一ID寫入鎖指示符中,并且響應(yīng)于第二資源控制器取得全局資源鎖的所有權(quán)而在預(yù)定心跳間隔內(nèi)遞增活動性指示符。
在本說明書中所提及的特征、優(yōu)勢或是類似的語句并不暗示著可以利用本發(fā)明實(shí)現(xiàn)的所有特征和優(yōu)勢都應(yīng)當(dāng)在或處于本發(fā)明任意單一實(shí)施例中。相反,提及特征和優(yōu)勢的語句應(yīng)當(dāng)被理解為意味著結(jié)合一個實(shí)施例所描述的特定的特征、優(yōu)勢或特性應(yīng)當(dāng)被包括在本發(fā)明的至少一個實(shí)施例中。這樣,貫穿本說明書的對于特征和優(yōu)勢所進(jìn)行的討論或是類似的語句可以但并不一定是指相同的實(shí)施例。
此外,所描述的本發(fā)明的特征、優(yōu)勢以及特性可以以任意適當(dāng)?shù)姆绞胶喜⒃谝粋€或多個實(shí)施例中。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識到,本發(fā)明可以在沒有特定實(shí)施例中的一個或多個特定的特征或優(yōu)勢的情況下實(shí)現(xiàn)。在其他情況下,在特定實(shí)施例中可以認(rèn)識到的附加特征和優(yōu)勢可以不出現(xiàn)在本發(fā)明所有的實(shí)施例中。
根據(jù)下面的描述和所附的權(quán)利要求書,本發(fā)明的這些特征和優(yōu)勢將變得更為明顯,或是可以通過如后面所提出的本發(fā)明的實(shí)現(xiàn)來得知這些特征和優(yōu)勢。
為了使本發(fā)明的優(yōu)勢更容易理解,以下將通過參考由附圖所例示的特定實(shí)施例而對上面簡要描述的本發(fā)明進(jìn)行更為具體的描述。在理解這些附圖僅僅描述了本發(fā)明的典型實(shí)施例并且因此不應(yīng)當(dāng)被認(rèn)為對本發(fā)明的范圍造成了限制的前提下,將通過使用附圖來對本發(fā)明的附加特征和細(xì)節(jié)進(jìn)行描述和說明,在這些附圖中圖1是描述存儲系統(tǒng)的一個實(shí)施例的示意性框圖;圖2是描述恢復(fù)設(shè)施的一個實(shí)施例的示意性框圖;圖3是描述存儲設(shè)備的一個實(shí)施例的示意性框圖;圖4是描述雙重資源控制器初始化方法的一個實(shí)施例的示意性流程圖;圖5是描述鎖置換方法的一個實(shí)施例的示意性流程圖。
具體實(shí)施例方式
在本說明書中所描述的許多功能性單元被標(biāo)示為模塊,從而更確切地強(qiáng)調(diào)了其實(shí)現(xiàn)的獨(dú)立性。例如,模塊可以實(shí)現(xiàn)為包括定制VLSI電路(超大規(guī)模集成電路)或門陣列的硬件電路,例如邏輯芯片、晶體管之類的現(xiàn)成的半導(dǎo)體,或其它分立組件。模塊還可以在例如現(xiàn)場可編程門陣列、可編程陣列邏輯、可編程邏輯設(shè)備等等可編程硬件設(shè)備中實(shí)現(xiàn)。
模塊還可以在由各種類型的處理器執(zhí)行的軟件中實(shí)現(xiàn)??蓤?zhí)行代碼的識別的模塊(identified module)可以例如包括一個或多個計算機(jī)指令的物理塊或邏輯塊,該物理決或邏輯塊可以例如被組織為對象、程序或功能。然而,識別的模塊的可執(zhí)行內(nèi)容不一定在物理上放置在一起,而是可以包括存儲在不同位置上的全異指令,當(dāng)邏輯地聯(lián)合在一起時,這些指令包括該模塊并且達(dá)到該模塊所規(guī)定的目的。
實(shí)際上,可執(zhí)行代碼的模塊可以是單一指令或多個指令并且甚至可以分布在多個不同代碼片斷上、不同的程序中以及跨多個存儲設(shè)備。類似地,操作數(shù)據(jù)可以是被識別的并且在此在模塊內(nèi)描述,可以以任何適當(dāng)?shù)男问綄?shí)現(xiàn)并且可以組織在任何合適類型的數(shù)據(jù)結(jié)構(gòu)中。操作數(shù)據(jù)可以集中為單一數(shù)據(jù)集,或是可以分布在不同的位置上(包括分布在不同的存儲設(shè)備中),并且可以(至少部分地)僅作為電子信號而存在于系統(tǒng)或網(wǎng)絡(luò)上。
圖1描述了存儲系統(tǒng)100的一個實(shí)施例的示意性框圖。所表示的存儲系統(tǒng)100包括第一資源控制器102、第二資源控制器104、通信信道106、多個可控制資源108以及全局資源鎖110。存儲系統(tǒng)100可以根據(jù)第一資源控制器102和第二資源控制器104或者兩者的I/O操作來存儲并且訪問多個可控制資源108上的數(shù)據(jù)。在一個實(shí)施例中,存儲系統(tǒng)100可以包括兩個或多個資源控制器。在另一個實(shí)施例中,存儲系統(tǒng)100可以包括單一的可控制資源108或多個可控制資源108。
所表示的第一資源控制器102和第二資源控制器104可以包括恢復(fù)設(shè)施112。該第一資源控制器102和第二資源控制器104可以配置為具有通信接口,用以通過存儲區(qū)域網(wǎng)絡(luò)(SAN)或例如網(wǎng)絡(luò)、背板或總線之類的類似的通信信道106與多個可控制資源108進(jìn)行通信。該通信信道106可以在通信網(wǎng)絡(luò)上發(fā)送消息業(yè)務(wù)量。作為替代,第一資源控制器102和第二資源控制器104可以各自直接與多個可控制資源108相連接。
在一個實(shí)施例中,通信信道106可以利用以下的接口來實(shí)現(xiàn)小型計算機(jī)系統(tǒng)接口(SCSI)、因特網(wǎng)小型計算機(jī)系統(tǒng)接口(iSCSI)、串行高級技術(shù)附件(SATA)、集成驅(qū)動電子設(shè)備/高級技術(shù)附件(IDE/ATA)、美國電氣和電子工程師協(xié)會標(biāo)準(zhǔn)1394(IEEE 1394)、通用串行總線(USB)、通用因特網(wǎng)文件系統(tǒng)(CIFS)、網(wǎng)絡(luò)文件系統(tǒng)(NFS/NetWFS)、超文本傳輸協(xié)議(HTTP)、文件傳輸協(xié)議(FTP)、傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)、光纖連接(FICON)、企業(yè)系統(tǒng)連接(ESCON)、固態(tài)存儲器總線或是任意其它類似的接口。
第一資源控制器102和第二資源控制器104可以配置為用作主計算機(jī)(未示出)和多個可控制資源108之間的通信接口。第一資源控制器102和第二資源控制器104可以使用通信信道106以根據(jù)主計算機(jī)的請求而訪問可控制資源108的一部分。第一資源控制器102和第二資源控制器104以聯(lián)合或是交替的方式訪問該多個可控制資源108。只要執(zhí)行處理需要,第一資源控制器102和第二資源控制器104就可以排它地持有所訪問的可控制資源108的一部分,從而使得相符的數(shù)據(jù)保持一致和準(zhǔn)確。該多個可控制資源108可以包括例如硬盤驅(qū)動器、磁帶驅(qū)動器和光存儲驅(qū)動器和/或任意其它類似的存儲設(shè)備。
在一個實(shí)施例中,第一資源控制器102和第二資源控制器104持續(xù)地來回發(fā)送消息,很象通信心跳,從而確認(rèn)在第一資源控制器102和第二資源控制器104之間存在活動的通信鏈路。當(dāng)?shù)谝毁Y源控制器102和第二資源控制器104中的一個資源控制器在預(yù)定的通信超時間隔內(nèi)沒有檢測到來自另一個資源控制器的活動的通信心跳時,在這兩個資源控制器之間的通信鏈路就會超時。
當(dāng)?shù)谝毁Y源控制器102或第二資源控制器104崩潰或是當(dāng)通信鏈路發(fā)生故障時就會發(fā)生通信故障。響應(yīng)于第一資源控制器102和第二資源控制器104之間的通信鏈路超時,每一個資源控制器進(jìn)行競爭以擁有用于由第二資源控制器104對多個可控制資源108的排它控制的全局資源鎖110。
為了易于說明,第一資源控制器102被認(rèn)為是贏得了全局資源鎖110的所有權(quán)的資源控制器。而第一資源控制器102進(jìn)一步被認(rèn)為是這樣的資源控制器,其可能在持有全局資源鎖110的所有權(quán)的同時崩潰或是變?yōu)槊摍C(jī),從而陷住(trapping)了全局資源鎖110并且阻擋第二資源控制器104對多個全部可控制資源108的訪問。
為了進(jìn)一步易于說明,第二資源控制器104被認(rèn)為是輸?shù)袅岁P(guān)于全局資源鎖110的所有權(quán)的競爭的資源控制器。第二資源控制器104進(jìn)一步被認(rèn)為是恢復(fù)被陷住的全局資源鎖110的所有權(quán)并從而重新獲得對該多個可控制資源108的訪問的資源控制器。這樣,響應(yīng)于第二資源控制器104取得全局資源鎖110的所有權(quán),該第二資源控制器104則被認(rèn)為是第一資源控制器102。并且第一資源控制器102在持有全局資源鎖110的同時崩潰后,則被認(rèn)為是第二資源控制器104,因?yàn)樗辉俪钟腥仲Y源鎖110??傊?,在恢復(fù)之前或之后持有全局資源鎖的資源控制器是第一資源控制器102。
在一個實(shí)施例中,全局資源鎖110獨(dú)立于第一資源控制器102或第二資源控制器104或是同時獨(dú)立于二者。在另一個實(shí)施例中,全局資源鎖110包括在恢復(fù)設(shè)施112中。參照圖2示出并更加詳細(xì)地描述了全局資源鎖110的一個例子。
在一個實(shí)施例中,響應(yīng)于第二資源控制器104輸?shù)袅岁P(guān)于全局資源鎖110的所有權(quán)的競爭,該第二資源控制器104被手工地重新啟動并且對其到第一資源控制器102的通信進(jìn)行測試。在另一個實(shí)施例中,第二資源控制器104自行重新啟動。如果在第一資源控制器102和第二資源控制器104之間重新建立通信,則該第一資源控制器102釋放全局資源鎖110的所有權(quán)。該第一資源控制器102和第二資源控制器104接著返回正常運(yùn)行環(huán)境,共享對多個可控制資源108的訪問。
然而,如果沒有重新建立通信,并且第一資源控制器102在持有全局資源鎖110的同時崩潰,則該第二資源控制器104可以配置為利用恢復(fù)設(shè)施112從而根據(jù)由恢復(fù)設(shè)施112所建立的鎖恢復(fù)協(xié)議取得對于被陷住的全局資源鎖110的控制。在一個實(shí)施例中,恢復(fù)設(shè)施112作為存儲在第二資源控制器104上并且從第二資源控制器104進(jìn)行執(zhí)行的固件的一部分被執(zhí)行。在另一個實(shí)施例中,恢復(fù)設(shè)施112是第二資源控制器104內(nèi)的完整且自行的操作。在另一個實(shí)施例中,恢復(fù)設(shè)施112獨(dú)立于第二資源控制器104進(jìn)行操作,例如由系統(tǒng)用戶或是管理員進(jìn)行操作。
圖2描述了可以基本上類似于圖1的恢復(fù)設(shè)施112的恢復(fù)設(shè)施200的一個實(shí)施例。所例示的恢復(fù)設(shè)施200包括全局資源鎖202、判斷模塊204、置換模塊206以及聲明模塊208。一旦第二資源控制器104判斷全局資源鎖202被第一資源控制器102陷住,恢復(fù)設(shè)施200就被激活。如圖1所描述,恢復(fù)設(shè)施200根據(jù)鎖恢復(fù)協(xié)議恢復(fù)被陷住的全局資源鎖202。該鎖恢復(fù)協(xié)議建立第二資源控制器104可以恢復(fù)被陷住的全局資源鎖202的方式。
所例示的全局資源鎖202包括鎖指示符210和活動性指示符212。全局資源鎖202是由第一資源控制器102持有或是由第二資源控制器104取得的排它鎖。該全局資源鎖202準(zhǔn)許到作為存儲系統(tǒng)100的一部分的所有連接的可控制資源108的全局的排它訪問。鎖指示符210包括一個字段,其配置為持有當(dāng)前持有全局資源鎖202的第一資源控制器102的唯一ID 214,由此向用戶或是系統(tǒng)管理員指示哪一個資源控制器當(dāng)前持有全局資源鎖202。
鎖指示符210可能還包含除了唯一ID 214之外的其他字段。當(dāng)?shù)谝毁Y源控制器102獲取了全局資源鎖202時,將唯一地標(biāo)識第一資源控制器102的數(shù)字存儲在鎖指示符210中。當(dāng)?shù)诙Y源控制器104取得了全局資源鎖202時,將唯一地標(biāo)識第二資源控制器104的數(shù)字存儲在鎖指示符210中。在一個實(shí)施例中,資源控制器的該唯一標(biāo)識數(shù)字是硬件序列號,或是類似的唯一標(biāo)識數(shù)字。
活動性指示符212指示第一資源控制器102具有全局資源鎖202的活動的所有權(quán)?;顒拥乃袡?quán)意味著在預(yù)定的間隔內(nèi)周期性地更新活動性指示符212。換句話說,為了表明活動性所有權(quán),第一資源控制器102在預(yù)定的間隔內(nèi)周期性地更新活動性指示符212。
所例示的判斷模塊204包括驗(yàn)證模塊216和檢測模塊218。判斷模塊204判斷全局資源鎖202是否為第一資源控制器102所擁有。該判斷模塊204還判斷第一資源控制器102在持有全局資源鎖202的同時為脫機(jī)。當(dāng)?shù)诙Y源控制器104未能檢測到活動性指示符212在預(yù)定的檢查間隔220內(nèi)的變化時,該第一資源控制器102被認(rèn)為是脫機(jī)的。換句話說,判斷模塊204判斷全局資源鎖202被第一資源控制器102陷住。響應(yīng)于關(guān)于全局資源鎖202被陷住的判斷,判斷模塊204可以向置換模塊206發(fā)送信號。
驗(yàn)證模塊216包括檢查間隔220。該驗(yàn)證模塊216被配置為由恢復(fù)設(shè)施200的鎖恢復(fù)協(xié)議所定義的兩部分驗(yàn)證處理的一部分。在一個實(shí)施例中,驗(yàn)證模塊216驗(yàn)證如果第一資源控制器102擁有全局資源鎖202,則存儲在鎖指示符210中的唯一ID 214包含第一資源控制器102的唯一標(biāo)識數(shù)字。
在一個實(shí)施例中,驗(yàn)證模塊216驗(yàn)證活動性指示符212未能在預(yù)定的檢查間隔220內(nèi)改變。該檢查間隔220可以配置為活動性指示符212的期望改變率的周期的兩倍。響應(yīng)于關(guān)于已經(jīng)得到全局資源鎖202的判斷,驗(yàn)證模塊216檢驗(yàn)活動性指示符212的當(dāng)前值并且驗(yàn)證在預(yù)定的檢查間隔220的跨度內(nèi),該活動性指示符212保持不變。相反,如果驗(yàn)證模塊216未能驗(yàn)證活動性指示符212保持不變,但是活動性指示符212正在改變,則驗(yàn)證模塊216驗(yàn)證確實(shí)已經(jīng)輸?shù)袅岁P(guān)于全局資源鎖202的所有權(quán)的競爭。
檢測模塊218檢測到第一資源控制器102和第二資源控制器104之間消息業(yè)務(wù)量的中斷。響應(yīng)于所檢測到的消息業(yè)務(wù)量的中斷,該檢測模塊218向第一資源控制器102和/或第二資源控制器104發(fā)送信號以競爭全局資源鎖202的所有權(quán)。
所例示的置換模塊206包括清除模塊222和寫入模塊224。該置換模塊206響應(yīng)于來自判斷模塊204的信號而不可分割地從第一資源控制器102置換全局資源鎖202的所有權(quán)。在一個實(shí)施例中,判斷模塊204可能發(fā)送恢復(fù)命令到置換模塊206。響應(yīng)于第一資源控制器102變?yōu)槊摍C(jī)而同時保持著全局資源鎖202從而陷住了該全局資源鎖202,清除模塊222清除存儲在鎖指示符210中的唯一ID 214,并且寫入模塊224將第二資源控制器104的唯一ID 214寫入鎖指示符210。
如上所述,響應(yīng)于第一資源控制器102擁有全局資源鎖202,當(dāng)活動性指示符212被驗(yàn)證為靜態(tài)時,該第一資源控制器102被認(rèn)為是脫機(jī)的,也就是說,第一資源控制器102在持有全局資源鎖202的同時沒有遞增活動性指示符212。
在一個實(shí)施例中,清除模塊222和寫入模塊224作為不可分割的操作的一部分而執(zhí)行,該不可分割的操作為這樣一種操作,其中置換模塊206能夠同時清除唯一ID 214并將其寫入鎖指示符210。從而防止除了清除和寫入鎖指示符210之外的任何其它操作,直到該不可分割的操作結(jié)束。
所例示的聲明模塊208包括實(shí)現(xiàn)模塊226。該聲明模塊208響應(yīng)于第二資源控制器104從第一資源控制器102處取得全局資源鎖202的所有權(quán)而聲明第二資源控制器104對于全局資源鎖202的活動的所有權(quán)。如上所述,活動的所有權(quán)包括在預(yù)定的心跳間隔228內(nèi)周期性地更新活動性指示符212。該實(shí)現(xiàn)模塊226響應(yīng)于第一資源控制器102或第二資源控制器104取得全局資源鎖202的所有權(quán)而在預(yù)定的心跳間隔228內(nèi)遞增活動性指示符212。
心跳間隔228是一個期望在其間活動性指示符212發(fā)生改變的時間周期。檢查間隔220基于心跳間隔228的周期。在一個實(shí)施例中,檢查間隔220配置為心跳間隔228的周期的兩倍。例如,如果心跳間隔228被確定為三十秒的間隔,則結(jié)果是檢查間隔220為一分鐘的間隔。這樣,在驗(yàn)證模塊216緊接在活動性指示符212的更新之后對活動性指示符212進(jìn)行檢查的情況下,驗(yàn)證模塊216將仍然檢測到活動性指示符212在檢查間隔220的周期內(nèi)的至少一次改變,暗示著全局資源鎖202的活動的所有權(quán)。在特定的實(shí)施例中,該檢查間隔220以及心跳間隔228可以由主計算機(jī)或管理員進(jìn)行配置,可由編制好的軟件變量或任何其它類似的配置方案來確定。
圖3描述了可以結(jié)合圖2的恢復(fù)設(shè)施200而實(shí)現(xiàn)的存儲設(shè)備300的一個實(shí)施例。在一個實(shí)施例中,該存儲設(shè)備300可以基本上類似于圖2的全局資源鎖202。所例示的存儲設(shè)備300包括硬件寄存器302。該存儲設(shè)備300可能包括一個或多個非易失半導(dǎo)體器件,例如閃速存儲器、靜態(tài)隨機(jī)存取存儲器(SRAM)、非易失性隨機(jī)存取存儲器(NVRAM)、電可擦除可編程只讀存儲器(EEPROM)、可擦除可編程只讀存儲器(EPROM)、NAND/AND、NOR、分裂位線NOR(DINOR)或任意其它類似的存儲設(shè)備。
在一個實(shí)施例中,存儲設(shè)備300是構(gòu)成第一資源控制器102和第二資源控制器104所需的一個部分。在另一個實(shí)施例中,存儲設(shè)備300是存儲系統(tǒng)100的分立的部分,獨(dú)立于第一資源控制器102和/或第二資源控制器104。硬件寄存器302可以包括ID幀304和計數(shù)器306。在一個實(shí)施例中,硬件寄存器302由圖2中的恢復(fù)設(shè)施200根據(jù)鎖恢復(fù)協(xié)議進(jìn)行訪問。在特定的實(shí)施例中,ID幀304以及計數(shù)器306可以被包括在同一硬件寄存器302中,或者可以是單獨(dú)硬件寄存器302的一部分。
ID幀304可以基本上類似于圖2中響應(yīng)于第一資源控制器102擁有全局資源鎖202而包含第二資源控制器的唯一ID 214的鎖指示符210。計數(shù)器306可以基本上類似于圖2的活動性指示符212。在一個實(shí)施例中,計數(shù)器306可能為加計數(shù)器(遞增)、減計數(shù)器(遞減)、可以在D型或J-K觸發(fā)器中實(shí)現(xiàn)的異步(紋波(ripple))或同步計數(shù)器、Johnson或步查(walking)環(huán)形計數(shù)器或是有限狀態(tài)機(jī)(FSM)。在另一個實(shí)施例中,計數(shù)器306在聲明全局資源鎖202的活動的所有權(quán)的預(yù)定心跳間隔228內(nèi)被更新。
在另一個實(shí)施例中,活動性指示符212可以以序列實(shí)現(xiàn)。該序列可以是有限序列、無限序列、單調(diào)遞增或單調(diào)遞減序列、整數(shù)序列、多項(xiàng)式序列、線性序列或等差級數(shù)。在特定的實(shí)施例中,活動性指示符212可以實(shí)現(xiàn)為十六進(jìn)制、二進(jìn)制或是二進(jìn)制編碼十進(jìn)制。
圖4描繪了可以由圖2的恢復(fù)設(shè)施200實(shí)現(xiàn)的雙重資源控制器初始化方法400的一個實(shí)施例。在此參考圖1的存儲系統(tǒng)100對該雙重資源控制器初始化方法400進(jìn)行描述。雖然為了清楚起見以一特定的順序?qū)υ撾p重資源控制器初始化方法400進(jìn)行了描繪,但是存儲系統(tǒng)100可以并行地執(zhí)行該操作并且/或是不一定要按照所描繪的次序執(zhí)行該操作。
雙重資源控制器初始化方法400開始,并且在一個實(shí)施例中檢測模塊218檢測(402)第一資源控制器102和第二資源控制器104之間消息業(yè)務(wù)量的中斷。接著,判斷模塊204判斷(404)是否取得了全局資源鎖202的所有權(quán)。在一個實(shí)施例中,驗(yàn)證模塊216驗(yàn)證是否取得了全局資源鎖202。如果判斷模塊204判斷(404)已經(jīng)取得了全局資源鎖202的所有權(quán),則該雙重資源控制器初始化方法400前進(jìn)到恢復(fù)方法500。
在一個實(shí)施例中,假定從脫機(jī)而又同時持有全局資源鎖202的狀態(tài)中重新啟動后,第一資源控制器102檢測(402)到第二資源控制器104的通信的繼續(xù)的中斷。接著第一資源控制器102可能判斷(404)已經(jīng)取得了全局資源鎖202。這樣,在第二資源控制器104通過恢復(fù)全局資源鎖202的所有權(quán)而接管了第一資源控制器102的角色的同時,重新啟動的第一資源控制器102可能接管第二資源控制器104的角色并且前進(jìn)到恢復(fù)方法500。
如果判斷模塊204判斷(404)沒有取得全局資源鎖202,則該判斷模塊204可以向第一資源控制器102和第二資源控制器104發(fā)送信號以競爭(406)全局資源鎖的202所有權(quán)。接著,競爭的贏家變成了第一資源控制器102并且取得(408)全局資源鎖202。
接著,系統(tǒng)管理員可能試圖通過發(fā)出恢復(fù)命令而重啟第二資源控制器104。在一個實(shí)施例中,第二資源控制器104從判斷模塊204接收(410)恢復(fù)命令,該命令可能命令第二資源控制器104發(fā)起該雙重資源控制器初始化方法400。
第一資源控制器102接著在預(yù)定心跳間隔228內(nèi)遞增(412)活動性指示符212。接著,判斷模塊218判斷(414)第一資源控制器102和第二資源控制器104之間的通信中斷是否在持續(xù)。如果通信中斷在第一資源控制器102和第二資源控制器104之間繼續(xù),則第一資源控制器102通過在預(yù)定的心跳間隔228內(nèi)遞增(412)活動性指示符212而繼續(xù)表明全局資源鎖202的活動的所有權(quán)。
相反,如果判斷模塊218判斷(414)第一資源控制器102和第二資源控制器104之間的通信中斷不再存在,并且該通信為已鏈接的,則第一資源控制器102進(jìn)行到釋放(416)全局資源鎖202。在一個實(shí)施例中,清除模塊222通過清除唯一ID 214而釋放(416)全局資源鎖202。第一資源控制器102和第二資源控制器104返回到正常運(yùn)行環(huán)境,共享對多個可控制資源108的訪問。
圖5描述了可以通過圖2的恢復(fù)設(shè)施200實(shí)現(xiàn)的恢復(fù)方法500的一個實(shí)施例。在此參考圖1的存儲系統(tǒng)100對該恢復(fù)方法500進(jìn)行描述。
該恢復(fù)方法500包括操作判斷(502)活動性指示符212是否正在改變;清除(504)鎖指示符210;將唯一ID 214寫入(506)鎖指示符210;遞增(508)活動性指示符212;判斷(510)第一資源控制器102和第二資源控制器104是否重新建立通信;并且釋放(512)全局資源鎖202。
該恢復(fù)方法500對與第二資源控制器104相關(guān)聯(lián)的恢復(fù)設(shè)施200的恢復(fù)能力進(jìn)行初始化。雖然為了清楚起見以一特定的順序?qū)υ摶謴?fù)方法500進(jìn)行了描繪,但是存儲系統(tǒng)100可以并行地執(zhí)行該操作并且/或是不一定要按照所描繪的次序執(zhí)行該操作。
首先,判斷模塊204判斷(502)活動性指示符212是否正在改變。如果判斷模塊204判斷(502)活動性指示符212正在改變,則第二資源控制器104驗(yàn)證(504)第一資源控制器102具有全局資源鎖202的活動的所有權(quán)。在一個實(shí)施例中,驗(yàn)證模塊216驗(yàn)證(504)活動性指示符212在檢查間隔220內(nèi)改變。接著,該恢復(fù)方法500可以終止。
相反,如果判斷模塊204判斷(502)活動性指示符212在檢查間隔220內(nèi)沒有改變,則置換模塊206進(jìn)行到清除(506)鎖指示符210并且將第二資源控制器104的唯一ID 214寫入(508)鎖指示符210。在一個實(shí)施例中,在同時的操作中鎖指示符210由清除模塊222進(jìn)行清除(506)并且由寫入模塊224進(jìn)行寫入(508),其中清除模塊222以及寫入模塊224作為不可分割的操作的一部分而進(jìn)行執(zhí)行。
一旦恢復(fù)方法500不可分割地對鎖指示符210進(jìn)行清除(506)和寫入(508),則實(shí)現(xiàn)模塊226遞增(510)活動性指示符212,從而聲明該全局資源鎖202的活動的所有權(quán)。在已經(jīng)從第一資源控制器102取得了全局資源鎖202的所有權(quán)后,該第二資源控制器104憑借全局資源鎖202的所有權(quán)而承擔(dān)了第一資源控制器102的角色。
接著,檢測模塊218判斷(512)第一資源控制器102和第二資源控制器104之間的通信中斷是否在持續(xù)。如果該通信中斷在第一資源控制器102和第二資源控制器104之間繼續(xù),則第一資源控制器102(之前的第二控制器104)通過在預(yù)定的心跳間隔228內(nèi)遞增(510)活動性指示符212而繼續(xù)聲明全局資源鎖202的活動的所有權(quán)。
相反,如果第一資源控制器102和第二資源控制器104之間的通信中斷不再存在,并且該通信為鏈接的,則第二資源控制器104進(jìn)行到釋放(514)全局資源鎖202。該第一資源控制器102和第二資源控制器104返回到正常運(yùn)行環(huán)境,共享對多個可控制資源108的訪問。
由本發(fā)明所闡述的對于被陷住的全局資源鎖202的恢復(fù)對于整體的系統(tǒng)性能具有積極的影響。在特定的實(shí)施例中,本發(fā)明改善了正常運(yùn)行時間、應(yīng)用程序可用性以及實(shí)時業(yè)務(wù)性能,所有這些都使得將所有權(quán)的總成本變得更低。除了從發(fā)生故障的資源控制器恢復(fù)被陷住的全局資源鎖202之外,本發(fā)明的實(shí)施例向系統(tǒng)管理員提供了替換發(fā)生故障的資源控制器而不會影響故障時間的能力。在一個實(shí)施例中,本發(fā)明提供了全局資源鎖的自行置換,使得系統(tǒng)管理員的干預(yù)最小化。
這里所包括的示意性的流程圖作為邏輯流程圖而概括地提出。這樣,所描述的順序和標(biāo)注的操作象征著本方法的一個實(shí)施例??梢栽O(shè)想在功能、邏輯、或效果上等同于所例示的方法的一個或多個操作或其一部分的其它操作和方法。此外,所使用的格式和符號用以說明該方法的邏輯操作并且不應(yīng)當(dāng)理解為對本發(fā)明的范圍造成限制。雖然在流程圖中可以使用各種箭頭類型和線類型,但它們也不應(yīng)當(dāng)被理解為對相應(yīng)方法的范圍造成限制。事實(shí)上,一些箭頭或是其它的連接物可以被用于僅僅指示該方法的邏輯流程。例如,箭頭可以指示所描述方法的所列舉的操作之間的未指定期間的等待期或是監(jiān)控期。此外,特定的方法發(fā)生所按照的順序可以或是可以不嚴(yán)格地遵循所示出的相應(yīng)操作的順序。
在本說明書中提及的“一個實(shí)施例”、“實(shí)施例”或是類似的語句意味著結(jié)合該實(shí)施例所描述的特定的特征、結(jié)構(gòu)或是特性包括在本發(fā)明的至少一個實(shí)施例中。這樣,貫穿本說明書中的措詞“在一個實(shí)施例中”、“在實(shí)施例中”以及類似的語句可以但不一定全部是指相同的實(shí)施例。
所提到的信號承載介質(zhì)可以采取能夠生成信號、使得信號被生成或是使得在數(shù)字信號處理裝置上執(zhí)行機(jī)器可讀指令的程序的任意形式。信號承載介質(zhì)可以由傳輸線路、壓縮光盤、數(shù)字視頻光盤、磁帶、伯努利驅(qū)動器、磁盤、穿孔卡片、閃速存儲器、集成電路或其它數(shù)字處理裝置的存儲設(shè)備。
此外,所描述的本發(fā)明的特征、結(jié)構(gòu)或特性可以以任意適合的方式合并在一個或多個實(shí)施例中。在下面的描述中,提供了眾多的特定細(xì)節(jié),例如編程、軟件模塊、用戶選擇、網(wǎng)絡(luò)交易、數(shù)據(jù)庫查詢、數(shù)據(jù)庫結(jié)構(gòu)、硬件模塊、硬件電路、硬件芯片等的例子,從而提供了對于本發(fā)明實(shí)施例的透徹理解。然而,本領(lǐng)域的技術(shù)人員將認(rèn)識到,本發(fā)明可以在沒有一個或多個特定的細(xì)節(jié)的情況下或是利用其它的方法、組件、材料等等而得以實(shí)現(xiàn)。在其它情況下,沒有示出或是詳細(xì)地描述公知的結(jié)構(gòu)、材料或操作以避免淡化本發(fā)明的方面。
在不偏離本發(fā)明的精神或本質(zhì)特性的情況下,本發(fā)明可以以其它特定的形式實(shí)現(xiàn)。所描述的實(shí)施例應(yīng)當(dāng)被認(rèn)為是說明性的而非限制性的。因此,本發(fā)明的范圍由所附的權(quán)利要求書而非上面的說明來指示。在權(quán)利要求書的等效的意義和范圍內(nèi)的所有改變都應(yīng)當(dāng)包含在其范圍內(nèi)。
權(quán)利要求
1.一種用以自行置換全局資源鎖的裝置,所述裝置包括判斷模塊,配置為判斷全局資源鎖是否由第一資源控制器擁有并且響應(yīng)于所述第一資源控制器擁有所述全局資源鎖而判斷所述第一資源控制器為脫機(jī);置換模塊,配置為響應(yīng)于接收到來自所述判斷模塊的信號而不可分割地從所述第一資源控制器置換所述全局資源鎖的所有權(quán);以及與該置換模塊進(jìn)行通信的聲明模塊,所述聲明模塊配置為聲明第二資源控制器具有對于所述全局資源鎖的活動的所有權(quán)。
2.根據(jù)權(quán)利要求1所述的裝置,其中所述全局資源鎖包括鎖指示符,配置為指示當(dāng)前擁有所述全局資源鎖的所述第一資源控制器的唯一ID;以及活動性指示符,配置為指示所述第一資源控制器具有對于所述全局資源鎖的活動的所有權(quán)。
3.根據(jù)權(quán)利要求2所述的裝置,其中活動的所有權(quán)包括在預(yù)定的心跳間隔內(nèi)周期性地更新所述活動性指示符。
4.根據(jù)權(quán)利要求2所述的裝置,其中所述判斷模塊包括驗(yàn)證模塊,所述驗(yàn)證模塊配置為驗(yàn)證所述鎖指示符包含所述第一資源控制器的所述唯一ID。
5.根據(jù)權(quán)利要求4所述的裝置,其中所述驗(yàn)證模塊進(jìn)一步地配置為驗(yàn)證在檢查間隔內(nèi)所述活動性指示符未能改變。
6.根據(jù)權(quán)利要求2所述的裝置,進(jìn)一步包括檢測模塊,所述檢測模塊配置為檢測所述第一資源控制器和所述第二資源控制器之間消息業(yè)務(wù)量的中斷。
7.根據(jù)權(quán)利要求2所述的裝置,其中所述置換模塊包括清除模塊,配置為清除所述鎖指示符;寫入模塊,配置為將所述第二資源控制器的唯一ID寫入所述鎖指示符;并且其中所述清除模塊和所述寫入模塊作為不可分割的操作的一部分而執(zhí)行。
8.根據(jù)權(quán)利要求1所述的裝置,其中所述聲明模塊包括實(shí)現(xiàn)模塊,所述實(shí)現(xiàn)模塊配置為響應(yīng)于所述第二資源控制器取得所述全局資源鎖的所有權(quán)而在預(yù)定的心跳間隔內(nèi)遞增活動性指示符。
9.一種自行置換全局資源鎖的系統(tǒng),所述系統(tǒng)包括與多個可控制資源相連接的第一資源控制器,所述第一資源控制器配置為分配所述多個可控制資源;與所述多個可控制資源相連接的第二資源控制器,所述第二資源控制器配置為分配所述多個可控制資源;與所述第一資源控制器和所述第二資源控制器相連接的全局資源鎖,所述全局資源鎖具有多個寄存器;與所述第一資源控制器和所述第二資源控制器進(jìn)行通信的恢復(fù)設(shè)施,所述恢復(fù)設(shè)施配置為響應(yīng)于關(guān)于所述第一資源控制器未能更新活動性指示符的判斷而自行地將所述全局資源鎖的所有權(quán)從所述第一資源控制器轉(zhuǎn)移到所述第二資源控制器。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),還包括連接到所述全局資源鎖的ID持有器,所述ID持有器配置為存儲唯一標(biāo)識信息的字符串。
11.根據(jù)權(quán)利要求9所述的系統(tǒng),還包括連接到所述全局資源鎖的計數(shù)器,所述計數(shù)器配置為以預(yù)定的心跳間隔而改變。
12.一種用以執(zhí)行操作以自行置換全局資源鎖的方法,所述操作包括判斷全局資源鎖是否由第一資源控制器擁有;響應(yīng)于所述第一資源控制器擁有所述全局資源鎖而判斷所述第一資源控制器為脫機(jī);不可分割地從所述第一資源控制器置換所述全局資源鎖的所有權(quán);并且聲明第二資源控制器具有對全局資源鎖的活動的所有權(quán)。
13.根據(jù)權(quán)利要求12所述的方法,其中判斷全局資源鎖是否由所述第一資源控制器擁有包括驗(yàn)證鎖指示符包含所述第一資源控制器的唯一ID。
14.根據(jù)權(quán)利要求13所述的方法,其中還包括檢測所述第一資源控制器和所述第二資源控制器之間消息業(yè)務(wù)量的中斷。
15.根據(jù)權(quán)利要求13所述的方法,其中所述全局資源鎖包括鎖指示符,指示當(dāng)前擁有所述全局資源鎖的所述第一資源控制器的唯一ID;以及活動性指示符,指示所述第一資源控制器擁有所述全局資源鎖的活動的所有權(quán)。
16.根據(jù)權(quán)利要求15所述的方法,其中活動的所有權(quán)包括在預(yù)定的心跳間隔內(nèi)周期性地更新所述活動性指示符。
17.根據(jù)權(quán)利要求12所述的方法,其中關(guān)于所述第一資源控制器為脫機(jī)的判斷包括所述第二資源控制器驗(yàn)證所述活動性指示符未能在檢查間隔內(nèi)發(fā)生改變。
18.根據(jù)權(quán)利要求12所述的方法,其中不可分割地從所述第一資源控制器置換所述全局資源鎖的所有權(quán)包括清除鎖指示符;將所述第二資源控制器的唯一ID寫入所述鎖指示符;并且將清除所述鎖指示符和將所述第二資源控制器的唯一ID寫入所述鎖指示符作為不可分割的操作的一部分而執(zhí)行。
19.根據(jù)權(quán)利要求12所述的方法,其中聲明所述全局資源鎖的活動的所有權(quán)包括響應(yīng)于所述第二資源控制器取得所述全局資源鎖的所有權(quán)而在預(yù)定的心跳間隔內(nèi)遞增活動性指示符。
20.一種用于部署用以自行置換全局資源鎖的軟件的方法,所述方法包括安裝所有權(quán)模塊,所述所有權(quán)模塊配置為建立并且保持全局資源鎖;并且執(zhí)行恢復(fù)設(shè)施,所述恢復(fù)設(shè)施配置為判斷所述全局資源鎖是否由第一資源控制器擁有;響應(yīng)于所述第一資源控制器擁有所述全局資源鎖而判斷所述第一資源控制器為脫機(jī);不可分割地從所述第一資源控制器置換所述全局資源鎖的所有權(quán);并且聲明第二資源控制器具有對于所述全局資源鎖的活動的所有權(quán)。
全文摘要
公開了一種用于自行置換全局資源鎖的裝置、系統(tǒng)和方法。該裝置包括判斷模塊、置換模塊以及聲明模塊。該判斷模塊判斷全局資源鎖是否由對等資源控制器擁有,并且響應(yīng)于該對等資源控制器擁有全局資源鎖而判斷該對等資源控制器為脫機(jī)。不可分割模塊不可分割地從該對等資源控制器置換全局資源鎖的所有權(quán)。該聲明模塊聲明全局資源鎖的活動的所有權(quán)。該裝置、系統(tǒng)和方法提供了全局資源鎖的自行置換,使得系統(tǒng)故障時間和用戶干預(yù)最小化。
文檔編號G06F9/46GK1949178SQ20061012646
公開日2007年4月18日 申請日期2006年8月31日 優(yōu)先權(quán)日2005年10月11日
發(fā)明者邁卡·羅比森, 布賴恩·安東尼·里納爾迪 申請人:國際商業(yè)機(jī)器公司