近年來在跨網(wǎng)絡(luò)動態(tài)共享硬件資源、軟件和信息存儲的虛擬化技術(shù)方面的改革已經(jīng)增加了計算的可靠性、可擴(kuò)縮性和成本效率。更具體地說,通過虛擬化的出現(xiàn)按需提供虛擬計算資源和存儲的能力已經(jīng)使處理資源和存儲的消費者能夠響應(yīng)于立即被察覺的計算和存儲需求而靈活地組織他們的計算和存儲成本。虛擬化允許客戶在需要的時候購買處理器周期和存儲,而不是在開通周期(provisioning cycle)中購買或租賃固定的硬件,所述開通周期由制造和部署硬件的延遲和成本決定。用戶能夠在相對瞬時的按需基礎(chǔ)上購買計算和存儲資源的使用權(quán),而不是取決于對未來需求的預(yù)測的準(zhǔn)確性來確定計算和存儲的可用性。
虛擬化計算環(huán)境經(jīng)常地由基于塊的存儲支持。這類基于塊的存儲提供能夠通過一系列標(biāo)準(zhǔn)化的存儲調(diào)用與各種計算虛擬化進(jìn)行交互的存儲系統(tǒng),這使得所述基于塊的存儲與其所支持的卷的結(jié)構(gòu)和功能細(xì)節(jié),并且與在所述基于塊的存儲向其提供存儲可用性的虛擬化上執(zhí)行的操作系統(tǒng)在功能上無關(guān)。然而,隨著網(wǎng)絡(luò)傳輸能力的增強(qiáng)、伴隨更大的對虛擬化資源的處理能力,對基于塊的存儲的I/O需求可增長。如果I/O需求超過基于塊的存儲服務(wù)請求的能力,那么虛擬化計算資源的基于塊的存儲的等待時間和/或性能耐久性變差,從而導(dǎo)致虛擬化計算性能損失。
附圖說明
圖1是示出根據(jù)一些實施方案的降低基于塊的存儲的數(shù)據(jù)卷耐久性狀態(tài)以及基于塊的存儲的有效數(shù)據(jù)卷復(fù)制的一系列框圖。
圖2是示出根據(jù)一些實施方案的實施包括基于塊的存儲服務(wù)的多個基于網(wǎng)絡(luò)的服務(wù)的提供商網(wǎng)絡(luò)的框圖,所述基于塊的存儲服務(wù)實施降低基于塊的存儲的數(shù)據(jù)卷耐久性狀態(tài)以及其有效數(shù)據(jù)卷復(fù)制。
圖3是示出根據(jù)一些實施方案的存儲節(jié)點的框圖,所述存儲節(jié)點實施降低數(shù)據(jù)卷耐久性狀態(tài)以及有效數(shù)據(jù)卷復(fù)制。
圖4是示出根據(jù)一些實施方案的在降低數(shù)據(jù)卷耐久性狀態(tài)時客戶端、主存儲節(jié)點、從存儲節(jié)點與控制平面之間的交互的順序圖。
圖5是示出根據(jù)一些實施方案的執(zhí)行從降低的耐久性狀態(tài)到提高的耐久性狀態(tài)的數(shù)據(jù)卷的有效復(fù)制操作的主存儲節(jié)點與從存儲節(jié)點之間的交互。
圖6是示出根據(jù)一些實施方案的用于降低基于塊的存儲的耐久性的各種方法和技術(shù)的高級流程圖。
圖7是示出根據(jù)一些實施方案的用于從降低的耐久性狀態(tài)提高數(shù)據(jù)卷耐久性狀態(tài)的各種方法和技術(shù)的高級流程圖。
圖8是示出根據(jù)一些實施方案的用于數(shù)據(jù)卷的有效復(fù)制的各種方法和技術(shù)的高級流程圖。
圖9是示出根據(jù)一些實施方案的用于識別有陳舊副本要更新的存儲節(jié)點的各種方法和技術(shù)的高級流程圖。
圖10是示出根據(jù)一些實施方案的用于確定可不執(zhí)行有效復(fù)制的各種方法和技術(shù)的高級流程圖。
圖11是示出根據(jù)一些實施方案的示例性計算系統(tǒng)的框圖。
雖然在本文中通過列舉若干實施方案和示意性附圖的方式描述了實施方案,但本領(lǐng)域的技術(shù)人員應(yīng)認(rèn)識到,實施方案并不限于所描述的實施方案或附圖。應(yīng)理解,附圖和對其的詳細(xì)描述并非意圖將實施方案限于所公開的特定形式,而是相反地,其意圖在于涵蓋落入由所附權(quán)利要求書限定的精神和范圍內(nèi)的所有修改、等效物以及替代方案。本文中使用的標(biāo)題都僅用于組織目的,并且并不意圖用于限制說明書或權(quán)利要求書的范圍。如貫穿本申請所使用的,詞語“可以”是在容許意義上(即,意指具有可能性)而非強(qiáng)制意義上(即,意指必須)使用的。類似地,詞語“包括(include/including/includes)”表示包括但不限于。
具體實施方式
本文所述的系統(tǒng)和方法可實施降低基于塊的存儲的數(shù)據(jù)卷耐久性狀態(tài)。在各種實施方案中,基于塊的存儲系統(tǒng)可通過以下方式來建立由基于塊的存儲系統(tǒng)維持的數(shù)據(jù)卷的耐久性狀態(tài):增加維持?jǐn)?shù)據(jù)卷的當(dāng)前版本的副本的數(shù)量。數(shù)據(jù)卷的耐久性狀態(tài)可作為維持?jǐn)?shù)據(jù)卷的基于塊的存儲系統(tǒng)的規(guī)則、要求或其他保證的部分來針對數(shù)據(jù)卷強(qiáng)制實施。在維持特定數(shù)據(jù)卷的副本的存儲節(jié)點之中進(jìn)行復(fù)制操作可確保:可根據(jù)數(shù)據(jù)卷的耐久性狀態(tài)在數(shù)據(jù)卷副本上作出對數(shù)據(jù)卷的改變,以便維持?jǐn)?shù)據(jù)卷的當(dāng)前版本。然而,在存儲節(jié)點之中進(jìn)行復(fù)制操作可能被中斷。網(wǎng)絡(luò)分區(qū)、高網(wǎng)絡(luò)利用率或系統(tǒng)故障是可能中斷數(shù)據(jù)卷的復(fù)制操作的許多不同事件中的一些。復(fù)制操作方面的這些中斷可導(dǎo)致維持?jǐn)?shù)據(jù)卷副本的存儲節(jié)點變得不可用于與其他存儲節(jié)點進(jìn)行復(fù)制,從而擾亂數(shù)據(jù)卷的耐久性狀態(tài)。因為數(shù)據(jù)卷的耐久性狀態(tài)沒有得到滿足,指向數(shù)據(jù)卷的寫入請求和其他輸入/輸出操作可能被阻斷。在可能無法維持基于塊的存儲系統(tǒng)中的數(shù)據(jù)卷的耐久性狀態(tài)的情況下,降低數(shù)據(jù)卷的耐久性狀態(tài)可允許指向數(shù)據(jù)卷的操作繼續(xù)而幾乎不受干擾。在一些實施方案中,數(shù)據(jù)卷的耐久性狀態(tài)的降低不會顯著威脅到數(shù)據(jù)卷的耐久性(例如,如果只是在有限時間內(nèi)這樣做的話)。
本文所述的系統(tǒng)和方法可實施有效數(shù)據(jù)卷復(fù)制。如以上所指出,在一些實施方案中,可在不同存儲節(jié)點處維持多個數(shù)據(jù)卷副本以建立數(shù)據(jù)卷的耐久性。如果數(shù)據(jù)卷不再在多個存儲節(jié)點處被維持(諸如在數(shù)據(jù)卷處于降低的耐久性狀態(tài)時可能發(fā)生),那么可維持對數(shù)據(jù)卷的部分的修改,以便指示在進(jìn)入降低的耐久性狀態(tài)之后對數(shù)據(jù)卷作出的改變。例如,如果數(shù)據(jù)卷在主存儲節(jié)點和從存儲節(jié)點處被維持,并且從存儲節(jié)點變得不可用于復(fù)制,那么主存儲節(jié)點可繼續(xù)處理數(shù)據(jù)卷的輸入/輸出(I/O)并且記錄數(shù)據(jù)卷的哪些部分已經(jīng)被改變。在稍后時間,主存儲節(jié)點可能夠通過在維持?jǐn)?shù)據(jù)卷的陳舊副本的另一個存儲節(jié)點(諸如先前的從存儲節(jié)點,或維持?jǐn)?shù)據(jù)卷副本的另一個存儲節(jié)點)處復(fù)制數(shù)據(jù)卷來提高數(shù)據(jù)卷的耐久性狀態(tài)??砂l(fā)送數(shù)據(jù)卷的已修改部分以更新陳舊副本,而不發(fā)送在陳舊副本中不過時的數(shù)據(jù)卷的部分,從而減少執(zhí)行復(fù)制的時間量和/或降低主存儲節(jié)點與新的從存儲節(jié)點之間的網(wǎng)絡(luò)流量的量。一旦陳舊副本是最新的,就可啟用主存儲節(jié)點與新的從存儲節(jié)點之間的數(shù)據(jù)卷的復(fù)制操作以用于未來的對數(shù)據(jù)卷的改變。
圖1是示出根據(jù)一些實施方案的降低基于塊的存儲的數(shù)據(jù)卷耐久性狀態(tài)以及有效數(shù)據(jù)卷復(fù)制的一系列框圖?;趬K的存儲服務(wù)100可實施主存儲節(jié)點110和從存儲節(jié)點120,以建立數(shù)據(jù)卷112的耐久性狀態(tài)。主存儲節(jié)點110和從存儲節(jié)點120可以是可實施永久性基于塊的存儲(例如,硬盤驅(qū)動器或固態(tài)驅(qū)動器)以分別存儲數(shù)據(jù)卷副本112和122的存儲服務(wù)器或其他計算系統(tǒng)(例如,下文參考圖11所述的計算系統(tǒng)2000)。在各種實施方案中,數(shù)據(jù)卷副本112和122可被劃分到用于復(fù)制操作的各自數(shù)據(jù)組塊114和124中,使得數(shù)據(jù)組塊114對應(yīng)于數(shù)據(jù)組塊124。
如場景102中所示,在主存儲節(jié)點處接收I/O請求132(例如,寫入請求),所述主存儲節(jié)點可完成I/O請求132。例如,可執(zhí)行在主存儲節(jié)點110處接收到的對修改數(shù)據(jù)卷112的部分的寫入請求。在一些實施方案中,然后可將I/O請求轉(zhuǎn)發(fā)134到從存儲節(jié)點120,以便復(fù)制對在主存儲節(jié)點110處的數(shù)據(jù)作出的任何改變。以此方式,數(shù)據(jù)卷112的當(dāng)前耐久性狀態(tài)可得到滿足。
如場景104中所示,從存儲節(jié)點120已經(jīng)變得不可用136。這可能是由于網(wǎng)絡(luò)條件(諸如網(wǎng)絡(luò)分區(qū)、高的網(wǎng)絡(luò)流量的量、系統(tǒng)故障)或在控制系統(tǒng)的控制下(例如,所述控制系統(tǒng)可指揮從存儲節(jié)點120中止維持卷副本122)。然而,仍在主存儲節(jié)點110處接收I/O請求132。替代阻斷寫入請求、使其失敗或以其他方式不完成寫入請求,可降低數(shù)據(jù)卷110的耐久性狀態(tài)。例如,在一些實施方案中,I/O請求132可在主存儲節(jié)點110處完成,并且向請求I/O 132的客戶端或其他系統(tǒng)、部件或裝置回復(fù)確認(rèn)。因此,I/O請求132(如在場景104中所接收的)可在主存儲節(jié)點110處完成,而無需在任何其他存儲節(jié)點(諸如從存儲節(jié)點120或基于塊的存儲服務(wù)100中的另一個存儲節(jié)點)處完成。在另一個實例中,在具有多于兩個存儲節(jié)點(例如,3個存儲節(jié)點)的情況下,降低這3個存儲節(jié)點處所維持的數(shù)據(jù)卷的耐久性狀態(tài)(諸如將耐久性狀態(tài)降低到2個存儲節(jié)點)可允許在將I/O請求確認(rèn)為完成之前,在更少數(shù)量的存儲節(jié)點處完成I/O請求。
在各種實施方案中,當(dāng)在降低的耐久性狀態(tài)下操作的同時,主存儲節(jié)點110可跟蹤對數(shù)據(jù)卷112作出的改變。例如,可(例如,在數(shù)據(jù)卷元數(shù)據(jù)中)對已修改的數(shù)據(jù)組塊116進(jìn)行標(biāo)記、索引、列表或以其他方式進(jìn)行識別。有時,可確定啟用數(shù)據(jù)卷的復(fù)制,以便根據(jù)數(shù)據(jù)卷112的提高的耐久性狀態(tài)來處理I/O請求。這種確定可基于若干因素來作出,這樣因素諸如存儲節(jié)點存儲數(shù)據(jù)卷的另一個副本的可用性;當(dāng)前網(wǎng)絡(luò)利用率、流量或其他網(wǎng)絡(luò)事件;或數(shù)據(jù)卷的耐久性狀態(tài)(例如,在1個存儲節(jié)點、2個存儲節(jié)點等上進(jìn)行復(fù)制)。為了提高耐久性狀態(tài),可識別維持?jǐn)?shù)據(jù)卷副本的另一個存儲節(jié)點。例如,控制系統(tǒng)可向主存儲節(jié)點110發(fā)送存儲節(jié)點識別符的列表,或主存儲節(jié)點110自身可保持維持?jǐn)?shù)據(jù)卷副本的先前存儲節(jié)點的列表。一旦識別了從存儲節(jié)點120(在所示實例中,所識別存儲節(jié)點120是維持?jǐn)?shù)據(jù)卷副本的最近的存儲節(jié)點,然而,可選擇同樣維持?jǐn)?shù)據(jù)的卷陳舊副本或根本未維持?jǐn)?shù)據(jù)卷副本的其他存儲節(jié)點),就可將已修改數(shù)據(jù)組塊116復(fù)制138到從存儲節(jié)點120以便存儲在卷副本122中,如在場景106中所示。無需復(fù)制未修改數(shù)據(jù)組塊。如在場景108處所示,當(dāng)再次向從存儲節(jié)點120發(fā)送140對復(fù)制的I/O請求132時,可啟用數(shù)據(jù)卷的復(fù)制,從而提高數(shù)據(jù)卷112的耐久性狀態(tài)以便在主存儲節(jié)點110和從存儲節(jié)點120兩者處被維持。
請注意,先前的描述并不意圖進(jìn)行限制,而僅作為降低基于塊的存儲系統(tǒng)的狀態(tài)以及其有效復(fù)制來提供。例如,存儲節(jié)點的數(shù)量或數(shù)據(jù)卷的數(shù)量可與圖1所示不同。可實施不同復(fù)制方案(例如,無主角色或從角色),并且可建立數(shù)據(jù)卷的不同耐久性狀態(tài)。在一些實施方案中,耐久性狀態(tài)的降低可在多于一個存儲節(jié)點變得不可用(例如,3個存儲節(jié)點到1個可用存儲節(jié)點)時發(fā)生。
本說明書從對可實施降低數(shù)據(jù)卷耐久性狀態(tài)以及有效數(shù)據(jù)卷復(fù)制的基于塊的存儲服務(wù)提供商的概述開始。然后論述基于塊的存儲服務(wù)提供商的各種實例,包括可用作實施基于塊的存儲服務(wù)提供商的部分的不同的部件/模塊或部件/模塊的布置。然后論述用于實施降低數(shù)據(jù)卷耐久性狀態(tài)以及有效數(shù)據(jù)卷復(fù)制的不同方法和技術(shù),所述不同方法和技術(shù)中的一些在隨附的流程圖中示出。最后,提供對可在其上實施各種部件、模塊、系統(tǒng)、裝置和/或節(jié)點的示例性計算系統(tǒng)的描述。在整個說明書中提供各種實例。
圖2是示出根據(jù)一些實施方案的實施包括基于塊的存儲服務(wù)的多個基于網(wǎng)絡(luò)的服務(wù)的提供商網(wǎng)絡(luò)的框圖,所述基于塊的存儲服務(wù)在快照操作期間實施優(yōu)化的寫入性能。提供商網(wǎng)絡(luò)200可由實體、諸如公司或公共部門組織機(jī)構(gòu)建立,以便向客戶端210提供可通過互聯(lián)網(wǎng)和/或其他網(wǎng)絡(luò)訪問的一種或多種服務(wù)(諸如各種類型的基于云的計算或存儲)。提供商網(wǎng)絡(luò)200可包括托管實施和分布由提供商網(wǎng)絡(luò)200提供的基礎(chǔ)設(shè)施和服務(wù)所需的各種資源池的許多數(shù)據(jù)中心,所述資源池諸如物理和/或虛擬化計算機(jī)服務(wù)器、存儲裝置、聯(lián)網(wǎng)設(shè)備等(例如,下文參考圖11描述的計算系統(tǒng)2000)的集合。在一些實施方案中,提供商網(wǎng)絡(luò)200可提供計算資源,諸如虛擬計算服務(wù)230、存儲服務(wù)(諸如基于塊的存儲服務(wù)220和其他存儲服務(wù)240(所述其他存儲服務(wù)240可包括各種存儲裝置類型、諸如基于對象/密鑰值的數(shù)據(jù)存儲區(qū),或各種類型的數(shù)據(jù)庫系統(tǒng)))和/或任何其他類型的基于網(wǎng)絡(luò)的服務(wù)250??蛻舳?10可通過網(wǎng)絡(luò)260訪問由提供商網(wǎng)絡(luò)200提供的這些各種服務(wù)。同樣地,基于網(wǎng)絡(luò)的服務(wù)本身可相互通信和/或相互利用來提供不同服務(wù)。例如,向客戶端210提供的、呈稱為“實例”(諸如虛擬或物理計算實例或存儲實例)的單元形式的計算資源可利用特定數(shù)據(jù)卷226,從而為計算實例提供虛擬塊存儲。
如以上所指出,虛擬計算服務(wù)230可向客戶端210提供各種計算實例。虛擬計算實例例如可包括具有指定的計算能力(所述計算能力可通過指示CPU的類型和數(shù)量、主存儲器大小等進(jìn)行指定)和指定的軟件棧(例如,特定版本的操作系統(tǒng),其進(jìn)而可在管理程序頂上運行)的一個或多個服務(wù)器。在不同的實施方案中,許多不同類型的計算裝置可單獨或組合使用以實施虛擬計算服務(wù)230的計算實例,所述不同類型的計算裝置包括通用或?qū)S糜嬎銠C(jī)服務(wù)器、存儲裝置、網(wǎng)絡(luò)裝置等。在一些實施方案中,實例客戶端210或其他任何其他用戶可被配置(和/或被授權(quán))來將網(wǎng)絡(luò)流量定向到計算實例。在各種實施方案中,計算實例可附接或映射到由基于塊的存儲服務(wù)220提供的一個或多個數(shù)據(jù)卷226,以便獲得永久性基于塊的存儲以用于執(zhí)行各種操作。
計算實例可操作或?qū)嵤┒喾N不同平臺,諸如應(yīng)用服務(wù)器實例、JavaTM虛擬機(jī)(JVM)、通用或?qū)S貌僮飨到y(tǒng)、支持各種解釋或編譯的編程語言(諸如Ruby、Perl、Python、C、C++等)的平臺或適于執(zhí)行客戶端應(yīng)用程序而無需例如要求客戶端210訪問實例的高性能計算平臺)。在一些實施方案中,計算實例基于期望的正常運行時間比而具有不同的類型或配置。特定計算實例的正常運行時間比可被定義為實例被激活的時間量與實例被預(yù)留的總時間量的比。在一些實施方式中,正常運行時間比也可稱為利用率。如果客戶端期望使用計算實例的時間是實例被預(yù)留的時間的相對小的一部分(例如,一年之久的預(yù)留的30%-35%),那么客戶端可決定將所述實例作為低正常運行時間比實例來預(yù)留,并且根據(jù)相關(guān)聯(lián)的定價策略按小時支付折扣使用費用。盡管在一些實施方案中可根據(jù)定價策略針對預(yù)留的整個持續(xù)時間按小時收取費用,而不管實際的使用小時數(shù),但是如果客戶端期望具有要求實例在大部分時間運轉(zhuǎn)的穩(wěn)態(tài)工作負(fù)載,那么客戶端可預(yù)留高正常運行時間比實例并且可能按小時支付甚至更低的使用費用。利用對應(yīng)的定價政策,在一些實施方案中也可支持中等正常運行時間比實例的選項,其中預(yù)付成本和每小時成本落在對應(yīng)的高正常運行時間比成本與低正常運行時間比成本之間。
計算實例配置還可包括具有一般用途或特殊用途的計算實例,所述一般用途或特殊用途諸如用于計算密集型應(yīng)用的計算工作負(fù)載(例如,高流量web應(yīng)用、廣告服務(wù)、批處理、視頻編碼、分布式分析、高能物理學(xué)、基因組分析和計算流體動力學(xué));圖形密集型工作負(fù)載(例如,游戲流式傳輸、3D應(yīng)用程序流式傳輸、服務(wù)器側(cè)圖形工作負(fù)載、渲染、金融建模和工程設(shè)計);存儲器密集型工作負(fù)載(例如,高性能數(shù)據(jù)庫、分布式存儲器高速緩存、內(nèi)存分析、基因組序列拼接(assembly)和分析);以及存儲優(yōu)化型工作負(fù)載(例如,數(shù)據(jù)倉儲系統(tǒng)和集群文件系統(tǒng))。計算實例的大小,諸如虛擬CPU核心、存儲器、高速緩存、存儲裝置的特定數(shù)量,以及任何其他性能特征。計算實例的配置還可包括它們在特定數(shù)據(jù)中心、可用區(qū)、地理位置等中的位置,以及(在預(yù)留計算實例的情況下)預(yù)留期長度。
在各種實施方案中,提供商網(wǎng)絡(luò)200還可實施用于執(zhí)行存儲操作的基于塊的存儲服務(wù)220。基于塊的存儲服務(wù)220是由多個獨立存儲節(jié)點224a、224b、224c至224n的池組成的存儲系統(tǒng)(例如,服務(wù)器塊數(shù)據(jù)存儲系統(tǒng)),所述多個獨立存儲節(jié)點224a、224b、224c至224n提供用于存儲一組或多組數(shù)據(jù)卷數(shù)據(jù)卷226a、226b、226c至226n的塊級存儲。數(shù)據(jù)卷226可映射到特定客戶端,從而作為一組連續(xù)的邏輯塊提供虛擬的基于塊的存儲(例如,硬盤存儲或其他永久性存儲)。在一些實施方案中,可將一個數(shù)據(jù)卷226分成多個數(shù)據(jù)組塊(包括一個或多個數(shù)據(jù)塊)以用于執(zhí)行其他塊存儲操作,諸如快照操作或復(fù)制操作。
數(shù)據(jù)卷226的卷快照可以是數(shù)據(jù)卷226的狀態(tài)的固定時間點表示。在一些實施方案中,卷快照242可遠(yuǎn)離維持?jǐn)?shù)據(jù)卷的存儲節(jié)點224存儲,諸如存儲在另一個存儲服務(wù)240中。可執(zhí)行快照操作以發(fā)送、拷貝給定數(shù)據(jù)卷的快照和/或以其他方式將所述快照保留在另一個存儲位置中,諸如其他存儲服務(wù)240中的遠(yuǎn)程快照數(shù)據(jù)存儲區(qū)。
基于塊的存儲服務(wù)220可實施基于塊的存儲服務(wù)控制平面222以輔助基于塊的存儲服務(wù)220的操作。在各種實施方案中,基于塊的存儲服務(wù)控制平面222輔助管理塊數(shù)據(jù)存儲對客戶端的可用性,所述客戶端諸如在下列各項上執(zhí)行的程序:由位于提供商網(wǎng)絡(luò)200內(nèi)的虛擬計算服務(wù)230和/或其他基于網(wǎng)絡(luò)的服務(wù)提供的計算實例,和/或任選的位于一個或多個其他數(shù)據(jù)中心內(nèi)的計算系統(tǒng)(未示出),或在提供商網(wǎng)絡(luò)200外部的通過網(wǎng)絡(luò)260可用的其他計算系統(tǒng)。響應(yīng)于塊數(shù)據(jù)交易指令,可通過提供商網(wǎng)絡(luò)200內(nèi)的內(nèi)部網(wǎng)絡(luò)或在外部通過網(wǎng)絡(luò)260提供對數(shù)據(jù)卷226的訪問。
基于塊的存儲服務(wù)控制平面222可提供與提供塊級存儲功能性有關(guān)的多種服務(wù),包括用戶賬戶的管理(例如,創(chuàng)建、刪除、計費、支付的收取等)。響應(yīng)于配置請求,基于塊的存儲服務(wù)控制平面222還可提供與數(shù)據(jù)卷226的創(chuàng)建、使用和刪除有關(guān)的服務(wù)?;趬K的存儲服務(wù)控制平面222還可提供與其他存儲服務(wù)240上的卷快照242的創(chuàng)建、使用和刪除有關(guān)的服務(wù)?;趬K的存儲服務(wù)控制平面222還可提供與以下內(nèi)容有關(guān)的服務(wù):對與數(shù)據(jù)卷226及那些卷的快照242的使用有關(guān)的性能和審計數(shù)據(jù)的收集和處理。
提供商網(wǎng)絡(luò)200還可實施另一個存儲服務(wù)240,如以上所指出。其他存儲服務(wù)240可提供與由基于塊的存儲服務(wù)220提供的存儲相同或不同類型的存儲。例如,在一些實施方案中,其他存儲服務(wù)240可提供基于對象的存儲服務(wù),所述基于對象的存儲服務(wù)可將數(shù)據(jù)作為數(shù)據(jù)對象來存儲和管理。例如,各個數(shù)據(jù)卷226的卷快照242可作為特定數(shù)據(jù)卷226的快照對象來存儲。除了其他存儲服務(wù)240之外,提供商網(wǎng)絡(luò)200可實施其他基于網(wǎng)絡(luò)的服務(wù)250,所述其他基于網(wǎng)絡(luò)的服務(wù)250可包括各種不同類型的分析系統(tǒng)、計算系統(tǒng)、存儲系統(tǒng)或其他基于網(wǎng)絡(luò)的系統(tǒng),所述系統(tǒng)允許客戶端210以及提供商網(wǎng)絡(luò)200的其他服務(wù)(例如,基于塊的存儲服務(wù)220、虛擬計算服務(wù)230和/或其他存儲服務(wù)240)執(zhí)行或請求各種任務(wù)。
客戶端210可包含可配置來向網(wǎng)絡(luò)提供商200提交請求的任何類型的客戶端。例如,給定客戶端210可包括合適版本的web瀏覽器,或可包括被配置來作為延伸執(zhí)行或在由web瀏覽器提供的執(zhí)行環(huán)境內(nèi)執(zhí)行的插件模塊或其他類型的代碼模塊??商娲兀蛻舳?10可包含應(yīng)用程序,諸如數(shù)據(jù)庫應(yīng)用程序(或其用戶接口)、媒體應(yīng)用程序、辦公應(yīng)用程序或可利用提供商網(wǎng)絡(luò)200中的計算實例、數(shù)據(jù)卷226或其他基于網(wǎng)絡(luò)的服務(wù)來執(zhí)行各種操作的任何其他應(yīng)用程序。在一些實施方案中,這種應(yīng)用程序可包括足夠的協(xié)議支持(例如,用于合適版本的超文本傳輸協(xié)議(HTTP)),以用于產(chǎn)生和處理基于網(wǎng)絡(luò)的服務(wù)請求,而不必實施用于所有類型的基于網(wǎng)絡(luò)的數(shù)據(jù)的完整瀏覽器支持。在一些實施方案中,客戶端210可被配置來根據(jù)表述性狀態(tài)轉(zhuǎn)移(REST)類型的基于網(wǎng)絡(luò)的服務(wù)架構(gòu)、基于文件或消息的基于網(wǎng)絡(luò)的服務(wù)架構(gòu)、或另一種合適的基于網(wǎng)絡(luò)的服務(wù)架構(gòu)來產(chǎn)生基于網(wǎng)絡(luò)的服務(wù)請求。在一些實施方案中,客戶端210(例如,計算客戶端)可被配置來提供對計算實例或數(shù)據(jù)卷226的訪問,其方式對在客戶端210上實施的利用由計算實例提供的計算資源或由數(shù)據(jù)卷226提供的塊存儲的應(yīng)用程序是透明的。
客戶端210可通過外部網(wǎng)絡(luò)260向提供商網(wǎng)絡(luò)200傳達(dá)基于網(wǎng)絡(luò)的服務(wù)請求。在各種實施方案中,外部網(wǎng)絡(luò)260可包含在客戶端210與提供商網(wǎng)絡(luò)200之間建立基于網(wǎng)絡(luò)的通信所必要的聯(lián)網(wǎng)硬件和協(xié)議的任何合適組合。例如,網(wǎng)絡(luò)260通??砂餐瑢嵤┗ヂ?lián)網(wǎng)的各種電信網(wǎng)絡(luò)和服務(wù)提供商。網(wǎng)絡(luò)260還可包括私用網(wǎng)絡(luò)(諸如局域網(wǎng)(LAN)或廣域網(wǎng)(WAN))以及公用無線網(wǎng)絡(luò)或私用無線網(wǎng)絡(luò)。例如,給定客戶端210和提供商網(wǎng)絡(luò)200兩者可分別被供應(yīng)在具有其自身內(nèi)部網(wǎng)絡(luò)的企業(yè)內(nèi)。在這種環(huán)境中,網(wǎng)絡(luò)260可包括在給定客戶端210與互聯(lián)網(wǎng)之間以及在互聯(lián)網(wǎng)與提供商網(wǎng)絡(luò)200之間建立聯(lián)網(wǎng)鏈接所必要的硬件(例如,調(diào)制解調(diào)器、路由器、交換器、負(fù)載均衡器、代理服務(wù)器等)和軟件(例如,協(xié)議堆棧、會計軟件、防火墻/安全軟件等)。應(yīng)注意,在一些實施方案中,客戶端210可使用私用網(wǎng)絡(luò)而不是公用互聯(lián)網(wǎng)來與提供商網(wǎng)絡(luò)200通信。
基于塊的存儲服務(wù)220可以多種不同方式管理和維持?jǐn)?shù)據(jù)卷226??稍诰S持?jǐn)?shù)據(jù)卷的副本的兩個或更多個存儲節(jié)點之中針對一些數(shù)據(jù)卷實施不同的耐久性方案。例如,可實施不同類型的鏡像和/或復(fù)制技術(shù)(例如,RAID 1),以便諸如通過消除數(shù)據(jù)卷的單一故障點而增加數(shù)據(jù)卷耐久性。為了提供對數(shù)據(jù)卷的訪問,存儲節(jié)點然后可在維持?jǐn)?shù)據(jù)卷副本的兩個或更多個存儲節(jié)點之中協(xié)調(diào)I/O請求,諸如寫入請求。對于在快照操作期間提供寫入優(yōu)化的存儲節(jié)點,可實施另外的配合。
圖3是示出根據(jù)一些實施方案的存儲節(jié)點的框圖,所述存儲節(jié)點實施降低數(shù)據(jù)卷耐久性狀態(tài)以及有效數(shù)據(jù)卷復(fù)制??蓪嵤┒鄠€存儲節(jié)點(諸如存儲節(jié)點310a、310b、310c至310n)以便提供基于塊的存儲服務(wù)。存儲節(jié)點310可以是一個或多個計算系統(tǒng)或裝置,諸如存儲服務(wù)器或其他計算系統(tǒng)(例如,下文參考圖11描述的計算系統(tǒng)2000)。每一個存儲節(jié)點310可維持?jǐn)?shù)據(jù)卷的各自副本。例如,存儲節(jié)點310a維持?jǐn)?shù)據(jù)卷312a、312b、312c、312d至312n,存儲節(jié)點310b維持?jǐn)?shù)據(jù)卷314a、314b、314c、314d至314n,存儲節(jié)點310c維持?jǐn)?shù)據(jù)卷316a、316b、316c、316d至316n,一直到維持?jǐn)?shù)據(jù)卷318a、318b、318c、318d至318n的存儲節(jié)點310n。雖然存儲節(jié)點310被描繪為具有相等數(shù)量的數(shù)據(jù)卷,但是存儲節(jié)點上所維持的數(shù)據(jù)卷的數(shù)量從存儲節(jié)點310到其他存儲節(jié)點310可不同。在一些實施方案中,一些數(shù)據(jù)卷在大小上不同于其他數(shù)據(jù)卷。存儲節(jié)點310還可提供多租戶存儲。例如,在一些實施方案中,存儲節(jié)點310c處所維持的數(shù)據(jù)卷316a可以是為基于塊的存儲服務(wù)220中的一個賬戶維持的,而同樣維持在存儲節(jié)點310c處的數(shù)據(jù)卷316b可以是為一個不同賬戶維持的。存儲節(jié)點310可將其各自數(shù)據(jù)卷存留在一個或多個基于塊的存儲裝置(例如,硬盤驅(qū)動器、固態(tài)驅(qū)動器等)中,所述一個或多個基于塊的存儲裝置可直接附接到實施各自存儲節(jié)點的計算系統(tǒng)或裝置。
基于塊的存儲服務(wù)220可以多種不同方式管理和維持?jǐn)?shù)據(jù)卷。可在維持?jǐn)?shù)據(jù)卷的相同副本的兩個或更多個存儲節(jié)點之中針對一些數(shù)據(jù)卷實施建立數(shù)據(jù)卷的耐久性狀態(tài)的不同的耐久性方案。例如,可實施不同類型的鏡像和/或復(fù)制技術(shù)(例如,RAID 1),以便諸如通過消除數(shù)據(jù)卷的單一故障點而增加數(shù)據(jù)卷耐久性。為了提供對數(shù)據(jù)卷的訪問,存儲節(jié)點然后可在維持?jǐn)?shù)據(jù)卷副本的兩個或更多個存儲節(jié)點之中協(xié)調(diào)I/O請求,諸如寫入請求。例如,對于給定數(shù)據(jù)卷312a,存儲節(jié)點310a可充當(dāng)主存儲節(jié)點。在各種實施方案中,主存儲節(jié)點接收并處理來自客戶端的對數(shù)據(jù)卷的請求(例如,I/O請求)。因此,存儲節(jié)點310a然后可將對數(shù)據(jù)卷312a的I/O請求(諸如寫入請求)或任何其他變化或修改的復(fù)本協(xié)調(diào)到充當(dāng)從存儲節(jié)點的一個或多個其他存儲節(jié)點。例如,存儲節(jié)點310c可維持?jǐn)?shù)據(jù)卷316d,所述數(shù)據(jù)卷316d是數(shù)據(jù)卷312a的副本。因此,當(dāng)在存儲節(jié)點310a處接收到對數(shù)據(jù)卷312a的寫入請求時,當(dāng)在存儲節(jié)點310處完成寫入請求之前,存儲節(jié)點310a可將寫入請求轉(zhuǎn)發(fā)到存儲節(jié)點310c并等待,直到存儲節(jié)點310c將寫入請求確認(rèn)為完成為止。主存儲節(jié)點可引導(dǎo)針對數(shù)據(jù)卷的其他操作,像快照操作或其他I/O操作(例如,服務(wù)讀取請求)。
請注意,在一些實施方案中,可根據(jù)數(shù)據(jù)卷分配主存儲節(jié)點和從存儲節(jié)點的角色。例如,對于存儲節(jié)點310a處所維持的數(shù)據(jù)卷312a,存儲節(jié)點310a可充當(dāng)主存儲節(jié)點。而對于存儲節(jié)點310a處所維持的另一個數(shù)據(jù)卷(諸如數(shù)據(jù)卷312b),存儲節(jié)點310a可充當(dāng)從存儲節(jié)點。
在各種實施方案中,存儲節(jié)點310可各自實施各自頁面高速緩存。頁面高速緩存可以是系統(tǒng)存儲器或其他存儲器裝置的部分,所述部分存儲來自各自存儲節(jié)點處所維持的數(shù)據(jù)卷312之一的頁面或其他數(shù)據(jù)分組。替代直接寫入到維持?jǐn)?shù)據(jù)卷的被請求數(shù)據(jù)的部分的基于塊的存儲裝置或從所述基于塊的存儲裝置讀取,可更新頁面高速緩存。例如,如果接收到對數(shù)據(jù)卷的一部分的讀取請求,那么首先可以確定數(shù)據(jù)是否駐留在頁面高速緩存中。如果是,那么可從頁面高速緩存讀取所述數(shù)據(jù)。如果不是,那么可從維持?jǐn)?shù)據(jù)卷的被請求數(shù)據(jù)的部分的各自基于塊的存儲裝置檢索所述數(shù)據(jù)并且將所述數(shù)據(jù)寫入到頁面高速緩存中以供將來使用。類似地,寫入請求可指向頁面高速緩存。對于所接收寫入請求,可根據(jù)寫入請求更新對應(yīng)于將要寫入的數(shù)據(jù)(例如,已經(jīng)維持在頁面高速緩存中的數(shù)據(jù)卷的一部分)的頁面高速緩存條目。類似地,如果將要由寫入請求修改的數(shù)據(jù)不在頁面高速緩存中,那么可首先從存留所述數(shù)據(jù)的基于塊的存儲裝置獲得所述數(shù)據(jù),將所述數(shù)據(jù)寫入到頁面高速緩存中的新的頁面高速緩存條目中,然后根據(jù)所述寫入請求進(jìn)行更新。頁面高速緩存技術(shù)是本領(lǐng)域的普通技術(shù)人員所熟知的,并且因此,先前實例并不意圖對其他頁面高速緩存技術(shù)進(jìn)行限制。
在各種實施方案中,存儲節(jié)點310可實施各自的頁面高速緩存日志,諸如頁面高速緩存日志320a、320b、320c至320n。頁面高速緩存日志可存儲描述對各自頁面高速緩存的更新的日志記錄,諸如對頁面高速緩存330中所維持的數(shù)據(jù)進(jìn)行修改的寫入請求。因此,在引起頁面高速緩存330中的數(shù)據(jù)丟失的系統(tǒng)故障或其他故障的情況下,可使用頁面高速緩存日志320中的日志記錄來將頁面高速緩存復(fù)原到故障之前的狀態(tài)。在一些實施方案中,可根據(jù)對頁面高速緩存330作出更新的次序順序地存儲日志記錄。例如,接收、執(zhí)行寫入請求1A,并且存儲對應(yīng)的日志記錄1A。然后,接收、執(zhí)行寫入請求1B,并且存儲對應(yīng)的日志記錄1B,以此類推。通過順序地存儲日志記錄,可以按存儲日志記錄的次序來重放或重新應(yīng)用所述日志記錄,以生成頁面高速緩存在特定時間點的狀態(tài)。
另外,日志記錄的順序存儲可降低用于存儲日志記錄的寫入等待時間。頁面高速緩存日志320可被實施為永久性存儲裝置(例如,硬盤驅(qū)動器、固態(tài)驅(qū)動器(SSD)或其他基于塊的存儲裝置)。對這類永久性存儲裝置進(jìn)行順序?qū)懭胪ǔ1入S機(jī)存取寫入快。在各種實施方案中,頁面高速緩存日志320可在用于存儲節(jié)點的專用塊存儲裝置上實施。在一些實施方案中,存留頁面高速緩存日志的永久性存儲裝置可與存儲節(jié)點處存留數(shù)據(jù)卷的基于塊的存儲裝置分開。
存儲節(jié)點310可實施各自的I/O管理器,諸如I/O管理器340a、340b、340c至340n。I/O管理器340可處置指向特定存儲節(jié)點處所維持的數(shù)據(jù)卷的I/O請求。因此,例如,I/O管理器340b可處理并處置對存儲節(jié)點310b處的卷314b的寫入請求。I/O管理器340可被配置來根據(jù)基于塊的存儲服務(wù)應(yīng)用程序編程接口(API)和/或其他通信協(xié)議(諸如互聯(lián)網(wǎng)小型計算機(jī)系統(tǒng)接口(iSCSI))來處理I/O請求。在一些實施方案中,I/O管理器340可實施各自的日志管理部件,諸如日志管理342a、342b、342c至342n。日志管理部件可至少部分地基于日志記錄來執(zhí)行各種日志管理功能,諸如修剪日志記錄和/或執(zhí)行頁面高速緩存恢復(fù)。
請注意,圖3提供可在基于塊的存儲服務(wù)中實施的存儲節(jié)點的實例。在一些實施方案中,也可實施其他布置或配置的存儲節(jié)點,諸如并不實施頁面高速緩存寫入日志的存儲節(jié)點
圖4是示出根據(jù)一些實施方案的在降低數(shù)據(jù)卷耐久性狀態(tài)時客戶端、主存儲節(jié)點、從存儲節(jié)點與控制平面之間的交互的順序圖??蛻舳?10可向主存儲節(jié)點420發(fā)送對特定數(shù)據(jù)卷的I/O請求461(例如,寫入請求),存儲節(jié)點420是所述數(shù)據(jù)卷的主存儲節(jié)點。作為滿足數(shù)據(jù)卷的當(dāng)前耐久性狀態(tài)的部分,主存儲節(jié)點420可嘗試與從存儲節(jié)點430復(fù)制I/O請求,但最終可能失敗463。如以上所指出,各種網(wǎng)絡(luò)分區(qū)、高網(wǎng)絡(luò)利用率、系統(tǒng)故障或任何其他類型的事件可能中斷數(shù)據(jù)卷的復(fù)制操作。例如,在其中在主存儲節(jié)點420與從存儲節(jié)點430之間出現(xiàn)網(wǎng)絡(luò)分區(qū)的情景中,主存儲節(jié)點420的失敗的I/O請求463可能永遠(yuǎn)不能到達(dá)從存儲節(jié)點430。響應(yīng)于確定從存儲節(jié)點430不可用于復(fù)制,主存儲節(jié)點可嘗試通過向存儲服務(wù)控制平面440請求對禁用數(shù)據(jù)卷的復(fù)制的授權(quán)465來進(jìn)入降低的數(shù)據(jù)卷耐久性狀態(tài)。存儲服務(wù)控制平面440可基于各種因素(諸如當(dāng)前網(wǎng)絡(luò)狀況(例如,是否存在網(wǎng)絡(luò)分區(qū)、整體故障(mass failure)、大的網(wǎng)絡(luò)流量的量)來允許主存儲節(jié)點420在降低的耐久性下操作并禁用復(fù)制467。一旦數(shù)據(jù)卷的降低的耐久性狀態(tài)得到授權(quán),主存儲節(jié)點420就可被授權(quán)來確認(rèn)特定數(shù)據(jù)卷的I/O 469。
在某一時刻,主存儲節(jié)點420(或控制平面440)可能希望恢復(fù)數(shù)據(jù)卷的耐久性狀態(tài)。例如,主存儲節(jié)點420可在嘗試提高數(shù)據(jù)卷的耐久性狀態(tài)之前等待,直到一定量的時間已經(jīng)流逝或接收到一定數(shù)量的對數(shù)據(jù)卷的修改為止。來自主存儲節(jié)點420的對授權(quán)啟用數(shù)據(jù)卷的復(fù)制471的請求可被發(fā)送到存儲服務(wù)控制平面440?;陬愃朴谝陨嫌懻摰哪切┑囊蛩?,存儲服務(wù)控制平面可向主存儲節(jié)點420發(fā)送候選從存儲節(jié)點的列表473。候選存儲節(jié)點的列表可包括維持?jǐn)?shù)據(jù)卷的非當(dāng)前陳舊副本的存儲節(jié)點,和/或并不維持?jǐn)?shù)據(jù)卷副本但具有存儲數(shù)據(jù)卷副本的能力的存儲節(jié)點。在一些實施方案中,主存儲節(jié)點420可能不需要獲得候選存儲節(jié)點的列表,而是可在本地維持候選從存儲節(jié)點(例如,主存儲節(jié)點420先前與其復(fù)制數(shù)據(jù)卷的存儲節(jié)點)的列表。主存儲節(jié)點420可從候選存儲節(jié)點的列表中選擇從節(jié)點(諸如新的從存儲節(jié)點450)以與450復(fù)制數(shù)據(jù)卷。主存儲節(jié)點可發(fā)送對在從存儲節(jié)點450上創(chuàng)建數(shù)據(jù)卷的新的卷副本475的請求。從存儲節(jié)點450可確認(rèn)所創(chuàng)建卷副本477。主存儲節(jié)點420然后可開始一個或多個復(fù)制操作來如同主存儲節(jié)點420處所維持那樣復(fù)制卷。每一個復(fù)制操作可將數(shù)據(jù)卷的部分發(fā)送給新的從存儲節(jié)點450來進(jìn)行存儲。一旦復(fù)制完成,主存儲節(jié)點420可再次啟用數(shù)據(jù)卷的復(fù)制481,從而根據(jù)數(shù)據(jù)卷的提高的耐久性狀態(tài)來處理I/O請求。例如,在主存儲節(jié)點420處接收的I/O請求483現(xiàn)在被發(fā)送485到新的從存儲節(jié)點450。
在一些實施方案中,當(dāng)從數(shù)據(jù)卷的降低的耐久性狀態(tài)轉(zhuǎn)變到提高的耐久性狀態(tài)時,可實施各種有效數(shù)據(jù)卷復(fù)制技術(shù)。圖5是示出根據(jù)一些實施方案的執(zhí)行從降低的耐久性狀態(tài)到提高的耐久性狀態(tài)的有效數(shù)據(jù)卷復(fù)制操作的主存儲節(jié)點與從存儲節(jié)點之間的交互。客戶端510可向主存儲節(jié)點520發(fā)送I/O請求551。如以上參考圖4所討論的,I/O請求可能由于從存儲節(jié)點530不可用而失敗。主存儲節(jié)點520可請求對禁用復(fù)制的授權(quán)555并進(jìn)入降低的數(shù)據(jù)卷耐久性狀態(tài)?;诟鞣N因素(例如,是否存在網(wǎng)絡(luò)分區(qū)、整體故障、大的網(wǎng)絡(luò)流量的量),存儲服務(wù)控制平面540可授權(quán)禁用復(fù)制557,從而允許主存儲節(jié)點再次完成并確認(rèn)I/O 559。
在某一時間點,主存儲節(jié)點520可能希望提高數(shù)據(jù)卷的耐久性狀態(tài),并向存儲服務(wù)控制平面540請求對啟用復(fù)制的授權(quán)561。同樣如上所述,基于各種因素,存儲服務(wù)控制平面可授權(quán)復(fù)制并向主存儲節(jié)點發(fā)送候選從節(jié)點563。候選從節(jié)點563可包括維持?jǐn)?shù)據(jù)卷的陳舊(即,過時)副本的存儲節(jié)點。陳舊副本可能是由于復(fù)制對數(shù)據(jù)卷的改變的候選存儲節(jié)點與主存儲節(jié)點520之間的先前配對造成。使用候選存儲節(jié)點的列表,主存儲節(jié)點520可被配置來選擇從存儲節(jié)點,諸如通過識別要復(fù)制的數(shù)據(jù)量最小的從存儲節(jié)點。例如,在一些實施方案中,主存儲節(jié)點520可向預(yù)期的從存儲節(jié)點發(fā)送指示卷565中的數(shù)據(jù)組塊的版本號的卷元數(shù)據(jù)。從存儲節(jié)點可通過將所述卷元數(shù)據(jù)與其陳舊副本的卷元數(shù)據(jù)進(jìn)行比較來對所述卷元數(shù)據(jù)進(jìn)行評估,并且識別它自己的副本中的需要復(fù)制的數(shù)據(jù)組塊。
可向主存儲節(jié)點567指示出所識別數(shù)據(jù)組塊。如果存在多于一個具有陳舊副本的從存儲節(jié)點,可將所需數(shù)據(jù)組塊的數(shù)量最小(或數(shù)量的非陳舊數(shù)據(jù)組塊的數(shù)量最大)的從存儲節(jié)點選擇為新的從存儲節(jié)點。在一些實施方案中,這種選擇可結(jié)合其他因素作出,所述因素諸如指向候選從存儲節(jié)點的網(wǎng)絡(luò)流量的當(dāng)前量和/或從存儲節(jié)點的工作負(fù)荷。在圖5中,選擇了從存儲節(jié)點530(作為最近的從存儲節(jié)點,它與主存儲節(jié)點上的數(shù)據(jù)卷具有最少差異)。然后將所識別數(shù)據(jù)組塊復(fù)制569到從存儲節(jié)點,以便使主存儲節(jié)點和從存儲節(jié)點520處所維持的數(shù)據(jù)卷副本同步。以此方式,在各種實施方案中,無需更新數(shù)據(jù)卷的陳舊副本中的數(shù)據(jù)組塊。然后可啟用571數(shù)據(jù)卷的復(fù)制,以便根據(jù)提高的數(shù)據(jù)卷耐久性狀態(tài)來處理請求。因此,作為復(fù)制數(shù)據(jù)卷的部分,可將發(fā)送到主存儲節(jié)點520的I/O請求473發(fā)送575到從存儲節(jié)點530,從而恢復(fù)數(shù)據(jù)卷的耐久性狀態(tài)。
請注意,在一些實施方案中,可根據(jù)數(shù)據(jù)卷分配主存儲節(jié)點和從存儲節(jié)點的角色。例如,對于存儲節(jié)點處所維持的一個數(shù)據(jù)卷,所述存儲節(jié)點可用作主存儲節(jié)點。對于同一存儲節(jié)點處所維持的另一個數(shù)據(jù)卷,所述存儲節(jié)點可用作從存儲節(jié)點。
已經(jīng)關(guān)于基于塊的存儲服務(wù)給出上文參考圖2-5討論的降低基于塊的存儲的數(shù)據(jù)卷耐久性狀態(tài)以及基于塊的存儲的有效數(shù)據(jù)卷復(fù)制的實例。各種其他類型或配置的基于塊的存儲可實施這些技術(shù)。例如,不同配置的存儲節(jié)點還可實施與以上討論的主從模型不同的可建立數(shù)據(jù)卷的耐久性狀態(tài)的各種數(shù)量的復(fù)制、鏡像或其他耐久性技術(shù)。圖6是示出根據(jù)一些實施方案的用于降低基于塊的存儲的數(shù)據(jù)卷耐久性的各種方法和技術(shù)的高級流程圖。這些技術(shù)可使用如上文參考圖2-5描述的一個或多個存儲節(jié)點(或基于塊的存儲中維持?jǐn)?shù)據(jù)卷的其他系統(tǒng)部件)來實施。
在一些實施方案中,存儲節(jié)點群可維持基于塊的存儲中的數(shù)據(jù)卷的副本。存儲節(jié)點群可通過以下方式來建立數(shù)據(jù)卷的耐久性狀態(tài):在這個群中的每一個存儲節(jié)點處完成所接收的對數(shù)據(jù)卷的寫入請求,之后將所接收的對數(shù)據(jù)卷的寫入請求確認(rèn)為完成,以便執(zhí)行數(shù)據(jù)卷的復(fù)制。在一些實施方案中,這些存儲節(jié)點可稱為對等存儲節(jié)點。如在610處所指示,可確定維持?jǐn)?shù)據(jù)卷副本的存儲節(jié)點群中的存儲節(jié)點不可用于復(fù)制。例如,如果3個存儲節(jié)點維持?jǐn)?shù)據(jù)卷副本并且這3個存儲節(jié)點中的1個變得不可用的話。存儲節(jié)點可由于許多原因而變得不可用于復(fù)制,所述原因包括但不限于:網(wǎng)絡(luò)分區(qū)、高網(wǎng)絡(luò)利用率、系統(tǒng)故障或任何其他類型的事件。在一些實施方案中,可在存儲節(jié)點群中的另一個存儲節(jié)點處確定:維持所述存儲節(jié)點處所維持的數(shù)據(jù)卷的副本的對等存儲節(jié)點不可用于復(fù)制寫入請求。例如,發(fā)送到所述對等存儲節(jié)點的寫入請求可能永遠(yuǎn)得不到確認(rèn),向?qū)Φ却鎯?jié)點指示健康或狀況的各種心跳或其他gossip協(xié)議可指示:存儲節(jié)點不可用。在一些實施方案中,控制系統(tǒng)(諸如圖2中的基于塊的存儲服務(wù)控制平面222)可向其他存儲節(jié)點發(fā)送對等存儲節(jié)點不可用的指示。
無論如何確定,作為響應(yīng),可根據(jù)數(shù)據(jù)卷的降低的耐久性狀態(tài)來執(zhí)行對隨后接收的對數(shù)據(jù)卷的寫入請求的處理,使得數(shù)據(jù)卷的復(fù)制針對不可用存儲節(jié)點是禁用的,如在620處所指示。耐久性狀態(tài)的改變可記錄或指示在所維持的關(guān)于數(shù)據(jù)卷的信息中,諸如可維持在維持?jǐn)?shù)據(jù)卷的存儲節(jié)點群中的存儲節(jié)點處。在一些實施方案中,控制系統(tǒng)(諸如圖2中的基于塊的存儲服務(wù)控制平面222)可更新指示特定數(shù)據(jù)卷正在根據(jù)降低的耐久性狀態(tài)進(jìn)行操作的基于塊的存儲系統(tǒng)信息。
當(dāng)接收到對具有降低的耐久性狀態(tài)的數(shù)據(jù)卷的隨后寫入請求時,在可用于復(fù)制的存儲節(jié)點處完成寫入請求,如在630處所指示。因此,寫入請求可在與降低耐久性狀態(tài)之前相比數(shù)量較少的存儲節(jié)點處完成。例如,如果維持?jǐn)?shù)據(jù)卷副本的5個存儲節(jié)點中的1個存儲節(jié)點不可用于復(fù)制,并且數(shù)據(jù)卷的耐久性狀態(tài)被降低,那么這5個存儲節(jié)點中的可用于復(fù)制的4個可完成寫入請求(這少于將完成寫入請求的5個存儲節(jié)點)。在可僅包括主存儲節(jié)點和從存儲節(jié)點的一些實施方案(諸如以上參考圖4所述的那些)中,可在單個存儲節(jié)點成完成對數(shù)據(jù)卷的寫入請求,而無需在基于塊的存儲系統(tǒng)中的任何其他存儲節(jié)點處完成。實際上,在各種實施方案中,寫入請求僅在接收寫入請求的存儲節(jié)點處完成。在這種情景下,其他存儲節(jié)點可不復(fù)制或完成寫入請求。然后可向客戶端確認(rèn)根據(jù)降低的耐久性狀態(tài)完成的寫入請求,如在640處所指示。
圖7是示出根據(jù)一些實施方案的用于復(fù)原數(shù)據(jù)卷的耐久性狀態(tài)的各種方法和技術(shù)的高級流程圖。如在710處所指示,可確定存儲節(jié)點處所維持的數(shù)據(jù)卷的復(fù)制將針對另一個存儲節(jié)點啟用,以便根據(jù)提高的耐久性狀態(tài)處理寫入請求。在各種實施方案中,這種確定可由控制系統(tǒng)(諸如圖2中的基于塊的存儲服務(wù)控制平面222)或由存儲節(jié)點自身來作出。
各種不同因素可確定何時通過啟用復(fù)制來提高數(shù)據(jù)卷的耐久性狀態(tài)。在一些實施方案中,可供用作對等存儲節(jié)點(主或從)的存儲節(jié)點的數(shù)量可改變。例如,如果可用存儲節(jié)點的數(shù)量增加,那么因為存儲數(shù)據(jù)卷的另一個副本的能力可提高,所以可啟用數(shù)據(jù)卷的復(fù)制??煽紤]另一個因素,即整個基于塊的存儲系統(tǒng)(不論是否是特定位置諸如數(shù)據(jù)中心中的物理基礎(chǔ)設(shè)施)的狀況。還可考慮基于塊的存儲系統(tǒng)中在所述基于塊的存儲系統(tǒng)中的存儲節(jié)點之中進(jìn)行的復(fù)制操作的數(shù)量。在一些實施方案中,還可考慮數(shù)據(jù)卷的耐久性狀態(tài)。例如,如果數(shù)據(jù)卷被存檔或備份到除基于塊的存儲系統(tǒng)以外的另一個數(shù)據(jù)存儲區(qū)的話,或不論是否是特定硬件優(yōu)化,諸如以上參考圖3討論的頁面高速緩存寫入存錄。在一些實施方案中,另一個因素可以是與其執(zhí)行復(fù)制的希望的或優(yōu)選的對等存儲節(jié)點的可用性。例如,優(yōu)選的對等體當(dāng)前可能正在執(zhí)行多個復(fù)制操作并且不能夠在那個時候開始數(shù)據(jù)卷的復(fù)制。在各種實施方案中,這些各種因素中的一個、兩個或全部可用于評估何時啟用復(fù)制。在一些實施方案中,在應(yīng)當(dāng)針對一個數(shù)據(jù)卷而不針對另一個數(shù)據(jù)卷啟用復(fù)制時,可使用優(yōu)先化方案或排序來對每一個因素進(jìn)行加權(quán)、打斷其間的平衡。
如在720處所指示,在一些實施方案,可識別另一個存儲節(jié)點來維持?jǐn)?shù)據(jù)卷副本。在一些實施方案中,這個存儲節(jié)點可以是維持?jǐn)?shù)據(jù)卷的陳舊副本的先前對等體。在一些實施方案中,所識別存儲節(jié)點可以是未維持?jǐn)?shù)據(jù)卷副本的新的存儲節(jié)點。一旦被識別,就可執(zhí)行一個或多個復(fù)制操作來更新存儲在所述另一個存儲節(jié)點中的數(shù)據(jù)卷副本。復(fù)制操作可包括向所述另一個存儲節(jié)點發(fā)送所述存儲節(jié)點處所維持的數(shù)據(jù)卷的一些或全部數(shù)據(jù)組塊,所述一些或全部數(shù)據(jù)組塊將要被寫入到所述另一個存儲節(jié)點處所維持的數(shù)據(jù)卷副本中。圖8在以下更詳細(xì)地描述有效復(fù)制技術(shù),諸如用于發(fā)送在數(shù)據(jù)卷進(jìn)入降低的耐久性狀態(tài)之后已經(jīng)被修改的數(shù)據(jù)組塊的技術(shù)。一旦完成復(fù)制操作,并且使所述存儲節(jié)點和所述另一個存儲節(jié)點處所維持的數(shù)據(jù)卷同步,就可在所述存儲節(jié)點處啟用復(fù)制,使得直到寫入在所述存儲節(jié)點和所述另一個存儲節(jié)點兩者處完成,才將寫入請求確認(rèn)為完成,如在740處所指示。然后可在寫入請求在所述存儲節(jié)點和現(xiàn)在維持?jǐn)?shù)據(jù)卷的當(dāng)前版本的所述另一個存儲節(jié)點兩者處完成時,確認(rèn)寫入請求。如以上所討論,在一些實施方案中,多個存儲節(jié)點可維持?jǐn)?shù)據(jù)卷副本,使得降低的存儲節(jié)點耐久性狀態(tài)(例如,4個存儲節(jié)點)得以提高以添加另外的存儲節(jié)點,如在720、730和740處所指示(例如,提高到5個存儲節(jié)點)。當(dāng)接收到對復(fù)制針對所述另一個存儲節(jié)點被啟用的數(shù)據(jù)卷的寫入請求時,那么可在所述多個存儲節(jié)點和所述另一個存儲節(jié)點處完成寫入請求,之后將寫入請求確認(rèn)為完成(例如,在全部的5個存儲節(jié)點處完成,之后進(jìn)行確認(rèn))。
圖8是示出根據(jù)一些實施方案的用于有效數(shù)據(jù)卷復(fù)制(諸如在提高數(shù)據(jù)卷的耐久性狀態(tài)時發(fā)生)的各種方法和技術(shù)的高級流程圖。在各種實施方案中,陳舊副本可被維持在曾經(jīng)是存儲節(jié)點群(諸如一對存儲節(jié)點)的部分的存儲節(jié)點處,所述存儲節(jié)點群具有維持?jǐn)?shù)據(jù)卷的當(dāng)前版本的存儲節(jié)點,諸如在數(shù)據(jù)卷的降低的耐久性狀態(tài)下操作的存儲節(jié)點。可利用這些陳舊副本來識別要執(zhí)行以便使存儲節(jié)點之間的副本同步的復(fù)制較少的對等存儲節(jié)點。如在810處所指示,可在存儲節(jié)點處檢測數(shù)據(jù)卷的復(fù)制啟用事件。類似于以上討論的元素710,可諸如基于各種因素來確定或觸發(fā)復(fù)制啟用事件,所述因素包括但不限于:數(shù)據(jù)卷的耐久性狀態(tài)、其他存儲節(jié)點存儲數(shù)據(jù)卷副本的可用性、或基于塊的存儲系統(tǒng)之中的網(wǎng)絡(luò)利用率。
可識別維持要根據(jù)存儲節(jié)點處所維持的數(shù)據(jù)卷來更新的數(shù)據(jù)卷的陳舊副本的對等存儲節(jié)點,如在820處所指示。在一些實施方案中,所識別存儲節(jié)點可以是維持要執(zhí)行數(shù)據(jù)卷的復(fù)制操作的數(shù)據(jù)卷陳舊副本的最近的存儲節(jié)點。圖9是示出根據(jù)一些實施方案的用于識別有陳舊副本要更新的存儲節(jié)點的各種方法和技術(shù)的高級流程圖。如在910處所指示,在各種實施方案中,可在所述存儲節(jié)點處接收維持?jǐn)?shù)據(jù)卷的各自陳舊副本的候選存儲節(jié)點的識別符??刂葡到y(tǒng)(諸如圖2中的控制平面222)可跟蹤已經(jīng)維持?jǐn)?shù)據(jù)卷副本的先前存儲節(jié)點。在一些實施方案中,控制平面可根據(jù)各種因素(例如,存儲節(jié)點是否可用、健康、具有先前故障的歷史,或當(dāng)前工作負(fù)荷),從維持?jǐn)?shù)據(jù)卷陳舊副本的所述數(shù)量的存儲節(jié)點的子集創(chuàng)建候選存儲節(jié)點的列表。在一些實施方案中,所述存儲節(jié)點自身可跟蹤或保持所述存儲節(jié)點與其執(zhí)行數(shù)據(jù)卷的復(fù)制操作的存儲節(jié)點的歷史。存儲節(jié)點識別符(諸如這些存儲節(jié)點的網(wǎng)絡(luò)地址)可被發(fā)送到所述存儲節(jié)點或被保持在所述存儲節(jié)點處。
在一些實施方案中,可針對候選存儲節(jié)點中的每一個,確定數(shù)據(jù)卷的各自陳舊副本中要更新的陳舊數(shù)據(jù)組塊的各自數(shù)量,如在920處所指示。例如,在一些實施方案中,當(dāng)在復(fù)制被啟用的存儲節(jié)點處接收到寫入請求時,可更新數(shù)據(jù)卷的元數(shù)據(jù)以指示哪些數(shù)據(jù)組塊被改變(例如,可維持?jǐn)?shù)據(jù)組塊的單調(diào)地增加的版本號)。候選存儲節(jié)點也可維持具有陳舊副本的每一個數(shù)據(jù)組塊的各自版本號的卷元數(shù)據(jù)。然而,陳舊副本的這種卷元數(shù)據(jù)也可能是陳舊的。因此,可識別數(shù)據(jù)卷的陳舊副本與數(shù)據(jù)卷的當(dāng)前版本之間在數(shù)據(jù)組塊上的差異。例如,在一些實施方案中,所述存儲節(jié)點可查詢每一個候選存儲節(jié)點以將它們的卷元數(shù)據(jù)與數(shù)據(jù)卷的當(dāng)前卷元數(shù)據(jù)進(jìn)行比較。候選存儲節(jié)點可發(fā)送需要更新以便使數(shù)據(jù)卷的這些副本同步的數(shù)據(jù)組塊的識別符?;谶@些各自的陳舊數(shù)據(jù)組塊數(shù)量,可選擇對等存儲節(jié)點來更新。例如,這個所選擇存儲節(jié)點可以是候選存儲節(jié)點中陳舊數(shù)據(jù)組塊數(shù)量最少的一個,如在930處所指示。在一些實施方案中,也可以結(jié)合要更新的陳舊數(shù)據(jù)組塊的量使用其他因素選擇對等存儲節(jié)點來更新。例如,也可以使用當(dāng)前工作負(fù)荷、指向特定特定候選存儲節(jié)點的網(wǎng)絡(luò)流量或關(guān)于所述特定特定候選存儲節(jié)點執(zhí)行復(fù)制的性能或能力的其他信息。如果例如一個候選存儲節(jié)點可比另一個候選存儲節(jié)點具有更多的要更新的數(shù)據(jù)組塊,但具有更大的執(zhí)行復(fù)制操作的能力(例如,所述另一個候選存儲節(jié)點正執(zhí)行另一個數(shù)據(jù)卷的復(fù)制操作或其他工作),那么可選擇有更多數(shù)據(jù)組塊要更新的候選存儲節(jié)點。
轉(zhuǎn)回圖8,一旦選擇,就可執(zhí)行用于更新對等存儲節(jié)點處的數(shù)據(jù)卷副本中的數(shù)據(jù)組塊以與所述存儲節(jié)點處的數(shù)據(jù)卷中的對應(yīng)數(shù)據(jù)組塊匹配的復(fù)制操作,如在830處所指示。因此,在一些實施方案中,僅需要更新存儲節(jié)點之間的未同步(即,不匹配)的這些數(shù)據(jù)組塊,從而減少在存儲節(jié)點之間發(fā)送數(shù)據(jù)組塊所需要的網(wǎng)絡(luò)流量。對于數(shù)據(jù)卷的陳舊副本與數(shù)據(jù)卷的當(dāng)前版本之間相匹配的這些數(shù)據(jù)組塊,可以不執(zhí)行復(fù)制操作。一旦完成復(fù)制操作,就可在存儲節(jié)點和對等存儲節(jié)點兩者處啟用數(shù)據(jù)卷的復(fù)制。直到在存儲節(jié)點和對等存儲節(jié)點兩者處執(zhí)行了寫入請求,才將寫入請求確認(rèn)為完成。
圖10是示出根據(jù)一些實施方案的用于確定可不執(zhí)行數(shù)據(jù)卷的有效復(fù)制的各種方法和技術(shù)的高級流程圖。如在1010處所指示,可針對嘗試識別具有數(shù)據(jù)卷的陳舊副本的對等存儲節(jié)點的存儲節(jié)點,確定進(jìn)入可能夠禁用存儲節(jié)點處所維持的數(shù)據(jù)卷的復(fù)制的降低的耐久性狀態(tài)與當(dāng)前時間之間的時間量超過有效復(fù)制時間閾值。有效時間閾值可指示陳舊副本如此過時以致于復(fù)制新副本比執(zhí)行復(fù)制操作來更新存儲節(jié)點處的陳舊副本更有效的時間量。在一些實施方案中,可針對特定數(shù)據(jù)卷確定有效時間復(fù)制閾值,諸如基于數(shù)據(jù)卷的耐久性狀態(tài)(例如,數(shù)據(jù)卷是否在另一個位置處被備份或存檔)。作為響應(yīng),可執(zhí)行數(shù)據(jù)卷到未維持?jǐn)?shù)據(jù)卷的陳舊副本的可用存儲節(jié)點的完全復(fù)制,如在1020處所指示??刹粓?zhí)行數(shù)據(jù)卷的有效復(fù)制的其他確定可以基于除時間以外的不同信息。例如,在一些實施方案中,候選存儲節(jié)點中要更換的陳舊數(shù)據(jù)組塊的數(shù)量(即,要更新的數(shù)據(jù)的量)超過數(shù)據(jù)復(fù)制的有效數(shù)據(jù)量閾值,并且替代地可創(chuàng)建數(shù)據(jù)卷的新副本。
對于維持陳舊副本(對于所述陳舊副本來說,時間量(諸如參考1010所描述)、數(shù)據(jù)或其他考慮因素使有效復(fù)制技術(shù)顯得無效)的存儲節(jié)點,可識別陳舊副本它們自己,如在1030處所指示??刂葡到y(tǒng)(諸如圖2中的控制平面222)可請求:所述存儲節(jié)點刪除各自陳舊副本,如在1040處所指示。在一些實施方案中,存儲節(jié)點自身可確定:所述存儲節(jié)點處所維持的特定陳舊副本可不再需要維持并刪除所述陳舊副本。
在各種實施方案中,本文所述的方法可通過硬件和軟件的任何結(jié)合來實施。例如,在一種實施方案中,所述方法可由包括執(zhí)行程序指令的一個或多個處理器的計算機(jī)系統(tǒng)(例如,如圖11中的計算機(jī)系統(tǒng))來實施,所述程序指令存儲在聯(lián)接到處理器的計算機(jī)可讀存儲介質(zhì)上。程序指令可被配置來實施本文所述的功能性(例如,各種服務(wù)器、存儲節(jié)點、控制平面、管理器和/或其他部件(諸如實施本文所述的基于塊的存儲服務(wù)的那些)的功能性)。如在圖中所示和本文所描述的各種方法表示方法的示例性實施方案。任何方法的次序可以改變,并且各個元素可以被添加、重新排序、組合、省略、修改等。
本公開的實施方案可鑒于以下條款來描述:
1.一種系統(tǒng),其包括:
多個存儲節(jié)點,其中所述多個存儲節(jié)點中的每一個維持在所述存儲節(jié)點處實施的基于塊的存儲裝置中的多個數(shù)據(jù)卷的各自副本,其中在向客戶端確認(rèn)從所述客戶端接收的用于帶有禁用復(fù)制的所述多個數(shù)據(jù)卷中的數(shù)據(jù)卷的寫入請求之前,在所述數(shù)據(jù)卷的每一個各自副本處完成所述寫入請求;
所述多個存儲節(jié)點中的每一個被配置來:
確定所述多個存儲節(jié)點中的對等存儲節(jié)點不可用于復(fù)制,所述對等存儲節(jié)點如同在所述存儲節(jié)點處被維持那樣維持所述多個數(shù)據(jù)卷中的特定數(shù)據(jù)卷的相同副本;
響應(yīng)于確定所述對等存儲節(jié)點不可用,禁用所述特定數(shù)據(jù)卷的復(fù)制,其包括:
在所述存儲節(jié)點處完成隨后接收的寫入請求;并且
確認(rèn)所述完成的寫入請求,而無需在所述多個存儲節(jié)點中的任何其他存儲節(jié)點處完成所述寫入請求。
2.如條款1所述的系統(tǒng),其還包括:
控制平面,其授權(quán)所述多個數(shù)據(jù)卷的復(fù)制的啟用和禁用;
其中每一個存儲節(jié)點被配置來響應(yīng)于從所述控制平面接收對禁用復(fù)制的授權(quán)來執(zhí)行所述禁用所述特定數(shù)據(jù)卷的復(fù)制;
所述控制平面被配置來:
響應(yīng)于從存儲節(jié)點接收用于維持所述特定數(shù)據(jù)卷的另一個副本的一個或多個候選存儲節(jié)點的請求:
確定將要啟用所述特定數(shù)據(jù)卷的復(fù)制;并且
響應(yīng)于確定將要啟用所述特定數(shù)據(jù)卷的復(fù)制,向所述請求存儲節(jié)點發(fā)送所述多個存儲節(jié)點中的所述一個或多個候選存儲節(jié)點的各自識別符,以便讓所述請求存儲節(jié)點將所述特定數(shù)據(jù)卷復(fù)制到所述一個或多個候選存儲節(jié)點中的至少一個。
3.如條款2所述的系統(tǒng),其還包括:
所述請求存儲節(jié)點被配置來:
接收所述一個或多個候選存儲節(jié)點的所述各自識別符;
至少部分地基于所述候選識別符,識別所述一個或多個候選存儲節(jié)點中的特定一個來維持所述數(shù)據(jù)卷的另一個副本;
執(zhí)行一個或多個復(fù)制操作以更新所述數(shù)據(jù)卷的所述另一個副本,以便復(fù)制維持在所述請求存儲節(jié)點處的所述特定數(shù)據(jù)卷的所述副本;并且
啟用所述特定數(shù)據(jù)卷的復(fù)制,使得在將所述寫入請求確認(rèn)為完成之前,將在所述請求存儲節(jié)點處接收的寫入請求發(fā)送到所述另一個存儲節(jié)點用于完成。
4.如條款1所述的方法,其中所述多個存儲節(jié)點一起實施基于網(wǎng)絡(luò)的基于塊的存儲服務(wù),其中從由基于網(wǎng)絡(luò)的虛擬計算服務(wù)實施的一個或多個虛擬計算實例接收寫入請求,其中所述基于網(wǎng)絡(luò)的基于塊的存儲服務(wù)和所述基于網(wǎng)絡(luò)的虛擬計算服務(wù)一起被實施為同一基于網(wǎng)絡(luò)的服務(wù)提供商網(wǎng)絡(luò)的部分。
5.一種方法,其包括:
由一個或多個計算裝置執(zhí)行下列各項:
確定維持?jǐn)?shù)據(jù)卷的各自副本的多個存儲節(jié)點中的存儲節(jié)點不可用于復(fù)制,其中在所述多個存儲節(jié)點中的每一個處完成被接收用于所述數(shù)據(jù)卷的寫入請求以便執(zhí)行所述數(shù)據(jù)卷的復(fù)制,其中當(dāng)在所述多個存儲節(jié)點中的每一個存儲節(jié)點處完成時,寫入請求被確認(rèn)為完成;
響應(yīng)于所述確定所述存儲節(jié)點不可用,根據(jù)所述數(shù)據(jù)卷的降低的耐久性狀態(tài)來處理用于所述數(shù)據(jù)卷的隨后接收的的寫入請求,使得針對所述存儲節(jié)點禁用所述數(shù)據(jù)卷的復(fù)制,其包括:
針對用于所述數(shù)據(jù)卷的所述隨后接收的寫入請求中的每一個:
在可用于復(fù)制的所述多個存儲節(jié)點中的一個或多個存儲節(jié)點處完成所述隨后接收的寫入請求,其中所述寫入請求在相比于所述多個存儲節(jié)點較少數(shù)量的存儲節(jié)點處完成;以及
響應(yīng)于完成所述寫入請求,將所述寫入請求確認(rèn)為完成。
6.如條款5所述的方法,其中所述多個存儲節(jié)點包括主存儲節(jié)點和從存儲節(jié)點,其中被確定為不可用于復(fù)制的所述存儲節(jié)點是主存儲節(jié)點,其中在所述主存儲節(jié)點處接收用于所述數(shù)據(jù)卷的所述寫入請求,其中所述主存儲節(jié)點將在所述主存儲節(jié)點處接收的所述寫入請求發(fā)送到所述從存儲節(jié)點以在所述從存儲節(jié)點處完成,并且其中所述方法還包括:
響應(yīng)于所述確定所述存儲節(jié)點不可用,將所述從存儲節(jié)點提升為所述數(shù)據(jù)卷的新的主存儲節(jié)點,其中在所述新的主存儲節(jié)點處接收用于所述數(shù)據(jù)卷的所述隨后接收的寫入請求;
其中執(zhí)行所述在可用于復(fù)制的所述多個存儲節(jié)點中的所述一個或多個存儲節(jié)點處完成所述隨后接收的寫入請求,使得在所述新的主存儲節(jié)點處完成所述隨后接收的寫入請求,而無需在所述多個存儲節(jié)點中的任何其他存儲節(jié)點處完成所述寫入請求。
7.如條款5所述的方法,其還包括:
確定將要針對另一個存儲節(jié)點啟用所述數(shù)據(jù)卷的復(fù)制,以便根據(jù)提高的耐久性狀態(tài)來處理用于所述數(shù)據(jù)卷的寫入請求;
響應(yīng)于確定將要啟用所述數(shù)據(jù)卷的復(fù)制:
識別所述另一個存儲節(jié)點來維持所述數(shù)據(jù)卷的另一個副本;
執(zhí)行一個或多個復(fù)制操作以更新所述數(shù)據(jù)卷的所述另一個副本,以如在所述一個或多個存儲節(jié)點處所維持那樣來復(fù)制所述數(shù)據(jù)卷;以及
針對所述另一個存儲節(jié)點啟用復(fù)制,使得在將另外的寫入請求確認(rèn)為完成之前,在所述另一個存儲節(jié)點處完成所述另外的寫入請求。
8.如條款7所述的方法,其中所述另一個存儲節(jié)點不同于被確定為不可用的所述存儲節(jié)點,并且其中被執(zhí)行來更新所述另一個副本的所述一個或多個復(fù)制操作發(fā)送所述一個或多個存儲節(jié)點處所維持的所述數(shù)據(jù)卷中的全部的拷貝,以存儲為所述數(shù)據(jù)卷的所述另一個副本。
9.如條款7所述的方法,其中所述多個存儲節(jié)點被實施為存儲多個不同數(shù)據(jù)卷的較大存儲節(jié)點集合的部分,其中所述確定將要啟用所述數(shù)據(jù)卷的復(fù)制至少部分地基于下列各項中的一個或多個:
所述較大存儲節(jié)點集合之中維持所述數(shù)據(jù)卷的所述另一個副本的存儲能力;
所述較大存儲節(jié)點集合之中的網(wǎng)絡(luò)利用率;或
所述數(shù)據(jù)卷的耐久性狀態(tài)。
10.如條款9所述的方法,其中所述一個或多個計算裝置中的至少一些實施用于所述較大存儲節(jié)點集合的控制平面,并且其中所述確定將要啟用所述數(shù)據(jù)卷的復(fù)制由所述控制平面執(zhí)行。
11.如條款7所述的方法,其中所述多個存儲節(jié)點被實施為存儲多個不同數(shù)據(jù)卷的較大存儲節(jié)點集合的部分,其中用于所述多個不同數(shù)據(jù)卷中的至少一些的寫入請求根據(jù)各自的降低的耐久性狀態(tài)來處理,并且其中所述確定將要啟用所述數(shù)據(jù)卷的復(fù)制至少部分地基于用于提高具有所述各自的降低的耐久性狀態(tài)的所述至少一些數(shù)據(jù)卷的耐久性的優(yōu)先化方案。
12.如條款7所述的方法,其中所述多個存儲節(jié)點被實施為存儲多個不同數(shù)據(jù)卷的較大存儲節(jié)點集合的部分,其中針對存儲所述多個不同數(shù)據(jù)卷中的不同數(shù)據(jù)卷的至少一些存儲節(jié)點來執(zhí)行所述確定所述存儲節(jié)點不可用、所述根據(jù)所述降低的耐久性狀態(tài)來處理用于所述數(shù)據(jù)卷的所述隨后接收的的寫入請求、所述確定將要啟用復(fù)制、所述識別所述另一個存儲節(jié)點、所述執(zhí)行所述一個或多個復(fù)制操作以及所述針對所述另一個存儲啟用復(fù)制。
13.如條款5所述的方法,其中所述多個存儲節(jié)點是實施基于網(wǎng)絡(luò)的基于塊的存儲服務(wù)的較大存儲節(jié)點集合的部分,其中從由基于網(wǎng)絡(luò)的虛擬計算服務(wù)實施的一個或多個虛擬計算實例接收寫入請求,其中所述基于網(wǎng)絡(luò)的基于塊的存儲服務(wù)和所述基于網(wǎng)絡(luò)的虛擬計算服務(wù)一起被實施為同一提供商網(wǎng)絡(luò)的部分。
14.一種存儲程序指令的非暫時性計算機(jī)可讀存儲介質(zhì),所述程序指令在由一個或多個計算裝置執(zhí)行時促使所述一個或多個計算裝置實施下列各項:
確定維持?jǐn)?shù)據(jù)卷的各自副本的多個存儲節(jié)點中的存儲節(jié)點不可用于復(fù)制,其中在所述多個存儲節(jié)點中的每一個處完成被接收用于所述數(shù)據(jù)卷的寫入請求以便執(zhí)行所述數(shù)據(jù)卷的復(fù)制,其中當(dāng)在所述多個存儲節(jié)點中的每一個存儲節(jié)點處完成時,寫入請求被確認(rèn)為完成;
響應(yīng)于所述確定所述存儲節(jié)點不可用,根據(jù)所述數(shù)據(jù)卷的降低的耐久性狀態(tài)來處理用于所述數(shù)據(jù)卷的隨后接收的的寫入請求,使得針對所述存儲節(jié)點禁用所述數(shù)據(jù)卷的復(fù)制,其包括:
針對用于所述數(shù)據(jù)卷的所述隨后接收的寫入請求中的每一個:
在可用于復(fù)制的所述多個存儲節(jié)點中的一個或多個存儲節(jié)點處完成所述隨后接收的寫入請求,其中所述寫入請求在相比于所述多個存儲節(jié)點較少數(shù)量的存儲節(jié)點處完成;以及
響應(yīng)于完成所述寫入請求,將所述寫入請求確認(rèn)為完成。
15.如條款14所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述多個存儲節(jié)點包括主存儲節(jié)點和從存儲節(jié)點,其中被確定為不可用的所述存儲節(jié)點是所述從存儲節(jié)點,其中所述主存儲節(jié)點將在所述主存儲節(jié)點處從所述客戶端接收的所述寫入請求發(fā)送到所述從存儲節(jié)點以在所述從存儲節(jié)點處完成,并且其中執(zhí)行所述在可供用于復(fù)制的所述多個存儲節(jié)點中的所述一個或多個存儲節(jié)點處完成所述隨后接收的寫入請求,使得在所述主存儲節(jié)點處完成所述隨后接收的寫入請求,而無需在所述多個存儲節(jié)點中的任何其他存儲節(jié)點處完成所述寫入請求。
16.如條款14所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述程序指令還促使所述一個或多個計算裝置實施下列各項:
確定將要針對另一個存儲節(jié)點啟用所述數(shù)據(jù)卷的復(fù)制,以便根據(jù)提高的耐久性狀態(tài)來處理用于所述數(shù)據(jù)卷的寫入請求;
響應(yīng)于確定將要啟用所述數(shù)據(jù)卷的復(fù)制:
識別所述另一個存儲節(jié)點來維持所述數(shù)據(jù)卷的另一個副本;
執(zhí)行一個或多個復(fù)制操作以更新所述數(shù)據(jù)卷的所述另一個副本,以如在所述一個或多個存儲節(jié)點處所維持那樣來復(fù)制所述數(shù)據(jù)卷;以及
針對所述另一個存儲節(jié)點啟用復(fù)制,使得在將另外的寫入請求確認(rèn)為完成之前,在所述另一個存儲節(jié)點處完成所述另外的寫入請求。
17.如條款16所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述另一個存儲節(jié)點是所述存儲節(jié)點,其中所述數(shù)據(jù)卷的所述另一個副本是所述數(shù)據(jù)卷的所述各自副本,并且其中,在所述執(zhí)行所述一個或多個復(fù)制操作以更新所述數(shù)據(jù)卷的所述另一個副本中,所述程序指令促使所述一個或多個計算裝置實施:
發(fā)送在針對所述存儲節(jié)點禁用所述數(shù)據(jù)卷的復(fù)制之后被修改的所述數(shù)據(jù)卷的數(shù)據(jù)組塊,以便更新所述數(shù)據(jù)卷的所述各自副本。
18.如條款16所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述多個存儲節(jié)點被實施為存儲多個不同數(shù)據(jù)卷的較大存儲節(jié)點集合的部分,并且其中所述確定將要啟用所述數(shù)據(jù)卷的復(fù)制至少部分地基于下列各項中的一個或多個:
所述較大存儲節(jié)點集合之中維持所述數(shù)據(jù)卷的所述另一個副本的存儲能力;
所述較大存儲節(jié)點集合之中的網(wǎng)絡(luò)利用率;或
所述數(shù)據(jù)卷的耐久性狀態(tài)。
19.如條款16所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述多個存儲節(jié)點被實施為存儲多個不同數(shù)據(jù)卷的較大存儲節(jié)點集合的部分,其中對所述多個不同數(shù)據(jù)卷中的至少一些的寫入請求根據(jù)各自的降低的耐久性狀態(tài)來處理,并且其中所述確定將要啟用所述數(shù)據(jù)卷的復(fù)制至少部分地基于用于提高具有所述各自的降低的耐久性狀態(tài)的所述至少一些數(shù)據(jù)卷的耐久性的優(yōu)先化方案。
20.如條款14所述的非暫時性計算機(jī)可讀存儲介質(zhì),其中所述多個存儲節(jié)點是實施基于網(wǎng)絡(luò)的基于塊的存儲服務(wù)的較大存儲節(jié)點集合的部分,其中從由基于網(wǎng)絡(luò)的虛擬計算服務(wù)實施的一個或多個虛擬計算實例接收寫入請求,其中所述基于網(wǎng)絡(luò)的基于塊的存儲服務(wù)和所述基于網(wǎng)絡(luò)的虛擬計算服務(wù)一起被實施為同一提供商網(wǎng)絡(luò)的部分。
如本文所述的降低基于塊的存儲的耐久性狀態(tài)以及有效數(shù)據(jù)卷復(fù)制的實施方案可在可與各種其他裝置交互的一個或多個計算機(jī)系統(tǒng)上執(zhí)行。圖11是示出根據(jù)一些實施方案的示例性計算機(jī)系統(tǒng)的框圖。例如,在不同實施方案中,計算機(jī)系統(tǒng)2000可被配置來實施計算集群的存儲和/或計算節(jié)點、數(shù)據(jù)存儲區(qū)和/或客戶端。計算機(jī)系統(tǒng)2000可以是各種類型的裝置中的任何一種,包括但不限于:個人計算機(jī)系統(tǒng)、臺式電腦、膝上電腦或筆記本電腦、主機(jī)計算機(jī)系統(tǒng)、手持式計算機(jī)、工作站、網(wǎng)絡(luò)計算機(jī)、消費裝置、應(yīng)用服務(wù)器、存儲裝置、電話、移動電話、或大體上任何類型的計算裝置。
計算機(jī)系統(tǒng)2000包括通過輸入/輸出(I/O)接口2030聯(lián)接到系統(tǒng)存儲器2020的一個或多個處理器2010(其中的任何一個可包括多個核心,所述多個核心可以是單線程的或多線程的)。計算機(jī)系統(tǒng)2000還包括聯(lián)接到I/O接口2030的網(wǎng)絡(luò)接口2040。在各種實施方案中,計算機(jī)系統(tǒng)2000可以是包括一個處理器2010的單處理器系統(tǒng),或包括若干處理器2010(例如兩個、四個、八個或另一合適數(shù)量)的多處理器系統(tǒng)。處理器2010可以是能夠執(zhí)行指令的任何合適處理器。例如,在各種實施方案中,處理器2010可以是實施各種指令集架構(gòu)(ISA)中的任何一種架構(gòu)的通用或嵌入式處理器,所述架構(gòu)諸如x86、PowerPC、SPARC或MIPS ISA或者任何其他合適的ISA。在多處理器系統(tǒng)中,每一個處理器2010可通常但并非必須實施相同ISA。計算機(jī)系統(tǒng)2000還包括一個或多個網(wǎng)絡(luò)通信裝置(例如,網(wǎng)絡(luò)接口2040),用于與其他系統(tǒng)和/或部件通過通信網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng)、LAN等)通信。
在示出的實施方案中,計算機(jī)系統(tǒng)2000還包括一個或多個永久性存儲裝置2060和/或一個或多個I/O裝置2080。在各種實施方案中,永久性存儲裝置2060可對應(yīng)于磁盤驅(qū)動器、磁帶驅(qū)動器、固態(tài)存儲器、其他大容量存儲裝置、基于塊的存儲裝置、或任何其他永久性存儲裝置。計算機(jī)系統(tǒng)2000(或在其上操作的分布式應(yīng)用程序或操作系統(tǒng))可如所希望地將指令和/或數(shù)據(jù)存儲在永久性存儲裝置2060中,并且可按需檢索存儲的指令和/或數(shù)據(jù)。例如,在一些實施方案中,計算機(jī)系統(tǒng)2000可代管存儲系統(tǒng)服務(wù)器節(jié)點,并且永久性存儲2060可包括附接到那個服務(wù)器節(jié)點的SSD。
計算機(jī)系統(tǒng)2000包括被配置來存儲可由處理器2010訪問的指令和數(shù)據(jù)的一個或多個系統(tǒng)存儲器2020。在各種實施方案中,系統(tǒng)存儲器2020可使用任何合適的存儲器技術(shù)(例如,高速緩存、靜態(tài)隨機(jī)存取存儲器(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10 RAM、同步動態(tài)RAM(SDRAM)、Rambus RAM、EEPROM、非暫時性/閃存類型的存儲器、或任何其他類型的存儲器中的一種或多種)來實施。系統(tǒng)存儲器2020可包含程序指令2025,所述程序指令2025可由處理器2010執(zhí)行以便實施本文所述的方法和技術(shù)。在各種實施方案中,程序指令2025可以平臺本地二進(jìn)制、任何解譯語言(諸如JavaTM字節(jié)代碼)、或以任何其他語言(諸如C/C++、JavaTM等)、或以其任何組合來編碼。例如,在不同實施方案中,在示出的實施方案中,程序指令2025包括可執(zhí)行來實施存儲節(jié)點的功能性的程序指令。在一些實施方案中,程序指令2025可實施多個獨立的客戶端、節(jié)點和/或其他部件。
在一些實施方案中,程序指令2025可包括可執(zhí)行來實施操作系統(tǒng)(未示出)的指令,所述操作系統(tǒng)可以是各種操作系統(tǒng)、諸如UNIX、LINUX、SolarisTM、MacOSTM、WindowsTM等中的任一種。任何或所有程序指令2025可作為計算機(jī)程序產(chǎn)品或軟件來提供,所述計算機(jī)程序產(chǎn)品或軟件可包括具有存儲在其上的指令的非暫時性計算機(jī)可讀存儲介質(zhì),所述指令可用于編碼計算機(jī)系統(tǒng)(或其他電子裝置)來執(zhí)行根據(jù)各種實施方案的過程。非暫時性計算機(jī)可讀存儲介質(zhì)可包括用于存儲機(jī)器(例如,計算機(jī))可讀的形式(例如軟件、處理應(yīng)用程序)的信息的任何機(jī)構(gòu)。一般來說,非暫時性計算機(jī)可訪問介質(zhì)可包括計算機(jī)可讀存儲介質(zhì)或存儲器介質(zhì),諸如磁性介質(zhì)或光學(xué)介質(zhì),例如通過I/O接口2030聯(lián)接到計算機(jī)系統(tǒng)2000的磁盤或DVD/CD-ROM。非暫時性計算機(jī)可讀存儲介質(zhì)還可以包括可作為系統(tǒng)存儲器2020或另一類型的存儲器包括在計算機(jī)系統(tǒng)2000的一些實施方案中的任何易失性或非易失性介質(zhì),諸如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。在其他實施方案中,程序指令可使用通過通信介質(zhì)(諸如網(wǎng)絡(luò)鏈接和/或無線鏈接)傳達(dá)的光學(xué)、聲學(xué)或其他形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等)來通信,諸如可通過網(wǎng)絡(luò)接口2040實施的。
在一些實施方案中,系統(tǒng)存儲器2020可包括可如本文所述配置的數(shù)據(jù)存儲區(qū)2045。一般而言,系統(tǒng)存儲器2020(例如,系統(tǒng)存儲器2020內(nèi)的數(shù)據(jù)存儲區(qū)2045)、永久性存儲2060和/或遠(yuǎn)程存儲2070可存儲數(shù)據(jù)塊、數(shù)據(jù)塊副本、與數(shù)據(jù)塊和/或它們的狀態(tài)相關(guān)聯(lián)的元數(shù)據(jù)、配置信息、和/或可在實施本文所述的方法和技術(shù)中使用的任何其他信息。
在一種實施方案中,I/O接口2030可被配置來協(xié)調(diào)處理器2010、系統(tǒng)存儲器2020與系統(tǒng)中的任何外圍裝置之間的I/O流量,包括通過網(wǎng)絡(luò)接口2040或其他外圍接口。在一些實施方案中,I/O接口2030可執(zhí)行任何必要協(xié)議、時序或其他數(shù)據(jù)變換,以便將來自一個部件(例如,系統(tǒng)存儲器2020)的數(shù)據(jù)信號轉(zhuǎn)換成適合于由另一個部件(例如,處理器2010)使用的格式。在一些實施方案中,I/O接口2030可包括對于通過各種類型外圍總線附接的裝置的支持,例如像外圍部件互連(PCI)總線標(biāo)準(zhǔn)或通用串行總線(USB)標(biāo)準(zhǔn)的變型。在一些實施方案中,I/O接口2030的功能可劃分到兩個或更多個獨立部件中,例如像北橋和南橋。另外,在一些實施方案中,I/O接口2030的一些或所有功能性,諸如到系統(tǒng)存儲器2020的接口,可直接并入處理器2010中。
網(wǎng)絡(luò)接口2040可被配置來允許在計算機(jī)系統(tǒng)2000與附接到網(wǎng)絡(luò)的其他裝置(例如像其他計算機(jī)系統(tǒng)2090)之間交換數(shù)據(jù)。此外,網(wǎng)絡(luò)接口2040可被配置來允許在計算機(jī)系統(tǒng)2000與各種I/O裝置2050和/或遠(yuǎn)程存儲2070之間進(jìn)行通信。在一些實施方案中,輸入/輸出裝置2050可包括一個或多個顯示終端、鍵盤、小鍵盤、觸摸屏、掃描裝置、語音或光學(xué)識別裝置,或適合于由一個或多個計算機(jī)系統(tǒng)2000輸入或檢索數(shù)據(jù)的任何其他裝置。多個輸入/輸出裝置2050可存在于計算機(jī)系統(tǒng)2000中或可分布在包括計算機(jī)系統(tǒng)2000的分布式系統(tǒng)的各個節(jié)點上。在一些實施方案中,類似輸入/輸出裝置可與計算機(jī)系統(tǒng)2000分開并且可通過有線或無線連接(諸如通過網(wǎng)絡(luò)接口2040)來與包括計算機(jī)系統(tǒng)2000的分布式系統(tǒng)的一個或多個節(jié)點交互。網(wǎng)絡(luò)接口2040通??芍С忠粋€或多個無線網(wǎng)絡(luò)協(xié)議(例如,Wi-Fi/IEEE 802.11,或另一無線網(wǎng)絡(luò)標(biāo)準(zhǔn))。然而,在各種實施方案中,網(wǎng)絡(luò)接口2040可以支持通過任何合適的有線或無線通用數(shù)據(jù)網(wǎng)絡(luò)(例如像其他類型的以太網(wǎng)網(wǎng)絡(luò))進(jìn)行通信。另外,網(wǎng)絡(luò)接口2040可支持通過電信/電話網(wǎng)絡(luò)(諸如模擬語音網(wǎng)絡(luò)或數(shù)字光纖通信網(wǎng)絡(luò))、通過存儲區(qū)域網(wǎng)絡(luò)(諸如光纖信道SAN)或者通過任何其他合適類型的網(wǎng)絡(luò)和/或協(xié)議進(jìn)行通信。在各種實施方案中,計算機(jī)系統(tǒng)2000可包括多于、少于、或不同于圖11 2000所示的那些的部件(例如,顯示器、視頻卡、音頻卡、外圍裝置、其他網(wǎng)絡(luò)接口,諸如ATM接口、以太網(wǎng)接口、幀中繼接口等)。
應(yīng)注意,本文所述的分布式系統(tǒng)實施方案中的任何一個,或它們的部件中的任何一個,可被實施為一個或多個基于網(wǎng)絡(luò)的服務(wù)。例如,計算服務(wù)內(nèi)的計算集群可將計算和/或存儲服務(wù)和/或采用本文所述的分布式計算系統(tǒng)的其他類型的服務(wù)作為基于網(wǎng)絡(luò)的服務(wù)呈現(xiàn)給客戶端。在一些實施方案中,基于網(wǎng)絡(luò)的服務(wù)可由設(shè)計來支持通過網(wǎng)絡(luò)進(jìn)行彼此協(xié)作的機(jī)對機(jī)交互的軟件和/或硬件系統(tǒng)來實施?;诰W(wǎng)絡(luò)的服務(wù)可具有以機(jī)器可處理格式描述的接口,諸如Web服務(wù)描述語言(WSDL)。其他系統(tǒng)可與基于網(wǎng)絡(luò)的服務(wù)以對基于網(wǎng)絡(luò)的服務(wù)的接口的描述所規(guī)定的方式進(jìn)行交互。例如,基于網(wǎng)絡(luò)的服務(wù)可限定其他系統(tǒng)可調(diào)用的各種操作,并且可限定特定的應(yīng)用程序編程接口(API),當(dāng)請求各種操作時,其他系統(tǒng)可能期望服從所述特定的應(yīng)用程序編程接口(API)。雖然
在各種實施方案中,基于網(wǎng)絡(luò)的服務(wù)可通過使用包括與基于網(wǎng)絡(luò)的服務(wù)請求相關(guān)聯(lián)的參數(shù)和/或數(shù)據(jù)的消息來請求或調(diào)用。這種消息可根據(jù)特定的標(biāo)記語言(諸如可延伸標(biāo)記語言(XML))來格式化,和/或可使用協(xié)議(諸如簡單對象訪問協(xié)議(SOAP))來封裝。為執(zhí)行基于網(wǎng)絡(luò)的服務(wù)請求,基于網(wǎng)絡(luò)的服務(wù)客戶端可匯編包括所述請求的消息,并且使用基于互聯(lián)網(wǎng)的應(yīng)用層傳輸協(xié)議(諸如超文本傳輸協(xié)議(HTTP))將所述消息傳達(dá)給對應(yīng)于基于網(wǎng)絡(luò)的服務(wù)的可尋址端點(例如,統(tǒng)一資源定位符(URL))。
在一些實施方案中,基于網(wǎng)絡(luò)的服務(wù)可使用表述性狀態(tài)傳輸(“RESTful”)技術(shù)而不是基于消息的技術(shù)來實施。例如,根據(jù)RESTful技術(shù)實施的基于網(wǎng)絡(luò)的服務(wù)可通過包括在HTTP方法(諸如PUT、GET或DELETE)內(nèi)而不是封裝在SOAP消息內(nèi)的參數(shù)來調(diào)用。
盡管已相當(dāng)詳細(xì)地描述了以上實施方案,但一旦完全了解以上公開內(nèi)容,各種改變和修改對本領(lǐng)域的技術(shù)人員將變?yōu)轱@而易見。以下權(quán)利要求旨在被解釋成包含所有這些修改和改變,并且各自地,以上描述應(yīng)視為具有說明性而非限制性意義。