向執(zhí)行中的程序提供對(duì)非本地塊數(shù)據(jù)存儲(chǔ)裝置的可靠訪問的制作方法
【專利摘要】本發(fā)明描述了用于管理執(zhí)行中的程序?qū)Ψ潜镜貕K數(shù)據(jù)存儲(chǔ)裝置的訪問的技術(shù)。在一些情況下,塊數(shù)據(jù)存儲(chǔ)服務(wù)使用多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)來可靠地存儲(chǔ)塊數(shù)據(jù),該塊數(shù)據(jù)在一個(gè)或多個(gè)網(wǎng)絡(luò)上可由其他物理計(jì)算系統(tǒng)上執(zhí)行的程序來訪問。用戶可以創(chuàng)建均由至少兩個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)存儲(chǔ)的塊數(shù)據(jù)存儲(chǔ)卷,并且可以發(fā)起一個(gè)或多個(gè)執(zhí)行中的程序?qū)@種卷的使用,例如,通過使在第一卷拷貝變得不可用的情況下能夠自動(dòng)切換到第二卷拷貝來以可靠的方式發(fā)起。在一些情況下,一組存儲(chǔ)了塊數(shù)據(jù)卷的多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)可以在數(shù)據(jù)中心協(xié)同定位,并且使用在其中存儲(chǔ)的卷的程序可以在該數(shù)據(jù)中心處的其他物理計(jì)算系統(tǒng)上執(zhí)行。
【專利說明】向執(zhí)行中的程序提供對(duì)非本地塊數(shù)據(jù)存儲(chǔ)裝置的可靠訪問
[0001]分案說明
[0002]本申請(qǐng)是2011年4月8日進(jìn)入中國國家階段的、發(fā)明名稱為“向執(zhí)行中的程序提供對(duì)非本地塊數(shù)據(jù)存儲(chǔ)裝置的可靠訪問”的中國專利申請(qǐng)200980140118.1的分案申請(qǐng)。
【背景技術(shù)】
[0003]很多公司和其他組織運(yùn)營將許多計(jì)算系統(tǒng)相互連接以支持其操作的計(jì)算機(jī)網(wǎng)絡(luò),例如協(xié)同定位的(如,作為局域網(wǎng)的一部分)或位于多個(gè)不同地理位置(如,經(jīng)由一個(gè)或多個(gè)私有或公共中間網(wǎng)絡(luò)而連接)中的計(jì)算系統(tǒng)。例如,容納大量協(xié)同定位的互連計(jì)算系統(tǒng)的數(shù)據(jù)中心已經(jīng)變得平常,例如由單一組織運(yùn)營以及代表單一組織運(yùn)營的私有數(shù)據(jù)中心,以及由作為企業(yè)的實(shí)體運(yùn)營的公共數(shù)據(jù)中心。一些公共數(shù)據(jù)中心運(yùn)營商針對(duì)各個(gè)客戶所擁有的硬件提供網(wǎng)絡(luò)接入、電源以及安全安裝設(shè)施,而其他公共數(shù)據(jù)中心運(yùn)營商提供“完整服務(wù)”設(shè)施,該完整服務(wù)設(shè)施還包括其客戶可使用的硬件資源。然而,由于典型數(shù)據(jù)中心和計(jì)算機(jī)網(wǎng)絡(luò)的規(guī)模和范圍已經(jīng)增大,提供、掌管和管理相關(guān)物理計(jì)算資源的任務(wù)已變得日益復(fù)雜。
[0004]在針對(duì)具有多樣需求的許多客戶而管理大規(guī)模計(jì)算資源的方面,商品硬件的虛擬化技術(shù)的出現(xiàn)提供了一些好處,允許在多個(gè)客戶之間高效且安全地共享各種計(jì)算資源。例如,諸如由XEN、VMWare或用戶模式Linux提供的虛擬化技術(shù)之類的虛擬化技術(shù)可以允許通過向每個(gè)用戶提供一個(gè)或多個(gè)虛擬機(jī),同時(shí)還在各個(gè)虛擬機(jī)之間提供應(yīng)用隔離度和安全性,來在多個(gè)用戶之間共享單一物理計(jì)算系統(tǒng),該一個(gè)或多個(gè)虛擬機(jī)是以該單一物理計(jì)算系統(tǒng)作為宿主(host)的,其中,每個(gè)這種虛擬機(jī)都是充當(dāng)不同邏輯計(jì)算系統(tǒng)的軟件仿真,該邏輯計(jì)算系統(tǒng)向用戶提供他們是給定硬件計(jì)算資源的唯一運(yùn)營商和管理員的錯(cuò)覺。此夕卜,一些虛擬化技術(shù)還提供跨越一個(gè)或多個(gè)物理資源的虛擬資源,例如,具有多個(gè)虛擬處理器的、實(shí)際上跨越多個(gè)不同物理計(jì)算系統(tǒng)的單一虛擬機(jī)。
【專利附圖】
【附圖說明】
[0005]圖1是示意了示例實(shí)施例的網(wǎng)絡(luò)圖,在該示例實(shí)施例中,多個(gè)計(jì)算系統(tǒng)執(zhí)行程序并訪問可靠的非本地塊數(shù)據(jù)存儲(chǔ)裝置。
[0006]圖2A-2F示意了向客戶端提供可靠的非本地塊數(shù)據(jù)存儲(chǔ)功能的示例。
[0007]圖3是示意了適于管理向客戶端提供可靠的非本地塊數(shù)據(jù)存儲(chǔ)功能和由客戶端使用可靠的非本地塊數(shù)據(jù)存儲(chǔ)功能的示例計(jì)算系統(tǒng)的框圖。
[0008]圖4示意了塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器例程的示例實(shí)施例的流程圖。
[0009]圖5示意了節(jié)點(diǎn)管理器例程的示例實(shí)施例的流程圖。
[0010]圖6示意了塊數(shù)據(jù)存儲(chǔ)服務(wù)器例程的示例實(shí)施例的流程圖。
[0011]圖7A-7B示意了程序執(zhí)行服務(wù)系統(tǒng)管理器例程的示例實(shí)施例的流程圖。
[0012]圖8示意了塊數(shù)據(jù)存儲(chǔ)檔案管理器例程的示例實(shí)施例的流程圖?!揪唧w實(shí)施方式】
[0013]描述了用于管理執(zhí)行中的程序?qū)Ψ潜镜貕K數(shù)據(jù)存儲(chǔ)裝置的訪問的技術(shù)。在至少一些實(shí)施例中,該技術(shù)包括提供塊數(shù)據(jù)存儲(chǔ)服務(wù),塊數(shù)據(jù)存儲(chǔ)服務(wù)使用多個(gè)服務(wù)器存儲(chǔ)系統(tǒng),以可靠地存儲(chǔ)可由在其他物理計(jì)算系統(tǒng)上執(zhí)行的程序通過一個(gè)或多個(gè)網(wǎng)絡(luò)而訪問并使用的塊數(shù)據(jù)。塊數(shù)據(jù)存儲(chǔ)服務(wù)的用戶均可以創(chuàng)建一個(gè)或多個(gè)塊數(shù)據(jù)存儲(chǔ)卷,每個(gè)塊數(shù)據(jù)存儲(chǔ)卷具有指定量的塊數(shù)據(jù)存儲(chǔ)空間,并可以發(fā)起由一個(gè)或多個(gè)執(zhí)行中的程序?qū)@種塊數(shù)據(jù)存儲(chǔ)卷(在此也稱為“卷”)的使用,其中,至少一些這種卷具有由該多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)中的兩個(gè)或更多服務(wù)器存儲(chǔ)系統(tǒng)存儲(chǔ)的拷貝,以增強(qiáng)卷對(duì)執(zhí)行中的程序的可靠性和可用性。作為一個(gè)示例,在一些實(shí)施例中,可以將存儲(chǔ)塊數(shù)據(jù)的多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)組織成一個(gè)或多個(gè)池或其他組,該一個(gè)或多個(gè)池或其他組中的每一個(gè)都具有在地理位置處(例如,在一個(gè)或多個(gè)地理上分布的數(shù)據(jù)中心中的每一個(gè)中)協(xié)同定位的多個(gè)物理服務(wù)器存儲(chǔ)系統(tǒng),以及,使用存儲(chǔ)在數(shù)據(jù)中心中的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的卷的程序可以在該數(shù)據(jù)中心處的一個(gè)或多個(gè)其他物理計(jì)算系統(tǒng)上執(zhí)行。下面包括了涉及塊數(shù)據(jù)存儲(chǔ)服務(wù)的實(shí)施例的附加細(xì)節(jié),以及,可以通過塊數(shù)據(jù)存儲(chǔ)(“BDS”)系統(tǒng)管理器模塊的實(shí)施例,自動(dòng)執(zhí)行用于提供塊數(shù)據(jù)存儲(chǔ)服務(wù)的至少一些所描述的技術(shù)。
[0014]此外,在至少一些實(shí)施例中,通過一個(gè)或多個(gè)網(wǎng)絡(luò)訪問和使用一個(gè)或多個(gè)這種非本地塊數(shù)據(jù)存儲(chǔ)卷的執(zhí)行中的程序均可以具有相關(guān)的節(jié)點(diǎn)管理器,該節(jié)點(diǎn)管理器管理程序?qū)@些非本地卷的訪問,該節(jié)點(diǎn)管理器例如是由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供的節(jié)點(diǎn)管理器模塊和/或結(jié)合一個(gè)或多個(gè)BDS系統(tǒng)管理器模塊進(jìn)行操作的節(jié)點(diǎn)管理器模塊。例如,作為塊數(shù)據(jù)存儲(chǔ)服務(wù)的客戶的第一用戶可以創(chuàng)建第一塊數(shù)據(jù)存儲(chǔ)卷,并執(zhí)行一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)上被指示以訪問和使用該第一卷(例如,以串行的方式、以同時(shí)的方式或以其他交迭的方式等)的一個(gè)或多個(gè)程序拷貝。當(dāng)在計(jì)算節(jié)點(diǎn)上執(zhí)行的程序發(fā)起對(duì)非本地卷的使用時(shí),該程序可以安裝或以其他方式被提供有該計(jì)算節(jié)點(diǎn)本地的且表示該非本地卷的邏輯塊數(shù)據(jù)存儲(chǔ)設(shè)備,以便例如允許執(zhí)行中的程序以同附著至該計(jì)算節(jié)點(diǎn)的其他任何本地硬件驅(qū)動(dòng)器或其他物理塊數(shù)據(jù)存儲(chǔ)設(shè)備相同的方式與本地邏輯塊數(shù)據(jù)存儲(chǔ)設(shè)備進(jìn)行交互(例如,執(zhí)行讀和寫數(shù)據(jù)訪問請(qǐng)求、在卷上實(shí)現(xiàn)文件系統(tǒng)或數(shù)據(jù)庫或其他更高級(jí)數(shù)據(jù)結(jié)構(gòu)等)。例如,在至少一些實(shí)施例中,可以經(jīng)由使用GNBD( “全局網(wǎng)絡(luò)塊設(shè)備”)技術(shù)來使典型邏輯本地塊數(shù)據(jù)存儲(chǔ)設(shè)備對(duì)執(zhí)行中的程序可用。此外,下面將更詳細(xì)地討論,當(dāng)執(zhí)行中的程序與典型本地邏輯塊數(shù)據(jù)存儲(chǔ)設(shè)備進(jìn)行交互時(shí),相關(guān)節(jié)點(diǎn)管理器可以通過在一個(gè)或多個(gè)網(wǎng)絡(luò)上與存儲(chǔ)相關(guān)非本地卷的拷貝(例如,以對(duì)執(zhí)行中的程序和/或計(jì)算節(jié)點(diǎn)透明的方式)的至少一個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行通信來管理這些交互,以代表執(zhí)行中的程序執(zhí)行關(guān)于所存儲(chǔ)的卷拷貝的交互。此外,在至少一些實(shí)施例中,通過節(jié)點(diǎn)管理器模塊的實(shí)施例,自動(dòng)執(zhí)行用于管理執(zhí)行中的程序?qū)Ψ潜镜貕K數(shù)據(jù)存儲(chǔ)卷的訪問的至少一些所描述的技術(shù)。
[0015]此外,在至少一些實(shí)施例中,還可以將至少一些塊數(shù)據(jù)存儲(chǔ)卷(或這些卷的部分)存儲(chǔ)在與用于存儲(chǔ)卷拷貝的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)不同的一個(gè)或多個(gè)遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)上。在各種實(shí)施例中,可以由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供該一個(gè)或多個(gè)遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)(例如,位于遠(yuǎn)離數(shù)據(jù)中心的位置處,或者位于具有協(xié)同定位的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的池的其他地理位置處),或者可以由遠(yuǎn)程長期存儲(chǔ)服務(wù)提供并由塊數(shù)據(jù)存儲(chǔ)裝置使用該一個(gè)或多個(gè)遠(yuǎn)程檔案存儲(chǔ)系統(tǒng),以及,在至少一些實(shí)施例中,檔案存儲(chǔ)系統(tǒng)可以存儲(chǔ)具有除塊數(shù)據(jù)外的格式的數(shù)據(jù)(例如,可以將卷的一個(gè)或多個(gè)段或部分存儲(chǔ)為不同的對(duì)象)。在各種實(shí)施例中,可以以各種方式使用這種檔案存儲(chǔ)系統(tǒng),以提供各種優(yōu)點(diǎn),如下面更詳細(xì)地討論。在遠(yuǎn)程長期存儲(chǔ)服務(wù)提供檔案存儲(chǔ)系統(tǒng)的一些實(shí)施例中,同樣作為遠(yuǎn)程長期存儲(chǔ)服務(wù)的用戶(例如,付費(fèi)使用遠(yuǎn)程長期存儲(chǔ)服務(wù)的遠(yuǎn)程長期存儲(chǔ)服務(wù)客戶)的塊數(shù)據(jù)存儲(chǔ)服務(wù)用戶(例如,付費(fèi)使用塊數(shù)據(jù)存儲(chǔ)服務(wù)的塊數(shù)據(jù)存儲(chǔ)服務(wù)客戶)可以具有檔案存儲(chǔ)系統(tǒng)(例如響應(yīng)于來自這些客戶的指令)所存儲(chǔ)的這些用戶的塊數(shù)據(jù)存儲(chǔ)卷的至少部分。在其他實(shí)施例中,單一組織可以提供塊數(shù)據(jù)存儲(chǔ)服務(wù)能力和遠(yuǎn)程長期存儲(chǔ)服務(wù)能力兩者中的至少一些(例如,以集成的方式,如單一服務(wù)的一部分),而在又一些實(shí)施例中,可以在不包括對(duì)檔案數(shù)據(jù)存儲(chǔ)系統(tǒng)的使用的環(huán)境下提供塊數(shù)據(jù)存儲(chǔ)服務(wù)。此外,在至少一些實(shí)施例中,在一個(gè)或多個(gè)檔案管理器模塊的控制之下自動(dòng)執(zhí)行對(duì)檔案存儲(chǔ)系統(tǒng)的使用,該一個(gè)或多個(gè)檔案管理器模塊例如是由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供的檔案管理器模塊或者被提供以與塊數(shù)據(jù)存儲(chǔ)服務(wù)的模塊相結(jié)合進(jìn)行操作(如,由遠(yuǎn)程長期存儲(chǔ)服務(wù)提供以與塊數(shù)據(jù)存儲(chǔ)服務(wù)進(jìn)行交互)的檔案管理器模塊。
[0016]在一些實(shí)施例中,代表程序執(zhí)行服務(wù)來執(zhí)行至少一些所描述的技術(shù),程序執(zhí)行服務(wù)對(duì)代表程序執(zhí)行服務(wù)的多個(gè)用戶的多個(gè)程序的執(zhí)行進(jìn)行管理。在一些實(shí)施例中,程序執(zhí)行服務(wù)可以在一個(gè)或多個(gè)地理位置處具有多個(gè)協(xié)同定位的物理主機(jī)計(jì)算系統(tǒng)的組(例如,在一個(gè)或多個(gè)地理上分布的數(shù)據(jù)中心中),并可以在這些物理主機(jī)計(jì)算系統(tǒng)上執(zhí)行用戶的程序(例如,在程序執(zhí)行服務(wù)(“PES”)系統(tǒng)管理器的控制之下),下面對(duì)其進(jìn)行更詳細(xì)的討論。在這些實(shí)施例中,同樣作為塊數(shù)據(jù)存儲(chǔ)服務(wù)的用戶的程序執(zhí)行服務(wù)用戶(例如,付費(fèi)使用程序執(zhí)行服務(wù)的程序執(zhí)行服務(wù)客戶)可以執(zhí)行訪問和使用經(jīng)由塊數(shù)據(jù)存儲(chǔ)服務(wù)而提供的非本地塊數(shù)據(jù)存儲(chǔ)卷的程序。在其他實(shí)施例中,單一組織可以提供程序執(zhí)行服務(wù)能力和塊數(shù)據(jù)存儲(chǔ)服務(wù)能力兩者中的至少一些(例如,以集成的方式,如單一服務(wù)的一部分),而在又一些實(shí)施例中,可以在不包括程序執(zhí)行服務(wù)的環(huán)境下提供塊數(shù)據(jù)存儲(chǔ)服務(wù)(例如,向企業(yè)或其他組織內(nèi)部提供以支持該組織的操作)。
[0017]此外,在各種實(shí)施例中,其上執(zhí)行程序的主機(jī)計(jì)算系統(tǒng)可以具有各種形式。例如,多個(gè)這種主機(jī)計(jì)算系統(tǒng)可以在物理位置(例如,數(shù)據(jù)中心)中協(xié)同定位,以及可以由多個(gè)節(jié)點(diǎn)管理器模塊管理,該多個(gè)節(jié)點(diǎn)管理器模塊每一個(gè)都與該主機(jī)計(jì)算系統(tǒng)中的一個(gè)或多個(gè)主機(jī)計(jì)算系統(tǒng)的子集相關(guān)聯(lián)。主機(jī)計(jì)算系統(tǒng)中的至少一些均可以包括充足的計(jì)算資源(例如,易失性存儲(chǔ)器、CPU周期或其他CPU使用測(cè)量、網(wǎng)絡(luò)帶寬、交換空間等)以同時(shí)執(zhí)行多個(gè)程序,以及,在至少一些實(shí)施例中,計(jì)算系統(tǒng)中的一些或全部均可以具有一個(gè)或多個(gè)物理附著的本地塊數(shù)據(jù)存儲(chǔ)設(shè)備(例如,硬盤、磁帶機(jī)等),該物理附著的本地塊數(shù)據(jù)存儲(chǔ)設(shè)備可以用來存儲(chǔ)要執(zhí)行的程序和/或由這種程序使用的數(shù)據(jù)的本地拷貝。此外,在一些這種實(shí)施例中,主機(jī)計(jì)算系統(tǒng)中的至少一些均可以作為多個(gè)虛擬機(jī)計(jì)算節(jié)點(diǎn)的宿主,該多個(gè)虛擬機(jī)計(jì)算節(jié)點(diǎn)均可以代表不同的用戶執(zhí)行一個(gè)或多個(gè)程序,每個(gè)這種主機(jī)計(jì)算系統(tǒng)都具有執(zhí)行中的系統(tǒng)管理程序或其他虛擬機(jī)監(jiān)控器為主機(jī)計(jì)算系統(tǒng)管理虛擬機(jī)。對(duì)于執(zhí)行多個(gè)虛擬機(jī)的主機(jī)計(jì)算系統(tǒng),在一些實(shí)施例中,針對(duì)主機(jī)計(jì)算系統(tǒng)的相關(guān)節(jié)點(diǎn)管理模塊可以在多個(gè)被宿留的(hosted)虛擬機(jī)中的至少一個(gè)上執(zhí)行(例如,作為用于主機(jī)計(jì)算系統(tǒng)的虛擬機(jī)監(jiān)控器的一部分,或者結(jié)合用于主機(jī)計(jì)算系統(tǒng)的虛擬機(jī)監(jiān)控器),而在其他情況下,節(jié)點(diǎn)管理器可以在與正被管理的一個(gè)或多個(gè)其他主機(jī)計(jì)算系統(tǒng)不同的物理計(jì)算系統(tǒng)上執(zhí)行。[0018]在各種實(shí)施例中,在其上存儲(chǔ)了卷的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)也具有各種形式。如前提到的,多個(gè)這種服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)可以例如在物理位置(例如,數(shù)據(jù)中心)中協(xié)同定位,并可以由一個(gè)或多個(gè)BDS系統(tǒng)管理器模塊來管理。在至少一些實(shí)施例中,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一些或全部可以是類似于執(zhí)行程序的主機(jī)計(jì)算系統(tǒng)的物理計(jì)算系統(tǒng),以及在一些這種實(shí)施例中,均可以執(zhí)行服務(wù)器存儲(chǔ)系統(tǒng)軟件以協(xié)助在這些服務(wù)器存儲(chǔ)系統(tǒng)上提供和維持卷。例如,在至少一些實(shí)施例中,一個(gè)或多個(gè)這種服務(wù)器塊數(shù)據(jù)存儲(chǔ)計(jì)算系統(tǒng)可以執(zhí)行BDS系統(tǒng)管理器的至少一部分,例如,在多個(gè)交互的服務(wù)器塊數(shù)據(jù)存儲(chǔ)計(jì)算系統(tǒng)以分布式對(duì)等方式提供一個(gè)或多個(gè)BDS系統(tǒng)管理器模塊的情況下。在其他實(shí)施例中,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的至少一些可以是可能缺少物理計(jì)算系統(tǒng)的一些I/O組件和/或其他組件的網(wǎng)絡(luò)存儲(chǔ)設(shè)備,例如,在由其他遠(yuǎn)程物理計(jì)算系統(tǒng)(例如,由在一個(gè)或多個(gè)其他計(jì)算系統(tǒng)上執(zhí)行的BDS系統(tǒng)管理器模塊)執(zhí)行在這些服務(wù)器存儲(chǔ)系統(tǒng)上對(duì)卷的至少一些提供和維持的情況下。此外,在一些實(shí)施例中,至少一些服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)均維持多個(gè)本地硬盤,并對(duì)一些或所有本地硬盤中的每個(gè)本地硬盤的一部分上的至少一些卷加條紋(stripe)。此夕卜,可以使用用于創(chuàng)建和使用卷的各種類型的技術(shù),包括在一些實(shí)施例中,使用LVM( “邏輯卷管理器”)技術(shù)。
[0019]如前所述,在至少一些實(shí)施例中,一些或所有塊數(shù)據(jù)存儲(chǔ)卷均具有存儲(chǔ)在兩個(gè)或更多不同的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的拷貝,以例如增強(qiáng)卷的可靠性和可用性。通過這樣做,單一服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的故障可以不導(dǎo)致執(zhí)行中的程序?qū)淼脑L問丟失,因?yàn)榭梢詫⑦@些執(zhí)行中的程序?qū)υ摼淼氖褂们袚Q到另一個(gè)具有該卷的拷貝的可用的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)。在這種實(shí)施例中,以各種方式維持多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的卷的多個(gè)拷貝之間的一致性。例如,在一些實(shí)施例中,將服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一個(gè)指定為存儲(chǔ)卷的主拷貝,而將其他的一個(gè)或多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)指定為存儲(chǔ)卷的鏡像拷貝,在這種實(shí)施例中,具有主卷拷貝的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)(稱之為卷的“主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)”)可以接收并處理對(duì)卷的數(shù)據(jù)訪問請(qǐng)求,以及在一些這種實(shí)施例中,還可以采取動(dòng)作來維持其他鏡像卷拷貝的一致性(例如,當(dāng)修改主卷拷貝中的數(shù)據(jù)時(shí),向其他服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)送提供鏡像卷拷貝的更新消息,如,以主從計(jì)算關(guān)系的方式進(jìn)行)??梢允褂酶鞣N類型的卷一致性技術(shù),下面包括了附加細(xì)節(jié)。
[0020]在至少一些實(shí)施例中,所描述的技術(shù)包括:通過管理對(duì)卷的主拷貝和鏡像拷貝的使用,為計(jì)算節(jié)點(diǎn)上的執(zhí)行中的程序提供對(duì)塊數(shù)據(jù)存儲(chǔ)卷的可靠并可用的訪問。例如,在一些實(shí)施例中,執(zhí)行中的程序的節(jié)點(diǎn)管理器可以經(jīng)由主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)獨(dú)自與主卷拷貝進(jìn)行交互,例如,如果主卷拷貝負(fù)責(zé)維持鏡像卷拷貝或者如果使用了另一種復(fù)制機(jī)制。在這種實(shí)施例中,如果在預(yù)定的時(shí)間量內(nèi),主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)沒有成功響應(yīng)節(jié)點(diǎn)管理器發(fā)送的請(qǐng)求(例如,執(zhí)行中的程序發(fā)起的數(shù)據(jù)訪問請(qǐng)求,Ping消息或由節(jié)點(diǎn)管理器發(fā)起的周期性檢查主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)是否可用的其他請(qǐng)求等),或如果以其他方式警告節(jié)點(diǎn)服務(wù)器主卷拷貝不可用(例如,通過來自于BDS系統(tǒng)管理器的消息),節(jié)點(diǎn)管理器可自動(dòng)將其交互切換到鏡像服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的鏡像卷拷貝中的一個(gè)(例如,如果執(zhí)行中的程序進(jìn)行的數(shù)據(jù)訪問請(qǐng)求是超時(shí)并發(fā)起至鏡像卷拷貝的切換的那個(gè)數(shù)據(jù)訪問請(qǐng)求,很可能等待稍長的時(shí)間以獲得對(duì)執(zhí)行中的程序進(jìn)行的數(shù)據(jù)訪問請(qǐng)求的響應(yīng),除此之外,以執(zhí)行中的程序沒有意識(shí)到該切換的方式進(jìn)行)??梢酝ㄟ^各種方式選擇鏡像卷拷貝,例如,如果該鏡像卷拷貝是僅有的一個(gè),如果先前指示了訪問多個(gè)鏡像卷拷貝的順序,通過與BDS系統(tǒng)管理器進(jìn)行交互來請(qǐng)求對(duì)提升哪個(gè)鏡像卷拷貝充當(dāng)主卷拷貝的指示等。在其他實(shí)施例中,至少一些卷可以具有多個(gè)主拷貝,例如,如果卷可用于由多個(gè)執(zhí)行中的程序進(jìn)行同時(shí)讀訪問并且所產(chǎn)生的數(shù)據(jù)訪問負(fù)載散布在卷的多個(gè)主拷貝上,在這種實(shí)施例中,節(jié)點(diǎn)管理器可以選擇以各種方式與之進(jìn)行交互的多個(gè)主卷拷貝中的一個(gè)(例如,以隨機(jī)的方式,基于來自BDS系統(tǒng)管理器模塊的指令等)。
[0021]此外,在各個(gè)實(shí)施例中,BDS系統(tǒng)管理器可以采取各種動(dòng)作來維持計(jì)算節(jié)點(diǎn)上的執(zhí)行中的程序?qū)K數(shù)據(jù)存儲(chǔ)卷的可靠并可用的訪問,具體地,如果BDS系統(tǒng)管理器變得意識(shí)到具體的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)(或具體服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的具體卷)變得不可用,BDS系統(tǒng)管理器可以針對(duì)該服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)存儲(chǔ)的一些或所有卷(或者針對(duì)具體的不可用卷)采取各種動(dòng)作以維持其可用性。例如,針對(duì)不可用的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的每個(gè)存儲(chǔ)的主卷拷貝,BDS系統(tǒng)管理器可以提升已存在的鏡像卷拷貝中的一個(gè)作為新的主卷拷貝,并且可選地將該變化通知給一個(gè)或多個(gè)節(jié)點(diǎn)管理器(例如,當(dāng)前使用該卷的執(zhí)行中的程序的節(jié)點(diǎn)管理器)。此外,針對(duì)每個(gè)存儲(chǔ)的卷拷貝,BDS系統(tǒng)管理器可以發(fā)起在不同的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建該卷的至少一個(gè)其他新鏡像拷貝,例如通過在另一個(gè)可用的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上復(fù)制該卷的已存在的拷貝來進(jìn)行(例如,通過復(fù)制主卷拷貝)。此外,在至少一些實(shí)施例中,在至少一些情況下,通過使用存儲(chǔ)在遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)上的卷的至少部分來協(xié)助復(fù)制該卷的新鏡像拷貝,可以獲得其他好處(例如,更大的數(shù)據(jù)可靠性,最小化用于鏡像卷拷貝的存儲(chǔ)量和/或用以維持卷的全部鏡像拷貝的正在進(jìn)行的處理功率),下面進(jìn)行更詳細(xì)的討論。
[0022]BDS系統(tǒng)管理器可以通過各種方式變得意識(shí)到服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的不可用,例如,基于來自不能接觸到服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的節(jié)點(diǎn)管理器的消息,基于來自服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的消息(例如,指示其已遭受故障情況,已開始關(guān)閉或已開始故障模式操作等),基于不能接觸服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,基于對(duì)一些或所有服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的周期性或持續(xù)的監(jiān)控)等。此外,在各個(gè)實(shí)施例中,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的不可用可以由各種事件導(dǎo)致,例如,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)在其上存儲(chǔ)了一個(gè)或多個(gè)卷的至少部分的一個(gè)或多個(gè)硬盤或其他存儲(chǔ)介質(zhì)的故障,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的其他組件的故障(例如,CPU、存儲(chǔ)器、風(fēng)扇等),服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的電源故障(例如,單一服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的電源故障,一個(gè)架的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的電源故障,整個(gè)數(shù)據(jù)中心的電源故障等),阻礙服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)與節(jié)點(diǎn)管理器和/或BDS系統(tǒng)管理器通信的網(wǎng)絡(luò)或其他通信故障等。在一些實(shí)施例中,可以將服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的任何組件的故障或問題視為整個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的不可用狀況(例如,在服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)維持多個(gè)本地硬盤的實(shí)施例中,任何本地硬盤的故障或問題可被視為整個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的不可用狀況),而在其他實(shí)施例中,只要其能夠響應(yīng)數(shù)據(jù)訪問請(qǐng)求,便不將服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)視為不可用。
[0023]此外,在已存在的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)變得不可用時(shí),除了將一個(gè)或多個(gè)卷從該服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng)外,在一些實(shí)施例中,BDS系統(tǒng)管理器決定將一個(gè)或多個(gè)卷從已存在的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng)到不同的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng),和/或決定在各種其他時(shí)刻并出于各種其他理由創(chuàng)建一個(gè)或多個(gè)卷的新拷貝??梢圆捎门c其他地方更詳細(xì)地討論的方式類似的方式來執(zhí)行對(duì)卷的新拷貝的這種移動(dòng)或創(chuàng)建(例如,通過復(fù)制該卷的主拷貝以創(chuàng)建新拷貝,以及通過可選地在至少一些情況下(例如,當(dāng)正在移動(dòng)卷拷貝時(shí))移除卷的在先拷貝)。例如,促使卷移動(dòng)或新卷拷貝創(chuàng)建的情況包括以下非排他列表:具體的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)可能變得過度使用(例如,基于CPU的使用率、網(wǎng)絡(luò)帶寬、I/O訪問、存儲(chǔ)裝置容量等),例如從而觸發(fā)一個(gè)或多個(gè)卷從該服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng);具體的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)可能缺少充足的資源以對(duì)已存在的卷進(jìn)行所期望的修改(例如,如果請(qǐng)求擴(kuò)展已存在的卷的大小,則可能缺少充足的可用存儲(chǔ)空間),從而例如觸發(fā)一個(gè)或多個(gè)卷從該服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng);具體的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)可能需要將會(huì)導(dǎo)致其在一段時(shí)間內(nèi)不可用的維護(hù)或升級(jí),從而例如觸發(fā)一個(gè)或多個(gè)卷從該服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)暫時(shí)或永久移動(dòng);基于認(rèn)識(shí)到可以在其他服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,具有附加容量的另一服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng))(對(duì)于頻繁進(jìn)行數(shù)據(jù)修改的卷,使用具有高于平均的盤寫入容量的主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng);和/或?qū)τ诖笮》浅4蟮木?,使用具有高于平均的存?chǔ)容量的主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng))上更好地供應(yīng)具體卷的使用模式或卷的其他特性;響應(yīng)于來自創(chuàng)建了卷或以其他方式與卷相關(guān)聯(lián)的用戶的請(qǐng)求(例如,響應(yīng)于購買對(duì)具有增強(qiáng)容量的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的高級(jí)訪問);在執(zhí)行程序的不同地理位置(如,另一個(gè)數(shù)據(jù)中心)處提供卷的至少一個(gè)新拷貝,從而例如當(dāng)請(qǐng)求由執(zhí)行中的程序在另一地理位置處使用卷時(shí),觸發(fā)從第一地理位置處的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng)和/或拷貝該卷;等等。
[0024]此外,在移動(dòng)了卷或者創(chuàng)建了新拷貝之后,在一些實(shí)施例和情況中,BDS系統(tǒng)管理器可以在適當(dāng)時(shí)更新一個(gè)或多個(gè)節(jié)點(diǎn)管理器(例如,僅用于當(dāng)前使用卷的執(zhí)行中的程序的節(jié)點(diǎn)管理器、所有的節(jié)點(diǎn)管理器等等)。在其他實(shí)施例中,可以以其他方式維持關(guān)于卷的各種信息,例如通過具有卷信息數(shù)據(jù)庫的一個(gè)或多個(gè)拷貝,該卷信息數(shù)據(jù)庫是節(jié)點(diǎn)管理器和/或BDS系統(tǒng)管理器可進(jìn)行網(wǎng)絡(luò)訪問的。關(guān)于卷的可維持信息的類型的非排他性列表包括以下各項(xiàng):卷的標(biāo)識(shí)符,例如對(duì)存儲(chǔ)卷的拷貝的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)而言唯一的標(biāo)識(shí)符,或者對(duì)于塊數(shù)據(jù)存儲(chǔ)服務(wù)而言全局唯一的標(biāo)識(shí)符;卷的限制訪問信息,例如密碼或加密密鑰,或者卷的授權(quán)用戶的列表或其他指示;關(guān)于卷的主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的信息,例如網(wǎng)絡(luò)地址和/或其他訪問信息;關(guān)于卷的一個(gè)或多個(gè)鏡像服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的信息,例如關(guān)于如果已存在的主服務(wù)器存儲(chǔ)系統(tǒng)變得不可用,指示哪一個(gè)鏡像服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)將被提升為主系統(tǒng)的排序的信息,網(wǎng)絡(luò)地址和/或其他訪問信息等;關(guān)于已經(jīng)針對(duì)卷創(chuàng)建的任何快照卷拷貝的信息,下面將對(duì)其進(jìn)行更詳細(xì)的描述;關(guān)于卷是否對(duì)用戶而不是卷的創(chuàng)建者可用的信息,以及關(guān)于如果卷對(duì)用戶可用那么在什么情形下可用的信息(例如,用于只讀訪問,用于其他用戶制造其自己的作為該卷的拷貝的卷,針對(duì)其他用戶接收對(duì)該卷的各種類型的訪問的價(jià)格信息);等等。
[0025]除了在服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)變得不可用時(shí),通過移動(dòng)或以其他方式復(fù)制卷拷貝來維持執(zhí)行中的程序?qū)K數(shù)據(jù)存儲(chǔ)卷的可靠和有效訪問,塊數(shù)據(jù)存儲(chǔ)服務(wù)還在其他環(huán)境中執(zhí)行其他動(dòng)作來維持執(zhí)行中的程序?qū)K數(shù)據(jù)存儲(chǔ)卷的訪問。例如,在一些實(shí)施例中,如果第一執(zhí)行中的程序出乎意料地變得不可用,塊數(shù)據(jù)存儲(chǔ)服務(wù)和/或程序執(zhí)行服務(wù)可以采取動(dòng)作來使得不同的第二執(zhí)行中程序(例如,在不同的主機(jī)計(jì)算系統(tǒng)上執(zhí)行的相同程序的第二拷貝)附著到不可用的第一程序正在使用的一些或全部塊數(shù)據(jù)存儲(chǔ)卷,以使得第二程序可以快速接管不可用的第一程序的至少一些操作。在一些實(shí)施例中,第二程序可以是其執(zhí)行由已存在的第一程序的不可用性發(fā)起的新程序,而在其他情況下,第二程序可以是已經(jīng)正在執(zhí)行中(例如,如果同時(shí)執(zhí)行多個(gè)程序拷貝,以共享工作的總負(fù)載,例如接收由負(fù)載平衡器轉(zhuǎn)接的不同傳入客戶請(qǐng)求的多個(gè)Web服務(wù)器程序,該多個(gè)程序拷貝中的一個(gè)被選擇為第二程序;如果第二程序是正在執(zhí)行的程序的備用副本,以允許在不可用的情況下從已存在的第一程序進(jìn)行“熱”交換,例如不活躍地使用該備用程序的拷貝,直到發(fā)生已存在的第一程序不可用;等等)。此外,在一些實(shí)施例中,已存在的卷的附著和正在進(jìn)行的使用所切換至的第二程序可以在與第一程序相同的地理位置(例如,相同的數(shù)據(jù)中心)中的另一個(gè)主機(jī)物理計(jì)算系統(tǒng)上,而在其他實(shí)施例中,第二程序可以在不同的地理位置處(例如,不同的數(shù)據(jù)中心,例如與先前或同時(shí)移動(dòng)到該其他數(shù)據(jù)中心并將為第二程序所用的卷的拷貝相協(xié)同)。此外,在一些實(shí)施例中,可以采取其他相關(guān)動(dòng)作來進(jìn)一步便于切換至第二程序,例如,通過將目的地為不可用的第一程序的一些通信重定向到第二程序。
[0026]此外,在至少一些實(shí)施例中,可以使用其他技術(shù)來提供對(duì)塊數(shù)據(jù)存儲(chǔ)卷的可靠和可用訪問,以及提供其他好處,例如出于長期備份和/或其他目的,例如使得可以將所指示的卷的拷貝保存到一個(gè)或多個(gè)遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)(例如,在遠(yuǎn)離第一地理位置和/或遠(yuǎn)離主機(jī)物理計(jì)算系統(tǒng)的第二地理位置處,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)在該第一地理位置處存儲(chǔ)卷的活躍的主拷貝和鏡像拷貝,主機(jī)物理計(jì)算系統(tǒng)執(zhí)行使用該卷的程序)。例如,在一些實(shí)施例中,可以由可遠(yuǎn)程網(wǎng)絡(luò)訪問的存儲(chǔ)服務(wù)來提供檔案存儲(chǔ)系統(tǒng)。此外,在至少一些情況下,保存到檔案存儲(chǔ)系統(tǒng)的卷的拷貝可以是卷在特殊時(shí)間點(diǎn)處的快照拷貝,然而當(dāng)正在進(jìn)行的對(duì)該卷的使用導(dǎo)致其存儲(chǔ)的塊數(shù)據(jù)內(nèi)容改變時(shí),該卷的拷貝不自動(dòng)更新,和/或該卷的拷貝不可以通過與卷相同的方式用于附著到執(zhí)行中的程序并為該執(zhí)行中的程序所使用。從而,作為一個(gè)示例,例如可以將卷的長期快照拷貝用作卷的備份拷貝,并且在一些實(shí)施例中,還可以將卷的長期快照拷貝用作從該快照拷貝創(chuàng)建的一個(gè)或多個(gè)新卷的基礎(chǔ)(例如,以使得新卷能夠以和快照拷貝相同的塊數(shù)據(jù)存儲(chǔ)內(nèi)容開始)。
[0027]此外,可以采用各種方式存儲(chǔ)檔案存儲(chǔ)系統(tǒng)處的卷的快照拷貝,以便例如表示卷的更小的段(例如,如果檔案存儲(chǔ)系統(tǒng)將數(shù)據(jù)存儲(chǔ)為更小的對(duì)象而不是數(shù)據(jù)的大的線性的順序塊)。例如,可以將卷表示為一系列的多個(gè)較小的段(卷大小為例如一個(gè)千兆字節(jié)或一個(gè)百萬兆字節(jié),段大小為例如幾兆字節(jié)),以及可以將關(guān)于一些或所有段(例如,每個(gè)被修改的段)的信息分離地存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上,例如通過將每個(gè)段視為不同的存儲(chǔ)對(duì)象。此外,在至少一些實(shí)施例中,采用僅對(duì)卷的在先快照拷貝的遞增改變進(jìn)行存儲(chǔ)的這種方式,可以創(chuàng)建具體卷的第二和后續(xù)快照拷貝,例如通過包括所存儲(chǔ)的自在先快照拷貝以來創(chuàng)建或修改的新存儲(chǔ)段的拷貝,但如果這些段未被改變,則與在先快照拷貝共享一些先前已存在的段的所存儲(chǔ)的拷貝。在這些實(shí)施例中,如果后來刪除了在先快照拷貝,則可以保留由該在先快照拷貝存儲(chǔ)的、被任何后續(xù)快照拷貝所共享的先前已存在的段,以供這些后續(xù)快照拷貝所使用,同時(shí)可以刪除由該在先快照拷貝存儲(chǔ)的未共享的先前已存在的段。
[0028]此外,在至少一些實(shí)施例中,當(dāng)在一個(gè)時(shí)間點(diǎn)處創(chuàng)建卷的快照拷貝時(shí),可以允許執(zhí)行中的程序繼續(xù)對(duì)主卷拷貝的訪問,包括允許對(duì)存儲(chǔ)在主卷拷貝中的數(shù)據(jù)的修改,而不將任何這種正在進(jìn)行的數(shù)據(jù)修改反映到快照拷貝中,例如在快照拷貝基于在檔案存儲(chǔ)系統(tǒng)上存儲(chǔ)的、一旦快照拷貝創(chuàng)建開始直到快照拷貝創(chuàng)建完成都沒有更新的卷段的情況下。例如,在至少一些實(shí)施例中,在發(fā)起對(duì)卷的快照拷貝的創(chuàng)建并在隨后修改該卷的段時(shí),使用寫時(shí)拷貝(copy-onirite)技術(shù),以例如在初始時(shí)在存儲(chǔ)主卷拷貝的主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上維持所存儲(chǔ)的未修改段和已修改段的拷貝(以及可選地,也在存儲(chǔ)卷的一個(gè)或多個(gè)鏡像拷貝的鏡像服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上進(jìn)行)。當(dāng)接收到對(duì)檔案存儲(chǔ)系統(tǒng)已經(jīng)成功存儲(chǔ)卷的快照拷貝(包括未修改段的拷貝)的確認(rèn)時(shí),便可以刪除在主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的未修改的段拷貝(以及可選地,在鏡像服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上進(jìn)行)。
[0029]此外,在至少一些實(shí)施例中,可以通過其他方式使用在檔案存儲(chǔ)系統(tǒng)上存儲(chǔ)的這種卷段或其他卷數(shù)據(jù),以例如使用檔案存儲(chǔ)系統(tǒng)來作為一些或所有卷的主拷貝和/或鏡像拷貝的后備存儲(chǔ)。例如,在至少一些情況下,可以使用檔案存儲(chǔ)系統(tǒng)上存儲(chǔ)的卷數(shù)據(jù)來協(xié)助維持在多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的卷的多個(gè)拷貝之間的一致性。作為示例,可以至少部分基于檔案存儲(chǔ)系統(tǒng)上存儲(chǔ)的卷段來創(chuàng)建或更新卷的一個(gè)或多個(gè)鏡像拷貝,以例如最小化或消除訪問主卷拷貝以獲得至少一些卷段的需要。例如,如果與檔案存儲(chǔ)系統(tǒng)上已修改的段相比,更快或更可靠地更新了主卷拷貝,便可以通過使用檔案存儲(chǔ)系統(tǒng)上存儲(chǔ)的已知正確的至少一些卷段(例如,來自最近的快照卷拷貝),以及通過訪問主卷拷貝來僅獲得與在快照卷拷貝的創(chuàng)建之后可能已被修改的段相對(duì)應(yīng)的卷的部分,來創(chuàng)建新的鏡像卷拷貝。類似地,如果檔案存儲(chǔ)系統(tǒng)上已修改的段可靠地反映出主卷拷貝的當(dāng)前狀態(tài),便可以使用這些已修改的段而不是經(jīng)由主卷拷貝進(jìn)行的交互或者與主卷拷貝的交互來更新鏡像卷拷貝。
[0030]此外,在一些實(shí)施例中,存儲(chǔ)在鏡像卷拷貝中的數(shù)據(jù)量(以及所導(dǎo)致的鏡像卷拷貝的大小)可以比存儲(chǔ)在卷的主拷貝中的數(shù)據(jù)量少得多,例如在使用檔案存儲(chǔ)系統(tǒng)上的卷信息來代替否則可以在這種最小鏡像卷拷貝中存儲(chǔ)的至少一些數(shù)據(jù)的情況下。作為一個(gè)示例,一旦在一個(gè)或多個(gè)檔案存儲(chǔ)系統(tǒng)上創(chuàng)建卷的快照拷貝,在這種實(shí)施例中,卷的最小鏡像拷貝便不必存儲(chǔ)存在于快照卷拷貝中的任何卷數(shù)據(jù)。當(dāng)在快照拷貝創(chuàng)建后對(duì)主卷拷貝進(jìn)行修改時(shí),也可以對(duì)最小鏡像卷拷貝進(jìn)行一些或所有的這些數(shù)據(jù)修改(例如,所有的數(shù)據(jù)修改,僅在檔案存儲(chǔ)系統(tǒng)上存儲(chǔ)的已修改的卷段中沒有反映出的數(shù)據(jù)修改,等等),然后,如果后來需要訪問最小鏡像卷拷貝,例如在將最小鏡像卷拷貝提升為主卷拷貝的情況下,可以通過從檔案存儲(chǔ)系統(tǒng)(例如,從在先快照卷拷貝)中進(jìn)行取回,來恢復(fù)從最小鏡像卷拷貝中丟失的其他數(shù)據(jù)(例如,卷的未修改的部分)。以這種方式,可以增強(qiáng)卷的可靠性,同時(shí)還最小化了在服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上針對(duì)鏡像卷拷貝使用的存儲(chǔ)空間的量。
[0031]在又一個(gè)實(shí)施例中,可以在檔案存儲(chǔ)系統(tǒng)上維持卷的確定的拷貝或主拷貝,并且卷的主拷貝和鏡像拷貝可以反映卷的高速緩存或其他子集(例如,最近已訪問的子集和/或期望立刻訪問的子集),在這種實(shí)施例中,可以使用塊數(shù)據(jù)存儲(chǔ)服務(wù)的非本地塊數(shù)據(jù)存儲(chǔ)卷來提供與遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)相比,用于由執(zhí)行中的程序訪問的更接近的卷數(shù)據(jù)源。此外,在至少一些這種實(shí)施例中,向用戶可以將卷描述為具有與檔案存儲(chǔ)系統(tǒng)上維持的主拷貝相對(duì)應(yīng)的具體大小,然而主拷貝和鏡像拷貝的大小更小。此外,在至少一些實(shí)施例中,可以使用惰性更新(lazy updating)技術(shù),以立即更新第一數(shù)據(jù)存儲(chǔ)裝置中的數(shù)據(jù)拷貝(例如,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的主卷拷貝),而之后在不同的第二數(shù)據(jù)存儲(chǔ)裝置(例如,檔案存儲(chǔ)系統(tǒng))中更新該相同數(shù)據(jù)的拷貝,例如,通過以下方式來維持第二數(shù)據(jù)存儲(chǔ)裝置處嚴(yán)格的數(shù)據(jù)一致性:在從第二數(shù)據(jù)存儲(chǔ)裝置執(zhí)行任何后續(xù)的讀操作或?qū)淼牟糠值钠渌L問之前,確保在第二數(shù)據(jù)存儲(chǔ)裝置處對(duì)卷的該部分的寫操作或其他數(shù)據(jù)修改進(jìn)行更新(例如,通過使用寫回(write-back)高速緩存更新技術(shù))。例如,當(dāng)對(duì)在檔案存儲(chǔ)系統(tǒng)上的卷的已修改段進(jìn)行更新時(shí),或者當(dāng)更新來自于存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上的卷的已修改段的鏡像卷拷貝時(shí),可以使用這種惰性更新技術(shù)。在其他實(shí)施例中,當(dāng)更新檔案存儲(chǔ)系統(tǒng)上的卷的已修改段時(shí),可以使用其他技術(shù),以例如在對(duì)第一數(shù)據(jù)存儲(chǔ)裝置中的數(shù)據(jù)拷貝進(jìn)行修改時(shí),使用直寫(write-through)高速緩存技術(shù)來立即更新第二數(shù)據(jù)存儲(chǔ)裝置中(例如,在檔案存儲(chǔ)系統(tǒng)上)的數(shù)據(jù)拷貝。
[0032]在檔案存儲(chǔ)系統(tǒng)上存儲(chǔ)的這種快照卷拷貝也提供了各種其他好處。例如,如果將卷的所有主拷貝和鏡像拷貝存儲(chǔ)在單一地理位置(例如,數(shù)據(jù)中心)處的多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上,并且該地理位置處的計(jì)算和存儲(chǔ)系統(tǒng)變得不可用(例如,整個(gè)數(shù)據(jù)中心掉電)時(shí),在不同遠(yuǎn)程存儲(chǔ)位置處的卷最新的快照拷貝的存在確保了當(dāng)該地理位置處的計(jì)算和存儲(chǔ)系統(tǒng)后來變得再次可用(例如,當(dāng)電恢復(fù)時(shí))時(shí),卷的最新版本也是可用的,例如在來自于該地理位置處的一個(gè)或多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)的數(shù)據(jù)丟失的情況下。此外,在這種情況下,基于來自于遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)的卷的最新長期快照拷貝,可以在一個(gè)或多個(gè)新的地理位置處創(chuàng)建卷的一個(gè)或多個(gè)新拷貝,以例如使得在不可用的地理位置之外的一個(gè)或多個(gè)執(zhí)行中的程序拷貝可以訪問和使用這些新的卷拷貝。下面包括了涉及檔案存儲(chǔ)系統(tǒng)的附加細(xì)節(jié)及其使用。
[0033]如前所述,在至少一些實(shí)施例中,一些或所有的塊數(shù)據(jù)存儲(chǔ)卷中均具有存儲(chǔ)在單一地理位置處(例如,在執(zhí)行中的程序?qū)⒃谄渲性L問該卷的相同數(shù)據(jù)中心內(nèi))的兩個(gè)或更多不同的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的拷貝,通過將所有的卷拷貝和執(zhí)行中的程序放置在相同的數(shù)據(jù)中心或其他地理位置處,可以維持各種期望的數(shù)據(jù)訪問特性(例如,基于該數(shù)據(jù)中心或其他地理位置處的一個(gè)或多個(gè)內(nèi)部網(wǎng)),例如延時(shí)和吞吐量。例如,在至少一些實(shí)施例中,所描述的技術(shù)可以提供對(duì)非本地塊數(shù)據(jù)存儲(chǔ)裝置的訪問,該非本地塊數(shù)據(jù)存儲(chǔ)裝置具有與本地物理塊數(shù)據(jù)存儲(chǔ)設(shè)備的訪問特性相似或更好的訪問特性,但具有大得多的可靠性,該可靠性類似于或超過RAID(“獨(dú)立/廉價(jià)磁盤冗余陣列”)系統(tǒng)和/或?qū)S玫腟AN(“存儲(chǔ)區(qū)網(wǎng)絡(luò)”)的可靠性特性,并且成本低得多。在其他實(shí)施例中,可以代之以通過其他方式存儲(chǔ)至少一些卷的主拷貝和鏡像拷貝,例如在不同的地理位置(例如,不同的數(shù)據(jù)中心)處存儲(chǔ),以例如即使在整個(gè)數(shù)據(jù)中心都變得不可用時(shí),也進(jìn)一步維持了卷的可用性。在可以在不同地理位置處存儲(chǔ)卷拷貝的實(shí)施例中,在一些情況下,用戶可以請(qǐng)求接近于具體的卷來執(zhí)行具體程序(例如,在主卷拷貝所位于的相同數(shù)據(jù)中心處),或者將具體的卷接近于具體的執(zhí)行中的程序來放置,以便例如向執(zhí)行中的程序和主卷拷貝之間的通信提供相對(duì)較高的網(wǎng)絡(luò)帶寬和較低的延時(shí)。
[0034]此外,在一些實(shí)施例中,以基于費(fèi)用或其他支付的方式來為至少一些用戶提供對(duì)一些或所有所描述的技術(shù)的使用。例如,用戶可以支付一次性費(fèi)用、周期性(例如,每月)費(fèi)用和/或一種或多種類型的基于使用的費(fèi)用,以使用塊數(shù)據(jù)存儲(chǔ)服務(wù)來存儲(chǔ)和訪問卷,以使用程序執(zhí)行服務(wù)來執(zhí)行程序,和/或以使用檔案存儲(chǔ)系統(tǒng)(例如,由遠(yuǎn)程的長期存儲(chǔ)服務(wù)提供)來存儲(chǔ)卷的長期備份或其他快照拷貝。費(fèi)用可以基于一種或多種因素和行為,例如以下非排他性列表所指示的因素和行為:基于卷的大小,以例如創(chuàng)建卷(例如,當(dāng)一次性費(fèi)用時(shí)),以具有正在進(jìn)行的卷的存儲(chǔ)和/或卷的使用(例如,每月費(fèi)用)等;基于卷的非大小特性,例如鏡像拷貝的數(shù)目、在其上存儲(chǔ)了主卷拷貝和/或鏡像卷拷貝的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的特性(例如,數(shù)據(jù)訪問速率、存儲(chǔ)大小等)、和/或創(chuàng)建卷的方式(例如,空的新卷、作為已存在的卷的拷貝的新卷、作為快照卷拷貝的拷貝的新卷等);基于快照卷拷貝的大小,以例如創(chuàng)建快照卷拷貝(例如,當(dāng)一次性費(fèi)用時(shí))和/或具有卷的正在進(jìn)行的存儲(chǔ)(例如,每月費(fèi)用);基于一個(gè)或多個(gè)快照卷拷貝的非大小特性,例如單一卷的快照的數(shù)目,快照拷貝是否相對(duì)于一個(gè)或多個(gè)在先快照拷貝而遞增等等;基于卷的使用率,例如傳送至卷和/或從卷傳送的數(shù)據(jù)量(例如,以反映所使用的網(wǎng)絡(luò)帶寬的量),向卷發(fā)送的數(shù)據(jù)訪問請(qǐng)求的數(shù)目,附著于卷并使用卷的執(zhí)行中的程序的數(shù)目等等;基于傳送至快照和/或從快照傳送的數(shù)據(jù)量,例如以類似于針對(duì)卷的方式進(jìn)行。此外,在各個(gè)實(shí)施例中,所提供的訪問可以具有各種形式,例如一次性購買費(fèi)用,正在進(jìn)行的租賃費(fèi)用和/或基于另一正在進(jìn)行的訂閱標(biāo)準(zhǔn)。此外,在至少一些實(shí)施例或情況下,一個(gè)或多個(gè)用戶的第一組可以在基于費(fèi)用的基礎(chǔ)上向其他用戶提供數(shù)據(jù),以例如為了接收對(duì)第一組的一個(gè)或多個(gè)用戶創(chuàng)建的當(dāng)前卷和/或歷史快照卷拷貝的訪問而向該其他用戶收費(fèi)(例如,通過允許其產(chǎn)生作為卷和/或快照卷拷貝的拷貝的新卷;通過允許其使用一個(gè)或多個(gè)已創(chuàng)建的卷;等等),不管是作為一次性購買費(fèi)用,正在進(jìn)行的租賃費(fèi)用和/或基于另一正在進(jìn)行的訂閱。
[0035]在一些實(shí)施例中,塊數(shù)據(jù)存儲(chǔ)服務(wù)、程序執(zhí)行服務(wù)和/或遠(yuǎn)程長期存儲(chǔ)服務(wù)可以提供一個(gè)或多個(gè)API ( “應(yīng)用編程接口 ”),以使得可以允許其他程序計(jì)劃性地初始化要執(zhí)行的各種類型的操作(例如,在其他程序的用戶的指引下)。這種操作可以允許調(diào)用先前所描述類型的功能,并且這種操作包括但不限于以下類型的操作:創(chuàng)建、刪除、附著、去附著或者描述卷;創(chuàng)建、刪除、拷貝或者描述快照;指定針對(duì)卷和/或快照的訪問權(quán)或其他元數(shù)據(jù);管理程序的執(zhí)行;提供支付以獲得其他類型的功能;獲得與對(duì)一個(gè)或多個(gè)服務(wù)的能力的使用有關(guān)和/或與為這種使用所支付或所欠的費(fèi)用有關(guān)的報(bào)告和其他信息;等等。例如,在程序執(zhí)行服務(wù)的主機(jī)計(jì)算系統(tǒng)上的執(zhí)行中的程序和/或客戶或其他用戶的計(jì)算系統(tǒng)可以調(diào)用API提供的操作,該客戶或其他用戶在塊數(shù)據(jù)存儲(chǔ)服務(wù)和/或程序執(zhí)行服務(wù)所使用的一個(gè)或多個(gè)地理位置之外。
[0036]出于示意性的目的,下面描述以特定方式向在特定類型的計(jì)算系統(tǒng)上執(zhí)行的特定類型的程序提供特定類型的塊數(shù)據(jù)存儲(chǔ)的一些實(shí)施例。這些示例是出于示意性的目的而提供的,并且為了簡(jiǎn)要進(jìn)行了簡(jiǎn)化,并且該發(fā)明性的技術(shù)可被用在其他各種情況下,其中一些情況將在下面討論,該技術(shù)不限于與虛擬機(jī)、數(shù)據(jù)中心或其他特定類型的數(shù)據(jù)存儲(chǔ)系統(tǒng)、計(jì)算系統(tǒng)或計(jì)算系統(tǒng)布置一起使用。此外,雖然將一些實(shí)施例描述為提供并使用可靠的非本地塊數(shù)據(jù)存儲(chǔ)裝置,在其他實(shí)施例中,可以類似地提供除塊數(shù)據(jù)存儲(chǔ)外的各種類型的數(shù)據(jù)存儲(chǔ)。
[0037]圖1是示意了示例實(shí)施例的網(wǎng)絡(luò)圖,在該示例實(shí)施例中,例如,在塊數(shù)據(jù)存儲(chǔ)服務(wù)和/或程序執(zhí)行服務(wù)的控制下,多個(gè)計(jì)算系統(tǒng)執(zhí)行程序并訪問可靠的非本地塊數(shù)據(jù)存儲(chǔ)裝置。具體地,在本示例中,程序執(zhí)行服務(wù)對(duì)位于數(shù)據(jù)中心100內(nèi)的各種主機(jī)計(jì)算系統(tǒng)上的程序的執(zhí)行進(jìn)行管理,并且,塊數(shù)據(jù)存儲(chǔ)服務(wù)使用該數(shù)據(jù)中心處的多個(gè)其他服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)來向這些執(zhí)行中的程序提供可靠的非本地塊數(shù)據(jù)存儲(chǔ)裝置。還可以使用數(shù)據(jù)中心外部的多個(gè)遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)來存儲(chǔ)至少一些塊數(shù)據(jù)存儲(chǔ)卷的至少一些部分的附加拷貝。
[0038]在本示例中,數(shù)據(jù)中心100包括多個(gè)架105,每個(gè)架包括多個(gè)主機(jī)計(jì)算系統(tǒng),以及在該示例實(shí)施例中,還包括可選的架支撐計(jì)算系統(tǒng)122。該該示例中,所示意的架105上的主機(jī)計(jì)算系統(tǒng)lOOa-c均作為一個(gè)或多個(gè)虛擬機(jī)120的宿主,還作為與主機(jī)計(jì)算系統(tǒng)上的虛擬機(jī)相關(guān)聯(lián)的用于管理這些虛擬機(jī)的不同的節(jié)點(diǎn)管理器模塊115的宿主。在本示例中,一個(gè)或多個(gè)其他主機(jī)計(jì)算系統(tǒng)135中的每一個(gè)也作為一個(gè)或多個(gè)虛擬機(jī)120的宿主。每個(gè)虛擬機(jī)120可以充當(dāng)用于針對(duì)用戶(未示出)執(zhí)行一個(gè)或多個(gè)程序拷貝(未示出)的獨(dú)立計(jì)算節(jié)點(diǎn),該用戶例如是程序執(zhí)行服務(wù)的客戶。此外,該示例數(shù)據(jù)中心100還包括附加的主機(jī)計(jì)算系統(tǒng)130a_b,附加的主機(jī)計(jì)算系統(tǒng)130a_b不包括不同的虛擬機(jī),但是均仍可以充當(dāng)針對(duì)用戶而執(zhí)行的一個(gè)或多個(gè)程序(未示出)的計(jì)算節(jié)點(diǎn)。在本示例中,在與主機(jī)計(jì)算系統(tǒng)130a-b和135不同的計(jì)算系統(tǒng)(未示出)上執(zhí)行的節(jié)點(diǎn)管理器模塊125與這些主機(jī)計(jì)算系統(tǒng)相關(guān)聯(lián),以管理這些主機(jī)計(jì)算系統(tǒng)提供的計(jì)算節(jié)點(diǎn),例如以類似于主機(jī)計(jì)算系統(tǒng)110的節(jié)點(diǎn)管理器模塊115的方式來管理。架支撐計(jì)算系統(tǒng)122可以針對(duì)其架105本地的其他計(jì)算系統(tǒng)以及可能向位于數(shù)據(jù)中心中的其他計(jì)算系統(tǒng)提供各種公用事業(yè)服務(wù)(例如,長期程序存儲(chǔ)、程序執(zhí)行的計(jì)量和其他監(jiān)控和/或由該架本地的其他計(jì)算系統(tǒng)執(zhí)行的非本地塊數(shù)據(jù)存儲(chǔ)訪問的計(jì)量和其他監(jiān)控等等)。每個(gè)計(jì)算系統(tǒng)110、130和135還可以具有一個(gè)或多個(gè)本地附著的存儲(chǔ)設(shè)備(未示出),以便例如存儲(chǔ)執(zhí)行中的程序所創(chuàng)建或使用的程序和/或數(shù)據(jù)的本地拷貝,以及每個(gè)計(jì)算系統(tǒng)110、130和135還可以具有各種其他組件。
[0039]在本示例中,還示意了可選的計(jì)算系統(tǒng)140,可選的計(jì)算系統(tǒng)140執(zhí)行針對(duì)程序執(zhí)行服務(wù)的PES系統(tǒng)管理器模塊,以協(xié)助管理位于數(shù)據(jù)中心內(nèi)的主機(jī)計(jì)算系統(tǒng)(或者可選地,位于一個(gè)或多個(gè)其他數(shù)據(jù)中心160中的計(jì)算系統(tǒng),或者數(shù)據(jù)中心外部的其他遠(yuǎn)程計(jì)算系統(tǒng)180)提供的計(jì)算節(jié)點(diǎn)上的程序執(zhí)行。如其他地方更詳細(xì)地討論的,除了對(duì)程序的執(zhí)行進(jìn)行管理外,PES系統(tǒng)管理器模塊還可以提供多種服務(wù),包括:用戶賬戶的管理(例如,創(chuàng)建、刪除、計(jì)費(fèi)等);要執(zhí)行的程序的注冊(cè)、存儲(chǔ)和分發(fā);與程序的執(zhí)行有關(guān)的性能和審核數(shù)據(jù)的收集和處理;從客戶或其他用戶獲得針對(duì)程序的執(zhí)行的支付;等等。在一些實(shí)施例中,PES系統(tǒng)管理器模塊可以與節(jié)點(diǎn)管理器模塊115和125進(jìn)行協(xié)調(diào)以管理與節(jié)點(diǎn)管理器模塊相關(guān)聯(lián)的計(jì)算節(jié)點(diǎn)上的程序執(zhí)行,而在其他實(shí)施例中,節(jié)點(diǎn)管理器模塊115和125可以不協(xié)助管理這種程序執(zhí)行。
[0040]該示例數(shù)據(jù)中心100還包括計(jì)算系統(tǒng)175,計(jì)算系統(tǒng)175執(zhí)行針對(duì)塊數(shù)據(jù)存儲(chǔ)服務(wù)的塊數(shù)據(jù)存儲(chǔ)(“BDS”)系統(tǒng)管理器模塊,以協(xié)助管理非本地塊數(shù)據(jù)存儲(chǔ)裝置對(duì)在計(jì)算節(jié)點(diǎn)上執(zhí)行的程序的可用性,該計(jì)算節(jié)點(diǎn)由位于數(shù)據(jù)中心內(nèi)的主機(jī)計(jì)算系統(tǒng)提供(或者可選地,在位于一個(gè)或多個(gè)其他數(shù)據(jù)中心160中的計(jì)算系統(tǒng)或者數(shù)據(jù)中心外部的其他遠(yuǎn)程計(jì)算系統(tǒng)180上)。具體地,在本示例中,數(shù)據(jù)中心100包括多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165的池,該多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165中的每一個(gè)具有用于存儲(chǔ)一個(gè)或多個(gè)卷拷貝155的本地塊存儲(chǔ)裝置。在內(nèi)部網(wǎng)絡(luò)185上向在計(jì)算節(jié)點(diǎn)120和130上執(zhí)行的程序提供對(duì)卷拷貝155的訪問。如在其他地方更詳細(xì)地討論的,BDS系統(tǒng)管理器模塊可以提供與提供非本地塊數(shù)據(jù)存儲(chǔ)功能有關(guān)的多種服務(wù),包括:用戶賬戶的管理(例如,創(chuàng)建、刪除、計(jì)費(fèi)等);塊數(shù)據(jù)存儲(chǔ)卷和這些卷的快照拷貝的創(chuàng)建、使用和刪除;與塊數(shù)據(jù)存儲(chǔ)卷和這些卷的快照拷貝的使用有關(guān)的性能和審核數(shù)據(jù)的收集和處理;從客戶或其他用戶獲得針對(duì)塊數(shù)據(jù)存儲(chǔ)卷和這些卷的快照拷貝的使用的支付;等等。在一些實(shí)施例中,BDS系統(tǒng)管理器模塊可以與節(jié)點(diǎn)管理器模塊115和125進(jìn)行協(xié)調(diào)以管理在相關(guān)聯(lián)的計(jì)算節(jié)點(diǎn)上執(zhí)行的程序?qū)淼氖褂茫谄渌麑?shí)施例中,可以不使用節(jié)點(diǎn)管理器模塊115和125來管理這種卷使用。此外,在其他實(shí)施例中,可以以其他方式構(gòu)成一個(gè)或多個(gè)BDS系統(tǒng)管理器模塊,例如,具有在單一數(shù)據(jù)中心中執(zhí)行的BDS系統(tǒng)管理器的多個(gè)實(shí)例(例如,以便由位于數(shù)據(jù)中心內(nèi)的主機(jī)計(jì)算系統(tǒng)提供的計(jì)算節(jié)點(diǎn)上執(zhí)行的程序共享對(duì)非本地塊數(shù)據(jù)存儲(chǔ)裝置的管理),和/或具有由在一些或所有服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165上執(zhí)行的軟件以分布式方式(例如,以對(duì)等的方式,而在計(jì)算系統(tǒng)175上沒有任何單獨(dú)的集中式BDS系統(tǒng)管理器模塊)提供的BDS系統(tǒng)管理器模塊的至少一些功能。
[0041]在該示例中,各種主機(jī)計(jì)算系統(tǒng)110、130和135、服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165和計(jì)算系統(tǒng)125、140和175是經(jīng)由數(shù)據(jù)中心的一個(gè)或多個(gè)內(nèi)部網(wǎng)絡(luò)185而相互連接的,內(nèi)部網(wǎng)絡(luò)185可以包括未示出的各種網(wǎng)絡(luò)設(shè)備(例如,路由器、交換機(jī)、網(wǎng)關(guān)等)。此外,在本示例中,內(nèi)部網(wǎng)絡(luò)185連接到外部網(wǎng)絡(luò)170 (例如,互聯(lián)網(wǎng)或其他公共網(wǎng)絡(luò)),并且,數(shù)據(jù)中心100還可以包括數(shù)據(jù)中心100和外部網(wǎng)絡(luò)170之間的相互連接處的一個(gè)或多個(gè)可選設(shè)備(未示出)(例如,網(wǎng)絡(luò)代理、負(fù)載平衡器、網(wǎng)絡(luò)地址轉(zhuǎn)換設(shè)備等)。在該示例中,經(jīng)由外部網(wǎng)絡(luò)170將數(shù)據(jù)中心100連接到一個(gè)或多個(gè)其他數(shù)據(jù)中心160,該一個(gè)或多個(gè)其他數(shù)據(jù)中心160中的每一個(gè)可以包括關(guān)于數(shù)據(jù)中心100而示意的計(jì)算系統(tǒng)和存儲(chǔ)系統(tǒng)中的一些或全部,以及該數(shù)據(jù)中心外部的其他遠(yuǎn)程計(jì)算系統(tǒng)180??梢猿鲇诟鞣N目的由各方來操作該其他計(jì)算系統(tǒng)180,例如由數(shù)據(jù)中心100的運(yùn)營商或第三方(例如,程序執(zhí)行服務(wù)和/或塊數(shù)據(jù)存儲(chǔ)服務(wù)的客戶)來操作。此外,該其他計(jì)算系統(tǒng)180中的一個(gè)或多個(gè)可以是塊數(shù)據(jù)存儲(chǔ)服務(wù)可與之進(jìn)行交互的檔案存儲(chǔ)系統(tǒng)(例如,作為遠(yuǎn)程網(wǎng)絡(luò)可訪問存儲(chǔ)服務(wù)的一部分),該交互例如處于在該一個(gè)或多個(gè)其他計(jì)算系統(tǒng)180上或在數(shù)據(jù)中心100的一個(gè)或多個(gè)計(jì)算系統(tǒng)上執(zhí)行的一個(gè)或多個(gè)檔案管理器模塊(未示出)的控制之下,在其他地方對(duì)此進(jìn)行更詳細(xì)地描述。此外,雖然未在此示出,但是在至少一些實(shí)施例中,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165中的至少一些還可以與一個(gè)或多個(gè)其他網(wǎng)絡(luò)或其他連接介質(zhì)相互連接,例如,服務(wù)器存儲(chǔ)系統(tǒng)165可在其上共享卷數(shù)據(jù)(例如,出于復(fù)制卷拷貝和/或維持主卷拷貝和鏡像卷拷貝之間的一致性的目的)的高寬帶連接,其中,在至少一些這種實(shí)施例中,這種高寬帶連接對(duì)各種主機(jī)計(jì)算系統(tǒng)110、130和135不可用。
[0042]應(yīng)當(dāng)意識(shí)到,出于解釋的目的,對(duì)圖1的示例進(jìn)行了簡(jiǎn)化,并且,主機(jī)計(jì)算系統(tǒng)、月艮務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)和其他設(shè)備的數(shù)目和組織可以比在圖1所示的數(shù)目和組織大得多。例如,作為一個(gè)示意性實(shí)施例,對(duì)于每個(gè)數(shù)據(jù)中心,可以有大致4000個(gè)計(jì)算系統(tǒng),其中,這些計(jì)算系統(tǒng)中的至少一些是均可作為15個(gè)虛擬機(jī)的宿主的主機(jī)計(jì)算系統(tǒng),和/或這些計(jì)算系統(tǒng)中的一些是均可存儲(chǔ)若干卷拷貝的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)。如果每個(gè)被宿留的虛擬機(jī)執(zhí)行一個(gè)程序,那么這種數(shù)據(jù)中心一次可以執(zhí)行多達(dá)六萬個(gè)程序拷貝。此外,根據(jù)服務(wù)器存儲(chǔ)系統(tǒng)的數(shù)目、卷的大小以及每個(gè)卷的鏡像拷貝數(shù)目,可以在服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上存儲(chǔ)成百上千(或更多)個(gè)卷。應(yīng)當(dāng)意識(shí)到,在其他實(shí)施例中,可以使用其他數(shù)目的計(jì)算系統(tǒng)、程序和卷。
[0043]圖2A-2F示意了向客戶提供可靠的非本地塊數(shù)據(jù)存儲(chǔ)功能的示例。具體地,圖2A和2B示意了可被用來例如代表塊數(shù)據(jù)存儲(chǔ)服務(wù)向客戶端(例如,執(zhí)行中的程序)提供可靠的非本地塊數(shù)據(jù)存儲(chǔ)功能的服務(wù)器塊數(shù)據(jù)存儲(chǔ)計(jì)算系統(tǒng)的示例,以及圖2C-2F示意了使用檔案存儲(chǔ)系統(tǒng)來存儲(chǔ)一些塊數(shù)據(jù)存儲(chǔ)卷的至少一些部分的示例。在該示例中,圖2A示意了若干服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165,每個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165都存儲(chǔ)一個(gè)或多個(gè)卷拷貝155,例如每個(gè)卷具有主拷貝和至少一個(gè)鏡像拷貝。在其他實(shí)施例中,如在其他地方詳細(xì)討論的,可以使用其他布置,例如通過具有多個(gè)主卷拷貝(例如,對(duì)于一個(gè)或多個(gè)程序同時(shí)進(jìn)行的讀取訪問來說,所有的主卷拷貝都是可用的)和/或具有多個(gè)鏡像卷拷貝來進(jìn)行。例如,示例服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165和卷拷貝155可以對(duì)應(yīng)于圖1的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165和卷拷貝155的子集。
[0044]在該示例中,服務(wù)器存儲(chǔ)系統(tǒng)165a存儲(chǔ)至少三個(gè)卷拷貝,包括針對(duì)卷A的主拷貝155A-a、針對(duì)卷B的鏡像拷貝155B_a和針對(duì)卷C的鏡像拷貝155C_a。還可以由服務(wù)器存儲(chǔ)系統(tǒng)165a和其他服務(wù)器存儲(chǔ)系統(tǒng)165來存儲(chǔ)一個(gè)或多個(gè)其他未在本示例中示出的卷拷貝。在本示例中,另一示例服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165b存儲(chǔ)針對(duì)卷B的主拷貝155B-b以及針對(duì)卷D的鏡像拷貝15?-b。此外,示例服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165η包括卷A的鏡像拷貝155Α-η和卷D的主拷貝15?_η。從而,如果執(zhí)行中的程序(未示出)附著到卷A并使用卷Α,針對(duì)該執(zhí)行中的程序的節(jié)點(diǎn)管理器將與服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165a進(jìn)行交互,以訪問卷A的主拷貝155A-a,例如經(jīng)由在服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165a上執(zhí)行的服務(wù)器存儲(chǔ)系統(tǒng)軟件(未示出)來進(jìn)行。類似地,對(duì)于附著到卷B和D并使用卷B和D的一個(gè)或多個(gè)執(zhí)行中的程序(未示出),針對(duì)該執(zhí)行中的程序的節(jié)點(diǎn)管理器將與服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165b和165η分別交互,以分別訪問卷B的主拷貝155B-b和卷D的主拷貝15?_η。此外,其他服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)也可以存在(例如,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165c-165m和/或165ο以及更多服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)),并且可以存儲(chǔ)卷C的主卷拷貝和/或其他主卷拷貝和鏡像卷拷貝,然而在本示例中沒有對(duì)其示出。從而,在本示例中,每個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)可以存儲(chǔ)一個(gè)以上的卷拷貝,并可以存儲(chǔ)主卷拷貝和鏡像卷拷貝的組合,盡管在其他實(shí)施例中,可以通過其他方式存儲(chǔ)卷。
[0045]圖2Β示意了與圖2Α中相似但是在圖2Α的服務(wù)器存儲(chǔ)系統(tǒng)165b發(fā)生故障或因其他原因變得不可用之后的時(shí)間點(diǎn)處的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165。響應(yīng)于服務(wù)器存儲(chǔ)系統(tǒng)165b以及其所存儲(chǔ)的卷B的主拷貝和卷D的鏡像拷貝的不可用性,已經(jīng)將所存儲(chǔ)的圖2B的服務(wù)器存儲(chǔ)系統(tǒng)165的卷拷貝修改為維持卷B和D的可用性。具體地,由于卷B的主拷貝155B-b不可用,已經(jīng)將服務(wù)器存儲(chǔ)系統(tǒng)165a上的卷B先前的鏡像拷貝155B_a提升為卷B新的主拷貝。因此,如果一個(gè)或多個(gè)程序先前附著到或者以其他方式與卷B的先前的主拷貝155B-b進(jìn)行交互,當(dāng)卷B先前的主拷貝155B-b不可用時(shí),可能已經(jīng)將這些程序自動(dòng)轉(zhuǎn)換(例如,通過與這些程序相關(guān)聯(lián)的節(jié)點(diǎn)管理器)到與服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165a繼續(xù)進(jìn)行的交互,以訪問卷B新的主拷貝155B-a,此外,已經(jīng)在服務(wù)器存儲(chǔ)系統(tǒng)165c上創(chuàng)建卷B的新的鏡像拷貝155B-C。
[0046]雖然為了簡(jiǎn)明,未在圖2B中示意圖2A的服務(wù)器存儲(chǔ)系統(tǒng)165η的卷A的鏡像拷貝155Α-Π,卷A的鏡像拷貝155Α-η與卷D的主拷貝15?_η —起在服務(wù)器存儲(chǔ)系統(tǒng)165η上繼續(xù)可用,從而先前附著到或者以其他方式與卷D的主拷貝15?-η交互的任何程序在服務(wù)器存儲(chǔ)系統(tǒng)165b變得不可用時(shí),將繼續(xù)與服務(wù)器存儲(chǔ)系統(tǒng)165η上的服務(wù)器存儲(chǔ)系統(tǒng)上的該相同的卷D主拷貝15?-η進(jìn)行交互,而無需修改。然而,由于在不可用的服務(wù)器存儲(chǔ)系統(tǒng)165b上卷D的鏡像拷貝15?-b的不可用,在圖2B中已經(jīng)創(chuàng)建了卷D的至少一個(gè)附加鏡像拷貝,例如服務(wù)器存儲(chǔ)系統(tǒng)165ο的卷D鏡像拷貝15OT-0。此外,圖2B示意了至少一些卷可以具有多個(gè)鏡像拷貝,例如還包括先前在服務(wù)器存儲(chǔ)系統(tǒng)165c上存在(但是在圖2A中沒有示出)的卷D鏡像拷貝15OT-C的卷D。
[0047]圖2C-2F示意了使用檔案存儲(chǔ)系統(tǒng)來存儲(chǔ)一些塊數(shù)據(jù)存儲(chǔ)卷的至少一些部分的示例。在該示例中,圖2C示意了均存儲(chǔ)了一個(gè)或多個(gè)卷拷貝155的多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165,以例如與服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165b變得不可用之前在圖2A中示意的示例服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165相對(duì)應(yīng)。圖2C還示意了例如可以與圖1的計(jì)算系統(tǒng)180的子集相對(duì)應(yīng)的多個(gè)檔案存儲(chǔ)系統(tǒng)180。具體地,在本示例中,圖2C示意了圖2A的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165a和165b,雖然在本示例中,針對(duì)這些服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)僅示意了卷B的主拷貝和鏡像拷貝。如關(guān)于圖2A討論的,服務(wù)器存儲(chǔ)系統(tǒng)165b存儲(chǔ)卷B的主拷貝155B-b,月艮務(wù)器存儲(chǔ)系統(tǒng)165a存儲(chǔ)卷B的鏡像拷貝155B-a。
[0048]在圖2C的示例中,與卷B相關(guān)聯(lián)的用戶已請(qǐng)求將卷B新的初始快照拷貝存儲(chǔ)在遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)中,例如用于長期備份。相應(yīng)地,已將卷B劃分成多個(gè)段部分,每個(gè)段部分將由檔案存儲(chǔ)系統(tǒng)分別存儲(chǔ),以例如與檔案存儲(chǔ)系統(tǒng)的典型或最大存儲(chǔ)大小相對(duì)應(yīng),或者在另一方式中代之以由塊數(shù)據(jù)存儲(chǔ)設(shè)備來確定。在本示例中,已經(jīng)將卷B的主拷貝155B-b劃分成N段(155B-bl至155B-bN),并且卷B的鏡像拷貝155B_a使用段155B_al至155B_aN類似地存儲(chǔ)了相同的數(shù)據(jù)。將卷B的N段中的每一段作為單獨(dú)的數(shù)據(jù)對(duì)象存儲(chǔ)在兩個(gè)示例檔案存儲(chǔ)系統(tǒng)180a和180b中的一個(gè)上,并從而這些多個(gè)對(duì)應(yīng)存儲(chǔ)的數(shù)據(jù)對(duì)象一起形成了卷B的初始快照卷拷貝。具體地,將卷B的主拷貝的段1155B-bl作為數(shù)據(jù)對(duì)象180B1存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)180a上,段2155B-b2作為數(shù)據(jù)對(duì)象180B2存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)180b上,段3155B-b3作為數(shù)據(jù)對(duì)象180B3存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)180a上,以及段N155B_bN作為數(shù)據(jù)對(duì)象180BN存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)180a上。在本示例中,由塊數(shù)據(jù)存儲(chǔ)服務(wù)來執(zhí)行將卷B劃分成多個(gè)段,以使得可以將卷B的單個(gè)段單獨(dú)傳送到檔案存儲(chǔ)系統(tǒng),雖然在其他實(shí)施例中,可代之以將整個(gè)卷B發(fā)送到檔案存儲(chǔ)系統(tǒng),然后檔案存儲(chǔ)系統(tǒng)將卷劃分成多個(gè)段,或者如果需要,以其他方式處理卷數(shù)據(jù)。
[0049]此外,在本示例中,檔案存儲(chǔ)系統(tǒng)180b是執(zhí)行檔案管理器模塊190以管理檔案存儲(chǔ)系統(tǒng)的操作的檔案存儲(chǔ)計(jì)算系統(tǒng),例如管理數(shù)據(jù)對(duì)象的存儲(chǔ)和取回,跟蹤哪個(gè)存儲(chǔ)的數(shù)據(jù)對(duì)象與哪個(gè)卷相對(duì)應(yīng),將所傳送的卷數(shù)據(jù)劃分成多個(gè)數(shù)據(jù)對(duì)象,計(jì)量或者以其他方式跟蹤檔案存儲(chǔ)系統(tǒng)的使用等。檔案管理模塊190可以例如維持關(guān)于與具體卷相對(duì)應(yīng)的各種數(shù)據(jù)對(duì)象的各種信息(關(guān)于圖2F進(jìn)行更詳細(xì)地討論),例如針對(duì)卷的每個(gè)快照拷貝進(jìn)行,而在其他實(shí)施例中,可代之以其他方式維持這種快照卷拷貝信息(例如,通過服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)或塊數(shù)據(jù)存儲(chǔ)服務(wù)的其他模塊),在其他實(shí)施例中,可以僅使用單一檔案存儲(chǔ)系統(tǒng),或者代之以在多得多的檔案存儲(chǔ)系統(tǒng)(未示出)上存儲(chǔ)與卷B的段相對(duì)應(yīng)的數(shù)據(jù)對(duì)象。此夕卜,在其他實(shí)施例中,每個(gè)檔案存儲(chǔ)系統(tǒng)可以執(zhí)行至少部分檔案管理器模塊,例如針對(duì)每個(gè)檔案存儲(chǔ)系統(tǒng)具有不同的檔案管理器模塊,或者針對(duì)所有的檔案存儲(chǔ)系統(tǒng)以分布式的對(duì)等方式提供檔案管理器模塊的功能。在其他實(shí)施例中,代之,一個(gè)或多個(gè)檔案管理器模塊可以在對(duì)其他塊數(shù)據(jù)存儲(chǔ)設(shè)備模塊來說本地的(例如,在相同的計(jì)算系統(tǒng)上,或者在與執(zhí)行BDS系統(tǒng)管理器模塊的計(jì)算系統(tǒng)相鄰的計(jì)算系統(tǒng)上)一個(gè)或多個(gè)計(jì)算系統(tǒng)上進(jìn)行執(zhí)行,或者代之,可以直接由塊數(shù)據(jù)存儲(chǔ)服務(wù)的一個(gè)或多個(gè)其他模塊來管理檔案存儲(chǔ)系統(tǒng)的操作,而不使用檔案管理器模塊(例如,由BDS系統(tǒng)管理器模塊管理)。
[0050]此外,在至少一些實(shí)施例中,檔案存儲(chǔ)系統(tǒng)可以執(zhí)行各種增強(qiáng)所存儲(chǔ)的數(shù)據(jù)對(duì)象的可靠性的操作,以例如復(fù)制多個(gè)檔案存儲(chǔ)系統(tǒng)上的一些或所有數(shù)據(jù)對(duì)象。從而,例如,檔案存儲(chǔ)系統(tǒng)180b的其他數(shù)據(jù)對(duì)象182b可以包括檔案存儲(chǔ)系統(tǒng)180a的數(shù)據(jù)對(duì)象180B1、180B3和180BN中的一個(gè)或多個(gè)數(shù)據(jù)對(duì)象的鏡像拷貝,并且檔案存儲(chǔ)系統(tǒng)180a的其他數(shù)據(jù)對(duì)象182a可以類似地存儲(chǔ)檔案存儲(chǔ)系統(tǒng)180b的數(shù)據(jù)對(duì)象180B2的鏡像拷貝。此外,如在其他地方更詳細(xì)討論的,在一些實(shí)施例中,在接收到創(chuàng)建卷B的初始快照拷貝的請(qǐng)求之前,可能已經(jīng)將卷B的至少一些段存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上,例如,如果將存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上表示卷B的段的數(shù)據(jù)對(duì)象用作卷B的備份存儲(chǔ)或其他遠(yuǎn)程長期備份。如果是這樣,在該時(shí)刻不傳送任何附加的卷數(shù)據(jù)的情況下,可代之以創(chuàng)建在檔案存儲(chǔ)系統(tǒng)上的快照拷貝,例如,如果檔案存儲(chǔ)系統(tǒng)上的數(shù)據(jù)對(duì)象表示卷B的段的當(dāng)前狀態(tài),而在其他實(shí)施例中,可以采用附加步驟來確保已經(jīng)存儲(chǔ)的數(shù)據(jù)對(duì)象對(duì)于卷B的段是最新的。
[0051]圖2D繼續(xù)圖2C的示例,并反映在關(guān)于圖2C存儲(chǔ)初始快照拷貝之后執(zhí)行的對(duì)卷B的修改。具體地,在本示例中,在創(chuàng)建初始化快照卷拷貝之后,修改卷B,例如由附著到該卷的一個(gè)或多個(gè)程序(未示出)來修改。在本示例中,在與主卷B拷貝的段3155B-b3和段N155B-bN相對(duì)應(yīng)的卷B的至少兩部分中修改數(shù)據(jù),將被修改的段數(shù)據(jù)分別示意為數(shù)據(jù)3a和Na。在本示例中,在修改主卷B拷貝155B-b后,服務(wù)器存儲(chǔ)系統(tǒng)165b發(fā)起在服務(wù)器165a上的卷B的鏡像拷貝155B-a的對(duì)應(yīng)更新,以使得將鏡像拷貝的段3155B_a3修改為包括已修改的3a數(shù)據(jù),并將鏡像拷貝的段N155B-aN修改為包括已修改的Na數(shù)據(jù)。從而,在本示例中,將卷B的鏡像拷貝維持為與主卷B拷貝相同的狀態(tài)。
[0052]此外,在一些實(shí)施例中,還可以修改檔案存儲(chǔ)系統(tǒng)上的數(shù)據(jù)來反映卷B的改變,即使這些新的卷B數(shù)據(jù)修改當(dāng)前不是卷B的任何快照卷拷貝的部分。具體地,由于段3和段N數(shù)據(jù)的先前版本是存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上的初始快照卷拷貝的部分,不對(duì)對(duì)應(yīng)的數(shù)據(jù)對(duì)象180B3和180BN進(jìn)行修改來反映在初始快照卷拷貝創(chuàng)建之后發(fā)生的卷B的數(shù)據(jù)變化。代之,可選地,如果拷貝由已修改的卷B數(shù)據(jù)構(gòu)成,在本示例中代之將其存儲(chǔ)為附加的數(shù)據(jù)對(duì)象,例如可選的數(shù)據(jù)對(duì)象180B3a,以對(duì)應(yīng)于段3155B-b3的已修改的3a數(shù)據(jù),以及例如可選的數(shù)據(jù)對(duì)象180BNa,以對(duì)應(yīng)于段N155B-bN的已修改的Na數(shù)據(jù)。以這種方式,即使當(dāng)對(duì)卷B的主拷貝和鏡像拷貝做出改變時(shí),也能維持初始快照卷拷貝的數(shù)據(jù)。如果創(chuàng)建了可選的數(shù)據(jù)對(duì)象180B3a和180BNa,可以通過各種方式發(fā)起該創(chuàng)建,例如服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165b以與針對(duì)卷B的鏡像拷貝155B-a所發(fā)起的更新相同的方式來發(fā)起。
[0053]圖2E示意了先前關(guān)于圖2D描述的實(shí)施例的備選實(shí)施例。具體地,在圖2E的示例中,在以與關(guān)于圖2D描述的方式所類似的方式將卷的初始快照拷貝存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上后,再次修改卷B,并且相應(yīng)地更新服務(wù)器存儲(chǔ)系統(tǒng)165b上卷B的主拷貝155B-b,以使得將段3155B-b3和段N155B-bN更新為分別包括已修改的數(shù)據(jù)3a和Na。然而,在本實(shí)施例中,不將服務(wù)器存儲(chǔ)系統(tǒng)165a上卷B的鏡像拷貝155B-a維持為卷B的完全拷貝。代之,結(jié)合鏡像拷貝155B-a使用檔案存儲(chǔ)系統(tǒng)上卷B的快照卷拷貝來維持卷B的拷貝。從而,在本示例中,當(dāng)在創(chuàng)建初始快照卷拷貝之后對(duì)卷B的主拷貝155B-b做出修改時(shí),這些修改也對(duì)服務(wù)器存儲(chǔ)系統(tǒng)165a上的鏡像拷貝155B-a做出,以使得該鏡像拷貝也存儲(chǔ)針對(duì)段3155B_a3的已修改3a數(shù)據(jù)和針對(duì)段N155B-aN的已修改Na數(shù)據(jù)。然而,卷B的鏡像拷貝一開始沒有存儲(chǔ)卷B的從初始快照卷拷貝創(chuàng)建以來沒有被修改過的其他段的拷貝,因?yàn)樵跈n案存儲(chǔ)系統(tǒng)上卷B的快照拷貝包括了該數(shù)據(jù)的拷貝。相應(yīng)地,如果服務(wù)器存儲(chǔ)系統(tǒng)165b在后來變得不可用(例如,先前結(jié)合圖2B所討論的),可以將服務(wù)器存儲(chǔ)系統(tǒng)165a上卷B的鏡像拷貝155B-a提升為卷B新的主拷貝。在本示例實(shí)施例中為了完成該提升,使用檔案存儲(chǔ)系統(tǒng)上卷B的初始快照卷拷貝來恢復(fù)卷B的鏡像拷貝155B-a的剩余部分,以例如使用所存儲(chǔ)的數(shù)據(jù)對(duì)象180B1恢復(fù)段155B-al,使用所存儲(chǔ)的數(shù)據(jù)對(duì)象180B2恢復(fù)段155B_a2等。此外,在該示例中,可以類似地將數(shù)據(jù)對(duì)象180B3a和ISOBNa可選地存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上,以表示修改后的3a和Na數(shù)據(jù)。如果這樣做,在一些實(shí)施例中,一開始也將不把修改過的3a和Na數(shù)據(jù)存儲(chǔ)在針對(duì)鏡像拷貝155B-a的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165a上,而代之類似地,可以通過與先前針對(duì)其他鏡像拷貝段描述的方式相類似的方式來從檔案存儲(chǔ)系統(tǒng)數(shù)據(jù)對(duì)象180B3a和180BNa恢復(fù)鏡像拷貝段155B-a3和155B_aN。
[0054]雖然在先前的示例中,當(dāng)鏡像拷貝被提升為新的主卷拷貝時(shí)使用卷B的快照卷拷貝來恢復(fù)卷B的鏡像拷貝,在其他實(shí)施例中也可以通過其他方式使用檔案存儲(chǔ)系統(tǒng)上的快照卷拷貝。例如,以與先前針對(duì)恢復(fù)鏡像卷拷貝描述的方式相類似的方式,可以使用檔案存儲(chǔ)系統(tǒng)上的快照卷拷貝來創(chuàng)建與初始快照卷拷貝相匹配的卷B的新拷貝,以例如在快照卷拷貝時(shí)創(chuàng)建卷B新的鏡像拷貝,創(chuàng)建基于卷B的快照卷拷貝的全新卷,協(xié)助將卷B從一個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng)到另一個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng),等等。此外,當(dāng)在多個(gè)不同的數(shù)據(jù)中心或其他地理位置中,塊數(shù)據(jù)服務(wù)的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)不可用時(shí),遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)可為所有這些服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)所用,并因此可被用來基于快照卷拷貝在這些地理位置的任一個(gè)中創(chuàng)建新的卷拷貝。
[0055]圖2F繼續(xù)圖2C和2D的示例,在對(duì)卷B進(jìn)行附加修改后后的時(shí)間點(diǎn)處繼續(xù)。具體地,在如關(guān)于圖2C或2D所描述的做出對(duì)段3和段N的修改后,在檔案存儲(chǔ)系統(tǒng)上創(chuàng)建卷B的第二快照卷拷貝。隨后,對(duì)存儲(chǔ)在段2和3中的卷B的數(shù)據(jù)做出修改。相應(yīng)地,圖2F中示意的卷B的主拷貝155B-b包括段1155B-bl中的原始數(shù)據(jù)1、在第二快照卷拷貝創(chuàng)建后修改的段2155B-b2中的數(shù)據(jù)2a、同樣在第二快照卷拷貝創(chuàng)建后修改的段3155B_b3中的數(shù)據(jù)3b、在初始第一快照卷拷貝創(chuàng)建后但是在第二快照卷拷貝創(chuàng)建之后修改的段N155B-bN中的數(shù)據(jù)Na。相應(yīng)地,在指示要?jiǎng)?chuàng)建卷B的第三快照卷拷貝后,在檔案存儲(chǔ)系統(tǒng)中創(chuàng)建附加的數(shù)據(jù)對(duì)象,以與從第二快照卷拷貝創(chuàng)建以來修改的兩個(gè)段相對(duì)應(yīng),數(shù)據(jù)對(duì)象180B2a對(duì)應(yīng)于段155B-b2并包括修改后的數(shù)據(jù)2a,以及段180B3b對(duì)應(yīng)于段155B_b3并包括修改后的數(shù)據(jù)3b ο
[0056]此外,在本示例中,沒有示出服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165a,但是示出了檔案管理器模塊190維持的信息250的拷貝(例如,存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)180b上或其他地方),以提供關(guān)于在檔案存儲(chǔ)系統(tǒng)上存儲(chǔ)的快照卷拷貝的信息。具體地,在本示例中,信息250包括多行250a-250d,每行與不同的快照卷拷貝相對(duì)應(yīng)。在本示例,每行信息包括針對(duì)卷拷貝的唯一標(biāo)識(shí)符、對(duì)快照卷拷貝所對(duì)應(yīng)的卷的指示、以及對(duì)存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上的包括快照卷拷貝在內(nèi)的數(shù)據(jù)對(duì)象的順序列表的指示。從而,例如,行250a對(duì)應(yīng)于關(guān)于圖2C討論的卷B的初始快照卷拷貝,并指示初始快照卷拷貝包括所存儲(chǔ)的數(shù)據(jù)對(duì)象180B1、180B2、180B3等等直至180BN。行250b對(duì)應(yīng)于不同卷A的示例快照卷拷貝,卷A包括在本示例中沒有示出的各種所存儲(chǔ)的數(shù)據(jù)對(duì)象。行250c對(duì)應(yīng)于卷B的第二快照卷拷貝,行250d對(duì)應(yīng)于卷B的第三快照卷拷貝。在本示例中,卷B的第二和第三卷拷貝是遞增拷貝而不是完整的拷貝,以使得可以使用所存儲(chǔ)的相同數(shù)據(jù)對(duì)象來繼續(xù)表示卷B從先前的快照卷拷貝以來沒有改變的段。從而,例如,行250c中的卷B的第二快照拷貝指示該第二快照拷貝與卷B的初始快照拷貝共享數(shù)據(jù)對(duì)象180B1和180B2(以及很可能共享從未示出的段4到段N-1的數(shù)據(jù)對(duì)象中的一些或全部)。類似地,行250d中示出的卷B的第三快照拷貝也繼續(xù)使用與初始快照卷拷貝和第二快照卷拷貝相同的數(shù)據(jù)對(duì)象180B1。
[0057]通過在多個(gè)快照卷拷貝之間共享公共數(shù)據(jù)對(duì)象,將檔案存儲(chǔ)系統(tǒng)上的存儲(chǔ)量最小化,因?yàn)獒槍?duì)每個(gè)快照卷拷貝,未改變的卷段(例如,段I)的新拷貝在檔案存儲(chǔ)系統(tǒng)上沒有單獨(dú)的拷貝。然而,在其他實(shí)施例中,一些或所有的快照卷拷貝可以不是遞增的,代之,每個(gè)快照卷拷貝都包括每個(gè)卷段的單獨(dú)拷貝,而不管段中的數(shù)據(jù)是否發(fā)生改變。此外,當(dāng)使用可以與一個(gè)或多個(gè)其他快照卷拷貝共享一個(gè)或多個(gè)重疊的數(shù)據(jù)對(duì)象的遞增快照卷拷貝時(shí),在關(guān)于快照卷拷貝采用附加類型的操作時(shí)對(duì)該重疊的數(shù)據(jù)對(duì)象進(jìn)行管理。例如,如果后續(xù)接收到刪除在行250a中指示的卷B的初始快照卷拷貝并相應(yīng)地釋放檔案存儲(chǔ)系統(tǒng)上不再需要的存儲(chǔ)空間的請(qǐng)求,僅在檔案存儲(chǔ)系統(tǒng)上刪除針對(duì)該初始快照卷拷貝指示的數(shù)據(jù)對(duì)象中的一些。例如,在創(chuàng)建初始快照卷拷貝之后修改了段3和段N,并從而僅由該初始快照卷拷貝來使用對(duì)應(yīng)的初始快照卷拷貝的存儲(chǔ)的數(shù)據(jù)對(duì)象180B3和180BN。從而,如果刪除了卷B的初始快照卷拷貝,可以將這兩個(gè)數(shù)據(jù)對(duì)象從檔案存儲(chǔ)系統(tǒng)180a永久性刪除。然而,即使刪除了卷B的初始快照卷拷貝,也將維持?jǐn)?shù)據(jù)對(duì)象180B1和180B2,因?yàn)槠淅^續(xù)是卷B的至少第二快照卷拷貝的一部分。
[0058]雖然在本示例中未示意,信息250可以包括關(guān)于快照卷拷貝的各種其他類型的信息,包括:關(guān)于哪個(gè)檔案存儲(chǔ)系統(tǒng)存儲(chǔ)了每個(gè)數(shù)據(jù)對(duì)象的信息,關(guān)于允許誰訪問快照卷拷貝信息并在什么環(huán)境下允許訪問的信息等。作為示例,在一些實(shí)施例中,一些用戶可以創(chuàng)建快照卷拷貝并訪問在至少一些環(huán)境下可以為至少一些其他用戶所用的這些快照卷拷貝,例如,在基于費(fèi)用的基礎(chǔ)上允許該其他用戶創(chuàng)建一個(gè)或多個(gè)具體快照卷拷貝的拷貝。如果這樣做,可以將這種涉及訪問的信息存儲(chǔ)在信息250中或存儲(chǔ)在其他地方,并且檔案管理器模塊190可以使用這種信息來確定是否滿足針對(duì)與具體快照卷拷貝相對(duì)應(yīng)的信息來做出的請(qǐng)求。備選地,在其他實(shí)施例中,可以代之由塊數(shù)據(jù)存儲(chǔ)服務(wù)的其他模塊(例如,BBS系統(tǒng)管理器模塊)來管理對(duì)快照卷拷貝的訪問,以例如防止請(qǐng)求被發(fā)送到檔案存儲(chǔ)系統(tǒng),除非這些請(qǐng)求經(jīng)過授權(quán)。
[0059]應(yīng)當(dāng)意識(shí)到,出于解釋的目的,已經(jīng)對(duì)圖2A-2F的示例進(jìn)行了簡(jiǎn)化,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)、檔案存儲(chǔ)系統(tǒng)和其他設(shè)備的數(shù)目和構(gòu)成可以比所描述的大得多。類似地,在其他實(shí)施例中,可以通過其他方式來存儲(chǔ)和管理主卷拷貝、鏡像卷拷貝和/或快照拷貝。
[0060]圖3是示意了適于針對(duì)用戶來管理對(duì)可靠的非本地塊數(shù)據(jù)存儲(chǔ)功能的提供和使用的框圖。在本示例中,服務(wù)器計(jì)算系統(tǒng)300執(zhí)行BDS系統(tǒng)管理器模塊340的實(shí)施例,以管理向在主機(jī)計(jì)算系統(tǒng)370上和/或在至少一些其他計(jì)算系統(tǒng)上執(zhí)行的程序提供非本地塊數(shù)據(jù)存儲(chǔ)功能,例如,服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360提供的塊數(shù)據(jù)存儲(chǔ)卷(未示出)。本示例中的每個(gè)主機(jī)計(jì)算系統(tǒng)370還可以執(zhí)行節(jié)點(diǎn)管理器模塊380的實(shí)施例,以管理在該主機(jī)計(jì)算系統(tǒng)上執(zhí)行的程序375對(duì)至少一些非本地塊數(shù)據(jù)存儲(chǔ)卷的訪問,例如,通過與網(wǎng)絡(luò)385(例如,未示出的數(shù)據(jù)中心的內(nèi)部網(wǎng)絡(luò),包括計(jì)算系統(tǒng)300、360、370以及可選地其他計(jì)算系統(tǒng)390中的至少一些)上的BDS系統(tǒng)管理器模塊340協(xié)同的方式來進(jìn)行。在其他實(shí)施例中,代之,一些或所有的節(jié)點(diǎn)管理器模塊380可以管理一個(gè)或多個(gè)計(jì)算系統(tǒng)(例如,其他計(jì)算系統(tǒng)390)。
[0061]此外,示意了多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360,每個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360存儲(chǔ)了執(zhí)行中的程序375所使用的至少一些非本地塊數(shù)據(jù)存儲(chǔ)卷(未示出),在本示例中,還在網(wǎng)絡(luò)385上提供對(duì)這些卷的訪問。一個(gè)或多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360還均可以存儲(chǔ)對(duì)一個(gè)或多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360的操作進(jìn)行管理的服務(wù)器軟件組件(未示出),以及與服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360存儲(chǔ)的數(shù)據(jù)有關(guān)的各種信息(未示出)。從而,在至少一些實(shí)施例中,圖3的服務(wù)器計(jì)算系統(tǒng)300可以對(duì)應(yīng)與圖1的計(jì)算系統(tǒng)175,圖1的節(jié)點(diǎn)管理器模塊115和125中的一個(gè)或多個(gè)可以對(duì)應(yīng)于圖3的節(jié)點(diǎn)管理器模塊380,和/或圖3的服務(wù)器塊數(shù)據(jù)存儲(chǔ)計(jì)算系統(tǒng)360中的一個(gè)或多個(gè)可以對(duì)應(yīng)于圖1的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165。此外,在本示例實(shí)施例中示意了多個(gè)檔案存儲(chǔ)系統(tǒng)350,該多個(gè)檔案存儲(chǔ)系統(tǒng)350可以存儲(chǔ)在服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360上存儲(chǔ)的至少一些塊數(shù)據(jù)存儲(chǔ)卷的至少部分的快照拷貝和/或其他拷貝。檔案存儲(chǔ)系統(tǒng)350還可以與計(jì)算系統(tǒng)300、360和370中的一些或所有交互計(jì)算系統(tǒng),并且在一些實(shí)施例中,可以是在一個(gè)或多個(gè)其他外部網(wǎng)絡(luò)(未示出)上與計(jì)算系統(tǒng)300、360和370進(jìn)行交互的遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)(例如,未示出的遠(yuǎn)程存儲(chǔ)服務(wù)的遠(yuǎn)程檔案存儲(chǔ)系統(tǒng))。
[0062]在至少一些實(shí)施例中,該其他計(jì)算系統(tǒng)390還可以包括各種類型的其他臨近或遠(yuǎn)程的計(jì)算系統(tǒng),包括客戶或塊數(shù)據(jù)存儲(chǔ)服務(wù)的其他用戶經(jīng)由其與計(jì)算系統(tǒng)300和/或370交互的計(jì)算系統(tǒng)。此外,該其他計(jì)算系統(tǒng)390中的一個(gè)或多個(gè)還可以執(zhí)行PES系統(tǒng)管理器模塊,以對(duì)主機(jī)計(jì)算系統(tǒng)370和/或其他主機(jī)計(jì)算系統(tǒng)390上的程序執(zhí)行進(jìn)行協(xié)同,或者,計(jì)算系統(tǒng)300或該其他所示出的計(jì)算系統(tǒng)中的一個(gè)可以代之以執(zhí)行這種PES系統(tǒng)管理器模塊,雖然在本不例中未不意PES系統(tǒng)管理器模塊。
[0063]在本示例實(shí)施例中,計(jì)算系統(tǒng)300包括CPU ( “中央處理單元”)305、本地存儲(chǔ)裝置320、存儲(chǔ)器330以及各種1/0( “輸入/輸出”)組件310,在本示例中所示意的I/O組件包括顯示器311、網(wǎng)絡(luò)連接312、計(jì)算機(jī)可讀介質(zhì)驅(qū)動(dòng)313以及其他I/O設(shè)備315 (例如,鍵盤、鼠標(biāo)、揚(yáng)聲器、麥克風(fēng)等)。在所示意的實(shí)施例中,BDS系統(tǒng)管理器模塊340在存儲(chǔ)器330中執(zhí)行,并且一個(gè)或多個(gè)其他程序(未示出)也可以可選地在存儲(chǔ)器330中執(zhí)行。
[0064]每個(gè)計(jì)算系統(tǒng)370類似地包括了 CPU371、本地存儲(chǔ)裝置377、存儲(chǔ)器374和各種I/O組件372 (例如,與服務(wù)器計(jì)算系統(tǒng)300的I/O組件310相類似的I/O組件)。在所示意的實(shí)施例中,節(jié)點(diǎn)管理器模塊380在存儲(chǔ)器374中執(zhí)行,以管理在計(jì)算系統(tǒng)上的存儲(chǔ)器374中執(zhí)行的一個(gè)或多個(gè)其他程序,例如,表示程序執(zhí)行服務(wù)和/或塊數(shù)據(jù)存儲(chǔ)服務(wù)的客戶來進(jìn)行。在一些實(shí)施例中,一些或所有計(jì)算系統(tǒng)370可以作為多個(gè)虛擬機(jī)的宿主,并且如果這樣做,每個(gè)執(zhí)行中的程序375可以是在不同的被宿留的虛擬機(jī)計(jì)算節(jié)點(diǎn)上執(zhí)行的完整虛擬機(jī)鏡像(例如,具有操作系統(tǒng)和一個(gè)或多個(gè)應(yīng)用程序)。節(jié)點(diǎn)管理器模塊380可以類似地在另一被宿留的虛擬機(jī)(例如,管理其他被宿留的虛擬機(jī)的特許虛擬機(jī)監(jiān)控器)上執(zhí)行。在其他實(shí)施例中,執(zhí)行中的程序拷貝375和節(jié)點(diǎn)管理器模塊380可以作為在計(jì)算系統(tǒng)370上執(zhí)行的單一操作系統(tǒng)(未示出)上不同的處理來執(zhí)行。
[0065]本示例中的每個(gè)檔案存儲(chǔ)系統(tǒng)350是包括了 CPU351、本地存儲(chǔ)裝置357、存儲(chǔ)器354和各種I/O組件352 (例如,與服務(wù)器計(jì)算系統(tǒng)300的I/O組件310相類似的I/O組件)的計(jì)算系統(tǒng)。在所示意的實(shí)施例中,檔案管理器模塊355在存儲(chǔ)器354中執(zhí)行,以管理一個(gè)或多個(gè)檔案存儲(chǔ)器系統(tǒng)350的操作,例如代表塊數(shù)據(jù)存儲(chǔ)服務(wù)和/或提供該檔案存儲(chǔ)系統(tǒng)的不同的存儲(chǔ)服務(wù)的客戶來進(jìn)行。在其他實(shí)施例中,檔案管理器模塊355可以代之在其他計(jì)算系統(tǒng)(例如其他計(jì)算系統(tǒng)390中的一個(gè))上或者在與BDS系統(tǒng)管理器模塊340相結(jié)合的計(jì)算系統(tǒng)300上執(zhí)行。此外,雖然在此沒有示意,然而在一些實(shí)施例中,例如先前關(guān)于圖2F所描述的,可以將與檔案存儲(chǔ)系統(tǒng)350存儲(chǔ)的數(shù)據(jù)有關(guān)的各種信息維持在存儲(chǔ)器357上或其他地方。此外,雖然在此同樣沒有示意,然而服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360和/或其他計(jì)算系統(tǒng)390中的每一個(gè)可以類似地包括關(guān)于檔案存儲(chǔ)系統(tǒng)350示意的一些或所有類型的組件,例如,CPU、本地存儲(chǔ)裝置、存儲(chǔ)器和各種I/O組件。
[0066]如在其他地方更詳細(xì)地描述的,BDS系統(tǒng)管理器模塊340和節(jié)點(diǎn)管理器模塊380可以采取各種動(dòng)作來管理針對(duì)客戶(例如,執(zhí)行中的程序)的可靠非本地塊數(shù)據(jù)存儲(chǔ)功能的提供和使用。在本示例中,BDS系統(tǒng)管理器模塊340可以在存儲(chǔ)器320上維持?jǐn)?shù)據(jù)庫325,數(shù)據(jù)庫325包括關(guān)于在服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360上和/或在檔案存儲(chǔ)系統(tǒng)350上存儲(chǔ)卷的信息(例如,用于在對(duì)卷進(jìn)行管理中使用),以及還存儲(chǔ)關(guān)于用戶或塊數(shù)據(jù)存儲(chǔ)服務(wù)的其他方面的各種其他信息(未示出)。在其他實(shí)施例中,可以通過其他方式存儲(chǔ)關(guān)于卷的信息,例如由其計(jì)算系統(tǒng)上的節(jié)點(diǎn)管理器模塊380和/或其他計(jì)算系統(tǒng)以分布式的方式進(jìn)行。此外,在本示例中,主機(jī)計(jì)算系統(tǒng)370上的每個(gè)節(jié)點(diǎn)管理器模塊380可以在本地存儲(chǔ)裝置377上存儲(chǔ)關(guān)于附著到主機(jī)計(jì)算系統(tǒng)并由主機(jī)計(jì)算系統(tǒng)上的執(zhí)行中的程序375使用的當(dāng)前卷的信息,以例如對(duì)與提供卷的主拷貝的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)360的交互進(jìn)行協(xié)同,以及如果該主卷拷貝變得不可用,確定如何切換到卷的鏡像拷貝。雖然沒有在此示意,每個(gè)主機(jī)計(jì)算系統(tǒng)還可以包括針對(duì)附著到主機(jī)計(jì)算系統(tǒng)并由在該計(jì)算系統(tǒng)上執(zhí)行的程序所使用的每個(gè)卷的不同的邏輯本地塊數(shù)據(jù)存儲(chǔ)設(shè)備接口,還可以就像與提供本地存儲(chǔ)裝置377的一個(gè)或多個(gè)其他本地物理附著的存儲(chǔ)設(shè)備不可區(qū)分一樣將其呈現(xiàn)給執(zhí)行中的程序。
[0067]應(yīng)當(dāng)意識(shí)到,計(jì)算系統(tǒng)300、350、360、370和390僅是示意性的,并非旨在限制本發(fā)明的范圍。例如,可以將計(jì)算系統(tǒng)300、350、360、370和/或390連接到其他未示出的設(shè)備,包括通過網(wǎng)絡(luò)385和/或一個(gè)或多個(gè)其他網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))或者經(jīng)由萬維網(wǎng)(“Web”)來進(jìn)行。更一般地,計(jì)算節(jié)點(diǎn)或其他計(jì)算系統(tǒng)或者數(shù)據(jù)存儲(chǔ)系統(tǒng)可以包括可交互并執(zhí)行所描述類型的功能的硬件或軟件的任何組合,包括但不限于:桌上型計(jì)算機(jī)或其他計(jì)算機(jī)、數(shù)據(jù)庫服務(wù)器、網(wǎng)絡(luò)存儲(chǔ)設(shè)備和其他網(wǎng)絡(luò)設(shè)備、PDA、蜂窩電話、無線電話、尋呼機(jī)、電子管理器、互聯(lián)網(wǎng)應(yīng)用、基于電視的系統(tǒng)(例如,使用機(jī)頂盒和/或個(gè)人/數(shù)字錄像機(jī)的系統(tǒng))以及包括適當(dāng)通信能力的各種其他消費(fèi)產(chǎn)品。此外,在一些實(shí)施例中,可以將所示意的模塊提供的功能組合到更少的模塊中,或者分布到附加的模塊中。類似地,在一些實(shí)施例中,可以不提供一些所示意的模塊的功能,或者其他附加功能是可用的。
[0068]還將意識(shí)到,雖然將不同的項(xiàng)目示意為在使用時(shí)被存儲(chǔ)在存儲(chǔ)器或存儲(chǔ)裝置中,出于存儲(chǔ)器管理和數(shù)據(jù)完整性的目的,這些項(xiàng)目或其部分可在存儲(chǔ)器和其他存儲(chǔ)裝置之間進(jìn)行轉(zhuǎn)移。備選地,在其他實(shí)施方式中,軟件模塊和/或系統(tǒng)中的一些或全部可在另一個(gè)設(shè)備上的存儲(chǔ)器中執(zhí)行,并可經(jīng)由計(jì)算機(jī)間的通信與所示意的計(jì)算系統(tǒng)進(jìn)行通信。此外,在一些實(shí)施例中,可以通過其他方式實(shí)現(xiàn)或提供該系統(tǒng)和/或模塊中的一些或全部,例如至少部分地以固件和/或硬件來提供,包括但不限于一個(gè)或多個(gè)應(yīng)用專用的集成電路(ASIC)、標(biāo)準(zhǔn)集成電路、控制器(例如,通過執(zhí)行適當(dāng)?shù)闹噶钸M(jìn)行,并包括微處理器和/或嵌入式控制器)、可現(xiàn)場(chǎng)編程的門陣列(FPGA)、復(fù)雜的可編程邏輯設(shè)備(CPLD)等。還可將一些或所有的模塊、系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)(例如,作為軟件指令或結(jié)構(gòu)數(shù)據(jù))在計(jì)算機(jī)可讀介質(zhì)上,計(jì)算機(jī)可讀介質(zhì)例如硬盤、存儲(chǔ)器、網(wǎng)絡(luò)或可被適當(dāng)?shù)尿?qū)動(dòng)讀取或通過適當(dāng)?shù)倪B接讀取的便攜式媒體物件。還可以將系統(tǒng)、模塊和數(shù)據(jù)結(jié)構(gòu)作為在各種計(jì)算機(jī)可讀傳輸介質(zhì)上產(chǎn)生的數(shù)據(jù)信號(hào)進(jìn)行傳輸(例如,作為載波或其他模擬或數(shù)字傳播信號(hào)的一部分),包括基于無線和基于有線/線纜的介質(zhì),系統(tǒng)、模塊和數(shù)據(jù)結(jié)構(gòu)可采取各種形式(例如,作為單一或復(fù)用的模擬信號(hào)的一部分,或作為多個(gè)離散數(shù)字分組或幀)。在其他實(shí)施例中,這種計(jì)算機(jī)程序產(chǎn)品還可采取其他形式。相應(yīng)地,可使用其他計(jì)算機(jī)系統(tǒng)配置來實(shí)踐本發(fā)明。
[0069]圖4是塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器例程400的示例實(shí)施例的流程圖。例如,該例程可由圖1的塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器模塊175和/或圖3的BDS系統(tǒng)管理器模塊340提供,以例如提供用于執(zhí)行中的程序使用的塊數(shù)據(jù)存儲(chǔ)服務(wù)。在所示意的實(shí)施例中,例程可以在單一數(shù)據(jù)中心或其他地理位置處與多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互(例如,如果每個(gè)這種數(shù)據(jù)中心或其他地理位置具有在該地理位置處執(zhí)行的例程的不同的實(shí)施例),雖然在其他實(shí)施例中,單一例程400可以支持多個(gè)不同的數(shù)據(jù)中心或其他地理位置。
[0070]所示意的例程的實(shí)施例開始于步驟405,在步驟405處接收到請(qǐng)求或其他信息。例程繼續(xù)到步驟410,確定接收到的請(qǐng)求是否是創(chuàng)建新的塊數(shù)據(jù)存儲(chǔ)卷,例如來自于塊數(shù)據(jù)存儲(chǔ)服務(wù)的用戶和/或來自于很可能訪問該新卷的執(zhí)行中的程序,并且如果是,繼續(xù)到步驟415,執(zhí)行卷創(chuàng)建。在所示意的實(shí)施例中,步驟415中的例程選擇將在其上存儲(chǔ)卷的拷貝的一個(gè)或多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,至少部分基于所選擇的服務(wù)器存儲(chǔ)系統(tǒng)的位置和/或能力),在這些所選擇的服務(wù)器存儲(chǔ)系統(tǒng)上初始化卷拷貝,并更新所存儲(chǔ)的關(guān)于卷的信息以反映出新卷。例如,在一些實(shí)施例中,新卷的創(chuàng)建可以包括以特定的方式對(duì)每一個(gè)所選擇的服務(wù)器上特定大小的線性存儲(chǔ)裝置進(jìn)行初始化,例如,初始化為空白的,以包括另一所指示的卷的拷貝(例如,在相同數(shù)據(jù)中心或其他地理位置處的另一個(gè)卷,或者代之以存儲(chǔ)在遠(yuǎn)程位置處的卷),以包括所指示的快照卷拷貝的拷貝(例如,一個(gè)或多個(gè)檔案存儲(chǔ)系統(tǒng)存儲(chǔ)的快照卷拷貝,例如通過與檔案存儲(chǔ)系統(tǒng)進(jìn)行交互而獲得該快照卷拷貝)等。在其他實(shí)施例中,針對(duì)卷,可以在一個(gè)或多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建特定大小的線性存儲(chǔ)裝置的邏輯塊,例如通過使用多個(gè)被表示為單一邏輯塊的非連續(xù)存儲(chǔ)區(qū)域和/或通過對(duì)多個(gè)邏輯物理硬盤上的線性存儲(chǔ)裝置的邏輯塊加條紋來進(jìn)行。為了創(chuàng)建已經(jīng)存在于另一數(shù)據(jù)中心或其他地理位置處的卷的拷貝,例程可以例如與在該位置處支持塊數(shù)據(jù)存儲(chǔ)服務(wù)操作的例程400的另一實(shí)例相協(xié)同。此外,在一些實(shí)施例中,至少一些卷將在多個(gè)不同的服務(wù)器存儲(chǔ)系統(tǒng)上均具有包括至少一個(gè)主拷貝和一個(gè)或多個(gè)鏡像拷貝在內(nèi)的多個(gè)拷貝,以及如果這樣做,可以選擇并初始化多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)。
[0071]如果在步驟410中代之以確定接收到的請(qǐng)求不是創(chuàng)建卷,則例程代之以繼續(xù)到步驟420,確定接收到的請(qǐng)求是否要將已存在的卷附著到執(zhí)行中的程序拷貝,該請(qǐng)求例如從執(zhí)行中的程序拷貝接收到的請(qǐng)求,或者從代表與執(zhí)行中的程序拷貝和/或所指示的卷相關(guān)聯(lián)的用戶操作的另一計(jì)算系統(tǒng)接收到的請(qǐng)求。如果是,例程繼續(xù)到步驟425,識(shí)別存儲(chǔ)了卷的拷貝的至少一個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng),以及將至少一個(gè)識(shí)別出的服務(wù)器存儲(chǔ)系統(tǒng)與執(zhí)行中的程序相關(guān)聯(lián)(例如,將針對(duì)卷的主服務(wù)器存儲(chǔ)系統(tǒng)與程序在其上執(zhí)行的計(jì)算節(jié)點(diǎn)相關(guān)聯(lián),例如通過使邏輯本地塊存儲(chǔ)設(shè)備安裝到表示主卷拷貝的計(jì)算節(jié)點(diǎn)上來進(jìn)行)??梢酝ㄟ^各種方式來識(shí)別要附著的卷,例如通過該卷的唯一標(biāo)識(shí)符和/或創(chuàng)建或者以其他方式與該卷相關(guān)聯(lián)的用戶的標(biāo)識(shí)符來進(jìn)行。在將卷附著到執(zhí)行中的程序拷貝后,例程還可以更新所存儲(chǔ)的關(guān)于卷的信息,以指示執(zhí)行中的程序的附著,例如,如果一次僅允許單一程序附著到卷,或者如果一次僅允許單一程序?qū)磉M(jìn)行寫訪問或其他修改訪問。此外,在所指示的實(shí)施例中,可以向與執(zhí)行中的程序相關(guān)聯(lián)的節(jié)點(diǎn)服務(wù)器提供關(guān)于至少一個(gè)識(shí)別出的服務(wù)器存儲(chǔ)系統(tǒng)的信息,以例如利于卷對(duì)執(zhí)行中的程序的實(shí)際附著,雖然在其他實(shí)施例中,節(jié)點(diǎn)管理器可以具有對(duì)這種信息的其他訪問。
[0072]如果在步驟420中代之以確定接收到的請(qǐng)求不是將卷附著到執(zhí)行中的程序,則例程繼續(xù)到步驟430,確定接收到的請(qǐng)求是否是創(chuàng)建所指示的卷的快照拷貝,該請(qǐng)求例如從附著到卷或代之以附著到另一計(jì)算系統(tǒng)(例如,由與卷相關(guān)聯(lián)的用戶和/或購買了創(chuàng)建另一用戶的卷的快照拷貝的權(quán)利的用戶所操作的計(jì)算系統(tǒng))的執(zhí)行中的程序接收到的請(qǐng)求。在一些實(shí)施例中,可以創(chuàng)建卷的快照卷拷貝,而不管卷是否附著到任何執(zhí)行中的程序或由任何執(zhí)行中的程序所使用,和/或不管是否將卷存儲(chǔ)在例程400執(zhí)行處的相同數(shù)據(jù)中心或其他地理位置。如果確定是,例程繼續(xù)到步驟435,發(fā)起對(duì)所指示的卷的快照卷拷貝的創(chuàng)建,例如通過與和一個(gè)或多個(gè)檔案存儲(chǔ)系統(tǒng)(例如,在遠(yuǎn)程存儲(chǔ)位置處的檔案存儲(chǔ)系統(tǒng),例如結(jié)合在一個(gè)或多個(gè)網(wǎng)絡(luò)上可以訪問的遠(yuǎn)程長期存儲(chǔ)服務(wù))的操作相協(xié)同的一個(gè)或多個(gè)檔案管理器模塊進(jìn)行交互來進(jìn)行。在一些實(shí)施例中,可以由第三方遠(yuǎn)程存儲(chǔ)服務(wù)響應(yīng)于來自例程400的指示來執(zhí)行快照卷拷貝創(chuàng)建,例如,如果遠(yuǎn)程存儲(chǔ)服務(wù)已經(jīng)存儲(chǔ)了卷的至少一些段。此外,在至少一些實(shí)施例中還可以指定各種其他參數(shù),例如相對(duì)于一個(gè)或多個(gè)其他快照卷拷貝,是否要遞增該快照卷拷貝等。
[0073]如果在步驟430代之以確定接收到的請(qǐng)求不是創(chuàng)建快照卷拷貝,則例程繼續(xù)到步驟440,確定步驟405中接收到的信息是否是一個(gè)或多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)(在其他實(shí)施例中,或者一個(gè)或多個(gè)卷)的故障或其他不可用性的指示。例如,如下關(guān)于步驟485所描述的,在一些實(shí)施例中,例程可以監(jiān)控一些或所有服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的狀態(tài),并基于此來確定不可用性,例如,通過周期性或持續(xù)向服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)送Ping消息或其他消息來確定是否接收到響應(yīng),或者通過以其他方式獲得關(guān)于服務(wù)器存儲(chǔ)系統(tǒng)的狀態(tài)的信息。如果在步驟440中確定接收到的信息指示了一個(gè)或多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)的可能故障,例程繼續(xù)到步驟445,采取動(dòng)作維持存儲(chǔ)在所指示的一個(gè)或多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)上的一個(gè)或多個(gè)卷的可用性。具體地,在步驟445中,例程確定存儲(chǔ)在所指示的一個(gè)或多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)上的任何這種卷是否是主卷拷貝,并且針對(duì)每個(gè)這種主卷拷貝,在另一服務(wù)器存儲(chǔ)系統(tǒng)上提升該卷的一個(gè)鏡像拷貝為該卷新的主拷貝。在步驟450中,例程從而使得要在一個(gè)或多個(gè)其他服務(wù)器存儲(chǔ)系統(tǒng)上復(fù)制每個(gè)卷的至少一個(gè)新的拷貝,例如通過使用在服務(wù)器存儲(chǔ)系統(tǒng)上可用的卷的已存在的拷貝來進(jìn)行,該服務(wù)器存儲(chǔ)系統(tǒng)不同于被指示為不可用的這些服務(wù)器存儲(chǔ)系統(tǒng)中的一個(gè)服務(wù)器存儲(chǔ)系統(tǒng)。在其他實(shí)施例中,可以代之通過其他方式執(zhí)行將鏡像拷貝提升為主拷貝和/或創(chuàng)建新的鏡像拷貝,例如由服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)通過分布式的方式進(jìn)行(例如,使用卷的鏡像拷貝之間的選舉協(xié)議(election protocol)) 0此外,在一些實(shí)施例中,鏡像卷拷貝可以是僅包括卷的主拷貝的部分的最小拷貝(例如,僅包括從先前創(chuàng)建卷的快照拷貝以來修改過的部分),以及將鏡像拷貝提升為主拷貝還可以包括收集新的主拷貝的信息,以使其完整(例如,從最近的快照拷貝收集)。[0074]在步驟455中,然后例如針對(duì)先前附著到該一個(gè)或多個(gè)不可用的服務(wù)器存儲(chǔ)系統(tǒng)上的主卷拷貝的執(zhí)行中的程序,例程可選地發(fā)起一個(gè)或多個(gè)執(zhí)行中的程序?qū)溺R像拷貝提升而來的任何新的主卷拷貝的附著,雖然在其他實(shí)施例中,這種重新附著到新的主卷拷貝將代之通過其他方式來執(zhí)行(例如,由與將發(fā)生重新附著的執(zhí)行中的程序相關(guān)聯(lián)的節(jié)點(diǎn)管理器進(jìn)行)。在步驟458中,然后例程更新關(guān)于不可用的服務(wù)器存儲(chǔ)系統(tǒng)上的卷的信息,以例如指示在步驟450中創(chuàng)建的新的卷拷貝和在步驟445中提升的新的主卷拷貝。在其他實(shí)施例中,可以通過其他方式來創(chuàng)建新的主卷拷貝,例如通過創(chuàng)建新的卷拷貝來作為主卷拷貝,而不是提升已存在的鏡像卷拷貝,雖然這樣做可能花比提升已存在的鏡像卷拷貝更長的時(shí)間。此外,如果在步驟450中沒有卷拷貝可用于從其復(fù)制新的卷拷貝,例如,如果存儲(chǔ)卷的主拷貝和鏡像拷貝的多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)都幾乎同時(shí)出現(xiàn)故障,在一些實(shí)施例中,例程可以通過其他方式嘗試獲得針對(duì)該卷的信息來在這樣的復(fù)制中使用,例如,從在檔案存儲(chǔ)系統(tǒng)上可用的卷的一個(gè)或多個(gè)最近的快照卷拷貝獲得,從在另一個(gè)數(shù)據(jù)中心或其他地理位置處的卷的拷貝獲得等。
[0075]如果在步驟440中代之以確定接收到的信息不是一個(gè)或多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的故障或其他不可用性的指示,例程代之以繼續(xù)到步驟460,確定步驟405中接收到的信息是否指示將一個(gè)或多個(gè)卷移動(dòng)到一個(gè)或多個(gè)新的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)。如在其他地方更詳細(xì)地描述的,可以出于各種理由執(zhí)行這種卷移動(dòng),包括至相同地理位置處的其他服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,移動(dòng)已存在的卷到更好地裝備以支持該卷的存儲(chǔ)系統(tǒng))和/或至在一個(gè)或多個(gè)其他數(shù)據(jù)中心或其他地理位置的一個(gè)或多個(gè)服務(wù)器數(shù)據(jù)存儲(chǔ)系統(tǒng)。此外,可以通過各種方式發(fā)起卷的移動(dòng),例如,由于來自于與該卷相關(guān)聯(lián)的塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的用戶的請(qǐng)求而發(fā)起,由于來自于塊數(shù)據(jù)存儲(chǔ)服務(wù)的人類操作員的請(qǐng)求而發(fā)起,基于自動(dòng)檢測(cè)到與正在使用的當(dāng)前服務(wù)器存儲(chǔ)系統(tǒng)相比,對(duì)于卷來說更好的服務(wù)器存儲(chǔ)系統(tǒng)而發(fā)起(例如,由于當(dāng)前服務(wù)器存儲(chǔ)系統(tǒng)的過度利用和/或新服務(wù)器存儲(chǔ)系統(tǒng)的欠利用)等。如果在步驟640中確定接收到的信息是要移動(dòng)一個(gè)或多個(gè)這種卷拷貝,例程繼續(xù)到步驟465并在一個(gè)或多個(gè)新的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建每個(gè)所指示的卷的拷貝,例如以與先前關(guān)于步驟415討論的方式相類似的方式(例如,通過使用在服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上已存在的卷拷貝,通過使用在一個(gè)或多個(gè)檔案存儲(chǔ)系統(tǒng)上卷的快照拷貝或其他拷貝等),以及還在步驟465中更新所存儲(chǔ)的針對(duì)該卷的信息。此外,在一些實(shí)施例中,例程可以采取附加動(dòng)作來支持移動(dòng),例如在創(chuàng)建新的卷拷貝后,從服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)刪除先前的卷拷貝。此外,在一個(gè)或多個(gè)執(zhí)行中的程序被附著到正在移動(dòng)的先前的卷拷貝的情況下,例程可以針對(duì)執(zhí)行中的程序發(fā)起正在移動(dòng)的先前的卷拷貝的去附著,和/或可以發(fā)起這種執(zhí)行中的程序?qū)φ趧?chuàng)建中的新卷的重新附著,例如通過向執(zhí)行中的程序的節(jié)點(diǎn)管理器發(fā)送相關(guān)聯(lián)的指令來進(jìn)行,雖然在其他實(shí)施例中,節(jié)點(diǎn)管理器可代之執(zhí)行這種動(dòng)作。
[0076]如果在步驟460中代之以確定接收到的信息不是移動(dòng)一個(gè)或多個(gè)卷的指令,例程代之以繼續(xù)到步驟485,在適當(dāng)時(shí)執(zhí)行一個(gè)或多個(gè)另外指示的操作。在各個(gè)實(shí)施例中,其他操作可以具有各種形式,例如以下非排他性列表中的一個(gè)或多個(gè):執(zhí)行對(duì)一些或所有服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的監(jiān)控(例如,通過向服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)送Ping消息或其他狀態(tài)消息,并等待響應(yīng));通過響應(yīng)于確定卷的主拷貝或鏡像拷貝不可用來發(fā)起置換主卷拷貝和/或鏡像拷貝的創(chuàng)建,例如基于所執(zhí)行的監(jiān)控,基于從存儲(chǔ)卷的主拷貝但不能夠更新該卷的一個(gè)或多個(gè)鏡像拷貝的主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)接收到的消息,基于從節(jié)點(diǎn)管理器接收到的消息等;去附著、刪除和/或描述一個(gè)或多個(gè)卷;刪除、描述和/或拷貝一個(gè)或多個(gè)快照卷拷貝;由用戶跟蹤卷和/或快照卷拷貝的使用,以例如出于支付目的計(jì)量這種使用;等等。在步驟415、425、435、458、465或485之后,例程繼續(xù)到步驟495,確定是否繼續(xù),例如直到接收到顯式的終止指令。如果確定繼續(xù),例程返回步驟405,如果確定不繼續(xù),例程繼續(xù)到步驟499并結(jié)束。
[0077]此外,針對(duì)至少一些類型的請(qǐng)求,在一些實(shí)施例中,例程還檢驗(yàn)請(qǐng)求者被授權(quán)進(jìn)行該請(qǐng)求,例如基于針對(duì)請(qǐng)求者指定的訪問權(quán)和/或該請(qǐng)求的相關(guān)聯(lián)的目標(biāo)(例如,所指示的卷)。在一些這種實(shí)施例中,授權(quán)檢驗(yàn)還可以包括從請(qǐng)求者獲得針對(duì)所請(qǐng)求的功能的支付(或者檢驗(yàn)已經(jīng)提供了任何這種支付),以例如如果沒有提供支付則不執(zhí)行請(qǐng)求。例如,在至少一些實(shí)施例和情況中可具有相關(guān)支付的請(qǐng)求的類型包括創(chuàng)建卷的請(qǐng)求、附著卷的請(qǐng)求、創(chuàng)建快照拷貝的請(qǐng)求、移動(dòng)所指示的卷的請(qǐng)求(例如,至高級(jí)服務(wù)器存儲(chǔ)系統(tǒng))以及所指示的操作的其他類型。此外,可以對(duì)代表用戶采取的一些或所有類型的動(dòng)作進(jìn)行監(jiān)控和計(jì)量,例如后來用于針對(duì)這些動(dòng)作中的至少一些確定所對(duì)應(yīng)的基于使用的費(fèi)用。
[0078]圖5是節(jié)點(diǎn)管理器例程500的示例實(shí)施例的流程圖。例如,可以由圖1的節(jié)點(diǎn)管理器模塊115和/或125的執(zhí)行,和/或圖3的節(jié)點(diǎn)管理器模塊380的執(zhí)行來提供例程,以例如管理非本地塊數(shù)據(jù)存儲(chǔ)裝置的一個(gè)或多個(gè)執(zhí)行中的程序所進(jìn)行的使用。在所示意的實(shí)施例中,塊數(shù)據(jù)存儲(chǔ)服務(wù)通過一個(gè)或多個(gè)BDS系統(tǒng)管理器模塊和多個(gè)節(jié)點(diǎn)管理器模塊以及可選地一個(gè)或多個(gè)檔案管理器模塊的組合來提供功能,雖然在其他實(shí)施例中,可以使用其他配置(例如,沒有節(jié)點(diǎn)管理器模塊和/或檔案管理器模塊的單一 BDS系統(tǒng)管理器模塊,在沒有BDS系統(tǒng)管理器模塊的情況下在協(xié)同管理器中一起執(zhí)行的多個(gè)節(jié)點(diǎn)管理器模塊等)。
[0079]所示意的例程的實(shí)施例開始于步驟505中,在步驟505中,接收涉及在相關(guān)聯(lián)的計(jì)算節(jié)點(diǎn)上的程序執(zhí)行的請(qǐng)求。例程繼續(xù)到步驟510,確定該請(qǐng)求是否涉及在所指示的相關(guān)聯(lián)的計(jì)算節(jié)點(diǎn)上執(zhí)行一個(gè)或多個(gè)所指示的程序,該請(qǐng)求例如是來自于程序執(zhí)行服務(wù)和/或與這些程序相關(guān)聯(lián)的用戶的請(qǐng)求。如果是,例程繼續(xù)到步驟515,以獲得所指示的程序的拷貝,并在相關(guān)聯(lián)的計(jì)算節(jié)點(diǎn)上發(fā)起程序的執(zhí)行,在一些實(shí)施例中,在步驟515中可以基于作為在步驟505中接收到的請(qǐng)求的一部分發(fā)送到例程500的所指示的程序來獲得該一個(gè)或多個(gè)所指示的程序,而在其他實(shí)施例中,可以從本地或非本地存儲(chǔ)裝置檢索所指示的程序(例如,從遠(yuǎn)程存儲(chǔ)設(shè)備)。在其他實(shí)施例中,例程500可以代之以不執(zhí)行涉及執(zhí)行中的程序的操作,例如,如果支持程序執(zhí)行服務(wù)的另一例程代之以代表相關(guān)聯(lián)的計(jì)算節(jié)點(diǎn)執(zhí)行這些操作。
[0080]如果代之以在步驟510中確定接收到的請(qǐng)求是不執(zhí)行一個(gè)或多個(gè)所指定的程序,例程代之以繼續(xù)到步驟520,確定是否接收到將所指示的卷附著到所指示的執(zhí)行中的程序,該請(qǐng)求例如是來自執(zhí)行中的程序的請(qǐng)求,來自于圖4的例程的請(qǐng)求和/或來自于與所指示的卷和/或所指示的執(zhí)行中的程序相關(guān)聯(lián)的用戶的請(qǐng)求。如果是,例程繼續(xù)到步驟525,獲得卷的主拷貝的指示,并將該主卷拷貝關(guān)聯(lián)到計(jì)算節(jié)點(diǎn)的典型邏輯本地塊數(shù)據(jù)存儲(chǔ)設(shè)備。在一些實(shí)施例中,例程可以向執(zhí)行中的程序和/或計(jì)算節(jié)點(diǎn)指示該典型本地邏輯塊數(shù)據(jù)存儲(chǔ)設(shè)備,而在其他實(shí)施例中,執(zhí)行中的程序可以代之以發(fā)起本地邏輯塊數(shù)據(jù)存儲(chǔ)設(shè)備的創(chuàng)建。例如,在一些實(shí)施例中,例程500可以通過將塊設(shè)備導(dǎo)入到具體的虛擬機(jī)中并安裝邏輯本地塊數(shù)據(jù)存儲(chǔ)設(shè)備,使用GNBD( “全局網(wǎng)絡(luò)塊設(shè)備”)技術(shù)來使得該邏輯本地塊數(shù)據(jù)存儲(chǔ)設(shè)備可為虛擬機(jī)計(jì)算節(jié)點(diǎn)所使用。在一些實(shí)施例中,例程可以在步驟525采取進(jìn)一步的動(dòng)作,例如獲得并存儲(chǔ)對(duì)卷的一個(gè)或多個(gè)鏡像卷拷貝的指示,例如如果主卷拷貝后來變得不可用,允許例程動(dòng)態(tài)附著到鏡像卷拷貝。
[0081]如果在步驟520中代之以確定步驟505的接收到的請(qǐng)求不是附著所指示的卷,例程代之以繼續(xù)到步驟530,確定接收到的請(qǐng)求是否是執(zhí)行中的程序針對(duì)所附著的卷的數(shù)據(jù)訪問請(qǐng)求,例如讀取請(qǐng)求或?qū)懭胝?qǐng)求。如果是,例程繼續(xù)到步驟535,在步驟535,例程識(shí)別與數(shù)據(jù)訪問請(qǐng)求相對(duì)應(yīng)的相關(guān)主卷拷貝(例如,基于針對(duì)該數(shù)據(jù)訪問請(qǐng)求,所執(zhí)行的程序使用的典型本地邏輯塊數(shù)據(jù)存儲(chǔ)設(shè)備),并對(duì)該主卷拷貝發(fā)起所請(qǐng)求的數(shù)據(jù)訪問。如在其他地方更詳細(xì)地描述的,在一些實(shí)施例中,可以使用惰性寫入方案,例如通過立即修改實(shí)際的主卷拷貝和/或鏡像卷拷貝來反映寫數(shù)據(jù)訪問請(qǐng)求(例如,總是更新鏡像卷拷貝、僅在將鏡像卷拷貝提升為主卷拷貝的情況下才更新該鏡像卷拷貝等),而不立即修改存儲(chǔ)在一個(gè)或多個(gè)檔案存儲(chǔ)系統(tǒng)上的對(duì)應(yīng)段以反映該寫數(shù)據(jù)訪問請(qǐng)求(例如,以使得當(dāng)已進(jìn)行了足夠的修改時(shí)和/或當(dāng)請(qǐng)求了對(duì)對(duì)應(yīng)信息的讀訪問時(shí),最終更新存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上的拷貝)。在所示意的實(shí)施例中,由不同于例程500的例程來執(zhí)行鏡像卷拷貝的維持(例如,由存儲(chǔ)主卷拷貝的主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)來進(jìn)行),雖然在其他實(shí)施例中,例程500在步驟535中還可以通過向一個(gè)或多個(gè)鏡像卷拷貝發(fā)送類似或相同的數(shù)據(jù)訪問請(qǐng)求來協(xié)助維持這些鏡像卷拷貝。此外,在一些實(shí)施例中,可以不將卷存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上,直到對(duì)應(yīng)的用戶顯式地進(jìn)行請(qǐng)求(例如,作為創(chuàng)建卷的快照拷貝的請(qǐng)求的一部分),而在其他實(shí)施例中,可以將至少一些卷的至少一些部分維持在檔案存儲(chǔ)系統(tǒng)上(例如,如果使用檔案存儲(chǔ)系統(tǒng)的拷貝來作為主卷拷貝和/或鏡像卷拷貝的備用存儲(chǔ))。
[0082]在步驟535之后,例程繼續(xù)到步驟540,確定在預(yù)定的時(shí)限內(nèi)是否從主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)接收到針對(duì)步驟535中發(fā)送的請(qǐng)求的響應(yīng),以例如指示操作的成功。如果沒有,例程確定主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)不可用,并繼續(xù)到步驟545,發(fā)起改變以附著一個(gè)鏡像卷拷貝來作為新的主卷拷貝,并將針對(duì)該鏡像卷拷貝的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)關(guān)聯(lián)為該卷新的主服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)。此外,通過與以上關(guān)于步驟535指示的方式相類似的方式,例程類似地向該新的主卷拷貝發(fā)送數(shù)據(jù)訪問請(qǐng)求,并且還可以在一些實(shí)施例中進(jìn)一步監(jiān)控是否接收到適當(dāng)?shù)捻憫?yīng),并且如果沒有接收到,再次進(jìn)行到步驟545 (例如,提升另一個(gè)鏡像卷拷貝并重復(fù)該處理)。在一些實(shí)施例中,可以協(xié)同例程400來執(zhí)行發(fā)起將鏡像卷拷貝作為新的主卷拷貝的改變,例如通過發(fā)起與例程400的接觸以確定哪個(gè)鏡像卷拷貝應(yīng)當(dāng)變成新的主卷拷貝,通過從例程400接收例程500何時(shí)將鏡像卷拷貝提升為主卷拷貝的指令(例如,由例程500在步驟545中發(fā)送的主卷拷貝不可用的指示來提示)等。
[0083]如果在步驟530中代之以確定接收到的請(qǐng)求不是針對(duì)所附著的卷的數(shù)據(jù)訪問請(qǐng)求,例程代之以繼續(xù)到步驟585,在適當(dāng)時(shí)執(zhí)行一個(gè)或多個(gè)另外指示的操作。在各個(gè)實(shí)施例中,該其他操作可以具有各種形式,例如來自例程400的針對(duì)一個(gè)或多個(gè)卷的新的卷信息的指令(例如,一個(gè)或多個(gè)正被管理的執(zhí)行中的程序所附著到的卷的新提升的主卷拷貝),將卷從與例程500相關(guān)聯(lián)的計(jì)算節(jié)點(diǎn)上的執(zhí)行中的程序去附著等。此外,在至少一些實(shí)施例中,例程還可以執(zhí)行虛擬機(jī)監(jiān)控器的一個(gè)或多個(gè)其他動(dòng)作,例如,如果例程500作為虛擬機(jī)監(jiān)控器的一部分或者以其他方式與虛擬機(jī)監(jiān)控器協(xié)同來進(jìn)行操作,該虛擬機(jī)監(jiān)控器管理一個(gè)或多個(gè)相關(guān)聯(lián)的虛擬機(jī)計(jì)算節(jié)點(diǎn)。
[0084]在步驟515、525、545或585之后,或者如果在步驟540中代之以確定在預(yù)定時(shí)限內(nèi)接收到響應(yīng),例程繼續(xù)到步驟595,確定是否繼續(xù),例如直到接收到顯式的終止指令。如果確定繼續(xù),例程返回步驟505,如果確定不繼續(xù),例程繼續(xù)到步驟599并結(jié)束。
[0085]此外,針對(duì)至少一些類型的請(qǐng)求,在一些實(shí)施例中,例程還驗(yàn)證請(qǐng)求者被授權(quán)進(jìn)行該請(qǐng)求,例如基于針對(duì)請(qǐng)求者指定的訪問權(quán)和/或該請(qǐng)求的相關(guān)目標(biāo)(例如,所指示的卷)。在一些這種實(shí)施例中,授權(quán)驗(yàn)證還可以包括從請(qǐng)求者獲得針對(duì)所請(qǐng)求的功能的支付(或者檢驗(yàn)已經(jīng)提供了任何這種支付),以例如如果沒有提供支付則不執(zhí)行請(qǐng)求。例如,在至少一些實(shí)施例和情況中,可能具有相關(guān)聯(lián)的支付的請(qǐng)求的類型包括執(zhí)行所指示的程序的請(qǐng)求、附著卷的請(qǐng)求、執(zhí)行一些或所有類型的數(shù)據(jù)訪問請(qǐng)求的請(qǐng)求以及其他類型的所指示的操作。此外,可以對(duì)代表用戶采取的一些或所有類型的動(dòng)作進(jìn)行監(jiān)控和計(jì)量,例如后來用于針對(duì)這些動(dòng)作中的至少一些確定所對(duì)應(yīng)的基于使用的費(fèi)用。
[0086]圖6是服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)例程600的示例實(shí)施例的流程圖。例如,可以由服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的軟件組件的執(zhí)行來提供該例程,以例如管理在該服務(wù)器存儲(chǔ)系統(tǒng)的一個(gè)或多個(gè)塊數(shù)據(jù)存儲(chǔ)卷上的塊數(shù)據(jù)存儲(chǔ)(例如,針對(duì)圖1和/或圖2的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)165)。在其他實(shí)施例中,可以通過其他方式提供該例程的一些或所有功能,例如通過在一個(gè)或多個(gè)其他計(jì)算系統(tǒng)上執(zhí)行以管理一個(gè)或多個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的軟件。
[0087]所示意的例程的實(shí)施例開始于步驟605,在步驟405處接收到請(qǐng)求。例程繼續(xù)到步驟610,以確定接收到的請(qǐng)求是否涉及創(chuàng)建新的卷,例如通過將服務(wù)器存儲(chǔ)系統(tǒng)的可用存儲(chǔ)空間(例如,一個(gè)或多個(gè)本地硬盤上的存儲(chǔ)空間)的塊與新指示的卷相關(guān)聯(lián)。例如,該請(qǐng)求可以來自于例程400和/或來自于與正在創(chuàng)建的新卷相關(guān)聯(lián)的用戶。如果是,例程繼續(xù)到步驟615,存儲(chǔ)關(guān)于新卷的信息,并且在步驟620中初始化針對(duì)新卷的存儲(chǔ)空間(例如,所指示大小的存儲(chǔ)空間的邏輯線性塊)。如在其他地方更詳細(xì)地描述的,在一些實(shí)施例中,可以基于另一已存在的卷或快照卷拷貝來創(chuàng)建新卷,并且如果這樣做,例程在步驟620中可以通過將適當(dāng)?shù)臄?shù)據(jù)拷貝到用于新卷的存儲(chǔ)空間來初始化該存儲(chǔ)空間,而在其他實(shí)施例中,可以通過其他方式初始化新卷存儲(chǔ)空間(例如,以例如將存儲(chǔ)空間初始化為默認(rèn)值,例如全零)。
[0088]如果在步驟610中代之以確定接收到的請(qǐng)求不是創(chuàng)建新卷,例程代之以繼續(xù)到步驟625,確定針對(duì)存儲(chǔ)在服務(wù)器存儲(chǔ)系統(tǒng)上的已存在的卷,是否已經(jīng)接收到數(shù)據(jù)訪問請(qǐng)求,該請(qǐng)求例如來自于與數(shù)據(jù)訪問請(qǐng)求所發(fā)起的執(zhí)行中的程序相關(guān)聯(lián)的節(jié)點(diǎn)管理器。如果是,例程繼續(xù)到步驟630,執(zhí)行關(guān)于所指示的卷的的數(shù)據(jù)訪問請(qǐng)求。然后,例程繼續(xù)到步驟635,在所示意的實(shí)施例中,例如如果在當(dāng)前服務(wù)器存儲(chǔ)系統(tǒng)上所指示的卷是卷的主卷拷貝,可選地發(fā)起針對(duì)卷的一個(gè)或多個(gè)鏡像拷貝的對(duì)應(yīng)更新。在其他實(shí)施例中,可以通過其他方式維持主卷拷貝和鏡像卷拷貝之間的一致性。如其他地方更詳細(xì)地討論的,在一些實(shí)施例中,還可以向一個(gè)或多個(gè)檔案存儲(chǔ)系統(tǒng)(例如,在遠(yuǎn)程存儲(chǔ)服務(wù)處)執(zhí)行對(duì)所存儲(chǔ)的至少一些卷的數(shù)據(jù)內(nèi)容的至少一些修改,以例如維持這些卷的備用拷貝或其他拷貝,并且如果這樣做,例程還可以發(fā)起對(duì)檔案存儲(chǔ)系統(tǒng)的更新,以發(fā)起針對(duì)檔案存儲(chǔ)系統(tǒng)上的卷的一個(gè)或多個(gè)拷貝的對(duì)應(yīng)更新。此外,如果例程在步驟635或其他地方確定卷的鏡像拷貝不可用(例如,基于在預(yù)定時(shí)間量內(nèi)對(duì)步驟635中發(fā)送的數(shù)據(jù)訪問請(qǐng)求的響應(yīng)失敗,或者例程600發(fā)起的周期性檢查鏡像卷拷貝及其鏡像服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)可用的Ping消息或其他狀態(tài)消息的響應(yīng)失??;基于來自于鏡像服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的、指示其遭受出錯(cuò)的情況或者開始關(guān)閉或開始故障模式操作的消息;等等),例程可以例如通過向圖4的例程400發(fā)送對(duì)應(yīng)消息或者代之以直接發(fā)起鏡像卷拷貝創(chuàng)建,發(fā)起動(dòng)作來創(chuàng)建卷的新的鏡像拷貝。
[0089]如果在步驟625中代之以確定接收到的請(qǐng)求不是針對(duì)卷的數(shù)據(jù)訪問請(qǐng)求,例程繼續(xù)到步驟685,在適當(dāng)時(shí)執(zhí)行一個(gè)或多個(gè)另外指示的操作。在各個(gè)實(shí)施例中,這種其他操作可以具有各種形式,例如以下非排他性列表中的一個(gè)或多個(gè):刪除卷(例如,以使得可以使所關(guān)聯(lián)的存儲(chǔ)空間可用于其他使用);將卷拷貝到所指示的目的地(例如,到另一個(gè)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的另一個(gè)新卷,到一個(gè)或多個(gè)檔案存儲(chǔ)系統(tǒng)以用作快照卷拷貝等);提供關(guān)于卷的使用的信息(例如,用于卷使用的計(jì)量,例如針對(duì)客戶進(jìn)行的基于費(fèi)用的使用);執(zhí)行正在進(jìn)行的針對(duì)服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的維護(hù)或診斷(例如,以對(duì)本地硬盤進(jìn)行磁盤碎片整理);等等。在步驟620、635或685之后,例程繼續(xù)到步驟695,確定是否繼續(xù),例如直到接收到顯式的終止指令。如果確定繼續(xù),例程返回步驟605,如果確定不繼續(xù),例程繼續(xù)到步驟699并結(jié)束。
[0090]此外,針對(duì)至少一些類型的請(qǐng)求,在一些實(shí)施例中,例程還可以驗(yàn)證請(qǐng)求者被授權(quán)進(jìn)行該請(qǐng)求,例如基于針對(duì)該請(qǐng)求者指定的訪問權(quán)和/或請(qǐng)求的相關(guān)目標(biāo)(例如,所指示的卷),而在其他實(shí)施例中,例程可以假定從其接收到請(qǐng)求的例程(例如,節(jié)點(diǎn)管理器例程和/或BDS系統(tǒng)管理器例程)之前已經(jīng)對(duì)該請(qǐng)求授權(quán)。此外,可以對(duì)代表用戶采取的一些或所有類型的動(dòng)作進(jìn)行監(jiān)控和計(jì)量,例如后來用于針對(duì)這些動(dòng)作中的至少一些確定所對(duì)應(yīng)的基于使用的費(fèi)用。
[0091]圖7A和7B是PES系統(tǒng)管理器例程700的示例實(shí)施例的流程圖。例如,可以通過圖1的PES系統(tǒng)管理器模塊140的執(zhí)行來提供該例程。在其他實(shí)施例中,可代之以通過其他方式提供例程700的一些或所有功能,例如通過作為塊數(shù)據(jù)存儲(chǔ)服務(wù)的一部分的例程400。
[0092]在所示意的實(shí)施例中,例程開始于步驟705,在步驟705處,接收到狀態(tài)消息或涉及程序執(zhí)行的其他請(qǐng)求。例程繼續(xù)到步驟710,確定接收到的消息或請(qǐng)求的類型,如果在步驟710中確定該類型是執(zhí)行程序的請(qǐng)求(例如,來自于用戶或執(zhí)行中的程序),例程繼續(xù)到步驟720以選擇在其上執(zhí)行所指示的程序的一個(gè)或多個(gè)主機(jī)計(jì)算系統(tǒng),例如從對(duì)程序執(zhí)行可用的候選主機(jī)計(jì)算系統(tǒng)的組中選擇。在一些實(shí)施例中,可以依照用戶指令或其他所指示的感興趣的標(biāo)準(zhǔn)來選擇該一個(gè)或多個(gè)主機(jī)計(jì)算系統(tǒng)。然后,例程繼續(xù)到步驟725,例如通過與同所選擇的主機(jī)計(jì)算系統(tǒng)相關(guān)聯(lián)的節(jié)點(diǎn)管理器進(jìn)行交互,由所選擇的每個(gè)主機(jī)計(jì)算系統(tǒng)發(fā)起程序的執(zhí)行。在步驟730中,然后,例程可選地執(zhí)行一個(gè)或多個(gè)內(nèi)務(wù)(housekeeping)任務(wù)(例如,監(jiān)控用戶的程序執(zhí)行,例如出于計(jì)量和/或其他計(jì)費(fèi)目的)。
[0093]如果在步驟710中代之以確定接收到的請(qǐng)求是將新程序注冊(cè)為可用于后續(xù)執(zhí)行,例程代之以繼續(xù)到步驟740,存儲(chǔ)程序的指示和針對(duì)其使用的相關(guān)管理信息(例如,涉及被授權(quán)使用該程序的用戶的訪問控制信息和/或用戶的授權(quán)類型),并且在一些情況下還可以存儲(chǔ)程序的至少一個(gè)集中式的拷貝。然后,例程繼續(xù)到步驟745,以可選地發(fā)起向一個(gè)或多個(gè)主機(jī)計(jì)算系統(tǒng)分發(fā)所指示的程序的拷貝以供后續(xù)使用,以例如允許這些主機(jī)計(jì)算系統(tǒng)通過從這些主機(jī)計(jì)算系統(tǒng)的本地存儲(chǔ)裝置檢索所存儲(chǔ)的拷貝來快速啟動(dòng)程序。在其他實(shí)施例中,可以通過其他方式來存儲(chǔ)(例如,在一個(gè)或多個(gè)遠(yuǎn)程檔案存儲(chǔ)系統(tǒng)上)所指示的程序的一個(gè)或多個(gè)拷貝。
[0094]如果在步驟710代之以確定在步驟705中接收到關(guān)于一個(gè)或多個(gè)主機(jī)計(jì)算系統(tǒng)的狀態(tài)消息,例程代之以繼續(xù)到步驟750,更新關(guān)于這些主機(jī)計(jì)算系統(tǒng)的信息,以例如跟蹤執(zhí)行中的程序的使用和/或關(guān)于主機(jī)計(jì)算系統(tǒng)的其他狀態(tài)信息(例如,非本地塊數(shù)據(jù)存儲(chǔ)卷的使用)。在一些實(shí)施例中,節(jié)點(diǎn)管理器模塊將周期性地發(fā)送狀態(tài)消息,而在其他實(shí)施例中,可以在其他時(shí)間發(fā)送狀態(tài)消息(例如,只要相關(guān)改變發(fā)生)。在又一些其他實(shí)施例中,例程700可以代之以根據(jù)需要從節(jié)點(diǎn)管理器模塊和/或主機(jī)計(jì)算系統(tǒng)請(qǐng)求信息。狀態(tài)消息可以包括各種類型的信息,例如當(dāng)前在具體計(jì)算系統(tǒng)上執(zhí)行的程序的數(shù)目和標(biāo)識(shí)、當(dāng)前存儲(chǔ)在具體計(jì)算系統(tǒng)上的本地程序倉庫中的程序拷貝的數(shù)目和標(biāo)識(shí)、非本地塊數(shù)據(jù)存儲(chǔ)卷的附著和/或其他使用、針對(duì)計(jì)算系統(tǒng)的關(guān)于性能和關(guān)于資源的信息(例如,CPU、網(wǎng)絡(luò)、磁盤、存儲(chǔ)器的利用率等)、針對(duì)計(jì)算系統(tǒng)的配置信息以及涉及具體計(jì)算系統(tǒng)上的硬件或軟件的錯(cuò)誤或故障情況的報(bào)告。
[0095]如果例程在步驟705中代之以確定接收到另一類型的請(qǐng)求或消息,例程代之以繼續(xù)到步驟785,在適當(dāng)時(shí)執(zhí)行一個(gè)或多個(gè)其他所指示的操作。例如,這種其他操作可以包括掛起或終止當(dāng)前執(zhí)行中的程序的執(zhí)行,以及以其他方式管理程序執(zhí)行服務(wù)的管理方面(注冊(cè)新用戶、確定和獲得針對(duì)用戶的程序執(zhí)行服務(wù)的支付等)。在步驟745、750或785之后,例程繼續(xù)到步驟730,可選地執(zhí)行一個(gè)或多個(gè)內(nèi)務(wù)處理任務(wù)。然后,例程繼續(xù)到步驟795,確定是否繼續(xù),例如直到接收到顯式的終止指令。如果確定繼續(xù),例程返回步驟705,如果確定不繼續(xù),例程繼續(xù)到步驟799并結(jié)束。
[0096]雖然在此沒有示意,在至少一些實(shí)施例中,程序執(zhí)行服務(wù)可以提供執(zhí)行程序的各種附加類型的功能,例如協(xié)同塊數(shù)據(jù)存儲(chǔ)服務(wù)來進(jìn)行。在至少一些實(shí)施例中,可以發(fā)起程序的一個(gè)或多個(gè)拷貝或?qū)嵗谝粋€(gè)或多個(gè)計(jì)算系統(tǒng)上的執(zhí)行,以響應(yīng)于對(duì)這些程序?qū)嵗牧⒓磮?zhí)行的當(dāng)前執(zhí)行請(qǐng)求。備選地,該發(fā)起可以基于先前接收到的程序執(zhí)行請(qǐng)求,該先前接收到的程序執(zhí)行請(qǐng)求調(diào)度或以其他方式保留這些程序?qū)嵗膶韴?zhí)行,用于現(xiàn)如今。可以通過各種方式接收程序執(zhí)行請(qǐng)求,例如直接從用戶接收(例如,經(jīng)由程序執(zhí)行服務(wù)提供的交互控制臺(tái)或其他GUI),或者從用戶的執(zhí)行中的程序接收,該用戶自動(dòng)發(fā)起其他程序的一個(gè)或多個(gè)實(shí)例或其本身的執(zhí)行(例如,經(jīng)由程序執(zhí)行服務(wù)提供的API,例如使用Web服務(wù)的API)。程序執(zhí)行請(qǐng)求可以包括在對(duì)程序的一個(gè)或多個(gè)實(shí)例的執(zhí)行的發(fā)起中使用的各種信息,例如,先前注冊(cè)或者以其他方式提供來用于將來的執(zhí)行的程序的指示,以及要同時(shí)執(zhí)行的程序的實(shí)例的數(shù)目(例如,表達(dá)為實(shí)例的單一期望數(shù)目,表達(dá)為所期望的實(shí)例的最小和最大數(shù)目等)。此外,在一些實(shí)施例中,程序執(zhí)行請(qǐng)求可以包括各種其他類型的信息,例如以下信息:用戶賬戶的指示或者先前注冊(cè)的用戶的其他指示(例如,用于在識(shí)別先前存儲(chǔ)的程序和/或確定所請(qǐng)求的程序?qū)嵗龍?zhí)行是否被授權(quán)中使用);用于在向程序執(zhí)行服務(wù)提供對(duì)程序?qū)嵗龍?zhí)行的支付中使用的支付源的指示;先前支付或針對(duì)程序?qū)嵗龍?zhí)行的其他授權(quán)的指示(例如,一段時(shí)間內(nèi)有效的先前購買的訂購,針對(duì)多個(gè)程序執(zhí)行實(shí)例,針對(duì)一定量的資源使用率等);和/或要立即執(zhí)行和/或存儲(chǔ)以供后續(xù)執(zhí)行的程序的可執(zhí)行拷貝或其他拷貝。此外,在一些實(shí)施例中,程序執(zhí)行請(qǐng)求還可以包括用于一個(gè)或多個(gè)程序?qū)嵗膱?zhí)行的各種其他類型的偏好和/或要求。這種偏好和/或要求可以包括在所指示的地理和/或邏輯位置中執(zhí)行一些或所有程序?qū)嵗闹甘?,例如在多個(gè)數(shù)據(jù)中心中容納可用的多個(gè)計(jì)算系統(tǒng)的那一個(gè)數(shù)據(jù)中心中,在彼此臨近的多個(gè)計(jì)算系統(tǒng)上,和/或在與具有其他所指示的特性(例如,提供所指示的塊數(shù)據(jù)存儲(chǔ)卷的拷貝)的計(jì)算系統(tǒng)臨近的一個(gè)或多個(gè)計(jì)算系統(tǒng)上。
[0097]圖8是檔案管理器例程800的示例實(shí)施例的流程圖。例如,可以由圖3的檔案管理器模塊355中的一個(gè)的執(zhí)行、圖2C-2F的檔案管理器模塊190的執(zhí)行和/或圖1的計(jì)算系統(tǒng)180上的一個(gè)或多個(gè)檔案管理器模塊(未示出)的執(zhí)行來提供該例程。在其他實(shí)施例中,可以代之以其他方式提供例程800的一些或所有功能,例如通過作為塊數(shù)據(jù)存儲(chǔ)服務(wù)的一部分的例程400提供。在所示意的實(shí)施例中,檔案存儲(chǔ)系統(tǒng)將數(shù)據(jù)成段存儲(chǔ),每一段對(duì)應(yīng)于塊數(shù)據(jù)存儲(chǔ)卷的一部分,然而在其他實(shí)施例中,可以通過其他方式存儲(chǔ)數(shù)據(jù)。
[0098]所示意的例程800的實(shí)施例開始于步驟805,在步驟805處接收到信息或請(qǐng)求。然后,例程繼續(xù)到步驟810,確定請(qǐng)求或信息是否被授權(quán),例如請(qǐng)求者是否已經(jīng)為基于費(fèi)用的訪問提供支付,或者是否具有執(zhí)行所指示的請(qǐng)求的訪問權(quán)。如果在步驟815中確定請(qǐng)求或信息被授權(quán),例程繼續(xù)到步驟820,否則返回步驟805。在步驟820中,例程確定接收到的請(qǐng)求是否是存儲(chǔ)所指示的卷的新快照拷貝。如果是,例程繼續(xù)到步驟825,獲得卷的多個(gè)卷段,存儲(chǔ)每個(gè)段作為檔案存儲(chǔ)系統(tǒng)數(shù)據(jù)對(duì)象,然后存儲(chǔ)關(guān)于與快照卷拷貝相關(guān)聯(lián)的段的數(shù)據(jù)對(duì)象的信息。如在其他地方更詳細(xì)地討論的,可以通過各種方式獲得卷的段,例如通過在步驟805中作為多個(gè)不同的塊來接收,在步驟805中作為要在步驟825中分成多段的單一的大的塊數(shù)據(jù)組來接收,在步驟825中作為單獨(dú)的段或要被分成多段的單一的大的塊數(shù)據(jù)組來檢索,先前存儲(chǔ)在檔案存儲(chǔ)系統(tǒng)上等等。
[0099]如果在步驟820中代之以確定接收到的請(qǐng)求不是存儲(chǔ)新的快照卷拷貝,則例程繼續(xù)到步驟830,確定接收到的請(qǐng)求是否是存儲(chǔ)對(duì)與先前快照卷拷貝的改變進(jìn)行反映的卷的遞增快照拷貝。如果是,例程繼續(xù)到步驟835,識(shí)別從卷的先前快照拷貝以來發(fā)生改變的快照段,并以與先前關(guān)于步驟825討論的方式所類似的方式獲得已改變的快照段的拷貝。然后,例程繼續(xù)到步驟840,存儲(chǔ)已改變的段的拷貝,并存儲(chǔ)關(guān)于新的已改變的段和先前的其他未改變的段的信息,該先前的其他未改變的段的對(duì)應(yīng)數(shù)據(jù)對(duì)象與新的快照卷拷貝相關(guān)聯(lián)。可以通過各種方式識(shí)別從先前的快照卷拷貝以來發(fā)生改變的段,例如由存儲(chǔ)了卷的主拷貝和/或鏡像拷貝的服務(wù)器塊數(shù)據(jù)存儲(chǔ)系統(tǒng)識(shí)別(例如,通過跟蹤針對(duì)卷的任何寫數(shù)據(jù)訪問請(qǐng)求或其他修改請(qǐng)求)。
[0100]如果在步驟830中代之以確定接收到的請(qǐng)求不是存儲(chǔ)遞增快照卷拷貝,則例程繼續(xù)到步驟845,確定該請(qǐng)求是否是提供快照卷拷貝的一個(gè)或多個(gè)段,例如從對(duì)應(yīng)的所存儲(chǔ)的數(shù)據(jù)對(duì)象提供。如果是,例程繼續(xù)到步驟850,檢索針對(duì)所指示的快照卷拷貝段的數(shù)據(jù),并向請(qǐng)求者發(fā)送檢索到的數(shù)據(jù)。例如,這種請(qǐng)求可以是通過檢索快照卷拷貝的所有段來基于已存在的快照卷拷貝創(chuàng)建新卷的一部分,檢索快照卷拷貝的段的子集來恢復(fù)最小鏡像卷拷貝的一部分等。
[0101]如果在步驟845中代之以確定接收到的請(qǐng)求不是提供一個(gè)或多個(gè)快照卷拷貝段,則例程繼續(xù)到步驟855,確定接收到的請(qǐng)求是否是執(zhí)行針對(duì)不是快照卷拷貝的一部分的一個(gè)或多個(gè)卷段的一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求,以例如針對(duì)表示具體卷段的一個(gè)或多個(gè)數(shù)據(jù)對(duì)象執(zhí)行讀數(shù)據(jù)訪問請(qǐng)求和/或?qū)憯?shù)據(jù)訪問請(qǐng)求(例如,如果這些所存儲(chǔ)的數(shù)據(jù)對(duì)象充當(dāng)這些卷段的備用存儲(chǔ))。如果是,例程繼續(xù)到步驟860,執(zhí)行所請(qǐng)求的針對(duì)所存儲(chǔ)的對(duì)應(yīng)于所指示的卷段的數(shù)據(jù)對(duì)象的數(shù)據(jù)訪問請(qǐng)求。如在其他地方更詳細(xì)地討論的,在至少一些實(shí)施例中,當(dāng)修改所存儲(chǔ)的數(shù)據(jù)對(duì)象時(shí)可以使用惰性更新技術(shù),以使得可以不立即執(zhí)行寫數(shù)據(jù)訪問請(qǐng)求,如果這樣做,在完成后來針對(duì)相同數(shù)據(jù)對(duì)象的讀數(shù)據(jù)訪問請(qǐng)求之前,可以執(zhí)行該一個(gè)或多個(gè)先前的寫數(shù)據(jù)訪問請(qǐng)求以確保嚴(yán)格的數(shù)據(jù)一致性。
[0102]如果在步驟855中代之以確定接收到的請(qǐng)求不是執(zhí)行針對(duì)一個(gè)或多個(gè)卷段的數(shù)據(jù)訪問請(qǐng)求,則例程繼續(xù)到步驟885,在適當(dāng)時(shí)執(zhí)行一個(gè)或多個(gè)其他所指示的操作。例如,這種其他操作可以包括:重復(fù)接收與正在對(duì)卷執(zhí)行的修改相對(duì)應(yīng)的信息,以更新表示該卷的所對(duì)應(yīng)的存儲(chǔ)的數(shù)據(jù)對(duì)象(例如,作為備用存儲(chǔ)或用于其他目的),并采取適當(dāng)?shù)膶?duì)應(yīng)動(dòng)作,響應(yīng)刪除或以其他方式修改所存儲(chǔ)的快照卷拷貝的請(qǐng)求,響應(yīng)用戶管理賬戶(具有提供檔案存儲(chǔ)系統(tǒng)的存儲(chǔ)服務(wù))的請(qǐng)求等。在步驟825、840、850、860或885之后,例程繼續(xù)到步驟895,確定是否繼續(xù),例如直到接收到顯式的終止指令。如果確定繼續(xù),例程返回步驟805,如果確定不繼續(xù),例程繼續(xù)到步驟899并結(jié)束。
[0103]如上所述,針對(duì)至少一些類型的請(qǐng)求,在一些實(shí)施例中,例程可以驗(yàn)證請(qǐng)求者被授權(quán)進(jìn)行該請(qǐng)求,例如基于針對(duì)該請(qǐng)求者指定的訪問權(quán)和/或請(qǐng)求的相關(guān)目標(biāo)(例如,所指示的卷),而在其他實(shí)施例中,例程可以假定從其接收到請(qǐng)求的例程(例如,節(jié)點(diǎn)管理器例程和/或BDS系統(tǒng)管理器例程)之前已經(jīng)對(duì)該請(qǐng)求授權(quán)。此外,在至少一些實(shí)施例中,可以對(duì)代表用戶采取的一些或所有類型的動(dòng)作進(jìn)行監(jiān)控和計(jì)量,例如后來用于針對(duì)這些動(dòng)作中的至少一些來確定所對(duì)應(yīng)的基于使用的費(fèi)用。
[0104]在以下文獻(xiàn)中,可以找到涉及可與所描述的技術(shù)一起使用的程序執(zhí)行服務(wù)的不例實(shí)施例的操作的附加細(xì)節(jié):題為“Managing Execution Of Programs By MultipleComputing Systems”,于2006年3月31日遞交,申請(qǐng)?zhí)枮?1/395,463的美國專利申請(qǐng);題為“Executing Programs Based on User-Specified Constraints”,于 2007 年 9 月 6 日遞交,申請(qǐng)?zhí)枮?1/851,345的美國專利申請(qǐng),該申請(qǐng)是申請(qǐng)?zhí)枮?1/395,463的美國專利申請(qǐng)的部分繼續(xù)申請(qǐng);以及題為“Managing Communications Between Computing Nodes”,于2008年6月24日遞交,申請(qǐng)?zhí)枮?2/145,411的美國專利申請(qǐng),通過參考的形式將以上每個(gè)申請(qǐng)?jiān)诖苏w并入。此外,在以下申請(qǐng)中可以找到涉及遠(yuǎn)程存儲(chǔ)服務(wù)的一個(gè)示例的操作的附加細(xì)節(jié),該遠(yuǎn)程存儲(chǔ)服務(wù)可以用來存儲(chǔ)快照卷拷貝或者以其他方式提供遠(yuǎn)程檔案存儲(chǔ)系統(tǒng):題為 “Distributed Storage System With Web Services Client Interface,,,于2007年7月5日公布,公布號(hào)為2007/0156842的美國專利申請(qǐng),在此以參考的方式將其整體并入,該申請(qǐng)要求2005年12月29日遞交的申請(qǐng)?zhí)枮?0/754,726的美國專利申請(qǐng)的優(yōu)先權(quán)。此外,可以在以下專利中找到涉及用戶提供對(duì)該用戶的程序或針對(duì)其他用戶的其他數(shù)據(jù)的付費(fèi)訪問的一個(gè)示例的附加細(xì)節(jié):題為“Providing Configurable Pricing forExecution of Software Images”,于 2007 年 12 月 21 日提交,申請(qǐng)?zhí)枮?11/963,331 的美國專利申請(qǐng),在此以參考的方式將其整體并入,如在其他地方更詳細(xì)地討論的,在此可以類似地將其用于用戶針對(duì)卷和/或快照拷貝的各種類型的付費(fèi)訪問來向其他用戶收費(fèi)。
[0105]此外,如前所述,一些實(shí)施例可以使用虛擬機(jī),并且如果這么做,要由程序執(zhí)行服務(wù)來執(zhí)行的程序可以包括整個(gè)虛擬機(jī)圖像(image)。在這種實(shí)施例中,要執(zhí)行的程序可以包括整個(gè)操作系統(tǒng)、文件系統(tǒng)和/或其他數(shù)據(jù),并且可能地,一個(gè)或多個(gè)用戶層過程。在其他實(shí)施例中,要執(zhí)行的程序可以包括相互操作以提供一些功能的一個(gè)或多個(gè)其他類型的可執(zhí)行程序。在又一些其他實(shí)施例中,要執(zhí)行的程序可以包括物理或邏輯的指令和數(shù)據(jù)集合,該指令和數(shù)據(jù)集合可以在所提供的計(jì)算系統(tǒng)上本地執(zhí)行,或者通過轉(zhuǎn)換器的方式或其他軟件實(shí)現(xiàn)的硬件提取方式執(zhí)行。更一般地,在一些實(shí)施例中,要執(zhí)行的程序可以包括一個(gè)或多個(gè)應(yīng)用程序、應(yīng)用框架、庫、檔案、類文件、腳本、配置文件、數(shù)據(jù)文件等。
[0106]此外,如前所述,在至少一些實(shí)施例和情況下,卷可以從一個(gè)服務(wù)器存儲(chǔ)系統(tǒng)遷移或移動(dòng)到另一個(gè)服務(wù)器存儲(chǔ)系統(tǒng)。可以使用各種技術(shù)來移動(dòng)卷,并且可以以各種方式發(fā)起這種移動(dòng)。在一些情況下,該移動(dòng)可以反映與在其上存儲(chǔ)卷的服務(wù)器存儲(chǔ)系統(tǒng)有關(guān)的問題(例如,服務(wù)器存儲(chǔ)系統(tǒng)和/或?qū)υ摲?wù)器存儲(chǔ)系統(tǒng)的網(wǎng)絡(luò)接入的故障)。在其他情況下,可以執(zhí)行該移動(dòng)以便提供要存儲(chǔ)在已存在的服務(wù)器存儲(chǔ)系統(tǒng)上的其他卷拷貝,例如用于更高優(yōu)先級(jí)的卷,或者以便合并卷拷貝在有限數(shù)目的服務(wù)器存儲(chǔ)系統(tǒng)上的存儲(chǔ),以便例如使存儲(chǔ)卷拷貝的原始服務(wù)器存儲(chǔ)系統(tǒng)可以因例如維護(hù)、節(jié)能等原因而關(guān)閉。作為一個(gè)特定的示例,如果存儲(chǔ)在服務(wù)器存儲(chǔ)系統(tǒng)上的一個(gè)或多個(gè)卷拷貝需要比從該服務(wù)器存儲(chǔ)系統(tǒng)可用的資源更多的資源,則可以將一個(gè)或多個(gè)卷拷貝遷移到具有附加資源的一個(gè)或多個(gè)其他服務(wù)器存儲(chǔ)系統(tǒng)??捎觅Y源的過度使用可能由于各種原因而發(fā)生,例如一個(gè)或多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)具有比所期望的少的資源,一個(gè)或多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)使用比所期望(或所允許)的多的資源,或者在一些實(shí)施例中,相對(duì)于一個(gè)或多個(gè)保留或存儲(chǔ)的卷拷貝的可能資源需求,故意過度調(diào)撥一個(gè)或多個(gè)服務(wù)器存儲(chǔ)系統(tǒng)的可用資源。例如,如果卷拷貝的所期望的資源需求處于可用資源之內(nèi),則最大資源需求可能超過可用資源。如果卷存儲(chǔ)或使用所需的實(shí)際資源超過可用資源,也可能發(fā)生可用資源的過度使用。
[0107]應(yīng)當(dāng)意識(shí)到,在一些實(shí)施例中,可通過替代的方式提供以上討論的例程所提供的功能,例如,在更多例程中進(jìn)行拆分或合并成更少的流程。類似地,在一些實(shí)施例中,所示出的例程可提供與所描述的相比更多或更少的功能,例如,代之,當(dāng)其他所示出的例程分別缺少或包括這種功能時(shí),或當(dāng)所提供的功能數(shù)量發(fā)生變化時(shí)。此外,雖然可以將不同的操作示意為通過具體的方式(例如,串行或并行)和/或以具體的順序執(zhí)行,在其他實(shí)施例中,也可以通過其他順序以及以其他方式執(zhí)行該操作。類似地,在其他實(shí)施例中,可以通過其他方式構(gòu)建以上討論的數(shù)據(jù)結(jié)構(gòu),例如,通過將單一數(shù)據(jù)結(jié)構(gòu)拆分成多個(gè)數(shù)據(jù)結(jié)構(gòu),或者通過將多個(gè)數(shù)據(jù)結(jié)構(gòu)合并成單一數(shù)據(jù)結(jié)構(gòu),并且可以存儲(chǔ)與所描述的相比,更多或更少的信息(例如,當(dāng)其他示意的數(shù)據(jù)結(jié)構(gòu)代之以分別缺少或包括這種信息,或者當(dāng)所存儲(chǔ)的信息的量或類型發(fā)生改變時(shí))。
[0108]從以上描述中應(yīng)當(dāng)意識(shí)到,雖然此處出于示意的目的描述了特定的實(shí)施例,但是在不脫離本發(fā)明的精神和范圍的情況下,可做出各種修改。相應(yīng)地,本發(fā)明僅由所附權(quán)利要求及其中記載的要素限定。此外,雖然下面以特定權(quán)利要求的形式呈現(xiàn)了本發(fā)明的特定方面,但是發(fā)明人可以想到以任何可用權(quán)利要求的形式呈現(xiàn)本發(fā)明的各個(gè)方面。例如,雖然當(dāng)前可能僅將本發(fā)明的一些方面記載為體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)中,但是其他方面同樣可以如此體現(xiàn)。
[0109]條款1.一種供塊數(shù)據(jù)存儲(chǔ)服務(wù)的計(jì)算系統(tǒng)向執(zhí)行中的程序提供遠(yuǎn)程塊數(shù)據(jù)存儲(chǔ)能力的方法,所述方法包括:
[0110]接收發(fā)起第一執(zhí)行中的程序?qū)Ψ潜镜貕K數(shù)據(jù)存儲(chǔ)的訪問的請(qǐng)求,所述非本地塊數(shù)據(jù)存儲(chǔ)由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供,第一程序在多個(gè)計(jì)算系統(tǒng)中的第一計(jì)算系統(tǒng)上執(zhí)行,所述多個(gè)計(jì)算系統(tǒng)在地理位置上協(xié)同定位并共享一個(gè)或多個(gè)內(nèi)部網(wǎng)絡(luò),所述塊數(shù)據(jù)存儲(chǔ)服務(wù)使用所述多個(gè)計(jì)算系統(tǒng)中的第一組的多個(gè)其他計(jì)算系統(tǒng),作為向多個(gè)執(zhí)行中的程序提供塊數(shù)據(jù)存儲(chǔ)的塊數(shù)據(jù)存儲(chǔ)系統(tǒng),第一計(jì)算系統(tǒng)不是所述第一組的一部分;以及
[0111]在對(duì)第一計(jì)算系統(tǒng)對(duì)內(nèi)部網(wǎng)絡(luò)的訪問進(jìn)行管理的、塊數(shù)據(jù)存儲(chǔ)服務(wù)的第一節(jié)點(diǎn)管理器模塊的控制之下,
[0112]接收由第一執(zhí)行中的程序發(fā)起的、對(duì)第一計(jì)算系統(tǒng)的邏輯本地存儲(chǔ)設(shè)備的一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求,所述第一計(jì)算系統(tǒng)的邏輯本地存儲(chǔ)設(shè)備表示由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供的非本地塊數(shù)據(jù)存儲(chǔ);
[0113]通過代表第一執(zhí)行中的程序在內(nèi)部網(wǎng)絡(luò)上與第二計(jì)算系統(tǒng)進(jìn)行交互以對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行接收到的數(shù)據(jù)訪問請(qǐng)求,自動(dòng)響應(yīng)接收到的數(shù)據(jù)訪問請(qǐng)求,所述第一塊數(shù)據(jù)存儲(chǔ)卷具有存儲(chǔ)在第二計(jì)算系統(tǒng)上的主拷貝和存儲(chǔ)在第三計(jì)算系統(tǒng)上的鏡像拷貝,所述第二計(jì)算系統(tǒng)和所述第三計(jì)算系統(tǒng)都是第一組塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的一部分,內(nèi)部網(wǎng)絡(luò)上的交互是以對(duì)第一執(zhí)行中的程序透明的方式來執(zhí)行的;
[0114]在對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行接收到的數(shù)據(jù)訪問請(qǐng)求之后,自動(dòng)確定第二計(jì)算系統(tǒng)上的第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝不可用;以及
[0115]在接收到由第一執(zhí)行中的程序發(fā)起的、對(duì)第一計(jì)算系統(tǒng)的邏輯本地塊存儲(chǔ)設(shè)備的一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求之后,通過代表第一執(zhí)行中的程序在內(nèi)部網(wǎng)絡(luò)上與第三計(jì)算系統(tǒng)進(jìn)行交互以對(duì)第三計(jì)算系統(tǒng)上的第一塊數(shù)據(jù)存儲(chǔ)卷鏡像拷貝執(zhí)行其他數(shù)據(jù)訪問請(qǐng)求,自動(dòng)響應(yīng)接收到的其他數(shù)據(jù)訪問請(qǐng)求。
[0116]條款2.根據(jù)條款I(lǐng)的方法,還包括在塊數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)管理器模塊的控制之下,管理由塊數(shù)據(jù)存儲(chǔ)服務(wù)向多個(gè)執(zhí)行中的程序提供塊數(shù)據(jù)存儲(chǔ),所述管理步驟包括:
[0117]創(chuàng)建多個(gè)塊數(shù)據(jù)存儲(chǔ)卷,所述多個(gè)塊數(shù)據(jù)存儲(chǔ)卷中的每一個(gè)由多個(gè)執(zhí)行中的程序中的一個(gè)或多個(gè)使用,創(chuàng)建每個(gè)塊數(shù)據(jù)存儲(chǔ)卷的創(chuàng)建包括將塊數(shù)據(jù)存儲(chǔ)卷的主拷貝存儲(chǔ)在多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一個(gè)上,并包括將塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝存儲(chǔ)在所述多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的另一個(gè)上,多個(gè)程序在具有多個(gè)相關(guān)聯(lián)的節(jié)點(diǎn)管理器模塊的多個(gè)計(jì)算系統(tǒng)上執(zhí)行;
[0118]通過當(dāng)存儲(chǔ)所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷中的一個(gè)塊數(shù)據(jù)存儲(chǔ)卷的主拷貝的塊數(shù)據(jù)存儲(chǔ)系統(tǒng)基于從執(zhí)行中的程序接收到的寫數(shù)據(jù)訪問請(qǐng)求,執(zhí)行對(duì)存儲(chǔ)在該主拷貝中的塊數(shù)據(jù)的修改時(shí),執(zhí)行對(duì)存儲(chǔ)在所述一個(gè)塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝中的塊數(shù)據(jù)的修改,來維持塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝;以及
[0119]通過當(dāng)所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷中的一個(gè)塊數(shù)據(jù)存儲(chǔ)卷的主拷貝變得不可用時(shí),將所述一個(gè)塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝提升為所述一個(gè)塊數(shù)據(jù)存儲(chǔ)卷的新的主拷貝,來維持對(duì)塊數(shù)據(jù)存儲(chǔ)卷的訪問。
[0120]條款3.根據(jù)條款2的方法,其中,所述多個(gè)程序由所述多個(gè)計(jì)算系統(tǒng)中的第二組的多個(gè)計(jì)算系統(tǒng)上的程序執(zhí)行服務(wù)來執(zhí)行,其中,第二組計(jì)算系統(tǒng)與第一組計(jì)算系統(tǒng)不同,第一計(jì)算系統(tǒng)作為多個(gè)虛擬機(jī)的宿主,所述多個(gè)虛擬機(jī)中的每一個(gè)能夠執(zhí)行至少一個(gè)程序,其中,第一執(zhí)行中的程序是所述多個(gè)程序中的一個(gè),并且是由所述多個(gè)虛擬機(jī)中以第一計(jì)算系統(tǒng)作為宿主的至少一個(gè)虛擬機(jī)執(zhí)行的虛擬機(jī)圖像,以及,第一節(jié)點(diǎn)管理器模塊作為第一計(jì)算系統(tǒng)的虛擬機(jī)監(jiān)控器的一部分而執(zhí)行。
[0121]條款4.一種用于向執(zhí)行中的程序提供塊數(shù)據(jù)存儲(chǔ)功能的計(jì)算機(jī)實(shí)現(xiàn)方法,所述方法包括:
[0122]接收由第一執(zhí)行中的程序發(fā)起的、對(duì)第一計(jì)算系統(tǒng)本地的塊存儲(chǔ)設(shè)備的第一組一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)指示,第一程序在所述第一計(jì)算系統(tǒng)上執(zhí)行,所述本地的塊存儲(chǔ)設(shè)備是表示由不同的第二數(shù)據(jù)存儲(chǔ)系統(tǒng)在一個(gè)或多個(gè)網(wǎng)絡(luò)上提供的非本地塊數(shù)據(jù)存儲(chǔ)卷的邏輯設(shè)備;
[0123]通過代表第一執(zhí)行中的程序在所述一個(gè)或多個(gè)網(wǎng)絡(luò)上與第二數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,以使得對(duì)由第二數(shù)據(jù)存儲(chǔ)系統(tǒng)提供的塊數(shù)據(jù)存儲(chǔ)卷所存儲(chǔ)的塊數(shù)據(jù)執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)接收到的第一組數(shù)據(jù)訪問請(qǐng)求的指示;
[0124]確定所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)所提供的塊數(shù)據(jù)存儲(chǔ)卷已經(jīng)變得不可用,并自動(dòng)識(shí)別包含所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)所提供的塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝在內(nèi)的第三數(shù)據(jù)存儲(chǔ)系統(tǒng),所述第三數(shù)據(jù)存儲(chǔ)系統(tǒng)與所述第一計(jì)算系統(tǒng)和所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)不同;
[0125]接收由所述第一執(zhí)行中的程序發(fā)起的、對(duì)所述第一計(jì)算系統(tǒng)上的本地塊存儲(chǔ)設(shè)備的第二組一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)指示;以及
[0126]通過代表所述第一執(zhí)行中的程序在所述一個(gè)或多個(gè)網(wǎng)絡(luò)上與所述第三數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,以使得對(duì)所識(shí)別的第三數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷鏡像拷貝執(zhí)行第二組數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)接收到的第二組數(shù)據(jù)訪問請(qǐng)求的指示。
[0127]條款5.根據(jù)條款4的方法,還包括:在接收到所述第一組一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的指示之前,將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng),以供第一執(zhí)行中的程序使用,所述將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng)包括:將第一計(jì)算系統(tǒng)的邏輯本地塊數(shù)據(jù)存儲(chǔ)設(shè)備與所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)所提供的塊數(shù)據(jù)存儲(chǔ)卷相關(guān)聯(lián)。
[0128]條款6.根據(jù)條款5的方法,還包括:在將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng)之前,創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷,所述創(chuàng)建步驟是通過以下操作來進(jìn)行的:將所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷的主拷貝存儲(chǔ)在第二數(shù)據(jù)存儲(chǔ)系統(tǒng)上,并將所述塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝存儲(chǔ)在第三數(shù)據(jù)存儲(chǔ)系統(tǒng)上,以使得對(duì)所存儲(chǔ)的塊數(shù)據(jù)存儲(chǔ)卷的主拷貝執(zhí)行對(duì)所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)所提供的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求。
[0129]條款7.根據(jù)條款6的方法,其中,塊數(shù)據(jù)存儲(chǔ)卷由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供,創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷由塊數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)管理器模塊響應(yīng)于來自與第一執(zhí)行中的程序相關(guān)聯(lián)的用戶的請(qǐng)求而執(zhí)行,以及,將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng)由塊數(shù)據(jù)存儲(chǔ)服務(wù)的節(jié)點(diǎn)管理器模塊執(zhí)行,所述節(jié)點(diǎn)管理器模塊管理第一計(jì)算系統(tǒng)對(duì)所述一個(gè)或多個(gè)網(wǎng)絡(luò)的訪問。
[0130]條款8.根據(jù)條款4的方法,還包括:在確定所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)所提供的塊數(shù)據(jù)存儲(chǔ)卷已變得不可用之后,自動(dòng)發(fā)起在第四數(shù)據(jù)存儲(chǔ)系統(tǒng)上對(duì)塊數(shù)據(jù)存儲(chǔ)卷的另一拷貝的創(chuàng)建,所述第四數(shù)據(jù)存儲(chǔ)系統(tǒng)與所述第一計(jì)算系統(tǒng)不同以及與所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)和所述第三數(shù)據(jù)存儲(chǔ)系統(tǒng)不同。
[0131]條款9.根據(jù)條款8的方法,其中,所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)所提供的塊數(shù)據(jù)存儲(chǔ)卷基于以下至少一項(xiàng)變得不可用:所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)的故障、與所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)的連接的故障、以及所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)不能夠可靠地訪問所存儲(chǔ)的塊數(shù)據(jù)存儲(chǔ)卷。
[0132]條款10.根據(jù)條款4的方法,其中,執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求中的至少一個(gè)數(shù)據(jù)訪問請(qǐng)求包括修改存儲(chǔ)在第二數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷中的塊數(shù)據(jù),以及還包括:通過修改第三數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝中存儲(chǔ)的塊數(shù)據(jù),維持所述第三數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝。
[0133]條款11.根據(jù)條款4的方法,其中,第一計(jì)算系統(tǒng)和第二數(shù)據(jù)存儲(chǔ)系統(tǒng)是在單一地理位置處協(xié)同定位的多個(gè)計(jì)算系統(tǒng)的子集,其中,所述多個(gè)計(jì)算系統(tǒng)包括由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供的多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng),以及,第二數(shù)據(jù)存儲(chǔ)系統(tǒng)和第三數(shù)據(jù)存儲(chǔ)系統(tǒng)都是所述多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的不同的塊數(shù)據(jù)存儲(chǔ)系統(tǒng)。
[0134]條款12.根據(jù)條款11的方法,其中,多個(gè)計(jì)算系統(tǒng)協(xié)同定位的單一地理位置是數(shù)據(jù)中心,所述方法還包括:在位于數(shù)據(jù)中心外部的遠(yuǎn)程存儲(chǔ)服務(wù)的一個(gè)或多個(gè)檔案數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的至少一個(gè)拷貝。
[0135]條款13.根據(jù)條款11的方法,其中,第一程序由程序執(zhí)行服務(wù)來執(zhí)行,所述程序執(zhí)行服務(wù)在所述多個(gè)計(jì)算系統(tǒng)中的多個(gè)計(jì)算系統(tǒng)上執(zhí)行針對(duì)多個(gè)用戶的多個(gè)程序,第一計(jì)算系統(tǒng)是多個(gè)虛擬機(jī)的宿主,所述多個(gè)虛擬機(jī)中的每一個(gè)能夠執(zhí)行至少一個(gè)程序,其中,第一執(zhí)行中的程序是所述多個(gè)程序中的一個(gè),并且是由所述多個(gè)虛擬機(jī)中以第一計(jì)算系統(tǒng)作為宿主的至少一個(gè)虛擬機(jī)執(zhí)行的虛擬機(jī)圖像,以及,接收第一組數(shù)據(jù)訪問請(qǐng)求的指示、接收第二組其他數(shù)據(jù)訪問請(qǐng)求的指示、以及自動(dòng)響應(yīng)接收到的第一組和第二組數(shù)據(jù)訪問請(qǐng)求的指示是作為執(zhí)行第一計(jì)算系統(tǒng)的虛擬機(jī)監(jiān)控器的一部分來執(zhí)行的,第一計(jì)算系統(tǒng)包括第一執(zhí)行中的程序可用的一個(gè)或多個(gè)其他實(shí)際本地存儲(chǔ)設(shè)備。
[0136]條款14.一種計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀介質(zhì)的內(nèi)容使一個(gè)或多個(gè)計(jì)算系統(tǒng)能夠通過執(zhí)行包括以下步驟的方法來向執(zhí)行中的程序提供塊數(shù)據(jù)存儲(chǔ)功能:
[0137]接收由在第一計(jì)算系統(tǒng)上執(zhí)行的第一程序發(fā)起的、對(duì)塊數(shù)據(jù)存儲(chǔ)卷的一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)指示,所述塊數(shù)據(jù)存儲(chǔ)卷由通過一個(gè)或多個(gè)網(wǎng)絡(luò)而與第一計(jì)算系統(tǒng)分開的第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)提供;
[0138]通過發(fā)起對(duì)第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)接收到的數(shù)據(jù)訪問請(qǐng)求的指示;
[0139]在與第一計(jì)算系統(tǒng)和第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)不同的一個(gè)或多個(gè)第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的每一個(gè)上自動(dòng)創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝;以及
[0140]在第二數(shù)據(jù)存儲(chǔ)系統(tǒng)所提供的塊數(shù)據(jù)存儲(chǔ)卷變得不可用之后,通過對(duì)在第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的至少一個(gè)上創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷鏡像拷貝執(zhí)行其他數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)由第一程序發(fā)起的、對(duì)塊數(shù)據(jù)存儲(chǔ)卷的一個(gè)或多個(gè)所述其他數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)接收到的指示。
[0141]條款15.根據(jù)條款14的計(jì)算機(jī)可讀介質(zhì),其中,執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求、自動(dòng)創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝、以及執(zhí)行第二組其他數(shù)據(jù)訪問請(qǐng)求是由塊數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)管理器模塊自動(dòng)執(zhí)行的,第一程序通過與邏輯塊數(shù)據(jù)存儲(chǔ)設(shè)備進(jìn)行交互來發(fā)起對(duì)塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求,所述邏輯塊數(shù)據(jù)存儲(chǔ)設(shè)備是第一計(jì)算系統(tǒng)本地的并表示第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)所提供的塊數(shù)據(jù)存儲(chǔ)卷,其中,在第一程序與邏輯本地塊數(shù)據(jù)存儲(chǔ)設(shè)備進(jìn)行交互之后,由與第一計(jì)算系統(tǒng)相關(guān)聯(lián)的塊數(shù)據(jù)存儲(chǔ)服務(wù)的節(jié)點(diǎn)管理器模塊來執(zhí)行對(duì)由第一程序發(fā)起的數(shù)據(jù)訪問請(qǐng)求的接收,以及,自動(dòng)響應(yīng)接收到的數(shù)據(jù)訪問請(qǐng)求的指示是通過發(fā)起在所述一個(gè)或多個(gè)網(wǎng)絡(luò)上發(fā)送接收到的數(shù)據(jù)訪問請(qǐng)求、部分地在節(jié)點(diǎn)管理器模塊的控制之下執(zhí)行的。
[0142]條款16.根據(jù)條款14的計(jì)算機(jī)可讀介質(zhì),其中,在響應(yīng)接收到的數(shù)據(jù)訪問請(qǐng)求的指示時(shí),第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)存儲(chǔ)塊數(shù)據(jù)存儲(chǔ)卷的主拷貝,以及所述方法還包括:在對(duì)接收到的其他數(shù)據(jù)訪問請(qǐng)求的指示進(jìn)行自動(dòng)響應(yīng)之前自動(dòng)確定塊數(shù)據(jù)存儲(chǔ)卷的主拷貝已經(jīng)變得不可用,選擇在第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝,并將所選擇的在所述第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝提升為塊數(shù)據(jù)存儲(chǔ)卷的當(dāng)前主拷貝。
[0143]條款17.根據(jù)條款16的計(jì)算機(jī)可讀介質(zhì),其中,在所述一個(gè)或多個(gè)第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的每一個(gè)上自動(dòng)創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝包括:在自動(dòng)響應(yīng)于接收到的數(shù)據(jù)訪問請(qǐng)求的指示之前,在所述第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的第一鏡像拷貝,其中,自動(dòng)響應(yīng)于接收到的數(shù)據(jù)訪問請(qǐng)求的指示還包括:執(zhí)行關(guān)于塊數(shù)據(jù)存儲(chǔ)卷的第一鏡像拷貝的數(shù)據(jù)訪問請(qǐng)求,塊數(shù)據(jù)存儲(chǔ)卷的第一鏡像拷貝是所選擇的鏡像拷貝,在所述一個(gè)或多個(gè)第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的每一個(gè)上自動(dòng)創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝還包括:在確定塊數(shù)據(jù)存儲(chǔ)卷的主拷貝已經(jīng)變得不可用時(shí),在所述第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的另一個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的第二鏡像拷貝。
[0144]條款18.根據(jù)條款14的計(jì)算機(jī)可讀介質(zhì),其中,第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)在自動(dòng)響應(yīng)于接收到的數(shù)據(jù)訪問請(qǐng)求的指示時(shí),存儲(chǔ)塊數(shù)據(jù)存儲(chǔ)卷的主拷貝,所指示的由第一程序發(fā)起的一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求是由第一程序發(fā)起的第二組數(shù)據(jù)訪問請(qǐng)求,所述方法還包括在接收第二組數(shù)據(jù)訪問請(qǐng)求的指示之前:
[0145]在第四塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的初始主拷貝,所述第四塊數(shù)據(jù)存儲(chǔ)系統(tǒng)與第一計(jì)算系統(tǒng)以及第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)和所述一個(gè)或多個(gè)第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)不同;
[0146]自動(dòng)響應(yīng)第一程序發(fā)起的第一組一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)接收到的指示,所述響應(yīng)是通過執(zhí)行與在第四塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建的主拷貝有關(guān)第一組數(shù)據(jù)訪問請(qǐng)求來進(jìn)行的,所述第一組數(shù)據(jù)訪問請(qǐng)求由第一程序在第二組數(shù)據(jù)訪問請(qǐng)求之前發(fā)起;以及
[0147]在響應(yīng)第一組數(shù)據(jù)訪問請(qǐng)求的指示后,確定將塊數(shù)據(jù)存儲(chǔ)卷的主拷貝從第四塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng)至第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng),以使得可以在將塊數(shù)據(jù)存儲(chǔ)卷的主拷貝移動(dòng)至第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)之后,關(guān)于所移動(dòng)的第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷的主拷貝來執(zhí)行第一程序發(fā)起的對(duì)塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求。
[0148]條款19.根據(jù)條款18的計(jì)算機(jī)可讀介質(zhì),其中,基于至少以下之一來確定將塊數(shù)據(jù)存儲(chǔ)卷的主拷貝從第四塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng)至第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng):自動(dòng)確定第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)在提供塊數(shù)據(jù)存儲(chǔ)卷的主拷貝方面比第四塊數(shù)據(jù)存儲(chǔ)系統(tǒng)更有能力,以及從塊數(shù)據(jù)存儲(chǔ)服務(wù)的與塊數(shù)據(jù)存儲(chǔ)卷相關(guān)聯(lián)的用戶接收到的請(qǐng)求。
[0149]條款20.根據(jù)條款14的計(jì)算機(jī)可讀介質(zhì),其中,第一程序是在多個(gè)主機(jī)計(jì)算系統(tǒng)上由程序執(zhí)行服務(wù)執(zhí)行的多個(gè)程序中的一個(gè),所述多個(gè)程序代表交換所支付的費(fèi)用的程序執(zhí)行服務(wù)的用戶,所述費(fèi)用由所述用戶支付,第一計(jì)算系統(tǒng)是所述多個(gè)主機(jī)計(jì)算系統(tǒng)中的一個(gè),第一程序?qū)K數(shù)據(jù)存儲(chǔ)卷的使用是通過與程序執(zhí)行服務(wù)的用戶所提供的費(fèi)用相交換來執(zhí)行的,代表程序執(zhí)行服務(wù)的用戶對(duì)第一程序進(jìn)行執(zhí)行。
[0150]條款21.根據(jù)條款14的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)可讀介質(zhì)是以下至少之一:存儲(chǔ)內(nèi)容的計(jì)算系統(tǒng)的存儲(chǔ)器,以及包括所產(chǎn)生的包含內(nèi)容在內(nèi)的存儲(chǔ)數(shù)據(jù)信號(hào)的數(shù)據(jù)傳輸介質(zhì)。
[0151]條款22.根據(jù)條款14的計(jì)算機(jī)可讀介質(zhì),其中,所述內(nèi)容是當(dāng)執(zhí)行時(shí)使得一個(gè)或多個(gè)計(jì)算系統(tǒng)執(zhí)行所述方法的指令。
[0152]條款23.—種被配置為向執(zhí)行中的程序提供塊數(shù)據(jù)存儲(chǔ)功能的系統(tǒng),所述系統(tǒng)包括:
[0153]一個(gè)或多個(gè)存儲(chǔ)器;以及
[0154]塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器模塊,被配置為提供塊數(shù)據(jù)存儲(chǔ)服務(wù),所述塊數(shù)據(jù)存儲(chǔ)服務(wù)使用多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)來存儲(chǔ)塊數(shù)據(jù)存儲(chǔ)卷,所述塊數(shù)據(jù)存儲(chǔ)卷由所述塊數(shù)據(jù)存儲(chǔ)服務(wù)的用戶創(chuàng)建,并且是在一個(gè)或多個(gè)網(wǎng)絡(luò)上代表與所述用戶相關(guān)聯(lián)的一個(gè)或多個(gè)執(zhí)行中的程序來訪問的,所述提供塊數(shù)據(jù)存儲(chǔ)服務(wù)包括:
[0155]創(chuàng)建一個(gè)或多個(gè)塊數(shù)據(jù)存儲(chǔ)卷,以供一個(gè)或多個(gè)執(zhí)行中的程序使用,創(chuàng)建每個(gè)塊數(shù)據(jù)存儲(chǔ)卷包括創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的主拷貝,所述主拷貝存儲(chǔ)在多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上;
[0156]通過對(duì)于數(shù)據(jù)訪問請(qǐng)求中的每一個(gè),在針對(duì)數(shù)據(jù)訪問請(qǐng)求的一個(gè)塊數(shù)據(jù)存儲(chǔ)卷的主拷貝可用的情況下,發(fā)起對(duì)可用的主拷貝執(zhí)行數(shù)據(jù)訪問請(qǐng)求,來響應(yīng)均由執(zhí)行中的程序之一發(fā)起的針對(duì)所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷之一的數(shù)據(jù)訪問請(qǐng)求;以及
[0157]響應(yīng)于接收到的指示,創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷中的第一塊數(shù)據(jù)存儲(chǔ)卷的新拷貝,所述第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的主拷貝存儲(chǔ)在塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上,所創(chuàng)建的新拷貝存儲(chǔ)在與所述第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)不同的一個(gè)或多個(gè)其他數(shù)據(jù)存儲(chǔ)系統(tǒng)上。
[0158]條款24.根據(jù)條款23的系統(tǒng),其中,創(chuàng)建第一塊數(shù)據(jù)存儲(chǔ)卷還包括創(chuàng)建在所述多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上存儲(chǔ)的第一塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝,所述第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)與所述第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)以及所述一個(gè)或多個(gè)其他數(shù)據(jù)存儲(chǔ)系統(tǒng)不同,以及,響應(yīng)數(shù)據(jù)訪問請(qǐng)求還包括:對(duì)于由執(zhí)行中的程序之一發(fā)起的針對(duì)所述第一塊數(shù)據(jù)存儲(chǔ)卷的每個(gè)數(shù)據(jù)訪問請(qǐng)求,在所述第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝不可用的情況下,發(fā)起對(duì)在所述第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上存儲(chǔ)的第一塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝執(zhí)行訪問請(qǐng)求。
[0159]條款25.根據(jù)條款24的系統(tǒng),其中,響應(yīng)數(shù)據(jù)訪問請(qǐng)求還包括:對(duì)于由所述執(zhí)行中的程序之一發(fā)起的針對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的每個(gè)數(shù)據(jù)訪問請(qǐng)求,如果第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝可用,則發(fā)起對(duì)在所述第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上存儲(chǔ)的第一塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝執(zhí)行數(shù)據(jù)訪問請(qǐng)求。
[0160]條款26.根據(jù)條款24的系統(tǒng),其中,響應(yīng)數(shù)據(jù)訪問請(qǐng)求還包括:對(duì)于由執(zhí)行中的程序之一發(fā)起的針對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的初始數(shù)據(jù)訪問請(qǐng)求,第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上所述第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝不可用,將存儲(chǔ)在第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的第一塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝提升為第一塊數(shù)據(jù)存儲(chǔ)卷的新的主拷貝,來代替第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝,使得對(duì)第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上第一塊數(shù)據(jù)存儲(chǔ)卷的提升后的新的主拷貝執(zhí)行發(fā)起對(duì)存儲(chǔ)在第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的第一塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝執(zhí)行初始數(shù)據(jù)訪問請(qǐng)求,以及使得對(duì)第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上第一塊數(shù)據(jù)存儲(chǔ)卷的提升后的新的主拷貝執(zhí)行在所述初始數(shù)據(jù)訪問請(qǐng)求之后由執(zhí)行中的程序之一發(fā)起的針對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求。
[0161]條款27.根據(jù)條款26的系統(tǒng),其中,將存儲(chǔ)在第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的第一塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝提升為第一塊數(shù)據(jù)存儲(chǔ)卷的新的主拷貝還包括創(chuàng)建第一塊數(shù)據(jù)存儲(chǔ)卷的第二鏡像拷貝,所述第二鏡像拷貝存儲(chǔ)在多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中與第一和第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)不同的第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上,以及,響應(yīng)在初始數(shù)據(jù)訪問請(qǐng)求之后由所述執(zhí)行中的程序之一發(fā)起的針對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的每個(gè)數(shù)據(jù)訪問請(qǐng)求還包括:發(fā)起對(duì)在第三塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上存儲(chǔ)的第一塊數(shù)據(jù)存儲(chǔ)卷的第二鏡像拷貝執(zhí)行數(shù)據(jù)訪問請(qǐng)求。
[0162]條款28.根據(jù)條款23的系統(tǒng),其中,接收到的響應(yīng)于其而創(chuàng)建第一塊數(shù)據(jù)存儲(chǔ)卷的新拷貝的指示基于對(duì)將第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝從第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng)到不同的第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的確定,其中,所述一個(gè)或多個(gè)其他數(shù)據(jù)存儲(chǔ)系統(tǒng)是第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng),其中,在第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建第一塊數(shù)據(jù)存儲(chǔ)卷的新拷貝包括將在第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建的新拷貝指定為第一塊數(shù)據(jù)存儲(chǔ)卷的新的主拷貝,以及,由塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器模塊提供塊數(shù)據(jù)存儲(chǔ)服務(wù)還包括:在創(chuàng)建第一塊數(shù)據(jù)存儲(chǔ)卷的新拷貝之后,通過發(fā)起對(duì)在第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上存儲(chǔ)的第一塊數(shù)據(jù)存儲(chǔ)卷的新的主拷貝執(zhí)行附加數(shù)據(jù)訪問請(qǐng)求,來響應(yīng)均由所述執(zhí)行中的程序之一發(fā)起的針對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的一個(gè)或多個(gè)附加數(shù)據(jù)訪問請(qǐng)求。
[0163]條款29.根據(jù)條款28的系統(tǒng),其中,對(duì)將第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝從第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)移動(dòng)到第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的確定是基于以下至少一項(xiàng)來進(jìn)行的:自動(dòng)確定第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)比第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)更能夠提供一個(gè)或多個(gè)執(zhí)行中的程序?qū)Φ谝粔K數(shù)據(jù)存儲(chǔ)卷的主拷貝的訪問;以及從塊數(shù)據(jù)存儲(chǔ)服務(wù)的與第一塊數(shù)據(jù)存儲(chǔ)卷相關(guān)聯(lián)的用戶接收到的請(qǐng)求。
[0164]條款30.根據(jù)條款23的系統(tǒng),其中,接收到的響應(yīng)于其而創(chuàng)建第一塊數(shù)據(jù)存儲(chǔ)卷的新拷貝的指示是使用遠(yuǎn)離第一塊數(shù)據(jù)存儲(chǔ)卷的存儲(chǔ)服務(wù)創(chuàng)建第一塊數(shù)據(jù)存儲(chǔ)卷的快照拷貝的請(qǐng)求,所述一個(gè)或多個(gè)其他數(shù)據(jù)存儲(chǔ)系統(tǒng)是作為遠(yuǎn)程存儲(chǔ)服務(wù)的一部分的檔案數(shù)據(jù)存儲(chǔ)系統(tǒng),以及,創(chuàng)建第一塊數(shù)據(jù)存儲(chǔ)卷的新拷貝包括:與遠(yuǎn)程存儲(chǔ)服務(wù)進(jìn)行交互,以創(chuàng)建新的第一塊數(shù)據(jù)存儲(chǔ)卷拷貝作為第一塊數(shù)據(jù)存儲(chǔ)卷的快照拷貝。
[0165]條款31.根據(jù)條款23的系統(tǒng),還包括多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng),所述多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)是在單一地理位置處協(xié)同定位的,以及還包括遠(yuǎn)程存儲(chǔ)服務(wù),所述遠(yuǎn)程存儲(chǔ)服務(wù)使用不同于所述單一地理位置的位置處的多個(gè)其他數(shù)據(jù)存儲(chǔ)系統(tǒng),所述其他數(shù)據(jù)存儲(chǔ)系統(tǒng)存儲(chǔ)除塊數(shù)據(jù)之外的格式的數(shù)據(jù),以及,由塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器模塊提供塊數(shù)據(jù)存儲(chǔ)服務(wù)還包括:針對(duì)一個(gè)或多個(gè)所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷中的每一個(gè),將塊數(shù)據(jù)存儲(chǔ)卷的多個(gè)部分存儲(chǔ)在遠(yuǎn)程存儲(chǔ)服務(wù)的所述多個(gè)其他數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一個(gè)或多個(gè)上,所存儲(chǔ)的多個(gè)部分中的每一個(gè)表示已由一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求修改的塊數(shù)據(jù)存儲(chǔ)卷的部分。
[0166]條款32.根據(jù)條款23的系統(tǒng),還包括多個(gè)節(jié)點(diǎn)管理器模塊,所述多個(gè)節(jié)點(diǎn)管理器模塊中的每一個(gè)與一個(gè)或多個(gè)執(zhí)行中的程序相關(guān)聯(lián),所述節(jié)點(diǎn)管理器模塊中的每一個(gè)管理由一個(gè)或多個(gè)相關(guān)聯(lián)的執(zhí)行中的程序發(fā)起的、對(duì)一個(gè)或多個(gè)所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求,所述管理是通過在一個(gè)或多個(gè)網(wǎng)絡(luò)上向塊數(shù)據(jù)存儲(chǔ)服務(wù)轉(zhuǎn)發(fā)這些數(shù)據(jù)訪問請(qǐng)求來進(jìn)行的。
[0167]條款33.根據(jù)條款23的系統(tǒng),還包括程序執(zhí)行服務(wù)系統(tǒng)管理器模塊,所述程序執(zhí)行服務(wù)系統(tǒng)管理器模塊被配置為提供程序執(zhí)行服務(wù),所述程序執(zhí)行服務(wù)使用多個(gè)主機(jī)計(jì)算系統(tǒng)來針對(duì)所述程序執(zhí)行服務(wù)的用戶執(zhí)行多個(gè)程序,由所述程序執(zhí)行服務(wù)執(zhí)行的多個(gè)程序包括使用所創(chuàng)建的一個(gè)或多個(gè)塊數(shù)據(jù)存儲(chǔ)卷的一個(gè)或多個(gè)執(zhí)行中的程序。
[0168]條款34.根據(jù)條款23的系統(tǒng),其中,所述系統(tǒng)包括第一計(jì)算系統(tǒng),第一計(jì)算系統(tǒng)包括所述一個(gè)或多個(gè)存儲(chǔ)器中的至少一個(gè)存儲(chǔ)器,以及,塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器模塊包括由第一計(jì)算系統(tǒng)使用所述至少一個(gè)存儲(chǔ)器執(zhí)行的軟件指令。
[0169]條款35.根據(jù)條款23的系統(tǒng),其中,塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器模塊由用于提供塊數(shù)據(jù)存儲(chǔ)服務(wù)的一個(gè)或多個(gè)裝置構(gòu)成,所述塊數(shù)據(jù)存儲(chǔ)服務(wù)使用多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)來存儲(chǔ)塊數(shù)據(jù)存儲(chǔ)卷,所述塊數(shù)據(jù)存儲(chǔ)卷由所述塊數(shù)據(jù)存儲(chǔ)服務(wù)的用戶創(chuàng)建,并且是在一個(gè)或多個(gè)網(wǎng)絡(luò)上代表與所述用戶相關(guān)聯(lián)的一個(gè)或多個(gè)執(zhí)行中的程序來訪問的,提供塊數(shù)據(jù)存儲(chǔ)服務(wù)包括:
[0170]創(chuàng)建一個(gè)或多個(gè)塊數(shù)據(jù)存儲(chǔ)卷,以供一個(gè)或多個(gè)執(zhí)行中的程序使用,創(chuàng)建每個(gè)塊數(shù)據(jù)存儲(chǔ)卷包括創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的主拷貝,所述主拷貝存儲(chǔ)在多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上;
[0171]通過對(duì)于數(shù)據(jù)訪問請(qǐng)求中的每一個(gè),在針對(duì)數(shù)據(jù)訪問請(qǐng)求的一個(gè)塊數(shù)據(jù)存儲(chǔ)卷的主拷貝可用的情況下,發(fā)起對(duì)可用的主拷貝執(zhí)行數(shù)據(jù)訪問請(qǐng)求,來響應(yīng)均由所述執(zhí)行中的程序之一發(fā)起的針對(duì)所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷之一的數(shù)據(jù)訪問請(qǐng)求;以及
[0172]響應(yīng)于接收到的指示,創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷中的第一塊數(shù)據(jù)存儲(chǔ)卷的新拷貝,第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的主拷貝存儲(chǔ)在塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上,所創(chuàng)建的新拷貝存儲(chǔ)在與所述第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)不同的一個(gè)或多個(gè)其他數(shù)據(jù)存儲(chǔ)系統(tǒng)上。
[0173]條款36.—種供塊數(shù)據(jù)存儲(chǔ)服務(wù)的計(jì)算系統(tǒng)管理執(zhí)行中的程序?qū)h(yuǎn)程存儲(chǔ)的塊數(shù)據(jù)的訪問的方法,所述方法包括:
[0174]接收發(fā)起所指示的程序的第一拷貝對(duì)非本地塊數(shù)據(jù)存儲(chǔ)的訪問的請(qǐng)求,所述非本地塊數(shù)據(jù)存儲(chǔ)由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供,所述第一程序拷貝在多個(gè)計(jì)算系統(tǒng)中的第一計(jì)算系統(tǒng)上執(zhí)行,所述多個(gè)計(jì)算系統(tǒng)在第一地理位置處協(xié)同定位并共享一個(gè)或多個(gè)內(nèi)部網(wǎng)絡(luò),所述塊數(shù)據(jù)存儲(chǔ)服務(wù)使用所述多個(gè)計(jì)算系統(tǒng)中的第一組多個(gè)其他計(jì)算系統(tǒng),作為向多個(gè)執(zhí)行中的程序提供塊數(shù)據(jù)存儲(chǔ)的塊數(shù)據(jù)存儲(chǔ)系統(tǒng),所述第一計(jì)算系統(tǒng)不是所述第一組的一部分;以及
[0175]響應(yīng)于接收到的請(qǐng)求,將第一塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng),以供執(zhí)行中的第一程序拷貝使用,所述第一塊數(shù)據(jù)存儲(chǔ)卷具有在第二計(jì)算系統(tǒng)上存儲(chǔ)的主拷貝并具有在第三計(jì)算系統(tǒng)上存儲(chǔ)的鏡像拷貝,所述第二計(jì)算系統(tǒng)和所述第三計(jì)算系統(tǒng)都是第一組塊數(shù)據(jù)存儲(chǔ)系統(tǒng)的一部分,將第一塊數(shù)據(jù)存儲(chǔ)卷附著的步驟包括將第一計(jì)算系統(tǒng)的第一邏輯本地塊存儲(chǔ)設(shè)備與第一塊數(shù)據(jù)存儲(chǔ)卷相關(guān)聯(lián);以及
[0176]在塊數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)管理器模塊的控制之下,通過以下操作來管理向多個(gè)執(zhí)行中的程序提供塊數(shù)據(jù)存儲(chǔ):
[0177]在接收到由執(zhí)行中的第一程序拷貝發(fā)起的、對(duì)第一邏輯本地塊存儲(chǔ)設(shè)備的一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的指示之后,通過對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝和鏡像拷貝執(zhí)行數(shù)據(jù)訪問請(qǐng)求來進(jìn)行自動(dòng)響應(yīng),數(shù)據(jù)訪問請(qǐng)求的執(zhí)行使得對(duì)存儲(chǔ)在第一塊數(shù)據(jù)存儲(chǔ)卷上的塊數(shù)據(jù)進(jìn)行一個(gè)或多個(gè)修改,以便在第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝和鏡像拷貝中的每一個(gè)上維持相同的所存儲(chǔ)的塊數(shù)據(jù);
[0178]在執(zhí)行數(shù)據(jù)訪問請(qǐng)求之后,自動(dòng)確定第一程序拷貝的執(zhí)行已經(jīng)終止,并響應(yīng)于所述確定,自動(dòng)維持所指示的程序?qū)Φ谝粔K數(shù)據(jù)存儲(chǔ)卷的訪問,所述維持訪問的步驟包括在不同的第四計(jì)算系統(tǒng)上發(fā)起對(duì)所指示的程序的第二拷貝的執(zhí)行并將第一塊數(shù)據(jù)存儲(chǔ)卷附著到第四計(jì)算系統(tǒng),以供執(zhí)行中的第二程序拷貝使用,所述附著步驟包括將第四計(jì)算系統(tǒng)的第二邏輯本地塊存儲(chǔ)設(shè)備與第一塊數(shù)據(jù)存儲(chǔ)卷相關(guān)聯(lián);以及
[0179]在接收到由執(zhí)行中的第二程序拷貝發(fā)起的、對(duì)第二邏輯本地塊存儲(chǔ)設(shè)備的一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求的指示之后,通過對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝和鏡像拷貝執(zhí)行所述其他數(shù)據(jù)訪問請(qǐng)求來進(jìn)行自動(dòng)響應(yīng),數(shù)據(jù)訪問請(qǐng)求的執(zhí)行使得對(duì)存儲(chǔ)在第一塊數(shù)據(jù)存儲(chǔ)卷上的塊數(shù)據(jù)進(jìn)行一個(gè)或多個(gè)進(jìn)一步修改,以便第一塊數(shù)據(jù)存儲(chǔ)卷的主拷貝和鏡像拷貝都存儲(chǔ)相同塊數(shù)據(jù)。
[0180]條款37.根據(jù)條款36的方法,其中,將第一塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng)由管理第一計(jì)算系統(tǒng)對(duì)內(nèi)部網(wǎng)絡(luò)的訪問的、塊數(shù)據(jù)存儲(chǔ)服務(wù)的節(jié)點(diǎn)管理器模塊來執(zhí)行,所述方法還包括:在節(jié)點(diǎn)管理器模塊的控制之下:
[0181]接收由執(zhí)行中的第一程序拷貝發(fā)起的、對(duì)第一邏輯本地塊存儲(chǔ)設(shè)備的數(shù)據(jù)訪問請(qǐng)求;以及
[0182]通過在內(nèi)部網(wǎng)絡(luò)上與系統(tǒng)管理器模塊進(jìn)行交互以提供數(shù)據(jù)訪問請(qǐng)求的指示,來便于執(zhí)行數(shù)據(jù)訪問請(qǐng)求,在內(nèi)部網(wǎng)絡(luò)上進(jìn)行交互是以對(duì)執(zhí)行中的第一程序拷貝透明的方式來執(zhí)行的。
[0183]條款38.根據(jù)條款37的方法,其中,多個(gè)程序由所述多個(gè)計(jì)算系統(tǒng)中的第二組多個(gè)計(jì)算系統(tǒng)上的程序執(zhí)行服務(wù)來執(zhí)行,其中,第二組計(jì)算系統(tǒng)與第一組計(jì)算系統(tǒng)不同,其中,第一計(jì)算系統(tǒng)是多個(gè)虛擬機(jī)的宿主,所述多個(gè)虛擬機(jī)中的每一個(gè)能夠執(zhí)行至少一個(gè)程序,其中,所指示的程序是所述多個(gè)程序中的一個(gè),并且是由所述多個(gè)虛擬機(jī)中以第一計(jì)算系統(tǒng)作為宿主的至少一個(gè)執(zhí)行的虛擬機(jī)圖像,以及,節(jié)點(diǎn)管理器模塊作為第一計(jì)算系統(tǒng)的虛擬機(jī)監(jiān)控器的一部分而執(zhí)行。
[0184]條款39.—種用于管理執(zhí)行中的程序?qū)K數(shù)據(jù)存儲(chǔ)功能的訪問的計(jì)算機(jī)實(shí)現(xiàn)方法,所述方法包括:
[0185]接收由在第一計(jì)算系統(tǒng)上執(zhí)行的第一程序的第一拷貝發(fā)起的第一組一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)指示,所述第一組一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求是針對(duì)訪問存儲(chǔ)在非本地塊數(shù)據(jù)存儲(chǔ)卷上的塊數(shù)據(jù)的,所述塊數(shù)據(jù)存儲(chǔ)卷由不同的第二數(shù)據(jù)存儲(chǔ)系統(tǒng)在一個(gè)或多個(gè)網(wǎng)絡(luò)上提供,并附著到第一計(jì)算系統(tǒng),以便第一執(zhí)行中的程序拷貝經(jīng)由與第一計(jì)算系統(tǒng)本地的第一邏輯塊存儲(chǔ)設(shè)備的交互來發(fā)起針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求,所述第一邏輯塊存儲(chǔ)設(shè)備表示塊數(shù)據(jù)存儲(chǔ)卷;
[0186]通過代表第一執(zhí)行中的程序拷貝與第二數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,以發(fā)起對(duì)由所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)提供的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)接收到的第一組數(shù)據(jù)訪問請(qǐng)求的指示;
[0187]在確定第一程序拷貝已變得不可用之后,識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng),并將塊數(shù)據(jù)存儲(chǔ)卷附著到第三計(jì)算系統(tǒng),以便第二程序拷貝能夠訪問第三計(jì)算系統(tǒng)本地的第二邏輯塊存儲(chǔ)設(shè)備,所述第三計(jì)算系統(tǒng)與所述第一計(jì)算系統(tǒng)和所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)不同,所述第二邏輯塊存儲(chǔ)設(shè)備表示塊數(shù)據(jù)存儲(chǔ)卷;
[0188]接收由第二執(zhí)行中的程序拷貝經(jīng)由與第三計(jì)算系統(tǒng)上的第二邏輯本地塊存儲(chǔ)設(shè)備的交互而發(fā)起的針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的第二組一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)指示;以及
[0189]通過代表第二執(zhí)行中的程序拷貝與第二數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,以發(fā)起對(duì)第二數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行第二組數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)接收到的第二組數(shù)據(jù)訪問請(qǐng)求的指示。
[0190]條款40.根據(jù)條款39的方法,還包括:自動(dòng)確定第一程序拷貝已變得不可用,第一程序拷貝的不可用性基于以下至少一項(xiàng):第一計(jì)算系統(tǒng)的故障、與第一計(jì)算系統(tǒng)的連接的故障、以及第一計(jì)算系統(tǒng)不能夠繼續(xù)執(zhí)行第一程序拷貝。
[0191]條款41.根據(jù)條款40的方法,其中,識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng)以及將塊數(shù)據(jù)存儲(chǔ)卷附著到第三計(jì)算系統(tǒng)是自動(dòng)執(zhí)行以維持第一程序?qū)K數(shù)據(jù)存儲(chǔ)卷的訪問的,訪問的自動(dòng)維持是響應(yīng)于對(duì)第一程序拷貝已變得不可用的自動(dòng)確定而執(zhí)行的。
[0192]條款42.根據(jù)條款39的方法,其中,確定第一程序拷貝已變得不可用、識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng)、以及將塊數(shù)據(jù)存儲(chǔ)卷附著到第三計(jì)算系統(tǒng)中的至少一個(gè)是響應(yīng)于從與第一程序和塊數(shù)據(jù)存儲(chǔ)卷相關(guān)聯(lián)的用戶接收到的一個(gè)或多個(gè)指示而執(zhí)行的。
[0193]條款43.根據(jù)條款39的方法,其中,識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng)包括:在確定第一程序拷貝已變得不可用之后,發(fā)起在第三計(jì)算系統(tǒng)上對(duì)第二程序拷貝的執(zhí)行。
[0194]條款44.根據(jù)條款39的方法,其中,第一程序的第一拷貝是第一程序的在多個(gè)不同計(jì)算系統(tǒng)上執(zhí)行的多個(gè)拷貝之一,其中,所述多個(gè)拷貝中的至少一個(gè)是所述多個(gè)拷貝中的一個(gè)或多個(gè)其他拷貝的備選拷貝,以及,識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng)包括:基于作為至少一個(gè)備選拷貝之一的第二拷貝,選擇第一程序的第二拷貝。
[0195]條款45.根據(jù)條款39的方法,還包括:在將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng)之前,在第二數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷,并在不同的第四塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝,以及,響應(yīng)第一組數(shù)據(jù)訪問請(qǐng)求和第二組數(shù)據(jù)訪問請(qǐng)求還包括:發(fā)起對(duì)所創(chuàng)建的鏡像拷貝執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求和第二組數(shù)據(jù)訪問請(qǐng)求。
[0196]條款46.根據(jù)條款39的方法,還包括:在接收到所述一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的指示之前,將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng),以供第一執(zhí)行中的程序拷貝使用,將塊數(shù)據(jù)存儲(chǔ)卷附著的步驟包括將第一邏輯塊存儲(chǔ)設(shè)備與由第二數(shù)據(jù)存儲(chǔ)系統(tǒng)提供的塊數(shù)據(jù)存儲(chǔ)卷相關(guān)聯(lián),并由節(jié)點(diǎn)管理器模塊執(zhí)行,所述節(jié)點(diǎn)管理器模塊管理第一計(jì)算系統(tǒng)對(duì)所述一個(gè)或多個(gè)網(wǎng)絡(luò)的訪問,所述節(jié)點(diǎn)管理器模塊是先前響應(yīng)于來自與第一執(zhí)行中的程序相關(guān)聯(lián)的用戶的請(qǐng)求而創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的塊數(shù)據(jù)存儲(chǔ)服務(wù)的一部分。
[0197]條款47.根據(jù)條款39的方法,其中,第一和第三計(jì)算系統(tǒng)以及第二數(shù)據(jù)存儲(chǔ)系統(tǒng)是在第一地理位置處協(xié)同定位的多個(gè)計(jì)算系統(tǒng)的子集,其中,所述多個(gè)計(jì)算系統(tǒng)包括由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供的多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng),第二數(shù)據(jù)存儲(chǔ)系統(tǒng)和第三數(shù)據(jù)存儲(chǔ)系統(tǒng)都是所述多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的不同的塊數(shù)據(jù)存儲(chǔ)系統(tǒng)。
[0198]條款48.根據(jù)條款47所述的方法,其中,第一地理位置是數(shù)據(jù)中心,第一程序由程序執(zhí)行服務(wù)來執(zhí)行,所述程序執(zhí)行服務(wù)針對(duì)所述多個(gè)計(jì)算系統(tǒng)中位于數(shù)據(jù)中心處的多個(gè)計(jì)算系統(tǒng)上的多個(gè)用戶執(zhí)行多個(gè)程序,第一計(jì)算系統(tǒng)是多個(gè)虛擬機(jī)的宿主,所述多個(gè)虛擬機(jī)中的每一個(gè)能夠執(zhí)行至少一個(gè)程序,其中,第一執(zhí)行中的程序是所述多個(gè)程序中的一個(gè),并且是由所述多個(gè)虛擬機(jī)中以第一計(jì)算系統(tǒng)作為宿主的至少一個(gè)虛擬機(jī)執(zhí)行的虛擬機(jī)圖像,接收第一組數(shù)據(jù)訪問請(qǐng)求的指示、接收第二組其他數(shù)據(jù)訪問請(qǐng)求的指示、以及自動(dòng)響應(yīng)接收到的第一組和第二組數(shù)據(jù)訪問請(qǐng)求的指示是作為執(zhí)行第一計(jì)算系統(tǒng)的虛擬機(jī)監(jiān)控器的一部分來執(zhí)行的,第一計(jì)算系統(tǒng)包括第一執(zhí)行中的程序可用的一個(gè)或多個(gè)其他實(shí)際本地存儲(chǔ)設(shè)備。
[0199]條款49.一種計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀介質(zhì)的內(nèi)容使一個(gè)或多個(gè)計(jì)算系統(tǒng)能夠通過執(zhí)行包括以下步驟的方法來管理由執(zhí)行中的程序?qū)K數(shù)據(jù)存儲(chǔ)功能的訪問:
[0200]針對(duì)在第一計(jì)算系統(tǒng)上執(zhí)行的第一程序,提供對(duì)非本地塊數(shù)據(jù)存儲(chǔ)卷的訪問,所提供的訪問使得第一程序能夠發(fā)起針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求,塊數(shù)據(jù)存儲(chǔ)卷正由第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)提供,第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)通過一個(gè)或多個(gè)網(wǎng)絡(luò)與第一計(jì)算系統(tǒng)分開;
[0201]自動(dòng)響應(yīng)第一程序發(fā)起的針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)接收到的指示,響應(yīng)包括:發(fā)起與在第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷有關(guān)的數(shù)據(jù)訪問請(qǐng)求的執(zhí)行;
[0202]當(dāng)在第一計(jì)算系統(tǒng)上執(zhí)行的第一程序變得不可用之后,代替向第一程序提供的訪問,為在第三計(jì)算系統(tǒng)上執(zhí)行的第二程序提供對(duì)塊數(shù)據(jù)存儲(chǔ)卷的訪問;以及
[0203]自動(dòng)響應(yīng)第二程序發(fā)起的針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)接收到的指示,響應(yīng)包括:發(fā)起與在第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷有關(guān)的所述其他數(shù)據(jù)訪問請(qǐng)求的執(zhí)行;
[0204]條款50.根據(jù)條款49的計(jì)算機(jī)可讀介質(zhì),其中,第一程序和第二程序是單一程序的正在執(zhí)行的拷貝,為第一程序提供訪問包括:以第一執(zhí)行中的程序經(jīng)由與在第一計(jì)算系統(tǒng)本地的第一邏輯塊存儲(chǔ)設(shè)備的交互而發(fā)起針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求的方式,將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng),所述第一邏輯塊存儲(chǔ)設(shè)備表示塊數(shù)據(jù)存儲(chǔ)卷,為第二程序提供訪問包括:識(shí)別在其上執(zhí)行第二程序的第三計(jì)算系統(tǒng),并以第二程序訪問在第三計(jì)算系統(tǒng)本地的第二邏輯塊存儲(chǔ)設(shè)備的方式,將塊數(shù)據(jù)存儲(chǔ)卷附著到第三計(jì)算系統(tǒng),所述第二邏輯塊存儲(chǔ)設(shè)備表示塊數(shù)據(jù)存儲(chǔ)卷,以及第一程序和第二程序?qū)K數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求是訪問存儲(chǔ)在塊數(shù)據(jù)存儲(chǔ)卷上的塊數(shù)據(jù)。
[0205]條款51.根據(jù)條款50的計(jì)算機(jī)可讀介質(zhì),其中,第一計(jì)算系統(tǒng)和第二計(jì)算系統(tǒng)以及第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)位于單一地理位置處,第一計(jì)算系統(tǒng)和第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)為一個(gè)或多個(gè)網(wǎng)絡(luò)所分開,由塊數(shù)據(jù)存儲(chǔ)服務(wù)的系統(tǒng)管理器模塊自動(dòng)執(zhí)行對(duì)與第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷有關(guān)的數(shù)據(jù)訪問請(qǐng)求和所述其他數(shù)據(jù)訪問請(qǐng)求的執(zhí)行,由塊數(shù)據(jù)存儲(chǔ)服務(wù)的節(jié)點(diǎn)管理器模塊執(zhí)行為第一執(zhí)行程序提供對(duì)塊數(shù)據(jù)存儲(chǔ)卷的訪問,所述節(jié)點(diǎn)管理器模塊與第一計(jì)算系統(tǒng)相關(guān)聯(lián)并管理第一執(zhí)行中的程序?qū)σ粋€(gè)或多個(gè)網(wǎng)絡(luò)的訪問,以及通過發(fā)起在所述一個(gè)或多個(gè)網(wǎng)絡(luò)上向第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)送接收到的數(shù)據(jù)訪問請(qǐng)求,部分地在節(jié)點(diǎn)管理器模塊的控制之下,執(zhí)行對(duì)接收到的數(shù)據(jù)訪問請(qǐng)求的指示的自動(dòng)響應(yīng)。
[0206]條款52.根據(jù)條款51的計(jì)算機(jī)可讀介質(zhì),其中,節(jié)點(diǎn)管理器模塊執(zhí)行為第二執(zhí)行中的程序提供對(duì)塊數(shù)據(jù)存儲(chǔ)卷的訪問,節(jié)點(diǎn)管理器還管理第二執(zhí)行中的程序?qū)λ鲆粋€(gè)或多個(gè)網(wǎng)絡(luò)的訪問,第三計(jì)算系統(tǒng)和第一計(jì)算系統(tǒng)是單一物理計(jì)算系統(tǒng)的一部分,以及通過發(fā)起在所述一個(gè)或多個(gè)網(wǎng)絡(luò)上向第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)送接收到的其他數(shù)據(jù)訪問請(qǐng)求,部分地在節(jié)點(diǎn)管理器模塊的控制之下,執(zhí)行對(duì)接收到的所述其他數(shù)據(jù)訪問請(qǐng)求的指示的自動(dòng)響應(yīng)。
[0207]條款53.根據(jù)條款49的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)可讀介質(zhì)是以下至少之一:存儲(chǔ)內(nèi)容的計(jì)算系統(tǒng)的存儲(chǔ)器,以及包括所產(chǎn)生的包含內(nèi)容在內(nèi)的存儲(chǔ)數(shù)據(jù)信號(hào)的數(shù)據(jù)傳輸介質(zhì)。
[0208]條款54.根據(jù)條款49的計(jì)算機(jī)可讀介質(zhì),其中,所述內(nèi)容是當(dāng)執(zhí)行時(shí)使得一個(gè)或多個(gè)計(jì)算系統(tǒng)執(zhí)行所述方法的指令。
[0209]條款55.—種被配置為管理執(zhí)行中的程序?qū)K數(shù)據(jù)存儲(chǔ)功能的訪問的系統(tǒng),所述系統(tǒng)包括:
[0210]一個(gè)或多個(gè)存儲(chǔ)器;以及
[0211]塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器模塊,被配置為提供塊數(shù)據(jù)存儲(chǔ)服務(wù),所述塊數(shù)據(jù)存儲(chǔ)服務(wù)使用多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)來存儲(chǔ)塊數(shù)據(jù)存儲(chǔ)卷,所述塊數(shù)據(jù)存儲(chǔ)卷由所述塊數(shù)據(jù)存儲(chǔ)服務(wù)的用戶創(chuàng)建,并且是在一個(gè)或多個(gè)網(wǎng)絡(luò)上代表與所述用戶相關(guān)聯(lián)的一個(gè)或多個(gè)執(zhí)行中的程序來訪問的,提供塊數(shù)據(jù)存儲(chǔ)服務(wù)包括:
[0212]創(chuàng)建一個(gè)或多個(gè)塊數(shù)據(jù)存儲(chǔ)卷,以供一個(gè)或多個(gè)執(zhí)行中的程序使用,每個(gè)塊數(shù)據(jù)存儲(chǔ)卷存儲(chǔ)在多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上;
[0213]在向所述一個(gè)或多個(gè)執(zhí)行中的程序中的第一執(zhí)行中的程序提供對(duì)所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷中的第一塊數(shù)據(jù)存儲(chǔ)卷的訪問之后,通過發(fā)起對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求,來響應(yīng)由第一程序發(fā)起的、對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷的所述一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求;以及
[0214]在第一程序變得不可用,并且向不同的第二執(zhí)行中的程序提供對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷的訪問以替換向不可用的第一程序提供的訪問之后,通過發(fā)起對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求,來響應(yīng)由第二程序發(fā)起的、對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷的所述一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求。
[0215]條款56.根據(jù)條款55的系統(tǒng),其中,第一程序和第二程序是單一程序的正在執(zhí)行的拷貝,其中,向第一程序提供訪問包括:將第一塊數(shù)據(jù)存儲(chǔ)卷附著到執(zhí)行第一程序的第一計(jì)算系統(tǒng),以便第一執(zhí)行中的程序經(jīng)由與第一計(jì)算系統(tǒng)本地的第一邏輯塊存儲(chǔ)設(shè)備的交互來發(fā)起針對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求,所述第一邏輯塊存儲(chǔ)設(shè)備表示第一塊數(shù)據(jù)存儲(chǔ)卷;以及,向第二程序提供訪問包括:識(shí)別在其上執(zhí)行第二程序的第三計(jì)算系統(tǒng),并將第一塊數(shù)據(jù)存儲(chǔ)卷附著到第三計(jì)算系統(tǒng),以便第二程序能夠訪問第三計(jì)算系統(tǒng)本地的第二邏輯塊存儲(chǔ)設(shè)備,所述第二邏輯塊存儲(chǔ)設(shè)備表示第一塊數(shù)據(jù)存儲(chǔ)卷;以及,第一程序和第二程序針對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求是針對(duì)訪問存儲(chǔ)在塊數(shù)據(jù)存儲(chǔ)卷上的塊數(shù)據(jù)的。
[0216]條款57.根據(jù)條款56的系統(tǒng),其中,第一塊數(shù)據(jù)存儲(chǔ)卷存儲(chǔ)在塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上,第一計(jì)算系統(tǒng)和第三計(jì)算系統(tǒng)以及第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)位于單一地理位置處,并被一個(gè)或多個(gè)網(wǎng)絡(luò)所分開,以及,所述系統(tǒng)還包括塊數(shù)據(jù)存儲(chǔ)服務(wù)的一個(gè)或多個(gè)節(jié)點(diǎn)管理器模塊,所述一個(gè)或多個(gè)節(jié)點(diǎn)管理器模塊與第一程序和第二程序相關(guān)聯(lián),以管理第一程序和第二程序?qū)λ鲆粋€(gè)或多個(gè)網(wǎng)絡(luò)的訪問,使得通過發(fā)起在所述一個(gè)或多個(gè)網(wǎng)絡(luò)上向第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)送數(shù)據(jù)訪問請(qǐng)求和其他數(shù)據(jù)訪問請(qǐng)求,部分地在所述一個(gè)或多個(gè)節(jié)點(diǎn)管理器模塊的控制之下,執(zhí)行對(duì)所述數(shù)據(jù)訪問請(qǐng)求和對(duì)所述其他數(shù)據(jù)訪問請(qǐng)求的響應(yīng)。
[0217]條款58.根據(jù)條款55的系統(tǒng),其中,第一塊數(shù)據(jù)存儲(chǔ)卷的第一拷貝存儲(chǔ)在塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上,其中,對(duì)第一塊數(shù)據(jù)存儲(chǔ)卷的第一拷貝執(zhí)行由第一程序發(fā)起的對(duì)數(shù)據(jù)訪問請(qǐng)求的執(zhí)行,其中,第一程序在第一計(jì)算系統(tǒng)上執(zhí)行,所述第一計(jì)算系統(tǒng)在第一位置處與第一塊數(shù)據(jù)存儲(chǔ)系統(tǒng)協(xié)同定位,第二程序在不同的第二地理位置處的第二計(jì)算系統(tǒng)上執(zhí)行,以及,向第二執(zhí)行中的程序提供對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷的訪問包括:發(fā)起在第二地理位置處將第二計(jì)算系統(tǒng)附著到第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng),所述第二塊數(shù)據(jù)存儲(chǔ)系統(tǒng)存儲(chǔ)第一塊數(shù)據(jù)存儲(chǔ)卷的第二拷貝。
[0218]條款59.根據(jù)條款55的系統(tǒng),其中,所述系統(tǒng)包括第一計(jì)算系統(tǒng),第一計(jì)算系統(tǒng)包括所述一個(gè)或多個(gè)存儲(chǔ)器中的至少一個(gè)存儲(chǔ)器,以及,塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器模塊包括由第一計(jì)算系統(tǒng)使用所述至少一個(gè)存儲(chǔ)器執(zhí)行的軟件指令。
[0219]條款60.根據(jù)條款55的系統(tǒng),其中,塊數(shù)據(jù)存儲(chǔ)系統(tǒng)管理器模塊由用于提供塊數(shù)據(jù)存儲(chǔ)服務(wù)的一個(gè)或多個(gè)裝置構(gòu)成,所述塊數(shù)據(jù)存儲(chǔ)服務(wù)使用多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)來存儲(chǔ)塊數(shù)據(jù)存儲(chǔ)卷,所述塊數(shù)據(jù)存儲(chǔ)卷由塊數(shù)據(jù)存儲(chǔ)服務(wù)的用戶創(chuàng)建,并且是在一個(gè)或多個(gè)網(wǎng)絡(luò)上代表與所述用戶相關(guān)聯(lián)的一個(gè)或多個(gè)執(zhí)行中的程序來訪問的,提供塊數(shù)據(jù)存儲(chǔ)服務(wù)包括:
[0220]創(chuàng)建一個(gè)或多個(gè)塊數(shù)據(jù)存儲(chǔ)卷,以供一個(gè)或多個(gè)執(zhí)行中的程序使用,每個(gè)塊數(shù)據(jù)存儲(chǔ)卷存儲(chǔ)在所述多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的一個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上;
[0221 ] 在向所述一個(gè)或多個(gè)執(zhí)行中的程序中的第一執(zhí)行中的程序提供對(duì)所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷中的第一塊數(shù)據(jù)存儲(chǔ)卷的訪問之后,通過發(fā)起對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求,來響應(yīng)由第一程序發(fā)起的、對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷的所述一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求;以及
[0222] 在第一程序變得不可用,并且向不同的第二執(zhí)行中的程序提供對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷的訪問以替換向不可用的第一程序提供的訪問之后,通過發(fā)起對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求,來響應(yīng)由第二程序發(fā)起的、對(duì)第一所創(chuàng)建的塊數(shù)據(jù)存儲(chǔ)卷的所述一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求。
【權(quán)利要求】
1.一種用于管理執(zhí)行中的程序?qū)K數(shù)據(jù)存儲(chǔ)功能的訪問的計(jì)算機(jī)實(shí)現(xiàn)方法,所述方法包括: 接收由在第一計(jì)算系統(tǒng)上執(zhí)行的第一程序的第一拷貝發(fā)起的第一組一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)指示,所述第一組一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求是針對(duì)訪問存儲(chǔ)在非本地塊數(shù)據(jù)存儲(chǔ)卷上的塊數(shù)據(jù)的,所述塊數(shù)據(jù)存儲(chǔ)卷由不同的第二數(shù)據(jù)存儲(chǔ)系統(tǒng)在一個(gè)或多個(gè)網(wǎng)絡(luò)上提供,并附著到第一計(jì)算系統(tǒng),以便第一執(zhí)行中的程序拷貝經(jīng)由與第一計(jì)算系統(tǒng)本地的第一邏輯塊存儲(chǔ)設(shè)備的交互來發(fā)起針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求,所述第一邏輯塊存儲(chǔ)設(shè)備表示塊數(shù)據(jù)存儲(chǔ)卷; 通過代表第一執(zhí)行中的程序拷貝與第二數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,以發(fā)起對(duì)由所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)提供的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)接收到的第一組數(shù)據(jù)訪問請(qǐng)求的指示; 在確定第一程序拷貝已變得不可用之后,識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng),并將塊數(shù)據(jù)存儲(chǔ)卷附著到第三計(jì)算系統(tǒng),以便第二程序拷貝能夠訪問第三計(jì)算系統(tǒng)本地的第二邏輯塊存儲(chǔ)設(shè)備,所述第三計(jì)算系統(tǒng)與所述第一計(jì)算系統(tǒng)和所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)不同,所述第二邏輯塊存儲(chǔ)設(shè)備表示塊數(shù)據(jù)存儲(chǔ)卷; 接收由第二執(zhí)行中的程序拷貝經(jīng)由與第三計(jì)算系統(tǒng)上的第二邏輯本地塊存儲(chǔ)設(shè)備的交互而發(fā)起的針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的第二組一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)指示;以及 通過代表第二執(zhí)行中的程序拷貝與第二數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,以發(fā)起對(duì)第二數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷執(zhí) 行第二組數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)接收到的第二組數(shù)據(jù)訪問請(qǐng)求的指示。
2.根據(jù)權(quán)利要求1所述的方法,還包括:自動(dòng)確定第一程序拷貝已變得不可用,第一程序拷貝的不可用性基于以下至少一項(xiàng):第一計(jì)算系統(tǒng)的故障、與第一計(jì)算系統(tǒng)的連接的故障、以及第一計(jì)算系統(tǒng)不能夠繼續(xù)執(zhí)行第一程序拷貝。
3.根據(jù)權(quán)利要求2所述的方法,其中,識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng)以及將塊數(shù)據(jù)存儲(chǔ)卷附著到第三計(jì)算系統(tǒng)是自動(dòng)執(zhí)行以維持第一程序?qū)K數(shù)據(jù)存儲(chǔ)卷的訪問的,訪問的自動(dòng)維持是響應(yīng)于對(duì)第一程序拷貝已變得不可用的自動(dòng)確定而執(zhí)行的。
4.根據(jù)權(quán)利要求1所述的方法,其中,識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng)包括:在確定第一程序拷貝已變得不可用之后,發(fā)起在第三計(jì)算系統(tǒng)上執(zhí)行第二程序拷貝。
5.根據(jù)權(quán)利要求1的方法,其中,第一程序的第一拷貝是第一程序的在多個(gè)不同計(jì)算系統(tǒng)上執(zhí)行的多個(gè)拷貝之一,其中,所述多個(gè)拷貝中的至少一個(gè)是所述多個(gè)拷貝中的一個(gè)或多個(gè)其他拷貝的備選拷貝,以及,識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng)包括:基于作為至少一個(gè)備選拷貝之一的第二拷貝,選擇第一程序的第二拷貝。
6.根據(jù)權(quán)利要求1所述的方法,還包括:在將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng)之前,在第二數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷,并在不同的第四塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝,以及,響應(yīng)第一組數(shù)據(jù)訪問請(qǐng)求和第二組數(shù)據(jù)訪問請(qǐng)求還包括:發(fā)起對(duì)所創(chuàng)建的鏡像拷貝執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求和第二組數(shù)據(jù)訪問請(qǐng)求。
7.根據(jù)權(quán)利要求1所述的方法,還包括:在接收一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的指示之前,將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng),以供第一執(zhí)行中的程序拷貝使用,將塊數(shù)據(jù)存儲(chǔ)卷附著的步驟包括將第一邏輯塊存儲(chǔ)設(shè)備與由第二數(shù)據(jù)存儲(chǔ)系統(tǒng)提供的塊數(shù)據(jù)存儲(chǔ)卷相關(guān)聯(lián),并由節(jié)點(diǎn)管理器模塊執(zhí)行,所述節(jié)點(diǎn)管理器模塊管理第一計(jì)算系統(tǒng)對(duì)所述一個(gè)或多個(gè)網(wǎng)絡(luò)的訪問,所述節(jié)點(diǎn)管理器模塊是先前響應(yīng)于來自與第一執(zhí)行中的程序相關(guān)聯(lián)的用戶的請(qǐng)求而創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的塊數(shù)據(jù)存儲(chǔ)服務(wù)的一部分。
8.根據(jù)權(quán)利要求1的方法,其中,第一和第三計(jì)算系統(tǒng)以及第二數(shù)據(jù)存儲(chǔ)系統(tǒng)是在第一地理位置處協(xié)同定位的多個(gè)計(jì)算系統(tǒng)的子集,其中,所述多個(gè)計(jì)算系統(tǒng)包括由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供的多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng),第二數(shù)據(jù)存儲(chǔ)系統(tǒng)和第三數(shù)據(jù)存儲(chǔ)系統(tǒng)都是所述多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的不同的塊數(shù)據(jù)存儲(chǔ)系統(tǒng)。
9.根據(jù)權(quán)利要求8所述的方法,其中,第一地理位置是數(shù)據(jù)中心,第一程序由程序執(zhí)行服務(wù)來執(zhí)行,所述程序執(zhí)行服務(wù)針對(duì)所述多個(gè)計(jì)算系統(tǒng)中位于數(shù)據(jù)中心處的多個(gè)計(jì)算系統(tǒng)上的多個(gè)用戶執(zhí)行多個(gè)程序,第一計(jì)算系統(tǒng)是多個(gè)虛擬機(jī)的宿主,所述多個(gè)虛擬機(jī)中的每一個(gè)能夠執(zhí)行至少一個(gè)程序,其中,第一執(zhí)行中的程序是所述多個(gè)程序中的一個(gè),并且是由所述多個(gè)虛擬機(jī)中以第一計(jì)算系統(tǒng)作為宿主的至少一個(gè)虛擬機(jī)執(zhí)行的虛擬機(jī)圖像,接收第一組數(shù)據(jù)訪問請(qǐng)求的指示、接收第二組其他數(shù)據(jù)訪問請(qǐng)求的指示、以及自動(dòng)響應(yīng)接收到的第一組和第二組數(shù)據(jù)訪問請(qǐng)求的指示是作為執(zhí)行第一計(jì)算系統(tǒng)的虛擬機(jī)監(jiān)控器的一部分來執(zhí)行的,第一計(jì)算系統(tǒng)包括第一執(zhí)行中的程序可用的一個(gè)或多個(gè)其他實(shí)際本地存儲(chǔ)設(shè)備。
10.一種被配置為管理執(zhí)行中的程序?qū)K數(shù)據(jù)存儲(chǔ)功能的訪問的系統(tǒng),所述系統(tǒng)包括: 一個(gè)或多個(gè)存儲(chǔ)器; 接收由在第一計(jì)算系統(tǒng)上執(zhí)行的第一程序的第一拷貝發(fā)起的第一組一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)指示的裝置,所述第一組一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求是針對(duì)訪問存儲(chǔ)在非本地塊數(shù)據(jù)存儲(chǔ)卷上的塊數(shù)據(jù)的,所述塊數(shù)據(jù)存儲(chǔ)卷由不同的第二數(shù)據(jù)存儲(chǔ)系統(tǒng)在一個(gè)或多個(gè)網(wǎng)絡(luò)上提供,并附著到第一計(jì)算系統(tǒng),以便第一執(zhí)行中的程序拷貝經(jīng)由與第一計(jì)算系統(tǒng)本地的第一邏輯塊存儲(chǔ)設(shè)備的交互來發(fā)起針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的數(shù)據(jù)訪問請(qǐng)求,所述第一邏輯塊存儲(chǔ)設(shè)備表示塊數(shù)據(jù)存儲(chǔ)卷; 通過代表第一執(zhí)行中的程序拷貝與第二數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,以發(fā)起對(duì)由所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)提供的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)接收到的第一組數(shù)據(jù)訪問請(qǐng)求的指示的裝置; 在確定第一程序拷貝已變得不可用之后,識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng),并將塊數(shù)據(jù)存儲(chǔ)卷附著到第三計(jì)算系統(tǒng),以便第二程序拷貝能夠訪問第三計(jì)算系統(tǒng)本地的第二邏輯塊存儲(chǔ)設(shè)備的裝置,所述第三計(jì)算系統(tǒng)與所述第一計(jì)算系統(tǒng)和所述第二數(shù)據(jù)存儲(chǔ)系統(tǒng)不同,所述第二邏輯塊存儲(chǔ)設(shè)備表示塊數(shù)據(jù)存儲(chǔ)卷; 接收由第二執(zhí)行中的程序拷貝經(jīng)由與第三計(jì)算系統(tǒng)上的第二邏輯本地塊存儲(chǔ)設(shè)備的交互而發(fā)起的針對(duì)塊數(shù)據(jù)存儲(chǔ)卷的第二組一個(gè)或多個(gè)其他數(shù)據(jù)訪問請(qǐng)求的一個(gè)或多個(gè)指示的裝置;以及 通過代表第二執(zhí)行中的程序拷貝與第二數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行交互,以發(fā)起對(duì)第二數(shù)據(jù)存儲(chǔ)系統(tǒng)上的塊數(shù)據(jù)存儲(chǔ)卷執(zhí)行第二組數(shù)據(jù)訪問請(qǐng)求,來自動(dòng)響應(yīng)接收到的第二組數(shù)據(jù)訪問請(qǐng)求的指示的裝置。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),還包括:自動(dòng)確定第一程序拷貝已變得不可用的裝置,第一程序拷貝的不可用性基于以下至少一項(xiàng):第一計(jì)算系統(tǒng)的故障、與第一計(jì)算系統(tǒng)的連接的故障、以及第一計(jì)算系統(tǒng)不能夠繼續(xù)執(zhí)行第一程序拷貝。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其中識(shí)別在其上執(zhí)行第一程序的第二拷貝的第三計(jì)算系統(tǒng)包括:在確定第一程序拷貝已變得不可用之后,發(fā)起在第三計(jì)算系統(tǒng)上執(zhí)行第二程序拷貝。
13.根據(jù)權(quán)利要求10所述的系統(tǒng),還包括:在將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng)之前,在第二數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷,并在不同的第四塊數(shù)據(jù)存儲(chǔ)系統(tǒng)上創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的鏡像拷貝的裝置,以及其中,響應(yīng)第一組數(shù)據(jù)訪問請(qǐng)求和第二組數(shù)據(jù)訪問請(qǐng)求還包括:發(fā)起對(duì)所創(chuàng)建的鏡像拷貝執(zhí)行第一組數(shù)據(jù)訪問請(qǐng)求和第二組數(shù)據(jù)訪問請(qǐng)求。
14.根據(jù)權(quán)利要求10所述的系統(tǒng),還包括:在接收一個(gè)或多個(gè)數(shù)據(jù)訪問請(qǐng)求的指示之前,將塊數(shù)據(jù)存儲(chǔ)卷附著到第一計(jì)算系統(tǒng),以供第一執(zhí)行中的程序拷貝使用的裝置,將附著塊數(shù)據(jù)存儲(chǔ)卷包括將第一邏輯塊存儲(chǔ)設(shè)備與由第二數(shù)據(jù)存儲(chǔ)系統(tǒng)提供的塊數(shù)據(jù)存儲(chǔ)卷相關(guān)聯(lián),并由節(jié)點(diǎn)管理器模塊執(zhí)行,所述節(jié)點(diǎn)管理器模塊管理第一計(jì)算系統(tǒng)對(duì)所述一個(gè)或多個(gè)網(wǎng)絡(luò)的訪問,所述節(jié)點(diǎn)管理器模塊是先前響應(yīng)于來自與第一執(zhí)行中的程序相關(guān)聯(lián)的用戶的請(qǐng)求而創(chuàng)建塊數(shù)據(jù)存儲(chǔ)卷的塊數(shù)據(jù)存儲(chǔ)服務(wù)的一部分。
15.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,第一和第三計(jì)算系統(tǒng)以及第二數(shù)據(jù)存儲(chǔ)系統(tǒng)是在第一地理位置處協(xié)同定位的多個(gè)計(jì)算系統(tǒng)的子集,其中,所述多個(gè)計(jì)算系統(tǒng)包括由塊數(shù)據(jù)存儲(chǔ)服務(wù)提供的多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng),第二數(shù)據(jù)存儲(chǔ)系統(tǒng)和第三數(shù)據(jù)存儲(chǔ)系統(tǒng)都是所述多個(gè)塊數(shù)據(jù)存儲(chǔ)系統(tǒng)中的不同的塊數(shù)據(jù)存儲(chǔ)系統(tǒng)。
【文檔編號(hào)】G06F9/50GK103645953SQ201310544765
【公開日】2014年3月19日 申請(qǐng)日期:2009年8月7日 優(yōu)先權(quán)日:2008年8月8日
【發(fā)明者】泰特·安德魯·塞爾坦, 彼得·N·德桑蒂斯, 馬修·S·加曼, 阿特勒·諾曼·約爾根森, 羅蘭·帕特森-瓊斯 申請(qǐng)人:亞馬遜技術(shù)有限公司