專(zhuān)利名稱(chēng):對(duì)n路共享存儲(chǔ)系統(tǒng)中快閃副本的高效鎖管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)控制器領(lǐng)域,尤其涉及提供快閃復(fù)制功能的N路共享存儲(chǔ)系統(tǒng)中的高級(jí)功能存儲(chǔ)控制器。
背景技術(shù):
在計(jì)算機(jī)存儲(chǔ)系統(tǒng)的領(lǐng)域中,存在對(duì)已被描述為“高級(jí)功能”的不斷增加的需求。這種功能超越了傳統(tǒng)存儲(chǔ)控制器系統(tǒng)中簡(jiǎn)單的I/O功能。高級(jí)功能在本領(lǐng)域中是公知的,它依賴(lài)于對(duì)元數(shù)據(jù)的控制,元數(shù)據(jù)用于保存關(guān)于存儲(chǔ)在系統(tǒng)中的真實(shí)或“用戶(hù)”數(shù)據(jù)的狀態(tài)數(shù)據(jù)。使用高級(jí)功能時(shí)可用的操作使得各種行為能夠被快速施加到數(shù)據(jù)的虛擬映象上,同時(shí)使真實(shí)數(shù)據(jù)可供用戶(hù)應(yīng)用使用。一種這樣公知的高級(jí)功能是“快閃復(fù)制”。
在最高層次上,快閃復(fù)制是使得“某一數(shù)據(jù)”的第二映象可用的功能。這一功能有時(shí)稱(chēng)作實(shí)時(shí)復(fù)制或T0復(fù)制。第二映象的內(nèi)容最初與原始的內(nèi)容一致。第二映象被實(shí)現(xiàn)為“立即”可用。實(shí)際上,這意味著第二映象在比生成真正的、單獨(dú)的物理副本所需的時(shí)間要少的多的時(shí)間內(nèi)被實(shí)現(xiàn)為可用,這意味著可以在對(duì)使用應(yīng)用的操作無(wú)不可接受的中斷的情況下建立該第二映象。
一旦建立,第二副本可用于很多目的,包括進(jìn)行備份,系統(tǒng)測(cè)試和數(shù)據(jù)采集。第一副本繼續(xù)由初始使用的應(yīng)用為其初始目的而使用。這與沒(méi)有快閃復(fù)制情況下的備份形成對(duì)比,在沒(méi)有快閃復(fù)制的情況下應(yīng)用必須被關(guān)閉,并在該應(yīng)用可再次重新啟動(dòng)之前進(jìn)行備份。但找到應(yīng)用足夠閑置可被關(guān)閉的時(shí)間窗變得越來(lái)越困難。進(jìn)行備份的成本也逐漸增加。但快閃復(fù)制的能力中存在允許在不停止業(yè)務(wù)的情況下進(jìn)行備份的重大且逐漸增加的商業(yè)價(jià)值。
快閃復(fù)制實(shí)現(xiàn)通過(guò)將對(duì)第二映象(下文稱(chēng)為目標(biāo))的讀I/O重定向到初始映象(下文稱(chēng)為源)(如果該區(qū)域未處于寫(xiě)操作下的話(huà))來(lái)實(shí)現(xiàn)存在第二映象的假象。當(dāng)一個(gè)區(qū)域已經(jīng)處于(對(duì)源或?qū)δ繕?biāo)的)寫(xiě)操作下,則保持源和目標(biāo)均擁有它們自己的數(shù)據(jù)副本的假象,調(diào)用掛起該寫(xiě)命令操作的進(jìn)程,并且在該寫(xiě)操作還未生效的情況下,發(fā)出對(duì)源中所作用的區(qū)域的讀,利用寫(xiě)操作將讀出數(shù)據(jù)應(yīng)用到目標(biāo)中,然后(且只有所有步驟都成功時(shí))釋放所掛起的寫(xiě)操作。隨后對(duì)該相同區(qū)域的寫(xiě)操作不需要再被掛起,因?yàn)槟繕?biāo)已經(jīng)具有它自己的數(shù)據(jù)副本。這種寫(xiě)時(shí)復(fù)制技術(shù)是公知的,其應(yīng)用于許多環(huán)境中。
快閃復(fù)制的所有實(shí)現(xiàn)都依賴(lài)于一種數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)控制上面討論的判定,即關(guān)于將在目標(biāo)處接收到的讀命令發(fā)給源還是目標(biāo)的判定,及關(guān)于是否必須掛起寫(xiě)操作以允許寫(xiě)時(shí)復(fù)制發(fā)生的判定。該數(shù)據(jù)結(jié)構(gòu)主要跟蹤從源復(fù)制到目標(biāo)的數(shù)據(jù)區(qū)或數(shù)據(jù)粒度,這些數(shù)據(jù)區(qū)域或粒度與那些未復(fù)制的數(shù)據(jù)區(qū)域或粒度是不同的。
對(duì)這一數(shù)據(jù)結(jié)構(gòu)(下文稱(chēng)為元數(shù)據(jù))的維護(hù)是實(shí)現(xiàn)快閃復(fù)制背后的算法的關(guān)鍵。
在單個(gè)CPU復(fù)合體(可能具有SMP處理器)內(nèi)實(shí)現(xiàn)快閃復(fù)制相對(duì)比較直接,這種實(shí)現(xiàn)通常在現(xiàn)代存儲(chǔ)控制器中應(yīng)用。多付出一點(diǎn)努力,便可能實(shí)現(xiàn)容錯(cuò)的快閃復(fù)制,以便(至少)兩個(gè)CPU復(fù)合體能夠訪問(wèn)元數(shù)據(jù)的副本。如果第一個(gè)CPU復(fù)合體故障,可以使用第二個(gè)繼續(xù)工作,不會(huì)造成對(duì)目標(biāo)映象的訪問(wèn)失敗。
然而,單個(gè)CPU復(fù)合體的I/O能力是有限的。提高單個(gè)CPU復(fù)合體的以每秒I/O或帶寬(MB/s)度量的能力具有有限限度,且其將最終對(duì)使用應(yīng)用的性能產(chǎn)生約束。這種限度出現(xiàn)于快閃復(fù)制的許多實(shí)現(xiàn)中,但一個(gè)很好的例子是在存儲(chǔ)控制器中。典型的存儲(chǔ)控制器具有單個(gè)(或可能一個(gè)冗余對(duì))CPU復(fù)合體,其支配該控制器的執(zhí)行能力方面的限度。
可安裝多個(gè)存儲(chǔ)控制器。但分離的存儲(chǔ)控制器不共享對(duì)元數(shù)據(jù)的訪問(wèn),因此在對(duì)快閃副本映象的管理中不共同操作。將快閃副本限制在單個(gè)控制器系統(tǒng)的范圍之內(nèi),則存儲(chǔ)空間被分成段。源盤(pán)和目標(biāo)盤(pán)二者必須在同一個(gè)存儲(chǔ)控制器內(nèi)進(jìn)行管理。單個(gè)存儲(chǔ)控制器盤(pán)空間可能會(huì)充滿(mǎn),而另一盤(pán)還有一些空閑空間,但是將源盤(pán)和目標(biāo)盤(pán)分離開(kāi),將目標(biāo)盤(pán)置于新的控制器的控制之下是不可能的。(這在新的快閃副本的情況下是尤其不幸的,在這種情況下移動(dòng)目標(biāo)是低成本的操作,因?yàn)樗痪哂信c其相關(guān)的物理數(shù)據(jù)。)而且,限制整體性能對(duì)于源/目標(biāo)對(duì)是可能的,對(duì)單個(gè)控制器存儲(chǔ)功能的限制增加了對(duì)存儲(chǔ)環(huán)境的管理的復(fù)雜性。
通常,目前的存儲(chǔ)控制系統(tǒng)并未試圖解決這一問(wèn)題。它們實(shí)現(xiàn)限于單個(gè)控制器的快閃復(fù)制技術(shù),因此被該控制器的能力所限制。
一種允許多個(gè)控制器參與到共享快閃副本關(guān)系中的簡(jiǎn)單方法是指派一個(gè)控制器作為元數(shù)據(jù)的所有者,并使其他控制器向該控制器轉(zhuǎn)發(fā)讀和寫(xiě)請(qǐng)求。所有者控制器使用上面描述的算法處理I/O請(qǐng)求,就好象它們直接來(lái)自于它自己的附屬宿主服務(wù)器,并完成每個(gè)I/O請(qǐng)求返回給發(fā)起控制器。
這種系統(tǒng)的主要缺點(diǎn)以及它沒(méi)有被廣泛使用的原因在于,轉(zhuǎn)發(fā)每個(gè)I/O請(qǐng)求的負(fù)擔(dān)太大了,甚至可能是整個(gè)系統(tǒng)范圍成本的2倍,因而將近平分了系統(tǒng)性能的一半。
例如,已知,在分布式并行數(shù)據(jù)庫(kù)系統(tǒng)的領(lǐng)域內(nèi),為了以一致關(guān)系維護(hù)數(shù)據(jù)的任何副本,使運(yùn)用兩相鎖定協(xié)議的分布式鎖定管理結(jié)構(gòu)保持對(duì)數(shù)據(jù)的鎖。然而,兩相鎖定通常是耗費(fèi)時(shí)間的,而且為處理增加相當(dāng)大的消息傳遞負(fù)擔(dān)。同樣,根據(jù)先有技術(shù)的未更改的兩相鎖定協(xié)議在具有更低級(jí)別的軟件和硬件棧的系統(tǒng)中是不利的,這種系統(tǒng)諸如是具有分布式存儲(chǔ)控制器的存儲(chǔ)區(qū)域網(wǎng)絡(luò),在該系統(tǒng)中傳遞鎖定控制消息的性能影響甚至比處于數(shù)據(jù)庫(kù)控制級(jí)別時(shí)的更大。
因此,期望能夠在快閃復(fù)制環(huán)境中獲得分布式鎖管理的優(yōu)點(diǎn),而同時(shí)引起最小的鎖消息傳遞開(kāi)銷(xiāo)。
發(fā)明內(nèi)容
因此,在第一方面,本發(fā)明提供一種可工作于存儲(chǔ)控制器節(jié)點(diǎn)的網(wǎng)絡(luò)中的存儲(chǔ)控制裝置,其中該網(wǎng)絡(luò)具有可運(yùn)行以在I/O行為期間控制數(shù)據(jù)區(qū)域的鎖定的所有者存儲(chǔ)控制器節(jié)點(diǎn)及可運(yùn)行以傳遞至少一個(gè)請(qǐng)求鎖、準(zhǔn)許鎖、請(qǐng)求釋放鎖及信號(hào)通知鎖已被釋放的消息的消息傳遞部件,該裝置包括I/O執(zhí)行部件,其可運(yùn)行以服從所述I/O執(zhí)行部件對(duì)任何所述所有者存儲(chǔ)控制器節(jié)點(diǎn)控制的鎖協(xié)議的遵從性,對(duì)所述所有者存儲(chǔ)控制器節(jié)點(diǎn)擁有的數(shù)據(jù)執(zhí)行I/O操作;其中所述數(shù)據(jù)區(qū)域的任何快閃副本映象以與所述數(shù)據(jù)區(qū)域一致的關(guān)系被維護(hù);以及其中所述I/O執(zhí)行部件可運(yùn)行以緩存前一個(gè)對(duì)于所述數(shù)據(jù)區(qū)域已與任何所述快閃副本映象處于一致關(guān)系中的肯定確認(rèn),并根據(jù)所述前一個(gè)肯定確認(rèn)執(zhí)行I/O行為。
優(yōu)選地,所述I/O執(zhí)行部件可運(yùn)行以丟棄已緩存的肯定確認(rèn),并隨后請(qǐng)求重新鎖定。
優(yōu)選地,通過(guò)有選擇地丟棄已緩存的肯定確認(rèn),來(lái)管理縮減的緩存存儲(chǔ)區(qū)域。
優(yōu)選地,對(duì)于所述數(shù)據(jù)區(qū)域的肯定確認(rèn)進(jìn)一步包括任何對(duì)于鄰近于所述數(shù)據(jù)區(qū)域的其他數(shù)據(jù)區(qū)域的肯定確認(rèn)。
在第二方面,本發(fā)明提供一種存儲(chǔ)控制器節(jié)點(diǎn)的網(wǎng)絡(luò)中的存儲(chǔ)控制方法,其中該網(wǎng)絡(luò)具有可運(yùn)行以在I/O行為期間控制數(shù)據(jù)區(qū)域的鎖定的所有者存儲(chǔ)控制器節(jié)點(diǎn)及可運(yùn)行以傳遞至少一個(gè)消息,以請(qǐng)求鎖、準(zhǔn)許鎖、請(qǐng)求釋放鎖及信號(hào)通知鎖已被釋放的消息傳遞部件,該方法包括步驟服從對(duì)任何所述所有者存儲(chǔ)控制器節(jié)點(diǎn)控制的鎖協(xié)議的遵從性,對(duì)所述所有者存儲(chǔ)控制器節(jié)點(diǎn)擁有的數(shù)據(jù)執(zhí)行I/O操作;以與所述數(shù)據(jù)區(qū)域一致的關(guān)系維護(hù)所述數(shù)據(jù)區(qū)域的快閃副本;以及緩存前一個(gè)對(duì)于所述數(shù)據(jù)區(qū)域已與任何所述快閃副本映象處于一致關(guān)系中的肯定確認(rèn),并根據(jù)所述前一個(gè)肯定確認(rèn)執(zhí)行I/O行為。
優(yōu)選地,該第二方面的方法進(jìn)一步包括丟棄已緩存的肯定確認(rèn),并隨后請(qǐng)求重新鎖定的步驟。
優(yōu)選地,該第二方面的方法進(jìn)一步包括通過(guò)有選擇地丟棄已緩存的肯定確認(rèn),來(lái)管理縮減的緩存存儲(chǔ)區(qū)域。
優(yōu)選地,對(duì)于所述數(shù)據(jù)區(qū)域的肯定確認(rèn)進(jìn)一步包括任何對(duì)于鄰近于所述數(shù)據(jù)區(qū)域的其他數(shù)據(jù)區(qū)域的肯定確認(rèn)。
在第三方面,本發(fā)明提供一種有形實(shí)現(xiàn)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序代碼手段,當(dāng)其被加載到計(jì)算機(jī)系統(tǒng)中并在其上執(zhí)行時(shí),使具有可運(yùn)行以在I/O行為期間控制數(shù)據(jù)區(qū)域的鎖定的所有者存儲(chǔ)控制器節(jié)點(diǎn)及可運(yùn)行以傳遞至少一個(gè)消息,以請(qǐng)求鎖、準(zhǔn)許鎖、請(qǐng)求釋放鎖及信號(hào)通知鎖已被釋放的消息傳遞部件的存儲(chǔ)控制器節(jié)點(diǎn)的網(wǎng)絡(luò)中的存儲(chǔ)控制裝置執(zhí)行步驟服從對(duì)任何所述所有者存儲(chǔ)控制器節(jié)點(diǎn)控制的鎖協(xié)議的遵從性,對(duì)所述所有者存儲(chǔ)控制器節(jié)點(diǎn)擁有的數(shù)據(jù)執(zhí)行I/O操作;以與所述數(shù)據(jù)區(qū)域一致的關(guān)系維護(hù)所述數(shù)據(jù)區(qū)域的快閃副本;以及緩存前一個(gè)對(duì)于所述數(shù)據(jù)區(qū)域已與任何所述快閃副本映象處于一致關(guān)系中的肯定確認(rèn),并根據(jù)所述前一個(gè)肯定確認(rèn)執(zhí)行I/O行為。
本發(fā)明的當(dāng)前優(yōu)選實(shí)施例使用修改的兩相鎖消息傳遞方案來(lái)協(xié)調(diào)n路系統(tǒng)中多個(gè)存儲(chǔ)控制器(或節(jié)點(diǎn))之間的行為。該消息傳遞協(xié)調(diào)系統(tǒng)中的節(jié)點(diǎn)之間的行為,但每個(gè)節(jié)點(diǎn)仍然負(fù)責(zé)執(zhí)行它自己的I/O操作。每個(gè)節(jié)點(diǎn)具有緩存工具,以緩存其先前的鎖請(qǐng)求的結(jié)果,以便它能夠再使用這些結(jié)果中的某一個(gè)來(lái)避免查詢(xún)數(shù)據(jù)區(qū)域的狀態(tài)的必要性,如果該狀態(tài)已經(jīng)由已緩存的前一結(jié)果肯定指示的話(huà)。
現(xiàn)在參照附圖僅以舉例的方式描述本發(fā)明的優(yōu)選實(shí)施例,其中圖1是流程圖,其示出使用鎖消息控制數(shù)據(jù)區(qū)域與數(shù)據(jù)的快閃副本映象之間的一致性的兩相鎖定方案的一個(gè)實(shí)施例;圖2示出根據(jù)本發(fā)明優(yōu)選實(shí)施例的系統(tǒng)的系統(tǒng)部件;圖3示出本發(fā)明優(yōu)選實(shí)施例的附加步驟。
具體實(shí)施例方式
為了更好地理解本發(fā)明當(dāng)前的優(yōu)選實(shí)施例,有必要描述兩相鎖消息傳遞對(duì)n路存儲(chǔ)系統(tǒng)中多個(gè)存儲(chǔ)控制器(或節(jié)點(diǎn))之間的協(xié)調(diào)行為的使用。
作為舉例,考慮一個(gè)實(shí)現(xiàn)快閃復(fù)制的n路系統(tǒng)。假設(shè)每個(gè)節(jié)點(diǎn)都能訪問(wèn)由一組共同操作的n個(gè)節(jié)點(diǎn)管理的存儲(chǔ)器。這些節(jié)點(diǎn)中的一個(gè)被指定為是涉及存儲(chǔ)區(qū)域的所有I/O關(guān)系的元數(shù)據(jù)的所有者(102)。其他節(jié)點(diǎn)被指定為客戶(hù)端。在當(dāng)前最優(yōu)的實(shí)施例中,這些客戶(hù)端節(jié)點(diǎn)中的一個(gè)被進(jìn)一步指定為備份所有者,維護(hù)元數(shù)據(jù)的副本,以便當(dāng)所有者節(jié)點(diǎn)出現(xiàn)故障時(shí)提供繼續(xù)的可用性。
考慮一個(gè)到達(dá)特定客戶(hù)端節(jié)點(diǎn)(“C”)的主機(jī)I/O請(qǐng)求(104)。假設(shè)該主機(jī)I/O請(qǐng)求是對(duì)目標(biāo)盤(pán)的讀或?qū)懀蚩赡苁菍?duì)源盤(pán)的寫(xiě)。客戶(hù)端C由掛起該I/O(106)而開(kāi)始處理。然后,C向所有者節(jié)點(diǎn)O發(fā)送消息REQ(108),詢(xún)問(wèn)該粒度是否已被復(fù)制。
在O接收到消息REQ時(shí),它檢查自己的元數(shù)據(jù)結(jié)構(gòu)。如果O發(fā)現(xiàn)該區(qū)域已經(jīng)被復(fù)制,則它以NACK消息回復(fù)(110)。如果O發(fā)現(xiàn)該區(qū)域還未被復(fù)制,則它在自己的元數(shù)據(jù)結(jié)構(gòu)內(nèi)為該區(qū)域放置一個(gè)依據(jù)適當(dāng)元數(shù)據(jù)的鎖記錄,并以GNT消息回復(fù)(112)。鎖記錄對(duì)于確保剛接收到并準(zhǔn)許的請(qǐng)求與其他在C的處理持續(xù)時(shí)可能到達(dá)的作用于相同元數(shù)據(jù)的請(qǐng)求之間的兼容性是所需的。關(guān)于如何對(duì)鎖記錄進(jìn)行維護(hù)以及兼容性約束是什么的詳情與好似該I/O請(qǐng)求是O本地接收到時(shí)的情況相同,并且對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō)是公知的。
在接收到NACK消息時(shí),C釋放初始I/O請(qǐng)求(114)。
在接收到GNT消息時(shí),C通過(guò)執(zhí)行快閃復(fù)制算法所需的數(shù)據(jù)傳輸而繼續(xù)進(jìn)行處理(116)。在目標(biāo)讀的情況下,這意味著執(zhí)行對(duì)源盤(pán)的讀。一段時(shí)間后,C將對(duì)該讀請(qǐng)求處理完成(118),并在對(duì)發(fā)出該初始I/O請(qǐng)求的主機(jī)系統(tǒng)完成該I/O請(qǐng)求的同時(shí)向O發(fā)送UNL消息(120)。
在接收到UNL消息時(shí),O從其元數(shù)據(jù)表中移除鎖記錄(122),并因此可能釋放因該鎖而掛起的其他I/O請(qǐng)求。在當(dāng)前最優(yōu)選的實(shí)施例中,O向C傳遞UNID消息(124),允許C再使用與初始請(qǐng)求相關(guān)的資源。但是,這不是快閃復(fù)制算法本身要求的。
在(對(duì)目標(biāo)或源盤(pán))寫(xiě)的情況下,C必須執(zhí)行寫(xiě)時(shí)復(fù)制(127)。在完成了寫(xiě)時(shí)復(fù)制的所有步驟,且初始寫(xiě)I/O請(qǐng)求仍然掛起時(shí),C向O發(fā)出UNLC請(qǐng)求(126)。
在接收到UNLC消息時(shí),O在元數(shù)據(jù)中將所作用的區(qū)域標(biāo)記為已被復(fù)制(128),移除鎖記錄(130),向任何等待請(qǐng)求通知該區(qū)域現(xiàn)在已被復(fù)制(132),然后向C發(fā)送UNLD消息(134)。
在接收到UNLD消息時(shí),C釋放掛起的在一段時(shí)間后將完成的寫(xiě)操作(136),然后,C完成對(duì)主機(jī)的寫(xiě)操作(138)。
恢復(fù)路徑對(duì)于滿(mǎn)足盤(pán)I/O故障、或消息傳遞系統(tǒng)故障、或節(jié)點(diǎn)故障的情況的需要是所需的,但這些需求和實(shí)現(xiàn)是本領(lǐng)域中已知的。
以上的描述是從單個(gè)I/O和單個(gè)客戶(hù)端C的觀點(diǎn)來(lái)敘述的。但是,該方案在存在來(lái)自多個(gè)客戶(hù)端節(jié)點(diǎn)的多個(gè)I/O,而O繼續(xù)以相同算法處理所有請(qǐng)求的情況下怎樣繼續(xù)工作是很清楚的。
現(xiàn)在轉(zhuǎn)到圖2,其示出根據(jù)本發(fā)明當(dāng)前優(yōu)選實(shí)施例的裝置,該裝置實(shí)現(xiàn)于存儲(chǔ)控制器網(wǎng)絡(luò)中,該存儲(chǔ)控制器網(wǎng)絡(luò)包括所有者(202)、客戶(hù)端(204)I/O執(zhí)行部件、涉及在存儲(chǔ)網(wǎng)絡(luò)控制下的所持有的數(shù)據(jù)(208)的元數(shù)據(jù)(206)部分、數(shù)據(jù)(208)的副本(209)、以及通信裝置。該裝置包括所有權(quán)指派部件(210),其向所有者(202)指派元數(shù)據(jù)的所有權(quán);和鎖管理部件(212),其可在I/O行為期間在所述元數(shù)據(jù)(206)級(jí)別上控制鎖定,以確保與任何副本(209)的一致性。該裝置還包括在所有者(202)處的消息傳遞部件(214),該消息傳遞部件(214)可用于在客戶(hù)端(204)和所有者(202)之間傳遞一個(gè)或多個(gè)消息,以請(qǐng)求關(guān)于元數(shù)據(jù)狀態(tài)的響應(yīng)、準(zhǔn)許一個(gè)鎖、請(qǐng)求釋放鎖、以及信號(hào)通知鎖已釋放。客戶(hù)端(204)可服從客戶(hù)端(204)在任何擁有數(shù)據(jù)的元數(shù)據(jù)的所有者(202)控制的元數(shù)據(jù)級(jí)別上對(duì)鎖定協(xié)議的遵從性,對(duì)該數(shù)據(jù)執(zhí)行I/O操作。
上述的系統(tǒng)和方法能夠在n路共享存儲(chǔ)控制器網(wǎng)絡(luò)中處理分布式鎖管理,但是它們具有缺點(diǎn),即在該系統(tǒng)中存在相當(dāng)大的消息傳遞開(kāi)銷(xiāo)。這在包含相對(duì)較少控制器或存在相對(duì)較少活動(dòng)的系統(tǒng)中不是難以承受的,但在諸如超大規(guī)模的存儲(chǔ)區(qū)域網(wǎng)絡(luò)的現(xiàn)代存儲(chǔ)系統(tǒng)中,很可能具有許多控制器和相當(dāng)高級(jí)的存儲(chǔ)活動(dòng)。在這樣的環(huán)境中,避免不必要的消息傳遞開(kāi)銷(xiāo)將是非常有利的。
因此,為了提高系統(tǒng)的處理性能,在本發(fā)明的最優(yōu)選實(shí)施例中,向每個(gè)客戶(hù)端節(jié)點(diǎn)提供對(duì)記錄上一次從所有者接收到的響應(yīng)的信息進(jìn)行維護(hù)的能力。具體地(在根據(jù)圖3對(duì)圖1的增加方面進(jìn)行描述),允許客戶(hù)端節(jié)點(diǎn)C緩存它在圖1的步驟114之后接收到一個(gè)NACK消息、或它自己在圖1的步驟126和在步驟134之后發(fā)出并確認(rèn)了一個(gè)UNLC/UNLD對(duì)的信息(308)。
如在圖1的步驟104處那樣接收到一個(gè)主機(jī)I/O請(qǐng)求(302)時(shí),現(xiàn)在,客戶(hù)端C使用修改的鎖控制算法,如下所述。
C首先檢查其已緩存的數(shù)據(jù)(303),以查看其是否具有對(duì)所作用的區(qū)域已被復(fù)制的肯定指示。如果具有,則它繼續(xù)I/O操作(304),而不向O發(fā)送任何協(xié)議消息。
如果緩沖存儲(chǔ)器不包含這樣的肯定指示,則使用上述未修改過(guò)的協(xié)議??蛻?hù)端C繼續(xù)執(zhí)行圖1的步驟106和后續(xù)步驟。在步驟(303)處在緩沖存儲(chǔ)器中發(fā)現(xiàn)這一信息,則NACK或UNLC/UNLD對(duì)的接收(306)使得要更新的信息的緩存(308)、以及隨后作用于該區(qū)域的I/O能夠繼續(xù)進(jìn)行(304),而無(wú)需發(fā)出任何協(xié)議消息。
術(shù)語(yǔ)“悲觀緩存”有時(shí)用來(lái)描述本發(fā)明的當(dāng)前最優(yōu)選實(shí)施例中所需的方案。這意味著客戶(hù)端不必知道最新的所有者的元數(shù)據(jù);客戶(hù)端可能認(rèn)為某個(gè)區(qū)域需要被復(fù)制,但被所有者(NACK)糾正以告知還未復(fù)制。但是,在所有者知道一個(gè)區(qū)域還未被復(fù)制時(shí),客戶(hù)端決不會(huì)認(rèn)為該區(qū)域已被復(fù)制。
當(dāng)前最優(yōu)選實(shí)施例的鎖緩存需要對(duì)客戶(hù)端進(jìn)行某些改變,以進(jìn)行正確的操作。首先,在每次啟動(dòng)快閃副本關(guān)系(300a)時(shí),必須初始化緩沖存儲(chǔ)器(301)(以指示所有的區(qū)域必須被復(fù)制)。這可以多種方式來(lái)驅(qū)動(dòng),但從所有者到客戶(hù)端的消息是最直接的實(shí)現(xiàn)。第二,每當(dāng)客戶(hù)端節(jié)點(diǎn)可能(或許是因?yàn)榫W(wǎng)絡(luò)干擾)丟失了一個(gè)指示緩沖存儲(chǔ)器已被重新初始化的消息(300b)時(shí),客戶(hù)端必須假設(shè)最壞的情況并重新初始化或重新生效其緩沖存儲(chǔ)器。
對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō)顯而易見(jiàn)的,進(jìn)一步的擴(kuò)展和修改是可能的。例如,已緩存的數(shù)據(jù)是可丟棄的,因?yàn)樗ǔ?蓮木哂形ㄒ徽嬲钚赂北镜乃姓吖?jié)點(diǎn)恢復(fù)。這樣,客戶(hù)端具有的為緩存信息而分配的元數(shù)據(jù)空間要少于存儲(chǔ)所有節(jié)點(diǎn)上保存的所有元數(shù)據(jù)所需的空間。然后,客戶(hù)端可依賴(lài)于對(duì)于它們所處理的I/O的訪問(wèn)位置,以確保它們繼續(xù)從對(duì)鎖消息信息的緩存中受益。
在進(jìn)一步擴(kuò)展的實(shí)施例中,NACK消息(還有GNT或UNLD消息)可返回比REQ/GNT/UNLC/UNLD消息所返回的涉及正被直接處理的區(qū)域的信息要多的信息。關(guān)于也被清除了的鄰近區(qū)域的信息可從所有者發(fā)送給客戶(hù)端。
應(yīng)該理解,上面描述的方法通常以運(yùn)行在一個(gè)或多個(gè)處理器(未示出)上的軟件來(lái)實(shí)現(xiàn),且該軟件可作為承載于任何諸如磁或光計(jì)算機(jī)盤(pán)的適當(dāng)數(shù)據(jù)載體(未示出)上的計(jì)算機(jī)程序組件來(lái)提供。用于數(shù)據(jù)傳輸?shù)男诺劳瑯涌砂ㄋ蟹N類(lèi)的存儲(chǔ)介質(zhì)以及信號(hào)承載介質(zhì),諸如有線或無(wú)線信號(hào)介質(zhì)。
本發(fā)明可適于實(shí)現(xiàn)為用于計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)程序產(chǎn)品。這種實(shí)現(xiàn)可包括一系列計(jì)算機(jī)可讀的指令,這些指令或者固定于有形介質(zhì)上,諸如磁盤(pán)、CD-ROM、ROM、或硬盤(pán)的計(jì)算機(jī)可讀介質(zhì),或可經(jīng)由調(diào)制解調(diào)器或其他接口設(shè)備通過(guò)有形介質(zhì)(包括但不限于光或模擬通信線路)或使用無(wú)線技術(shù)(包括但不限于微波、紅外線或其他傳輸技術(shù))的無(wú)形介質(zhì)傳輸?shù)接?jì)算機(jī)系統(tǒng)。該計(jì)算機(jī)可讀指令序列實(shí)現(xiàn)前述的全部或部分功能。
本領(lǐng)域的技術(shù)人員將理解,這種計(jì)算機(jī)可讀指令可以各種編程語(yǔ)言來(lái)編寫(xiě),以用于多種計(jì)算機(jī)體系結(jié)構(gòu)或操作系統(tǒng)。此外,可使用目前或未來(lái)的任何存儲(chǔ)技術(shù)來(lái)存儲(chǔ)這些指令,這些存儲(chǔ)技術(shù)包括但不限于半導(dǎo)體、磁或光技術(shù),或使用目前或未來(lái)的任何通信技術(shù)來(lái)傳輸這些指令,這些通信技術(shù)包括但不限于光、紅外線或微波技術(shù)。設(shè)想這種計(jì)算機(jī)程序產(chǎn)品作為附有印刷或電子文檔、預(yù)加載到計(jì)算機(jī)系統(tǒng)的例如系統(tǒng)ROM或固定盤(pán)的例如壓縮打包軟件的可移動(dòng)介質(zhì)來(lái)分布,或從服務(wù)器或電子公告板分布于例如互聯(lián)網(wǎng)或萬(wàn)維網(wǎng)的網(wǎng)絡(luò)之上。
應(yīng)該理解,對(duì)于以上描述的實(shí)施例的各種修改,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)都是顯而易見(jiàn)的。
權(quán)利要求
1.一種可工作于存儲(chǔ)控制器節(jié)點(diǎn)的網(wǎng)絡(luò)中的存儲(chǔ)控制裝置,其中該網(wǎng)絡(luò)具有可運(yùn)行以在I/O行為期間控制數(shù)據(jù)區(qū)域的鎖定的所有者存儲(chǔ)控制器節(jié)點(diǎn)及可運(yùn)行以傳遞至少一個(gè)消息,以請(qǐng)求鎖、準(zhǔn)許鎖、請(qǐng)求釋放鎖及信號(hào)通知鎖已被釋放的消息傳遞部件,該裝置包括I/O執(zhí)行部件,其可運(yùn)行以服從所述I/O執(zhí)行部件對(duì)任何所述所有者存儲(chǔ)控制器節(jié)點(diǎn)控制的鎖協(xié)議的遵從性,對(duì)所述所有者存儲(chǔ)控制器節(jié)點(diǎn)擁有的數(shù)據(jù)執(zhí)行I/O操作;其中所述數(shù)據(jù)區(qū)域的任何快閃副本映象以與所述數(shù)據(jù)區(qū)域一致的關(guān)系被維護(hù);以及其中所述I/O執(zhí)行部件可運(yùn)行以緩存前一個(gè)對(duì)于所述數(shù)據(jù)區(qū)域已與任何所述快閃副本映象處于一致關(guān)系中的肯定確認(rèn),并根據(jù)所述前一個(gè)肯定確認(rèn)執(zhí)行I/O行為。
2.權(quán)利要求1的裝置,其中所述I/O執(zhí)行部件可運(yùn)行以丟棄已緩存的肯定確認(rèn),并隨后請(qǐng)求重新鎖定。
3.權(quán)利要求2的裝置,其中通過(guò)有選擇地丟棄已緩存的肯定確認(rèn),來(lái)管理縮減的緩存存儲(chǔ)區(qū)域。
4.權(quán)利要求1的裝置,其中對(duì)于所述數(shù)據(jù)區(qū)域的肯定確認(rèn)進(jìn)一步包括任何對(duì)于鄰近于所述數(shù)據(jù)區(qū)域的其他數(shù)據(jù)區(qū)域的肯定確認(rèn)。
5.一種存儲(chǔ)控制器節(jié)點(diǎn)的網(wǎng)絡(luò)中的存儲(chǔ)控制方法,其中該網(wǎng)絡(luò)具有可運(yùn)行以在I/O行為期間控制數(shù)據(jù)區(qū)域的鎖定的所有者存儲(chǔ)控制器節(jié)點(diǎn)及可運(yùn)行以傳遞至少一個(gè)消息,以請(qǐng)求鎖、準(zhǔn)許鎖、請(qǐng)求釋放鎖及信號(hào)通知鎖已被釋放的消息傳遞部件,該方法包括步驟服從對(duì)任何所述所有者存儲(chǔ)控制器節(jié)點(diǎn)控制的鎖協(xié)議的遵從性,對(duì)所述所有者存儲(chǔ)控制器節(jié)點(diǎn)擁有的數(shù)據(jù)執(zhí)行I/O操作;以與所述數(shù)據(jù)區(qū)域一致的關(guān)系維護(hù)所述數(shù)據(jù)區(qū)域的快閃副本;以及緩存前一個(gè)對(duì)于所述數(shù)據(jù)區(qū)域已與任何所述快閃副本映象處于一致關(guān)系中的肯定確認(rèn),并根據(jù)所述前一個(gè)肯定確認(rèn)執(zhí)行I/O行為。
6.權(quán)利要求5的方法,進(jìn)一步包括丟棄已緩存的肯定確認(rèn),并隨后請(qǐng)求重新鎖定的步驟。
7權(quán)利要求6的方法,進(jìn)一步包括通過(guò)有選擇地丟棄已緩存的肯定確認(rèn),來(lái)管理縮減的緩存存儲(chǔ)區(qū)域。
8.權(quán)利要求5的方法,其中對(duì)于所述數(shù)據(jù)區(qū)域的肯定確認(rèn)進(jìn)一步包括任何對(duì)于鄰近于所述數(shù)據(jù)區(qū)域的其他數(shù)據(jù)區(qū)域的肯定確認(rèn)。
9.一種有形實(shí)現(xiàn)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序代碼手段,當(dāng)其被加載到計(jì)算機(jī)系統(tǒng)中并在其上執(zhí)行時(shí),使具有可運(yùn)行以在I/O行為期間控制數(shù)據(jù)區(qū)域的鎖定的所有者存儲(chǔ)控制器節(jié)點(diǎn)及可運(yùn)行以傳遞至少一個(gè)消息,以請(qǐng)求鎖、準(zhǔn)許鎖、請(qǐng)求釋放鎖及信號(hào)通知鎖已被釋放的消息傳遞部件的存儲(chǔ)控制器節(jié)點(diǎn)的網(wǎng)絡(luò)中的存儲(chǔ)控制裝置執(zhí)行步驟服從對(duì)任何所述所有者存儲(chǔ)控制器節(jié)點(diǎn)控制的鎖協(xié)議的遵從性,對(duì)所述所有者存儲(chǔ)控制器節(jié)點(diǎn)擁有的數(shù)據(jù)執(zhí)行I/O操作;以與所述數(shù)據(jù)區(qū)域一致的關(guān)系維護(hù)所述數(shù)據(jù)區(qū)域的快閃副本;以及緩存前一個(gè)對(duì)于所述數(shù)據(jù)區(qū)域已與任何所述快閃副本映象處于一致關(guān)系中的肯定確認(rèn),并根據(jù)所述前一個(gè)肯定確認(rèn)執(zhí)行I/O行為。
全文摘要
存儲(chǔ)控制裝置可工作于存儲(chǔ)控制器節(jié)點(diǎn)的網(wǎng)絡(luò)中,其中該網(wǎng)絡(luò)具有可運(yùn)行以在I/O行為期間控制數(shù)據(jù)區(qū)域的鎖定的所有者節(jié)點(diǎn)及可運(yùn)行以請(qǐng)求鎖、準(zhǔn)許鎖、請(qǐng)求釋放鎖和信號(hào)通知鎖已被釋放的消息傳遞部件。該裝置包括I/O執(zhí)行部件,其可運(yùn)行以服從所述I/O執(zhí)行部件對(duì)任何所述所有者存儲(chǔ)控制器節(jié)點(diǎn)控制的鎖協(xié)議的遵從性,對(duì)所述所有者存儲(chǔ)控制器節(jié)點(diǎn)擁有的數(shù)據(jù)執(zhí)行I/O操作。數(shù)據(jù)區(qū)域的任何快閃副本映象以與該數(shù)據(jù)區(qū)域一致的關(guān)系被維護(hù),且I/O執(zhí)行部件可運(yùn)行以緩存前一個(gè)對(duì)于數(shù)據(jù)區(qū)域已與任何所述快閃副本映象處于一致關(guān)系中的肯定確認(rèn),并根據(jù)所述前一個(gè)肯定確認(rèn)執(zhí)行I/O行為。
文檔編號(hào)G06F13/12GK1703891SQ03825468
公開(kāi)日2005年11月30日 申請(qǐng)日期2003年8月14日 優(yōu)先權(quán)日2002年11月29日
發(fā)明者C·F·富恩特, W·J·斯凱爾斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司