相關(guān)申請的交叉引用
本申請要求2014年12月19日提交的題為“用于順序傳輸優(yōu)化存儲裝置的卷級冗余編碼技術(shù)(volume-levelredundancycodingtechniquesforsequentialtransferoptimizedstoragedevices)”的共同未決的美國專利申請?zhí)?4/578,130的優(yōu)先權(quán),所述專利申請的全部內(nèi)容以引用的方式并入本文。
背景技術(shù):
網(wǎng)絡(luò)計算和存儲的使用近年來一直在增長。用于網(wǎng)絡(luò)計算和存儲的資源通常由利用計算機、服務(wù)器和存儲驅(qū)動器的大規(guī)模網(wǎng)絡(luò)的計算資源提供商來提供,以使客戶端(包括內(nèi)容提供商、在線商家等)能夠托管和執(zhí)行各種應(yīng)用和web服務(wù)。傳統(tǒng)上使用現(xiàn)場服務(wù)器和存儲設(shè)備來托管其網(wǎng)站并將內(nèi)容存儲并流式傳輸給其客戶的內(nèi)容提供商和在線商家通常放棄現(xiàn)場托管和存儲,并且轉(zhuǎn)而使用計算資源提供商的資源。網(wǎng)絡(luò)計算的使用允許內(nèi)容提供商和在線商家等有效地且自適應(yīng)地滿足他們的計算需求,由此由內(nèi)容提供商和在線商家所使用的計算和存儲資源被根據(jù)需要并且根據(jù)他們的需要而添加或從由計算資源提供商所提供的大型池中移除。
網(wǎng)絡(luò)計算和存儲的增長以及依賴于網(wǎng)絡(luò)計算和存儲的實體數(shù)量的伴隨的增加已增加優(yōu)化網(wǎng)絡(luò)計算和存儲系統(tǒng)上的數(shù)據(jù)性能和完整性的重要性。例如,數(shù)據(jù)檔案系統(tǒng)和服務(wù)可使用各種類型的糾錯和容錯方案,諸如實現(xiàn)冗余編碼和數(shù)據(jù)分片。此外,相對于其他數(shù)據(jù)存儲裝置,通過使用與隨機存取存儲裝置相比在順序存儲上快得多的數(shù)據(jù)存儲裝置或介質(zhì),可減輕持續(xù)增加的數(shù)據(jù)量的容量和成本。
附圖說明
將參考附圖描述根據(jù)本公開的各種實施方案,在附圖中:
圖1示意性地示出根據(jù)一些實施方案的可將檔案原始數(shù)據(jù)存儲在實現(xiàn)冗余碼的數(shù)據(jù)存儲系統(tǒng)上的環(huán)境;
圖2示意性地示出根據(jù)一些實施方案的用于將檔案原始數(shù)據(jù)存儲在數(shù)據(jù)存儲系統(tǒng)的多個數(shù)據(jù)存儲區(qū)上的各種工作流程;
圖3示意性地示出根據(jù)一些實施方案的用于索引和定位存儲在數(shù)據(jù)存儲系統(tǒng)上的數(shù)據(jù)的各種工作流程;
圖4示意性地示出根據(jù)一些實施方案的用于處理、索引、存儲和檢索存儲在數(shù)據(jù)存儲系統(tǒng)上的數(shù)據(jù)的示例性過程;
圖5示意性地示出根據(jù)一些實施方案的用于索引存儲在冗余編碼數(shù)據(jù)存儲系統(tǒng)上的原始數(shù)據(jù)的示例性過程;
圖6示意性地示出根據(jù)一些實施方案的包括可實現(xiàn)數(shù)據(jù)存儲和索引技術(shù)的計算資源服務(wù)提供商的環(huán)境;
圖7示意性地示出根據(jù)一些實施方案的能夠?qū)崿F(xiàn)各種數(shù)據(jù)存儲和索引技術(shù)的數(shù)據(jù)存儲服務(wù);并且
圖8示出可實現(xiàn)各種實施方案的環(huán)境。
具體實施方式
在以下描述中,將描述各種實施方案。出于解釋的目的,將闡述具體的配置和細節(jié),以便提供各實施方案的透徹理解。然而,對于本領(lǐng)域技術(shù)人員還將明顯的是,在沒有具體細節(jié)的情況下也可實行各實施方案。此外,為了不使所描述的實施方案晦澀,可能會省略或簡化眾所周知的特征。
本文描述和提出的技術(shù)包括用于使用冗余編碼技術(shù)將數(shù)據(jù)檔案(“檔案”)的原始數(shù)據(jù)存儲在數(shù)據(jù)存儲系統(tǒng)上的系統(tǒng)和方法。例如,諸如糾刪碼的冗余碼可應(yīng)用于傳入檔案(諸如從實現(xiàn)本文描述的存儲技術(shù)的計算資源服務(wù)提供商的客戶接收到的檔案),以便允許存儲在最少的卷上可用的單個檔案的原始數(shù)據(jù),諸如數(shù)據(jù)存儲系統(tǒng)的那些數(shù)據(jù),同時保留可用性、耐用性以及由應(yīng)用冗余碼而賦予的其他保證。
在一些實施方案中,通過由計算資源服務(wù)提供商的一個或多個資源提供的諸如檔案存儲服務(wù)的服務(wù)來從計算資源服務(wù)提供商的客戶接收檔案,諸如包含任何數(shù)量和性質(zhì)的數(shù)據(jù)的客戶檔案。檔案可根據(jù)一個或多個常見屬性(諸如客戶的身份、上傳時間和/或例如由檔案存儲服務(wù)接收的時間)進行分類。可執(zhí)行這種分類,以便最小化存儲任何給定檔案的卷的數(shù)量。在一些實施方案中,檔案的原始數(shù)據(jù)被存儲為跨多個卷的多個碎片,其數(shù)量(在某些情況下可能具有一對一關(guān)系的碎片或卷的數(shù)量)可根據(jù)各種因素來預(yù)先確定,包括使用冗余碼重建原始數(shù)據(jù)所需的總碎片數(shù)。
在一些實施方案中,可結(jié)合例如將要存儲檔案的順序來生成一個或多個標記,如結(jié)合上文所述的分類確定的。在一些實施方案中,可針對多個卷中的每個卷生成索引,并且在這類實施方案中,可反映存儲在其應(yīng)用的相應(yīng)卷上的檔案。標記可以是任何適當?shù)念愋?,并且可包括稀疏標記。在使用稀疏標記的實施方案中,索?例如,針對給定卷)可指向存儲或?qū)⒁鎯υ诶绱司砩系臋n案的子集。可在任何基礎(chǔ)上和任何適當?shù)拈g隔內(nèi)選擇子集。實例可包括位于卷的x個塊或字節(jié)的間隔處的檔案的標識或者在n個檔案的間隔處的檔案的標識,其中x或n可由例如檔案存儲服務(wù)或其管理員來預(yù)先確定。
在一些實施方案中,稀疏索引與關(guān)于檔案分類順序的信息結(jié)合使用,以便定位檔案,而不需要使用密集索引,例如在給定卷上考慮每個檔案的索引。這種分類順序相關(guān)信息可駐留在卷上,或者在一些實施方案中可駐留在與卷分離的實體上。類似地,索引可存儲在它們應(yīng)用到的相同的卷上,或者在一些實施方案中與這類卷分開存儲。在將分類順序相關(guān)信息和/或索引存儲在適用卷上的實施方案中,分類順序相關(guān)信息和/或索引可被包含在檔案的原始數(shù)據(jù)中并且作為碎片隨其存儲,如前所述。
在一些實施方案中,檔案的原始數(shù)據(jù)(以及在標記被存儲在卷上的實施方案中,標記)由與例如檔案存儲服務(wù)相關(guān)聯(lián)的實體使用冗余碼(諸如糾刪碼)來進行處理,以便生成可用于重新生成原始數(shù)據(jù)的冗余編碼碎片以及(如果適用的話)標記。在一些實施方案中,冗余碼可利用數(shù)學(xué)函數(shù)矩陣(“生成矩陣”),其一部分可包括單位矩陣。在一些這類實施方案中,冗余編碼碎片可至少部分地對應(yīng)于在單位矩陣之外的生成矩陣的部分。如此生成的冗余編碼碎片可存儲在另外的卷中。卷的總數(shù)可包括承載原始數(shù)據(jù)(和標記)的卷以及包含冗余編碼碎片的卷。
在一些實施方案中,根據(jù)本文描述的技術(shù)存儲的檔案的檢索可由諸如在計算資源服務(wù)提供商的客戶的控制下的客戶端裝置和/或由其提供的檔案存儲服務(wù)的實體來請求,如貫穿本公開內(nèi)容更詳細地描述的。響應(yīng)于此請求,數(shù)據(jù)存儲系統(tǒng)(例如,包括上述卷并且提供檔案存儲服務(wù)的系統(tǒng))可基于關(guān)于存儲在卷上的檔案的分類順序的信息來定位檔案位于其上的特定卷。此后,可使用索引或標記來定位特定卷,從而從卷讀取并提供給請求實體。在采用稀疏索引的實施方案中,分類順序信息可用于定位相繼在所請求的檔案之前的最近位置(或檔案),從而從此位置或檔案順序地讀取此卷,直到找到所請求的檔案。
在一些實施方案中,如果卷中的一個卷或其上存儲的碎片被檢測為損壞、丟失或以其他方式不可用,那么可使用應(yīng)用于在第一實例中生成碎片的冗余碼來生成新的碎片。在一些實施方案中,新的碎片可以是不可用碎片的復(fù)制,諸如可以是在碎片包含檔案的原始數(shù)據(jù)的情況下。在一些實施方案中,新的碎片可從由例如與冗余碼相關(guān)聯(lián)的生成矩陣產(chǎn)生的一組潛在碎片中選擇,以便在內(nèi)容上不同于不可用碎片(諸如可以是不可用碎片是從冗余碼生成的碎片并且因此不包含檔案的原始數(shù)據(jù)的情況)。在這種情況下,在某些實施方案中,可產(chǎn)生全新的卷,而不是碎片。
圖1示意性地示出根據(jù)一些實施方案的可將檔案原始數(shù)據(jù)存儲在實現(xiàn)冗余編碼的數(shù)據(jù)存儲系統(tǒng)上的環(huán)境。一個或多個客戶端實體102(諸如在計算資源服務(wù)提供商的客戶的控制下的客戶端實體)將檔案104提交到數(shù)據(jù)存儲系統(tǒng)106以便進行存儲。客戶端實體102可以是能夠與數(shù)據(jù)存儲系統(tǒng)諸如通過網(wǎng)絡(luò)(包括互聯(lián)網(wǎng))進行數(shù)據(jù)交易的任何實體。實例包括物理計算系統(tǒng)(例如,服務(wù)器、臺式計算機、膝上型計算機,瘦客戶端、以及諸如智能手機和平板電腦的手持裝置)、(例如,可由計算資源服務(wù)提供商使用與其相關(guān)聯(lián)的一個或多個資源來提供的)虛擬計算系統(tǒng)、服務(wù)(例如,諸如通過應(yīng)用程序編程接口調(diào)用連接到數(shù)據(jù)存儲系統(tǒng)106的那些服務(wù)、web服務(wù)調(diào)用或其他編程方法)等。
數(shù)據(jù)存儲系統(tǒng)106可以是能夠處理以便進行存儲并且與一個或多個資源交接以導(dǎo)致存儲處理數(shù)據(jù)的任何計算資源或這類資源的集合。實例包括物理計算系統(tǒng)(例如,服務(wù)器、臺式計算機、膝上型計算機,瘦客戶端、以及諸如智能手機和平板電腦的手持裝置)、(例如,可由計算資源服務(wù)提供商使用與其相關(guān)聯(lián)的一個或多個資源來提供的)虛擬計算系統(tǒng)、服務(wù)(例如,諸如通過應(yīng)用程序編程接口調(diào)用連接到數(shù)據(jù)存儲系統(tǒng)106的那些服務(wù)、web服務(wù)調(diào)用或其他編程方法)等。在一些實施方案中,數(shù)據(jù)存儲系統(tǒng)106的資源以及數(shù)據(jù)存儲系統(tǒng)106本身可以是計算資源服務(wù)提供商的一個或多個資源,諸如下文進一步詳細描述的。在一些實施方案中,數(shù)據(jù)存儲系統(tǒng)106和/或計算資源服務(wù)提供商提供一個或多個檔案存儲服務(wù)和/或數(shù)據(jù)存儲服務(wù),諸如在下文進一步描述的那些,客戶端實體102可通過這些服務(wù)來進行數(shù)據(jù)(諸如檔案104)交易。
檔案104可包含任何格式的任何數(shù)量的數(shù)據(jù)。例如,檔案104可以是單個文件,或者在一些實施方案中可包含多個文件。檔案104可由例如客戶端裝置102加密,或者在一些實施方案中,可在接收到檔案104之后,諸如在數(shù)據(jù)存儲系統(tǒng)106和/或計算資源服務(wù)提供商的客戶請求時,由數(shù)據(jù)存儲系統(tǒng)106的部件加密。
數(shù)據(jù)存儲系統(tǒng)106可根據(jù)一個或多個標準對檔案104進行分類(并且在多個標準用于分類的情況下,可順序地并且以適合于實現(xiàn)的任何順序?qū)@些標準進行分類)。這種標準可以是一些或所有檔案的共同屬性,并且可包括客戶的身份、(例如,由客戶端裝置102)上傳和/或(由數(shù)據(jù)存儲系統(tǒng)106)接收的時間、檔案大小、預(yù)期體積和/或相對于檔案邊界的碎片邊界(例如,以便最小化跨碎片和/或卷損壞的檔案數(shù)量)等。如上所述,可執(zhí)行這種分類,以便最小化存儲任何給定檔案的卷的數(shù)量??墒褂眠@類技術(shù),例如以在從多個卷檢索數(shù)據(jù)的開銷大于從多個卷并行化檢索的益處的實施方案中來優(yōu)化存儲。關(guān)于分類順序的信息可例如由數(shù)據(jù)存儲系統(tǒng)106維持,以用于本文進一步詳細描述的技術(shù)。
如前所述,在一些實施方案中,可結(jié)合例如將要存儲檔案的順序來生成一個或多個標記,如結(jié)合上文所述的分類確定的。索引可以是單個索引或者可以是多部分索引,并且可以是任何適當?shù)募軜?gòu),并且可根據(jù)任何適當?shù)姆椒▉砩?。例如,索引可以是位圖索引、密集索引、稀疏索引或反向索引。使用多個標記的實施方案可根據(jù)例如通過數(shù)據(jù)存儲系統(tǒng)106存儲的檔案104的特性來實現(xiàn)不同類型的標記。例如,數(shù)據(jù)存儲系統(tǒng)106可為特定大小的檔案生成密集索引(索引本身的大小相對于存儲在給定卷上的檔案的數(shù)量可能較小),并且還可為所述特定大小的檔案生成稀疏索引(索引大小與檔案大小的比例增加)。
數(shù)據(jù)存儲系統(tǒng)106被連接到或包括一個或多個卷108,在卷108上存儲檔案104,并且在一些實施方案中存儲所生成的索引。卷108可以是能夠存儲或?qū)ぶ反鎯υ谄渲械臄?shù)據(jù)的任何邏輯容器或物理容器。在一些實施方案中,卷108可與它們所在的數(shù)據(jù)存儲裝置(并且在一些實施方案中實際上可能是數(shù)據(jù)存儲裝置本身)在一對一的基礎(chǔ)上進行映射。在一些實施方案中,卷108的大小和/或數(shù)量可獨立于它們駐留在其上的數(shù)據(jù)存儲裝置的容量(例如,一組卷可各自具有固定大小,以使得第二組卷可駐留在與第一組卷相同的數(shù)據(jù)存儲裝置上)。數(shù)據(jù)存儲裝置可包括能夠存儲數(shù)據(jù)的任何資源或資源集合,諸如計算資源服務(wù)提供商的那些資源,并且可以是物理的、虛擬的或兩者的某種組合。
如前所述,在一些實施方案中,可針對多個卷中的每個卷108生成一個或多個標記,并且在這類實施方案中,可反映存儲在其應(yīng)用的相應(yīng)卷108上的檔案。在使用稀疏標記的實施方案中,給定卷的稀疏索引可指向存儲或?qū)⒁鎯υ诰?08上的檔案104的子集,諸如可被確定為基于先前提及的分類技術(shù)而存儲在卷108上的那些檔案104。在稀疏索引中將要被索引的卷的子集可在任何適當?shù)幕A(chǔ)上并且以任何適當?shù)拈g隔來進行選擇。例如,稀疏索引可識別將要(例如,獨立于檔案本身的邊界和/或數(shù)量)在卷的每x個塊或字節(jié)處定位的檔案。作為另一實例,稀疏索引可識別將要存儲在卷108上的每一第n個檔案。如可設(shè)想的,標記(無論是稀疏的還是其他的)可在將檔案實際存儲在相應(yīng)卷上之前進行確定。在一些實施方案中,可在卷上保留空間,以便在檔案104被寫入卷108之后生成和/或?qū)懭脒m當?shù)臉擞洝?/p>
在一些實施方案中,稀疏索引與關(guān)于檔案分類順序的信息結(jié)合使用,以便定位檔案,而不需要使用密集索引,例如在給定卷108上考慮每個檔案104的索引。這種分類順序相關(guān)信息可駐留在卷108上,或者在一些實施方案中可駐留在與卷108分離的實體上,諸如在計算資源服務(wù)提供商的數(shù)據(jù)存儲區(qū)或其他資源中。類似地,索引可存儲在它們應(yīng)用到的相同的卷108上,或者在一些實施方案中與這類卷108分開存儲。
如所提及的,檔案104被一位一位地(例如,檔案的“原始數(shù)據(jù)”)存儲在多個卷108的子集上。同樣如上所述,適當?shù)臉擞浺部纱鎯υ诙鄠€卷108的適用子集上。檔案的原始數(shù)據(jù)被存儲為跨多個卷的多個碎片,其數(shù)量(在某些情況下可能具有一對一關(guān)系的碎片或卷的數(shù)量)可根據(jù)各種因素來預(yù)先確定,包括使用冗余碼重建原始數(shù)據(jù)所需的總碎片數(shù)。在一些實施方案中,用于存儲檔案的原始數(shù)據(jù)的卷的數(shù)量是從由來自原始數(shù)據(jù)的冗余碼生成的多個碎片中重構(gòu)原始數(shù)據(jù)所需的碎片的數(shù)量。作為實例,圖1示出五個卷,其中三個包含原始數(shù)據(jù)110,并且其中兩個包含派生數(shù)據(jù)112,諸如冗余編碼數(shù)據(jù)。在示出的實例中,所使用的冗余碼可能需要任意三個碎片來重新生成原始數(shù)據(jù),并且因此,可使用三個卷的數(shù)量來寫入原始數(shù)據(jù)(甚至在冗余碼的任何應(yīng)用之前)。
承載原始數(shù)據(jù)110的卷108可各自包含或被認為是它們自己的碎片。在將分類順序相關(guān)信息和/或索引存儲在適用卷108上的實施方案中,分類順序相關(guān)信息和/或索引可被包含在檔案的原始數(shù)據(jù)中并且作為碎片存儲,如前所述。在示出的實例中,原始數(shù)據(jù)110在三個相關(guān)聯(lián)的卷108上被存儲為三個碎片(其可包括相應(yīng)的標記)。在一些實施方案中,原始數(shù)據(jù)110(以及在標記被存儲在卷上的實施方案中,標記)由與例如檔案存儲服務(wù)相關(guān)聯(lián)的實體使用冗余碼(諸如糾刪碼)來進行處理,以便生成包含編碼信息而不是檔案的原始數(shù)據(jù)的剩余碎片。原始數(shù)據(jù)110可在分類之后的任何時間使用冗余碼進行處理,諸如在與這種存儲同時存儲在卷上之前或者在這種存儲之后。
這種編碼信息可以是從原始數(shù)據(jù)派生的任何數(shù)學(xué)計算的信息,并且取決于所應(yīng)用的特定冗余碼。如上所述,冗余碼可包括糾刪碼(諸如在線代碼、盧比變換碼、raptor碼、奇偶校驗碼、里德-所羅門碼、柯西碼、抗刪除系統(tǒng)碼、再生碼或最大距離可分離碼)或者其他前向糾錯碼。在一些實施方案中,冗余碼可實現(xiàn)實現(xiàn)數(shù)學(xué)函數(shù)以生成與應(yīng)用冗余碼的原始數(shù)據(jù)相關(guān)的多個編碼對象的生成矩陣。在一些這類實施方案中,使用單位矩陣,其中不應(yīng)用數(shù)學(xué)函數(shù),并且允許原始數(shù)據(jù)(以及適用的索引)直接通過。在這類實施方案中,因此可設(shè)想,承載原始數(shù)據(jù)(和索引)的卷可對應(yīng)于通過應(yīng)用的冗余碼的生成矩陣的單位矩陣行通過所述原始數(shù)據(jù)編碼的對象,而承載派生數(shù)據(jù)的卷對應(yīng)于生成矩陣的其他行。在圖1所示的實例中,五個卷108包括具有對應(yīng)于檔案110的原始數(shù)據(jù)的碎片的三個卷,而兩個卷具有對應(yīng)于派生數(shù)據(jù)112的碎片。在此實例中,應(yīng)用的冗余碼可能導(dǎo)致數(shù)據(jù)以3∶5方案存儲,其中需要五個存儲的碎片中的任意三個碎片來重新生成原始數(shù)據(jù),而不管所選擇的三個碎片是否包含原始數(shù)據(jù)或派生數(shù)據(jù)。
在一些實施方案中,如果卷108中的一個卷或其上存儲的碎片被檢測為損壞、丟失或以其他方式不可用,那么可使用應(yīng)用于在第一實例中生成碎片的冗余碼來生成新的碎片。新的碎片可存儲在相同的卷或不同的卷上,這取決于例如碎片是否出于除了卷故障之外的原因而不可用。新的碎片可由例如數(shù)據(jù)存儲系統(tǒng)106通過使用重新生成存儲在所有卷上的原始數(shù)據(jù)(以及(如果適用)索引)所需的剩余碎片的數(shù)量、重新生成所述原始數(shù)據(jù)以及替換原始數(shù)據(jù)的對應(yīng)于不可用的部分(在不可用碎片包含原始數(shù)據(jù)的情況下)、或者重新應(yīng)用冗余碼以便為新的碎片提供派生數(shù)據(jù)來生成。
如前所述,在一些實施方案中,新的碎片可以是不可用碎片的復(fù)制,諸如可以是在不可用碎片包含檔案的原始數(shù)據(jù)的情況下。在一些實施方案中,新的碎片可從由例如與冗余碼相關(guān)聯(lián)的生成矩陣產(chǎn)生的一組潛在碎片中選擇,以便在內(nèi)容上不同于不可用碎片(諸如可以是不可用碎片是從冗余碼生成的碎片并且因此不包含檔案的原始數(shù)據(jù)的情況)。
在一些實施方案中,根據(jù)本文描述的技術(shù)存儲的檔案的檢索可由諸如在計算資源服務(wù)提供商的客戶的控制下的客戶端實體102和/或由其提供的檔案存儲服務(wù)的實體來請求,如貫穿本公開內(nèi)容更詳細地描述的。響應(yīng)于此請求,數(shù)據(jù)存儲系統(tǒng)106可基于關(guān)于存儲在卷108上的檔案104的分類順序的信息來定位檔案104位于其上的特定卷108。此后,可使用索引或標記來定位特定檔案,從而從卷讀取并提供給請求客戶端實體102。在采用稀疏索引的實施方案中,分類順序信息可用于定位相繼在所請求的檔案之前的最近位置(或檔案),從而從此位置或檔案順序讀取此卷,直到找到所請求的檔案。在采用多種類型的標記的實施方案中,數(shù)據(jù)存儲系統(tǒng)106可基于評估用于在第一實例中部署多種類型的標記的標準來最初確定哪些標記包含用于請求檔案的最有效的位置信息。例如,如果特定大小的檔案以稀疏索引進行索引,并且等于或大于此大小的檔案被以平行密集索引進行索引,那么數(shù)據(jù)存儲系統(tǒng)106可首先確定所請求的檔案的大小,并且如果所請求的檔案大于或等于上述大小邊界,就可使用密集索引,以便更快地獲得所請求檔案的精確位置。
圖2示意性地示出根據(jù)一些實施方案的用于將檔案原始數(shù)據(jù)存儲在數(shù)據(jù)存儲系統(tǒng)的多個數(shù)據(jù)存儲區(qū)上的各種工作流程。在一些實施方案中,數(shù)據(jù)存儲系統(tǒng)202可類似于上文結(jié)合圖1描述的數(shù)據(jù)存儲系統(tǒng)106,其包括或連接到多個卷204,卷204也可類似于上文結(jié)合圖1描述的卷108。檔案206,諸如從結(jié)合圖1描述的客戶端實體102接收到的檔案,由數(shù)據(jù)存儲系統(tǒng)202根據(jù)本文進一步詳細描述的技術(shù)來進行處理。
如前所述,數(shù)據(jù)存儲系統(tǒng)202可根據(jù)一個或多個標準對檔案206進行分類(并且在多個標準用于分類的情況下,可順序地并且以適合于實現(xiàn)的任何順序?qū)@些標準進行分類)。這種標準可以是一些或所有檔案的共同屬性,并且可包括客戶的身份、由客戶定義的抽象概念(例如,與同一客戶的多個檔案相關(guān)聯(lián)的較大數(shù)據(jù)對象)、上傳時間和/或接收時間、檔案大小、預(yù)期體積和/或相對于檔案邊界的碎片邊界(例如,以便最小化跨碎片和/或卷損壞的檔案數(shù)量)、檔案本身的唯一標識符等。如前所述,可執(zhí)行這種分類,以便最小化存儲任何給定檔案的卷的數(shù)量。例如,可基于預(yù)期的卷大小來對較大的檔案進行分類,以使得較大的檔案被較早地存儲在卷中,并且越來越小的檔案被稍后存儲在卷中??墒褂眠@類技術(shù),例如以在從多個卷檢索數(shù)據(jù)的開銷大于從多個卷并行化檢索的益處的實施方案中來優(yōu)化存儲。例如,使用可移動介質(zhì)的裝置可能會在介質(zhì)發(fā)生物理變化時致使顯著的延遲懲罰,并且分類順序可連結(jié)并分配檔案,以便最小化檢索檔案所需的可移動介質(zhì)的數(shù)量。如前所述,關(guān)于分類順序的信息可例如由數(shù)據(jù)存儲系統(tǒng)202維持,以用于本文進一步詳細描述的技術(shù)。
在一些實施方案中,數(shù)據(jù)存儲系統(tǒng)202可對檔案206進行兩次或更多次的分類,其中的至少一個檔案可對應(yīng)于數(shù)據(jù)存儲系統(tǒng)202和/或卷204本身的各種特性。例如,第一分類可易于發(fā)生檔案206在一個或多個卷204上的實際存儲,根據(jù)邊界、存儲空間和其他卷特征對檔案進行分類以便優(yōu)化檔案206的存儲,并且第二分類可重新分類發(fā)往每個卷204的那些檔案,從而影響卷204內(nèi)的實際存儲。在此實例中,任一種或兩種分類可包括以上描述的一個或多個標準。
如前所述(例如,結(jié)合圖1),在一些實施方案中,可針對多個卷中的每個卷204生成一種或多種類型的一個或多個標記,并且在這類實施方案中,可反映存儲在其應(yīng)用的相應(yīng)卷204上的檔案。在一些實施方案中,索引與關(guān)于檔案206的分類順序的信息結(jié)合使用,以便定位檔案,而不需要使用密集索引,例如在給定卷108上考慮每個檔案104的索引。這種分類順序相關(guān)信息可駐留在卷204上,或者在一些實施方案中可駐留在與卷204分離的實體上,諸如在計算資源服務(wù)提供商的數(shù)據(jù)存儲區(qū)或其他資源中。類似地,索引可存儲在它們應(yīng)用到的相同的卷204上,或者在一些實施方案中與這類卷204分開存儲。
如所提及的,檔案206的原始數(shù)據(jù)212被存儲在多個卷204的子集上,并且卷的子集的數(shù)量可等于冗余碼重新生成原始數(shù)據(jù)所需的最小碎片數(shù)。同樣如所提及的,適當?shù)臉擞浺部膳c所存儲的檔案208的原始數(shù)據(jù)212結(jié)合地存儲在多個卷208的適用子集上。檔案的原始數(shù)據(jù)被存儲為跨多個卷的多個碎片,其數(shù)量(在某些情況下可能具有一對一關(guān)系的碎片或卷的數(shù)量)可根據(jù)各種因素來預(yù)先確定,包括使用冗余碼重建原始數(shù)據(jù)所需的總碎片數(shù)。作為實例,圖2示出五個卷,其中三個包含存儲檔案208的原始數(shù)據(jù)212(對應(yīng)于傳入檔案206),并且其中兩個包含從應(yīng)用的冗余碼的數(shù)學(xué)函數(shù)派生的數(shù)據(jù)214。在示出的實例中,所使用的冗余碼可能需要任意三個碎片來重新生成原始數(shù)據(jù),并且因此,可使用三個卷的數(shù)量來寫入原始數(shù)據(jù)(在冗余碼的任何應(yīng)用之前)。
與先前討論的類似,存儲存儲檔案208的原始數(shù)據(jù)212的卷204被在卷級處由與例如檔案存儲服務(wù)相關(guān)聯(lián)的實體使用冗余碼(諸如糾刪碼)來進行處理,以便生成包含編碼信息而不是檔案的原始數(shù)據(jù)的剩余碎片214。如前所述,原始數(shù)據(jù)212可在分類之后的任何時間使用冗余碼進行處理,諸如在與這種存儲同時存儲在卷上之前或者在這種存儲之后。如陰影檔案210所示,在某些情況下,給定的檔案可能由于大小、放置等而在兩個(或可能更多的)卷204之間斷開。在冗余碼被應(yīng)用于卷級的實施方案中(例如,承載檔案的原始數(shù)據(jù)的卷的全部內(nèi)容被認為是由冗余碼處理的單個數(shù)據(jù)對象),所示檔案210的原始數(shù)據(jù)所駐留的兩個卷(或碎片)中的一個的故障可不需要重建兩個卷,而僅需要重建不可用的卷。
編碼信息214可以是從原始數(shù)據(jù)212派生的任何數(shù)學(xué)計算的信息,并且取決于所應(yīng)用的特定冗余碼。在一些實施方案中,冗余碼可實現(xiàn)實現(xiàn)數(shù)學(xué)函數(shù)以生成與應(yīng)用冗余碼的原始數(shù)據(jù)相關(guān)的多個編碼對象的生成矩陣。在一些這類實施方案中,使用單位矩陣,其中不應(yīng)用數(shù)學(xué)函數(shù),并且允許原始數(shù)據(jù)(以及適用的索引)直接通過。因此可設(shè)想,承載原始數(shù)據(jù)(和索引)208的卷可對應(yīng)于通過應(yīng)用的冗余碼的生成矩陣的單位矩陣行通過所述原始數(shù)據(jù)編碼的對象,而承載派生數(shù)據(jù)214的卷對應(yīng)于生成矩陣的其他行。
與先前討論的類似,如果卷204中的一個卷或其上存儲的碎片被檢測為損壞、丟失或以其他方式不可用,那么可使用應(yīng)用于在第一實例中生成碎片的冗余碼來生成新的碎片。新的碎片可存儲在相同的卷或不同的卷上,這取決于例如碎片是否出于除了卷故障之外的原因而不可用。新的碎片可由例如數(shù)據(jù)存儲系統(tǒng)202通過使用重新生成存儲在所有卷上的原始數(shù)據(jù)(以及(如果適用)索引)所需的剩余碎片的數(shù)量、重新生成所述原始數(shù)據(jù)以及替換原始數(shù)據(jù)的對應(yīng)于不可用的部分(在不可用碎片包含原始數(shù)據(jù)的情況下)、或者重新應(yīng)用冗余碼以便為新的碎片提供派生數(shù)據(jù)來生成。
如前所述,在一些實施方案中,新的碎片可以是不可用碎片的復(fù)制,諸如可以是在不可用碎片包含檔案的原始數(shù)據(jù)的情況下。在一些實施方案中,新的碎片可從由例如與冗余碼相關(guān)聯(lián)的生成矩陣產(chǎn)生的一組潛在碎片中選擇,以便在內(nèi)容上不同于不可用碎片(諸如可以是不可用碎片是從冗余碼生成的碎片并且因此不包含檔案的原始數(shù)據(jù)的情況)。
圖3示意性地示出根據(jù)一些實施方案的用于索引和定位存儲在數(shù)據(jù)存儲系統(tǒng)上的數(shù)據(jù)的各種工作流程。代表性的卷302在一些實施方案中類似于上文結(jié)合圖1和圖2所述的卷,其存儲包含例如從客戶接收的原始數(shù)據(jù)306的多個檔案304,所述客戶諸如數(shù)據(jù)存儲系統(tǒng)或數(shù)據(jù)存儲系統(tǒng)附接到的計算資源服務(wù)提供商的其他資源和/或服務(wù)的客戶。檔案304可結(jié)合上文結(jié)合圖1和圖2所述的技術(shù)之一來進行分類,并且關(guān)于分類順序的信息可由例如與卷302直接或間接連接的資源來維持。相對于隨機數(shù)據(jù)訪問,卷302可駐留在針對順序數(shù)據(jù)訪問而優(yōu)化的一個或多個存儲裝置上(或由其組成)。
如前所述,在一些實施方案中,可結(jié)合例如將要存儲檔案的順序來生成一個或多個標記308,如先前結(jié)合所述分類確定的。索引可以是單個索引或者可以是多部分索引,并且可以是任何適當?shù)募軜?gòu),并且可根據(jù)任何適當?shù)姆椒▉砩?。例如,索引可以是位圖索引、密集索引、稀疏索引或反向索引。使用多個標記的實施方案可根據(jù)例如將要存儲在卷302中的檔案304的特性來實現(xiàn)不同類型的標記。例如,卷302可為特定大小的檔案利用密集索引(索引本身的大小相對于存儲在給定卷上的檔案的數(shù)量可能較小),并且還可為所述特定大小的檔案生成稀疏索引(索引大小與檔案大小的比例增加)。
在使用稀疏標記的實施方案中,給定卷的稀疏索引308可指向子索引310,其繼而標記所述卷上的代表性位置。子索引310可以是指向以預(yù)定間隔駐留的數(shù)據(jù)的抽象概念。在一些實施方案中,子索引310可以是附加數(shù)據(jù)或元數(shù)據(jù),其與卷相關(guān)聯(lián)地(或在一些實施方案中,直接在此卷上)并且以預(yù)定間隔存儲。在這類實施方案中,可設(shè)想的是,子索引310可以與上文結(jié)合圖1和圖2針對索引和檔案的原始數(shù)據(jù)所述的類似方式作為碎片的部分存儲在卷上。
在一些實施方案中,預(yù)定間隔可以是塊、字節(jié)或其他數(shù)據(jù)單位。例如,子索引可識別將要(例如,獨立于檔案本身的邊界和/或數(shù)量)在卷的每x個塊或字節(jié)處定位的檔案。在一些實施方案中,預(yù)定間隔可通過卷的數(shù)量來描述。例如,子索引可指向?qū)⒁鎯υ诰?02上的每一第n個檔案。如可設(shè)想的,稀疏索引308(并且在一些實施方案中,子索引310)可在檔案304與這種存儲同時存儲之前或者在這種存儲之后的時間生成和/或?qū)懭?。在一些實施方案中,稀疏索?08和子索引310可例如在已存儲檔案304之后存儲在卷上的保留空間中。
在一些實施方案中,稀疏索引308與關(guān)于檔案304的預(yù)定分類順序的信息結(jié)合使用,以便定位特定檔案。如前所述,這種分類順序相關(guān)信息可駐留在卷302上,或者在一些實施方案中可駐留在與卷302分離的實體上,諸如在計算資源服務(wù)提供商的數(shù)據(jù)存儲區(qū)或其他資源中。請求存儲在卷302上的給定檔案的實體可基于分類順序相關(guān)信息并通過讀取索引308來確定相繼在卷302上的所請求的檔案之前的最近的子索引。請求的實體可隨后使卷302從所述子索引310的位置順序地讀取,直到所請求的檔案被定位并被完全讀取。
在采用多種類型的標記的實施方案中,請求的實體可基于評估用于在第一實例中部署多種類型的標記的標準來最初確定哪些標記包含用于請求檔案的最有效的位置信息。例如,如果特定大小的檔案以稀疏索引進行索引,并且等于或大于此大小的檔案被以平行密集索引進行索引,那么請求的實體可首先確定所請求的檔案的大小,并且如果所請求的檔案大于或等于上述大小邊界,就可使用密集索引來支持稀疏索引,以便更快地獲得所請求檔案的精確位置。
圖4示意性地示出根據(jù)一些實施方案的用于處理、索引、存儲和檢索存儲在數(shù)據(jù)存儲系統(tǒng)上的數(shù)據(jù)的示例性過程。在步驟402處,諸如實現(xiàn)用于存儲檔案的冗余碼的數(shù)據(jù)存儲系統(tǒng)的資源基于例如將要應(yīng)用于檔案的冗余碼來確定多個卷中的哪個子集(例如,數(shù)量)是必需的,以便重新創(chuàng)建將要存儲的原始數(shù)據(jù)。例如,根據(jù)上文結(jié)合至少圖1和圖2所描述的技術(shù),這種信息可通過預(yù)先確定糾刪碼的參數(shù)而得到,所述參數(shù)具有重新生成原始數(shù)據(jù)所需的碎片的特定比率,從其導(dǎo)出通過應(yīng)用糾刪碼而生成的碎片的總數(shù)。
在步驟404處,將原始數(shù)據(jù),諸如從例如數(shù)據(jù)存儲系統(tǒng)或計算資源服務(wù)提供商的客戶接收的檔案的原始數(shù)據(jù)如上文結(jié)合圖1和圖2進一步詳細描述的那樣通過例如數(shù)據(jù)存儲系統(tǒng)或相關(guān)聯(lián)實體來進行分類。例如,如前所述,分類順序可在傳入數(shù)據(jù)的一個或多個屬性上實現(xiàn)。
在步驟406處,針對原始數(shù)據(jù),由例如數(shù)據(jù)存儲系統(tǒng)生成一個或多個標記,諸如稀疏標記。如先前結(jié)合至少圖1至圖3所討論的,對于給定卷可存在多于一個索引,并且這類并行索引可根據(jù)檔案和/或正在存儲的原始數(shù)據(jù)的性質(zhì)而具有不同的類型。
在步驟408處,將原始數(shù)據(jù)例如由數(shù)據(jù)存儲系統(tǒng)存儲在結(jié)合步驟402確定的卷的子集上,并且按步驟404中確定的順序來存儲。此外,在步驟410處,將在步驟406中生成的索引例如通過數(shù)據(jù)存儲系統(tǒng)而存儲在適當?shù)膶嶓w上。如前所述,索引可被存儲為其上存儲原始數(shù)據(jù)的碎片的一部分,或者在一些實施方案中,可存儲在與維持所述卷的資源分開的資源上。
在步驟412處,將冗余碼例如通過數(shù)據(jù)存儲系統(tǒng)而應(yīng)用到確定的卷的子集(例如,如先前結(jié)合圖1至圖3所討論的碎片),并且將包含從冗余碼的應(yīng)用派生的數(shù)據(jù)的附加碎片存儲在結(jié)合步驟402確定的子集之外的預(yù)定量的卷上。例如,如前所述,存儲原始數(shù)據(jù)的卷(例如,碎片)與總卷量(包括存儲在本步驟412中生成的派生數(shù)據(jù)的那些卷)的比率可由本文應(yīng)用的冗余碼的恢復(fù)/編碼比率來指定。
在步驟414處,在正常操作中,可直接從存儲原始數(shù)據(jù)的卷的子集中例如通過數(shù)據(jù)存儲系統(tǒng)來檢索所請求的數(shù)據(jù),而不需要(例如通過冗余碼來)從存儲在步驟412中生成的派生數(shù)據(jù)的卷中進行檢索和進一步處理。然而,在步驟416處,如果確定任何卷例如由數(shù)據(jù)存儲系統(tǒng)不可用,那么數(shù)據(jù)存儲系統(tǒng)可通過從剩余碎片的定數(shù)重構(gòu)原始數(shù)據(jù)來生成替換碎片,并且使用冗余碼重新編碼以產(chǎn)生替換碎片。如先前結(jié)合圖1至圖3所討論的,替換碎片可與被檢測為不可用的碎片相同或不同。
圖5示意性地示出根據(jù)一些實施方案的用于索引存儲在冗余編碼數(shù)據(jù)存儲系統(tǒng)上的原始數(shù)據(jù)的示例性過程。在步驟502處,類似于結(jié)合圖4描述的過程400的步驟404,通過例如數(shù)據(jù)存儲系統(tǒng)來處理原始數(shù)據(jù),以確定在卷上包含原始數(shù)據(jù)的檔案的存儲順序。如上文結(jié)合圖1至圖4所討論的,關(guān)于分類順序的信息可維持在例如卷上或者與所述卷分開的實體上。
在步驟504處,由例如數(shù)據(jù)存儲系統(tǒng)生成一個或多個標記,諸如稀疏標記,并且指向識別此卷上的預(yù)定位置的子索引??苫谔囟▽崿F(xiàn)方式的參數(shù)(諸如卷的大小、(例如,順序地)讀取和/或?qū)懭刖淼乃俣取⒚總€卷的檔案數(shù)等)來預(yù)先確定位置。如前所述,子索引可以是抽象概念,或者在一些實施方案中,可以是存儲在所述卷上或與所述卷相關(guān)聯(lián)的數(shù)據(jù)或元數(shù)據(jù)元素。
在步驟506處,將在步驟502中分類的原始數(shù)據(jù)通過數(shù)據(jù)存儲系統(tǒng)存儲在卷上,其中子索引與在步驟504中提到的預(yù)定位置相關(guān)聯(lián)、指向或存儲在所述預(yù)定位置處。在步驟508處,將在步驟504中生成的索引通過數(shù)據(jù)存儲系統(tǒng)存儲在與卷相關(guān)聯(lián)的資源上,或者在一些實施方案中,根據(jù)上文結(jié)合至少圖1至圖4描述的技術(shù)而存儲在卷本身上。
在步驟510處,對于存儲在卷上的原始數(shù)據(jù)的子集,通過卷或者與卷相關(guān)聯(lián)的數(shù)據(jù)存儲系統(tǒng)來接收諸如來自客戶端實體或連接到數(shù)據(jù)存儲系統(tǒng)和/或卷的其他實體的請求。如前所述,數(shù)據(jù)存儲系統(tǒng)和/或請求實體可訪問關(guān)于在步驟502中確定的原始數(shù)據(jù)的分類順序的信息,并且在利用稀疏索引的實施方案中,可在步驟512處使用索引來定位適當?shù)淖铀饕H缜八?,在一些實施方案中,適當?shù)淖铀饕怯上嗬^在卷上所存儲的原始數(shù)據(jù)的所請求子集之前的子索引標記的最接近的位置。一旦在步驟512中確定子索引,那么在步驟514處,從由適當?shù)淖铀饕甘镜奈恢?例如,通過實現(xiàn)卷的數(shù)據(jù)存儲系統(tǒng)或存儲裝置)順序地讀取卷,直到定位并檢索到原始數(shù)據(jù)的所請求的子集。
圖6示出根據(jù)至少一個實施方案的連接到計算資源服務(wù)提供商的客戶的實例。計算資源服務(wù)提供商602可向客戶604提供各種服務(wù),并且客戶604可通過接口626與計算資源服務(wù)提供商602通信,所述接口626可以是web服務(wù)接口或任何其他類型的客戶接口。雖然圖6示出用于計算資源服務(wù)提供商602的服務(wù)的一個接口626,但是每個服務(wù)可具有其自己的接口,并且通常服務(wù)的子集可具有除了接口626之外的或作為接口626的替代的對應(yīng)的接口??蛻?04可以是可利用由計算資源服務(wù)提供商602提供的一個或多個服務(wù)來為其員工維護并傳遞信息的可位于各種地理位置處的組織。另外,客戶604可以是利用計算資源服務(wù)提供商602的服務(wù)將內(nèi)容遞送到遠程定位的工作組的個體。如圖6所示,客戶604可通過網(wǎng)絡(luò)606與計算資源服務(wù)提供商602通信,由此網(wǎng)絡(luò)606可以是諸如互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)或互聯(lián)網(wǎng)服務(wù)供應(yīng)商(isp)網(wǎng)絡(luò)的通信網(wǎng)絡(luò)。從客戶604到計算資源服務(wù)提供商602的一些通信可致使計算資源服務(wù)提供商602根據(jù)所描述的一個或多個實施方案或其變型來進行操作。
計算資源服務(wù)提供商602可向其客戶提供各種計算資源服務(wù)。在此實例中,由計算資源服務(wù)提供商602提供的服務(wù)包括虛擬計算機系統(tǒng)服務(wù)608、塊級數(shù)據(jù)存儲服務(wù)610、密碼服務(wù)612、按需數(shù)據(jù)存儲服務(wù)614、通知服務(wù)616、認證系統(tǒng)618、策略管理服務(wù)620、任務(wù)服務(wù)622、以及一種或多種其他服務(wù)624。應(yīng)注意,并非所描述的所有實施方案都包括參考圖6描述的服務(wù)608-624,并且除了明確描述的服務(wù)之外或作為其替代,可提供附加服務(wù)。如所描述的,服務(wù)608-624中的每一個可包括使得客戶604能夠通過web服務(wù)請求向各種服務(wù)提交適當配置的api調(diào)用的一個或多個web服務(wù)接口。此外,每種服務(wù)可包括一個或多個服務(wù)接口,所述一個或多個服務(wù)接口使服務(wù)能夠彼此相互訪問(例如,使虛擬計算機系統(tǒng)服務(wù)608的虛擬計算機系統(tǒng)能夠?qū)?shù)據(jù)存儲在按需數(shù)據(jù)存儲服務(wù)614中或檢索來自按需數(shù)據(jù)存儲服務(wù)614的數(shù)據(jù),和/或訪問由塊級數(shù)據(jù)存儲服務(wù)610提供的一個或多個塊級數(shù)據(jù)存儲裝置)。
虛擬計算機系統(tǒng)服務(wù)608可以是被配置來代表客戶604實例化虛擬機實例的計算資源的集合??蛻?04可與虛擬計算機系統(tǒng)服務(wù)608(通過適當配置和認證的api調(diào)用)交互,以提供和操作在由計算資源服務(wù)提供商602托管和操作的物理計算裝置上實例化的虛擬計算機系統(tǒng)。虛擬計算機系統(tǒng)可用于各種目的,諸如作為支持網(wǎng)站的服務(wù)器來操作、操作業(yè)務(wù)應(yīng)用程序,或者一般地,充當客戶的計算能力。用于虛擬計算機系統(tǒng)的其他應(yīng)用可用來支持數(shù)據(jù)庫應(yīng)用、電子商務(wù)應(yīng)用、業(yè)務(wù)應(yīng)用和/或其他應(yīng)用。雖然在圖6中示出虛擬計算機系統(tǒng)服務(wù)608,但是可在計算資源服務(wù)提供商602中利用任何其他計算機系統(tǒng)或計算機系統(tǒng)服務(wù),諸如不采用虛擬化或?qū)嵗挠嬎銠C系統(tǒng)或計算機系統(tǒng)服務(wù),而是在專用或共享計算機/服務(wù)器和/或其他物理裝置上提供計算資源。
塊級數(shù)據(jù)存儲服務(wù)610可包括一個或多個計算資源,所述一個或多個計算資源共同操作以使用塊級存儲裝置(和/或其虛擬化)來為客戶604存儲數(shù)據(jù)。塊級數(shù)據(jù)存儲服務(wù)610的塊級存儲裝置可例如可操作地附接到由虛擬計算機系統(tǒng)服務(wù)608提供的虛擬計算機系統(tǒng),以用作所述計算機系統(tǒng)的邏輯單元(例如虛擬驅(qū)動器)。塊級存儲裝置可使得能夠永久存儲由對應(yīng)的虛擬計算機系統(tǒng)使用/產(chǎn)生的數(shù)據(jù),其中虛擬計算機系統(tǒng)服務(wù)608僅可提供短暫的數(shù)據(jù)存儲。
計算資源服務(wù)提供商602還包括密碼服務(wù)612。密碼服務(wù)612可利用計算資源服務(wù)提供商602的一個或多個存儲服務(wù)來以加密形式存儲客戶的密鑰,由此密鑰可用于解密客戶612的僅可由密碼服務(wù)612的特定裝置訪問的密鑰。
計算資源服務(wù)提供商602還包括按需數(shù)據(jù)存儲服務(wù)614。按需數(shù)據(jù)存儲服務(wù)614可以是被配置來同步地處理存儲和/或訪問數(shù)據(jù)的請求的計算資源的集合。按需數(shù)據(jù)存儲服務(wù)614可使用使得按需數(shù)據(jù)存儲服務(wù)614能夠快速定位和檢索數(shù)據(jù)的計算資源(例如,數(shù)據(jù)庫)來操作,以允許響應(yīng)于對數(shù)據(jù)的請求來提供數(shù)據(jù)。例如,按需數(shù)據(jù)存儲服務(wù)614可維持存儲的數(shù)據(jù),其方式使得當檢索到對數(shù)據(jù)對象的請求時,可響應(yīng)于所述請求來提供數(shù)據(jù)對象(或者可開始數(shù)據(jù)對象的流式傳輸)。如上所述,存儲在按需數(shù)據(jù)存儲服務(wù)614中的數(shù)據(jù)可被組織成數(shù)據(jù)對象。除了可能對大小進行某些限制之外,數(shù)據(jù)對象可具有任意大小。因此,按需數(shù)據(jù)存儲服務(wù)614可存儲不同大小的多個數(shù)據(jù)對象。按需數(shù)據(jù)存儲服務(wù)614可操作為將數(shù)據(jù)對象與數(shù)據(jù)對象的標識符相關(guān)聯(lián)的鍵值存儲區(qū),所述數(shù)據(jù)對象的標識符可由客戶604使用,以檢索或執(zhí)行與由按需數(shù)據(jù)存儲服務(wù)614存儲的數(shù)據(jù)對象有關(guān)的其他操作。
在圖6所示的環(huán)境中,包括通知服務(wù)616。通知服務(wù)616可包括共同配置來提供web服務(wù)或其他接口和基于瀏覽器的管理控制臺的計算資源的集合。管理控制臺可用于對客戶尋求以接收通知、配置應(yīng)用程序(或人員)、訂閱客戶端主題、發(fā)布消息或配置通過客戶端選擇的協(xié)議(即超文本傳輸協(xié)議(http)、電子郵件和短消息服務(wù)(sms)等)的消息遞送的主題進行配置。通知服務(wù)系統(tǒng)616可使用“推送”機制為客戶端提供通知,而不需要為新信息和更新定期檢查或“輪詢”。通知服務(wù)616還可用于各種目的,諸如監(jiān)控虛擬計算機系統(tǒng)服務(wù)608中執(zhí)行的應(yīng)用程序、工作流程系統(tǒng)、對時間敏感的信息的更新、移動應(yīng)用程序和許多其他應(yīng)用程序。
如圖6中所示,在各種實施方案中,計算資源服務(wù)提供商602包括認證系統(tǒng)618和策略管理服務(wù)620。在一個實施方案中,認證系統(tǒng)618是被配置來執(zhí)行涉及對客戶的用戶進行認證的操作的計算機系統(tǒng)(即,計算資源的集合)。例如,服務(wù)608-616和620-624中的一個可將來自用戶的信息提供給認證系統(tǒng)618,以作為回報接收指示用戶請求是否是可信的信息。
策略管理服務(wù)620在一個實施方案中是被配置來代表計算資源服務(wù)提供商602的客戶(諸如客戶604)來管理策略的計算機系統(tǒng)。策略管理服務(wù)620可包括使得客戶能夠提交與策略管理有關(guān)的請求的接口。這類請求例如可以是增加、刪除、更改或另外修改用于客戶的策略的請求,或針對其他管理動作(諸如提供現(xiàn)有策略的庫存等)的請求。
在各種實施方案中,計算資源服務(wù)提供商602還配備有任務(wù)服務(wù)622。任務(wù)服務(wù)622被配置來從客戶604接收任務(wù)包并且使得能夠如任務(wù)包所指示地執(zhí)行任務(wù)。任務(wù)服務(wù)622可被配置來使用計算資源服務(wù)提供商602的任何資源來執(zhí)行任務(wù),諸如一個或多個實例化的虛擬機或虛擬主機。任務(wù)服務(wù)624可配置一個或多個實例化的虛擬機或虛擬主機以根據(jù)客戶604的要求來使用所選擇的操作系統(tǒng)和/或選擇的執(zhí)行應(yīng)用來操作。
計算資源服務(wù)提供商602至少部分地基于其客戶604的需要另外維護一個或多個其他服務(wù)624。例如,計算資源服務(wù)提供商602可維持用于其客戶604的數(shù)據(jù)庫服務(wù)。數(shù)據(jù)庫服務(wù)可以是計算資源的集合,所述數(shù)據(jù)庫服務(wù)共同操作來運行用于一名或多名客戶604的一個或多個數(shù)據(jù)庫??蛻?04可通過利用適當配置的api調(diào)用來操作和管理來自數(shù)據(jù)庫服務(wù)的數(shù)據(jù)庫。這繼而可允許客戶604維持并潛在地按比例調(diào)節(jié)數(shù)據(jù)庫中的操作。其他服務(wù)包括但不限于對象級存檔數(shù)據(jù)存儲服務(wù)、管理和/或監(jiān)測其他服務(wù)的服務(wù)。
計算資源服務(wù)提供商602還包括檔案存儲服務(wù)624。檔案存儲服務(wù)624可包括共同操作來提供用于數(shù)據(jù)歸檔和客戶數(shù)據(jù)備份的存儲的計算資源的集合。數(shù)據(jù)可包括可被組合以形成檔案的一個或多個數(shù)據(jù)文件。檔案存儲服務(wù)624可被配置來持續(xù)地存儲可能不經(jīng)常訪問的數(shù)據(jù),并且對所述數(shù)據(jù)的長的檢索時間對于利用檔案存儲服務(wù)624的客戶來說是可接受的??蛻艨膳c檔案存儲服務(wù)624(例如,通過適當配置的對檔案存儲服務(wù)624進行的api調(diào)用)進行交互,以生成一個或多個檔案、上傳并檢索一個或多個檔案或者監(jiān)視一個或多個檔案的生成、上傳或檢索。
計算資源服務(wù)提供商602至少部分地基于其客戶604的需要另外維護一個或多個其他服務(wù)626。例如,計算資源服務(wù)提供商602可維持用于其客戶604的數(shù)據(jù)庫服務(wù)。數(shù)據(jù)庫服務(wù)可以是計算資源的集合,所述數(shù)據(jù)庫服務(wù)共同操作來運行用于一名或多名客戶604的一個或多個數(shù)據(jù)庫??蛻?04可通過利用適當配置的api調(diào)用來操作和管理來自數(shù)據(jù)庫服務(wù)的數(shù)據(jù)庫。這繼而可允許客戶604維持并潛在地按比例調(diào)節(jié)數(shù)據(jù)庫中的操作。其他服務(wù)包括但不限于對象級存檔數(shù)據(jù)存儲服務(wù)、管理和/或監(jiān)測其他服務(wù)的服務(wù)。
圖7示出根據(jù)各種實施方案的數(shù)據(jù)存儲服務(wù)的說明性實例。數(shù)據(jù)存儲服務(wù)700可以是用于操作諸如上文結(jié)合圖6所述的按需數(shù)據(jù)存儲服務(wù)的計算資源提供商的服務(wù)。如圖7所示,數(shù)據(jù)存儲服務(wù)700包括各種子系統(tǒng),諸如請求處理子系統(tǒng)702和管理子系統(tǒng)704。數(shù)據(jù)存儲服務(wù)700還可包括多個數(shù)據(jù)存儲服務(wù)器706和元數(shù)據(jù)存儲裝置708,元數(shù)據(jù)存儲裝置708可存儲關(guān)于存儲在所述數(shù)據(jù)存儲服務(wù)器706中的各種數(shù)據(jù)對象的元數(shù)據(jù)。在一個實施方案中,請求處理子系統(tǒng)702是計算資源的集合,諸如共同配置來處理提交給數(shù)據(jù)存儲服務(wù)700的請求的web服務(wù)器和應(yīng)用服務(wù)器。請求處理子系統(tǒng)702例如可包括提供web服務(wù)接口以使得數(shù)據(jù)存儲服務(wù)700的客戶能夠提交將要由數(shù)據(jù)存儲服務(wù)700處理的請求的一個或多個web服務(wù)器。請求處理子系統(tǒng)702可包括被配置來進行與請求的處理相關(guān)的各種確定的計算機系統(tǒng),諸如策略是否允許滿足請求、請求是否是真實的(例如,使用合適的密鑰來進行電子簽名)等等。
請求處理子系統(tǒng)的部件可與數(shù)據(jù)存儲服務(wù)700的其他部件(例如,通過網(wǎng)絡(luò)通信)進行交互。例如,提交給請求處理子系統(tǒng)702的一些請求可涉及可包括由數(shù)據(jù)存儲服務(wù)器706存儲的數(shù)據(jù)對象的計算資源的管理。請求處理子系統(tǒng)702例如可接收并處理用于修改計算資源的請求。例如,在一些實例中,數(shù)據(jù)對象被邏輯地組織成邏輯數(shù)據(jù)容器。與邏輯數(shù)據(jù)容器相關(guān)聯(lián)的數(shù)據(jù)對象可例如被認為在邏輯數(shù)據(jù)容器中。對數(shù)據(jù)處理子系統(tǒng)702的請求可包括用于創(chuàng)建邏輯數(shù)據(jù)容器、刪除邏輯數(shù)據(jù)容器、提供邏輯數(shù)據(jù)容器的庫存、提供或更新關(guān)于一個或多個邏輯數(shù)據(jù)容器的訪問控制策略等的請求。
所述請求在由請求處理子系統(tǒng)702接收時可由管理子系統(tǒng)704進行處理。如果適用,由請求處理子系統(tǒng)702和/或管理子系統(tǒng)704處理的各種請求可導(dǎo)致管理子系統(tǒng)704更新與數(shù)據(jù)對象和存儲在元數(shù)據(jù)存儲區(qū)708中的邏輯數(shù)據(jù)容器相關(guān)聯(lián)的元數(shù)據(jù)。可由請求處理子系統(tǒng)702處理的其他請求包括用于執(zhí)行與數(shù)據(jù)對象相關(guān)的操作的請求。例如,請求可包括用于將數(shù)據(jù)對象上傳到數(shù)據(jù)存儲服務(wù)700、用于從數(shù)據(jù)存儲服務(wù)700下載數(shù)據(jù)對象、用于刪除由數(shù)據(jù)存儲服務(wù)700存儲的數(shù)據(jù)對象和/或可執(zhí)行的其他操作的請求。
由請求處理子系統(tǒng)702處理的涉及數(shù)據(jù)對象的操作(上傳、下載、刪除等)的請求可包括請求處理子系統(tǒng)702與一個或多個數(shù)據(jù)存儲服務(wù)器706之間的交互。數(shù)據(jù)存儲服務(wù)器706可以是與用于數(shù)據(jù)對象的持久化的一個或多個存儲裝置通信地耦合的計算機系統(tǒng)。例如,為了處理上傳數(shù)據(jù)對象的請求,請求處理子系統(tǒng)可向數(shù)據(jù)存儲服務(wù)器706傳輸數(shù)據(jù)以便進行永久存儲。然而,應(yīng)注意,在一些實施方案中,客戶端(例如,客戶)計算機系統(tǒng)可直接將數(shù)據(jù)傳輸?shù)綌?shù)據(jù)存儲服務(wù)器706,而不是通過請求處理子系統(tǒng)中的服務(wù)器。
在一些實施方案中,請求處理子系統(tǒng)702將數(shù)據(jù)傳輸?shù)蕉鄠€數(shù)據(jù)存儲服務(wù)器706,以用于冗余存儲數(shù)據(jù)的目的,以允許在單個數(shù)據(jù)存儲服務(wù)器706和/或相關(guān)聯(lián)的數(shù)據(jù)存儲裝置發(fā)生故障的情況下可恢復(fù)數(shù)據(jù)。例如,在一些實施方案中,請求處理子系統(tǒng)使用諸如糾刪編碼的編碼方案中的冗余性來將數(shù)據(jù)對象解構(gòu)成存儲在數(shù)據(jù)存儲服務(wù)器706中的多個部分。所述部分可被配置成使得如果對特定數(shù)量的部分的訪問丟失,然而仍可從保持可訪問的剩余部分重構(gòu)數(shù)據(jù)對象。
為了能夠在請求處理子系統(tǒng)702與數(shù)據(jù)存儲服務(wù)器706之間有效地傳輸數(shù)據(jù)和/或通常能夠快速處理請求,請求處理子系統(tǒng)702可包括一個或多個數(shù)據(jù)庫,所述一個或多個數(shù)據(jù)庫實現(xiàn)在數(shù)據(jù)存儲服務(wù)器706中的數(shù)據(jù)的位置。例如,請求處理子系統(tǒng)702可操作鍵值存儲庫,所述鍵值存儲庫用于將數(shù)據(jù)對象的標識符與數(shù)據(jù)存儲服務(wù)器706中的位置相關(guān)聯(lián),以便訪問數(shù)據(jù)對象的數(shù)據(jù)。
圖8示出用于實現(xiàn)根據(jù)各個實施方案的各方面的示例性環(huán)境800的各方面。如將了解,盡管出于解釋目的使用基于web的環(huán)境,但是可視情況使用不同環(huán)境來實現(xiàn)各個實施方案。環(huán)境包括電子客戶端裝置802,所述電子客戶端裝置802可包括可操作來通過適當網(wǎng)絡(luò)804發(fā)送和/或接收請求、消息或信息并且在一些實施方案中將信息傳送回裝置用戶的任意適當裝置。此類客戶端裝置的實例包括個人計算機、手機、手持式消息傳送裝置,膝上型計算機、平板計算機、機頂盒,個人數(shù)據(jù)助理、嵌入式計算機系統(tǒng)、電子書閱讀器等。網(wǎng)絡(luò)可包括任意適當網(wǎng)絡(luò),包括內(nèi)部網(wǎng)、互聯(lián)網(wǎng)、蜂窩網(wǎng)、局域網(wǎng)、衛(wèi)星網(wǎng)或任意其他此類網(wǎng)絡(luò)和/或上述網(wǎng)絡(luò)的組合。用于這種系統(tǒng)的部件可至少部分地取決于所選擇的網(wǎng)絡(luò)和/或環(huán)境的類型。用于通過此類網(wǎng)絡(luò)通信的協(xié)議和部件是眾所周知的,因而本文將不再詳細論述。通過網(wǎng)絡(luò)的通信可通過有線或無線連接及其組合來實現(xiàn)。在此實例中,網(wǎng)絡(luò)包括互聯(lián)網(wǎng),因為環(huán)境包括用于接收請求并且響應(yīng)于所述請求而提供內(nèi)容的web服務(wù)器806,但是對于其他網(wǎng)絡(luò)來說,可使用服務(wù)類似目的替代裝置,如本領(lǐng)域普通技術(shù)人員所顯而易見的。
說明性環(huán)境包括至少一個應(yīng)用服務(wù)器808和數(shù)據(jù)存儲區(qū)810。應(yīng)當理解,可存在可鏈接起來或以其他方式配置的若干應(yīng)用服務(wù)器、層或其他元件、過程或部件,這些應(yīng)用服務(wù)器、層或其他元件、過程或部件可交互來執(zhí)行諸如從適當?shù)臄?shù)據(jù)存儲區(qū)獲得數(shù)據(jù)的任務(wù)。如本文所使用的服務(wù)器可以各種方式實現(xiàn),諸如硬件裝置或虛擬計算機系統(tǒng)。在一些上下文中,服務(wù)器可指在計算機系統(tǒng)上執(zhí)行的編程模塊。如本文所使用的,除非另行指出或從上下文中明確可知,術(shù)語“數(shù)據(jù)存儲區(qū)”是指能夠存儲、訪問和檢索數(shù)據(jù)的任意裝置或裝置組合,所述裝置或裝置組合可包括任意標準、分布式、虛擬或集群式環(huán)境中的任意組合和任意數(shù)目的數(shù)據(jù)服務(wù)器、數(shù)據(jù)庫、數(shù)據(jù)存儲裝置和數(shù)據(jù)存儲介質(zhì)。應(yīng)用服務(wù)器可包括任何適當硬件、軟件和固件,所述硬件、軟件和固件視執(zhí)行客戶端裝置的一個或多個應(yīng)用程序的各方面的需要而與數(shù)據(jù)存儲區(qū)集成、處理應(yīng)用程序的一些或所有數(shù)據(jù)訪問和業(yè)務(wù)邏輯。應(yīng)用程序服務(wù)器可提供與數(shù)據(jù)存儲區(qū)協(xié)作的存取控制服務(wù),并且能夠生成可用于提供給用戶的內(nèi)容,所述內(nèi)容包括但不限于文本、圖片、音頻、視頻和/或其他內(nèi)容,所述內(nèi)容可以超文本標記語言(“html”)、可擴展標記語言(“xml”)、javascript、層疊樣式表(“css”)或另一種適當客戶端結(jié)構(gòu)化語言的形式由web服務(wù)器提供給用戶。傳送給客戶端裝置的內(nèi)容可由客戶端裝置處理,以便提供呈一種或多種形式的內(nèi)容,所述形式包括但不限于用戶可通過聽覺、視覺和/或通過其他感覺(包括觸覺、味覺和/或嗅覺)來感知的形式。全部請求和響應(yīng)的處理以及客戶端裝置802與應(yīng)用服務(wù)器808之間的內(nèi)容遞送可由web服務(wù)器使用以下php來處理:在這個實例中為超文本預(yù)處理器(“php”)、python、ruby、perl、java、html、xml或另一種適當服務(wù)器端結(jié)構(gòu)化語言。應(yīng)當理解,web服務(wù)器和應(yīng)用服務(wù)器不是必要的,且僅僅是示例性部件,因為本文所論述的結(jié)構(gòu)化代碼可在如本文其他地方所論述的任意適當裝置或主機上執(zhí)行。此外,除非上下文另外清楚規(guī)定,否則如由單個裝置執(zhí)行的本文所述的操作可由可形成分布式和/或虛擬系統(tǒng)的多個裝置共同執(zhí)行。
數(shù)據(jù)存儲區(qū)810可包括用于存儲與本公開的特定方面相關(guān)的數(shù)據(jù)的若干單獨數(shù)據(jù)表、數(shù)據(jù)庫、數(shù)據(jù)文檔、動態(tài)數(shù)據(jù)存儲方案和/或其他數(shù)據(jù)存儲機構(gòu)和介質(zhì)。例如,所示數(shù)據(jù)存儲區(qū)可包括用于存儲生成數(shù)據(jù)812和用戶信息816的機構(gòu),生成數(shù)據(jù)812和用戶信息816可用于提供用于生成端的內(nèi)容。數(shù)據(jù)存儲區(qū)還被示出為包括用于存儲日志數(shù)據(jù)814的機構(gòu),日志數(shù)據(jù)814可用于報告、分析或其他此類目的。應(yīng)當理解,可能存在可能需要存儲在數(shù)據(jù)存儲區(qū)中的許多其他方面,如頁面圖像信息和訪問權(quán)信息,所述方面可視情況存儲在上文列出的機構(gòu)中的任意機構(gòu)中或存儲在數(shù)據(jù)存儲810中的額外機構(gòu)中。數(shù)據(jù)存儲區(qū)810可通過與其相關(guān)聯(lián)的邏輯來操作,以便從應(yīng)用服務(wù)器808接收指令,并且響應(yīng)于所述指令而獲得、更新或以其他方式處理數(shù)據(jù)。應(yīng)用程序服務(wù)器808可響應(yīng)于所接收指令提供靜態(tài)數(shù)據(jù)、動態(tài)數(shù)據(jù)或靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)的組合。動態(tài)數(shù)據(jù)(諸如web日志(博客)、購物應(yīng)用程序、新聞服務(wù)以及其他這類應(yīng)用程序中使用的數(shù)據(jù))可由如本文所描述的服務(wù)器端結(jié)構(gòu)化語言生成,或者可由在應(yīng)用程序服務(wù)器上操作或在其控制下的內(nèi)容管理系統(tǒng)(“cms”)提供。在一個實例中,用戶通過由用戶操作的裝置可提交針對某種類型的項目的搜索請求。在這種情況下,數(shù)據(jù)存儲區(qū)可能訪問用戶信息來驗證用戶的身份,并且可訪問目錄詳細信息以獲得關(guān)于所述類型的項目的信息。隨后,可將信息諸如以網(wǎng)頁上的結(jié)果列表的形式返回給用戶,用戶能夠通過用戶裝置802上的瀏覽器來查看所述網(wǎng)頁。可在瀏覽器的專用頁面或窗口中查看感興趣的特定項目的信息。然而,應(yīng)當注意,本公開的實施方案不一定限于網(wǎng)頁的上內(nèi)容,但是可更一般地適用于處理基本請求,其中請求不一定是針對內(nèi)容的請求。
每個服務(wù)器通常將包括提供用于此服務(wù)器的基本管理和操作的可執(zhí)行程序指令的操作系統(tǒng),并且通常將包括計算機可讀存儲介質(zhì)(例如,硬盤、隨機存取存儲器、只讀存儲器等),其存儲當由服務(wù)器的處理器執(zhí)行時允許服務(wù)器執(zhí)行其預(yù)期功能的指令。服務(wù)器的操作系統(tǒng)和基本功能的合適實現(xiàn)方式是已知的或可商購獲得的,并且由本領(lǐng)域普通技術(shù)人員特別是根據(jù)本文的本公開而容易地實現(xiàn)。
在一個實施方案中,環(huán)境是利用通過通信鏈路、使用一個或多個計算機網(wǎng)絡(luò)或直接連接來互連的多個計算機系統(tǒng)和部件的分布式和/或虛擬計算環(huán)境。然而,本領(lǐng)域普通技術(shù)人員應(yīng)了解,這種系統(tǒng)可在具有比圖8中所示的部件更少或更多數(shù)量的部件的系統(tǒng)中同樣順利地操作。因此,圖8中的系統(tǒng)800的描繪本質(zhì)上應(yīng)視為說明性的,并且不限制本公開的范圍。
各種實施方案還可在各種各樣的操作環(huán)境中實現(xiàn),所述操作環(huán)境在一些情況下可包括可用于操作多個應(yīng)用中的任何一個的一個或多個用戶計算機、計算裝置或處理裝置。用戶或客戶端裝置可包括許多通用個人計算機中的任何一個,諸如運行標準操作系統(tǒng)的臺式機、膝上計算機或平板計算機,以及運行移動軟件的蜂窩、無線和手持裝置,并且能夠支持多個網(wǎng)絡(luò)和消息傳送協(xié)議。這種系統(tǒng)還可包括運行多種可商購獲得的操作系統(tǒng)和其他已知應(yīng)用程序中的任何一種的許多工作站,以用于諸如開發(fā)和數(shù)據(jù)庫管理的目的。這些裝置還可包括其他電子裝置,諸如虛擬終端、瘦客戶端、游戲系統(tǒng)和能夠通過網(wǎng)絡(luò)進行通信的其他裝置。這些裝置還可包括虛擬裝置,諸如虛擬機、管理程序和能夠通過網(wǎng)絡(luò)通信的其他虛擬裝置。
本公開的各種實施方案利用本領(lǐng)域技術(shù)人員可能熟悉的至少一種網(wǎng)絡(luò)來支持使用多種可商購得的協(xié)議中的任一種進行通信,所述協(xié)議諸如傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(″tcp/ip″)、用戶數(shù)據(jù)報協(xié)議(″udp″)、在開放系統(tǒng)互連(″osi″)模型的各個層中操作的協(xié)議、文件傳送協(xié)議(″ftp″)、通用即插即用(″upnp″)、網(wǎng)絡(luò)文件系統(tǒng)(″nfs″)、公共互聯(lián)網(wǎng)文件系統(tǒng)(″cifs″)以及appletalk。網(wǎng)絡(luò)可以是例如局域網(wǎng)、廣域網(wǎng)、虛擬專用網(wǎng)、互聯(lián)網(wǎng)、內(nèi)部網(wǎng)、外部網(wǎng)、公共交換電話網(wǎng)、紅外網(wǎng)、無線網(wǎng)、衛(wèi)星網(wǎng)以及上述網(wǎng)絡(luò)的任何組合。
在利用web服務(wù)器的實施方案中,web服務(wù)器可以運行多種服務(wù)器或中間層級應(yīng)用程序中的任一種,包括超文本傳送協(xié)議(″http″)服務(wù)器、ftp服務(wù)器、通用網(wǎng)關(guān)接口(″cgi″)服務(wù)器、數(shù)據(jù)服務(wù)器、java服務(wù)器、apache服務(wù)器和業(yè)務(wù)應(yīng)用程序服務(wù)器。服務(wù)器還能夠響應(yīng)于來自用戶裝置的請求而執(zhí)行程序或腳本,諸如通過執(zhí)行可實現(xiàn)為以任何編程語言(諸如
環(huán)境可包括如上文所論述的各種各樣的數(shù)據(jù)存儲區(qū)以及其他存儲器和存儲介質(zhì)。這些可駐留在各種位置,諸如在存儲介質(zhì)上,所述存儲介質(zhì)在一個或多個計算機的本地(和/或駐留在其中),或者遠離網(wǎng)絡(luò)中的任何或所有計算機。在一組特定實施方案中,信息可駐留在本領(lǐng)域技術(shù)人員熟悉的存儲區(qū)域網(wǎng)絡(luò)(“san”)中。類似地,在適當情況下,用于執(zhí)行歸因于計算機、服務(wù)器或其他網(wǎng)絡(luò)裝置的功能的任何必要文件可在本地和/或遠程存儲。在系統(tǒng)包括計算機化裝置的情況下,每個這種裝置可包括可通過總線電耦合的硬件元件,所述元件包括例如至少一個中央處理單元(“cpu”或“處理器”)、至少一個輸入裝置(例如,鼠標、鍵盤、控制器、觸摸屏或小鍵盤)和至少一個輸出裝置(例如,顯示裝置、打印機或揚聲器)。這種系統(tǒng)還可包括諸如磁盤驅(qū)動器,光存儲裝置和諸如隨機存取存儲器(“ram”)或只讀存儲器(“rom”)的固態(tài)存儲裝置、以及可移動媒體裝置、存儲卡、閃存卡等的一個或多個存儲裝置。
此類裝置還可包括計算機可讀存儲介質(zhì)讀取器、通信設(shè)備(例如,調(diào)制解調(diào)器、網(wǎng)卡(無線或有線)、紅外線通信設(shè)備等)和如上所述的工作存儲器。計算機可讀存儲介質(zhì)讀取器可與表示遠程、本地、固定和/或可移動存儲裝置以及用于臨時和/或更永久地包含、存儲、發(fā)送和檢索計算機可讀信息的存儲介質(zhì)的計算機可讀存儲介質(zhì)連接或被配置來接收所述計算機可讀存儲介質(zhì)。系統(tǒng)和各種裝置通常還將包括位于至少一個工作存儲器裝置內(nèi)的許多軟件應(yīng)用、模塊、服務(wù)或其他元件,包括諸如客戶端應(yīng)用或網(wǎng)絡(luò)瀏覽器的操作系統(tǒng)和應(yīng)用程序。應(yīng)當理解,替代實施方案可具有與上述不同的許多變化。例如,還可使用定制硬件并且/或者特定元件可在硬件、軟件(包括便攜式軟件,例如小程序)或兩者中實現(xiàn)。此外,可采用與其他計算裝置(諸如網(wǎng)絡(luò)輸入/輸出裝置)的連接。
用于包含代碼或代碼部分的存儲介質(zhì)和計算機可讀介質(zhì)可包括本領(lǐng)域中已知或使用的任何適當?shù)慕橘|(zhì),所述介質(zhì)包括存儲介質(zhì)和通信介質(zhì),諸如但不限于以任何方法或技術(shù)實現(xiàn)用于存儲和/或傳輸信息的易失性和非易失性、可移動和不可移動介質(zhì),所述信息諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),所述介質(zhì)包括ram、rom、電可擦除可編程只讀存儲器(“eeprom”)、閃速存儲器或其他存儲器技術(shù)、光盤只讀存儲器(“cd-rom”)、數(shù)字通用盤(dvd)或其他光存儲裝置、磁帶盒、磁帶、磁盤存儲裝置或其他磁存儲裝置或者可用來存儲所需信息并且可由系統(tǒng)裝置訪問的任何其他介質(zhì)?;诒疚乃峁┑墓_內(nèi)容和教義,本領(lǐng)域普通技術(shù)人員將了解實現(xiàn)各個實施方案的其他方式和/或方法。
因此,說明書和附圖相應(yīng)地視為說明性而非限制性意義。然而,顯而易見的是,在不脫離如權(quán)利要求所闡述的本發(fā)明的更廣泛的精神和范圍的情況下,可進行各種修改和改變。
其他變化在本公開的精神內(nèi)。因此,雖然所公開的技術(shù)易于進行各種修改和替代構(gòu)造,但是其某些示出的實施方案在附圖中示出并已在上文詳細描述。然而,應(yīng)當理解,不意圖將本發(fā)明限制為所公開的一種多多種具體形式,相反,本發(fā)明旨在覆蓋落入本發(fā)明的精神和范圍內(nèi)的所有修改、替代構(gòu)造和等效物,如所附權(quán)利要求中所限定的。
在描述公開的實施方案(特別是在所附權(quán)利要求的上下文中)的上下文中使用術(shù)語“一個”和“一種”以及“所述”以及類似的指示物應(yīng)被解釋為涵蓋單數(shù)和復(fù)數(shù),除非本文另外指明或上下文明顯矛盾。術(shù)語“包括”、“具有”、“包含”和“含有”均被解釋為開放式術(shù)語(即意味著“包括但不限于”),除非另有說明。術(shù)語“連接的”在未經(jīng)修改且涉及物理連接的情況下,應(yīng)解釋為部分地或整體地包含在內(nèi)、附接到或接合在一起,即使會有一些物件介于其間。除非本文另有說明,否則本文的值的范圍的敘述僅用于作為單獨參考落在所述范圍內(nèi)的每個單獨值的速記方法,并且將每個單獨數(shù)值并入本說明書中,如同本文單獨列舉每個單獨數(shù)值一樣。術(shù)語“組”(例如,“一組項目”)或“子集”的使用除非另有說明或與上下文相矛盾,否則應(yīng)被解釋為包括一個或多個成員的非空集合。此外,除非另有說明或與上下文相矛盾,否則對應(yīng)集合的術(shù)語“子集”不一定表示對應(yīng)集合的適當子集,但子集和對應(yīng)集合可相等。
除非另外特別規(guī)定或另外與上下文矛盾,否則連接性語言,諸如具有形式“a、b、以及c中的至少一個”或“a、b以及c中的至少一個”的短語與上下文一起理解為一般用來呈現(xiàn)項目、術(shù)語等可以是a或b或c,或a和b和c的集合的任何非空子集。例如,在具有三個成員的集的說明性實例中,連接性短語“a、b、和c中的至少一個”和“a、b和c中的至少一個”是指以下集中的任一集:{a}、、{c}、{a,b}、{a,c}、{b,c}、{a,b,c}。因此,此類連接性語言一般并非意圖暗示某些實施方案需要a中的至少一個、b中的至少一個以及c中的至少一個每個存在。
本文所描述的進程的操作可以任何合適的順序執(zhí)行,除非本文另外指明或者否則上下文明顯矛盾。本文所描述的進程(或其變型和/或其組合)可在配置有可執(zhí)行指令的一個或多個計算機系統(tǒng)的控制下執(zhí)行,并且可被實現(xiàn)為通過硬件或其組合在一個或多個處理器上共同執(zhí)行的代碼(例如,可執(zhí)行指令、一個或多個計算機程序或一個或多個應(yīng)用程序)。代碼可存儲在計算機可讀存儲介質(zhì)上,例如以包括可由一個或多個處理器執(zhí)行的多條指令的計算機程序的形式進行存儲。計算機可讀存儲介質(zhì)可以是非暫時性的。
本文所提供的任何和所有實例或示例性語言(例如“諸如”)的使用僅旨在更好地說明本發(fā)明的實施方案,并且不對本發(fā)明的范圍構(gòu)成限制,除非另有說明。說明書中的任何語言都不應(yīng)解讀為指示任何未要求保護的要素是實施本發(fā)明所必需的。
本文描述了本公開的實施方案,包括本發(fā)明人已知的用于執(zhí)行本發(fā)明的最佳模式。在閱讀前面的描述之后,這些實施方案的變型對于本領(lǐng)域普通技術(shù)人員來說可能變得顯而易見。本發(fā)明人期望本領(lǐng)域技術(shù)人員在適當情況下使用這種變型,并且本發(fā)明人希望本公開的實施方案以不同于本文具體描述的方式來實施。因此,本公開的范圍包括根據(jù)適用法律允許的所附權(quán)利要求中所述的主題的所有修改和等效物。此外,除非本文另外指明或者否則上下文明顯矛盾,否則所有可能變型的上述元素的任何組合都包含在本公開的范圍內(nèi)。
本文所引用的所有參考文獻(包括出版物、專利申請和專利)據(jù)此以引用方式并入,其程度等同于每個參考文獻單獨地且具體地被表示為以引用方式并入本文并且以其全文在本文得以陳述。
本公開的實施方案可鑒于以下條款來描述:
1.一種計算機實現(xiàn)的方法,其包括:
在被配置有可執(zhí)行指令的一個或多個計算機系統(tǒng)的控制下,
處理將要存儲在多個卷上的多個檔案,以便:
根據(jù)由所述多個檔案共享的至少一個標準來對所述多個檔案進行分類;以及
確定所述分類的多個檔案中的哪些檔案將被存儲在所述多個卷中的每個卷上;
生成所述多個卷的索引,所述索引中的每個索引反映將要存儲在所述多個卷中的相應(yīng)卷上的所述分類的多個檔案的子集;
將所述分類的多個檔案和所述生成的索引存儲在所述多個卷的子集上,從而生成多個碎片;
將冗余碼應(yīng)用至所述分類的多個檔案和所述生成的索引以生成編碼的碎片;以及
將所述編碼的碎片存儲在所述多個卷的所述子集外的對應(yīng)卷上。
2.如條款1所述的計算機實現(xiàn)的方法,其還包括通過從所述多個卷的所述子集中檢索所述子集來響應(yīng)對所述原始數(shù)據(jù)的至少一個子集的請求。
3.如條款1或2所述的計算機實現(xiàn)的方法,其還包括如果所述多個碎片中的碎片被檢測為不可用,使用具有所述多個碎片的子集的所述編碼的碎片中的至少一個來重新生成所述不可用碎片。
4.如條款1-3中任一項所述的計算機實現(xiàn)的方法,其中所述冗余碼是包含單位矩陣的糾刪碼。
5.一種系統(tǒng),其包括:
至少一個計算裝置,所述至少一個計算裝置被配置來實現(xiàn)一個或多個服務(wù),其中所述一個或多個服務(wù)被配置來:
以預(yù)定順序?qū)Χ鄠€檔案進行分類,以便以所述預(yù)定順序存儲在多個卷上;
使用冗余碼來處理所述多個檔案,以便生成多個碎片,所述多個碎片的子集包括所述多個檔案的原始數(shù)據(jù);以及
將所述碎片存儲在所述多個卷上,以使得所述多個卷的子集包含所述原始數(shù)據(jù)。
6.如條款5所述的系統(tǒng),其中所述碎片被存儲成使得所述多個檔案中的相應(yīng)檔案的所述原始數(shù)據(jù)被完全存儲在所述多個卷的所述子集的單個卷內(nèi)。
7.如條款5或6所述的系統(tǒng),其中所述碎片被存儲成使得所述多個檔案中的相應(yīng)檔案的所述原始數(shù)據(jù)被存儲在所述多個卷的所述子集的至多兩個卷內(nèi)。
8.如條款5-7中任一項所述的系統(tǒng),其中所述一個或多個服務(wù)包括由所述系統(tǒng)提供的檔案存儲服務(wù)。
9.如條款5-8中任一項所述的系統(tǒng),其中所述多個卷中的每個卷對應(yīng)于多個存儲裝置中的一個存儲裝置。
10.如條款5-9中任一項所述的系統(tǒng),其中所述一個或多個服務(wù)還被配置來生成所述多個卷的索引,所述索引中的每個索引反映將要存儲在所述多個卷中的相應(yīng)卷上的所述分類的多個檔案的子集。
11.如條款10所述的系統(tǒng),其中所述一個或多個服務(wù)還被配置來:
使用所述冗余碼來處理所述索引,以便將所述索引中的每個索引包含在相應(yīng)的碎片中;以及
存儲所述碎片,以使得所述多個卷中的每個卷包含所述處理的索引中的相應(yīng)索引。
12.如條款5-11中任一項所述的系統(tǒng),其中所述一個或多個服務(wù)還被配置來如果所述多個碎片的所述子集中的碎片被檢測為不可用,使用所述多個碎片的第二子集來重新生成使用所述冗余碼的所述不可用碎片。
13.一種非暫時性計算機可讀存儲介質(zhì),其具有存儲在其上的可執(zhí)行指令,所述可執(zhí)行指令當由計算機系統(tǒng)的一個或多個處理器執(zhí)行時,致使所述計算機系統(tǒng)至少:
確定其中多個檔案將要被存儲在多個卷上的所述多個檔案的順序;
通過向至少所述多個檔案應(yīng)用冗余碼來生成多個碎片,所述多個碎片中的每個碎片對應(yīng)于所述多個卷中的卷,以使得:
所述多個碎片的子集包含所述多個檔案的原始數(shù)據(jù),并且
所述多個碎片的所述子集被存儲在所述多個卷上,以使得所述多個檔案被以所述多個碎片的所述子集內(nèi)的所述確定的順序來表示;以及
將所述多個碎片存儲在所述多個卷中的對應(yīng)卷上。
14.如條款13所述的非暫時性計算機可讀存儲介質(zhì),其中所述指令還包括當由所述一個或多個處理器執(zhí)行時致使所述計算機系統(tǒng)生成所述多個卷的索引的指令,所述索引中的每個索引反映將要以所述確定的順序存儲在所述多個卷中的相應(yīng)卷上的多個檔案的子集。
15.如條款14所述的非暫時性計算機可讀存儲介質(zhì),其中所述指令還包括當由所述一個或多個處理器執(zhí)行時致使所述計算機系統(tǒng)通過進一步將所述冗余碼應(yīng)用于所述索引來生成所述多個碎片以便在所述多個碎片中的每個碎片中包含相應(yīng)的索引的指令。
16.如條款13-15中任一項所述的非暫時性計算機可讀存儲介質(zhì),其中所述指令還包括在由所述一個或多個處理器執(zhí)行時致使所述計算機系統(tǒng)通過對具有所述計算機系統(tǒng)的一個或多個客戶的共同所有權(quán)的所述多個檔案的子集進行分組來確定所述多個檔案的所述順序的指令。
17.如條款13-16中任一項所述的非暫時性計算機可讀存儲介質(zhì),其中所述指令還包括在由所述一個或多個處理器執(zhí)行時致使所述計算機系統(tǒng)通過經(jīng)由多個屬性將所述多個檔案順序分類來確定所述多個檔案的所述順序的指令。
18.如條款13-17中任一項所述的非暫時性計算機可讀存儲介質(zhì),其中所述指令還包括在由所述一個或多個處理器執(zhí)行時致使所述計算機系統(tǒng)通過經(jīng)由所述多個檔案中的每個檔案由所述計算機系統(tǒng)接收的時間對所述多個檔案進行分類來確定所述多個檔案的所述順序的指令。
19.如條款13-18中任一項所述的非暫時性計算機可讀存儲介質(zhì),其中所述指令還包括在由所述一個或多個處理器執(zhí)行時致使所述計算機系統(tǒng)如果所述多個碎片中的碎片被檢測為不可用,使用所述多個碎片中的剩余碎片的至少子集來重新生成所述不可用碎片的指令。
20.如條款13-19中任一項所述的非暫時性計算機可讀存儲介質(zhì),其中所述冗余碼是糾刪碼,所述糾刪碼當應(yīng)用于所述多個檔案時生成所述多個碎片的所述子集,以使得所述子集對應(yīng)于包含所述原始數(shù)據(jù)的單位矩陣。