計算系統(tǒng)已經(jīng)變得無處不在,其范圍從小型嵌入式設(shè)備到電話和平板電腦到PC以及后端服務(wù)器。這些計算系統(tǒng)中的每一個包括某種類型的數(shù)據(jù)存儲,以及典型地,許多不同類型的數(shù)據(jù)存儲。例如,計算系統(tǒng)可以包括固態(tài)存儲和硬驅(qū)動或者硬驅(qū)動的集合。固態(tài)存儲可以能夠比硬驅(qū)動更快速地處置讀取和寫入I/O請求,而可以具有硬驅(qū)動的存儲容量。在讀取、寫入和存儲數(shù)據(jù)時,其它介質(zhì),諸如帶驅(qū)動、DVD(或其它光學(xué)介質(zhì))或其它類型的介質(zhì),可以具有不同優(yōu)點和缺點。
技術(shù)實現(xiàn)要素:
本文描述的實施例是針對高效地管理數(shù)據(jù)存儲以及高效地存儲數(shù)據(jù)。在一個實施例中,計算機系統(tǒng)接收尋址到數(shù)據(jù)倉庫內(nèi)的一個數(shù)據(jù)存儲部分的寫入請求。計算機系統(tǒng)將所接收的寫入請求再定向到數(shù)據(jù)倉庫內(nèi)的另一個數(shù)據(jù)存儲部分。該第二數(shù)據(jù)存儲部分包括存儲容器,其中每個存儲容器是數(shù)據(jù)倉庫的邏輯地指定的部分。計算機系統(tǒng)確定所接收的寫入請求要向第二數(shù)據(jù)存儲部分上的哪個存儲容器進(jìn)行寫入,并且標(biāo)識要從第二數(shù)據(jù)存儲部分離臺(de-stage)到第一數(shù)據(jù)存儲部分的存儲容器。計算機系統(tǒng)然后使所標(biāo)識的存儲容器離臺到第一數(shù)據(jù)存儲部分,被離臺的容器的數(shù)據(jù)以與離臺之前數(shù)據(jù)在所標(biāo)識的存儲容器中被存儲的次序相同的次序存儲在第一數(shù)據(jù)存儲部分上。
在另一實施例中,計算機系統(tǒng)訪問針對存儲容器的集合的使用信息,其中每一個存儲容器是數(shù)據(jù)倉庫的邏輯部分。計算機系統(tǒng)確定存儲在至少一個存儲容器中的數(shù)據(jù)包括具有滿足某些準(zhǔn)則的指定特性的數(shù)據(jù)?;谶@些準(zhǔn)則,計算機系統(tǒng)確定要在與容器相關(guān)聯(lián)的數(shù)據(jù)上執(zhí)行哪些操作,并且在容器的數(shù)據(jù)上執(zhí)行那些操作。這樣的操作可以包括標(biāo)識頻繁使用或不頻繁使用的數(shù)據(jù)并且將其移動到較低速度、較高容量的存儲,壓縮數(shù)據(jù),或者其它操作。
提供該發(fā)明內(nèi)容來以簡化形式引入以下在具體實施方式中進(jìn)一步描述的概念的選擇。該發(fā)明內(nèi)容不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用作幫助確定所要求保護(hù)的主題的范圍。
附加的特征和優(yōu)點將在接下來的描述中被闡述,并且從該描述,附加的特征和優(yōu)點在某種程度上對于本領(lǐng)域普通技術(shù)人員將是顯然的,或者其可以通過本文中的教導(dǎo)的實踐而被了解。本文描述的實施例的特征和優(yōu)點可以借助于在隨附權(quán)利要求中特別指出的手段和組合而實現(xiàn)和獲得。從以下的描述和隨附權(quán)利要求,本文描述的實施例的特征將變得更加完全地顯現(xiàn)。
附圖說明
為了進(jìn)一步澄清本文描述的實施例的上述和其它特征,將通過參照附圖來再現(xiàn)更具體的描述。領(lǐng)會到的是,這些圖僅描繪了本文描述的實施例的示例并且因此不應(yīng)視為限制其范圍。通過使用隨附各圖,將以附加的特異性和細(xì)節(jié)來描述和解釋實施例,在附圖中:
圖1圖示了本文描述的實施例可以在其中操作的計算機架構(gòu),所述操作包括高效地管理數(shù)據(jù)存儲以及高效地存儲數(shù)據(jù)。
圖2圖示了用于高效地管理數(shù)據(jù)存儲的示例方法的流程圖。
圖3圖示了用于高效地存儲數(shù)據(jù)的示例方法的流程圖。
圖4圖示了本文描述的實施例可以在其中操作的計算機架構(gòu),所述操作包括高效地存儲數(shù)據(jù)。
圖5圖示了其中將一個數(shù)據(jù)倉庫中的存儲容器移動到另一個數(shù)據(jù)倉庫的實施例。
圖6圖示了其中將數(shù)據(jù)I/O請求被再定向到數(shù)據(jù)倉庫的不同部分并且其中從數(shù)據(jù)倉庫的一些部分向其它部分返回數(shù)據(jù)的實施例。
具體實施方式
本文描述的實施例是針對高效地管理數(shù)據(jù)存儲以及高效地存儲數(shù)據(jù)。在一個實施例中,計算機系統(tǒng)接收尋址到數(shù)據(jù)倉庫內(nèi)的一個數(shù)據(jù)存儲部分的寫入請求。計算機系統(tǒng)將所接收的寫入請求再定向到數(shù)據(jù)倉庫內(nèi)的另一數(shù)據(jù)存儲部分。該第二數(shù)據(jù)存儲部分包括存儲容器,每個存儲容器是數(shù)據(jù)倉庫的邏輯地指定的部分。計算機系統(tǒng)確定所接收的寫入請求要向第二數(shù)據(jù)存儲部分上的哪個存儲容器進(jìn)行寫入,并且標(biāo)識要從第二數(shù)據(jù)存儲部分被離臺到第一數(shù)據(jù)存儲部分的存儲容器。計算機系統(tǒng)然后使所標(biāo)識的存儲容器離臺到第一數(shù)據(jù)存儲部分,被離臺的容器的數(shù)據(jù)以與離臺之前數(shù)據(jù)在所標(biāo)識的存儲容器中被存儲的次序相同的次序存儲在第一數(shù)據(jù)存儲部分上。
在另一個實施例中,計算機系統(tǒng)訪問針對存儲容器的集合的使用信息,其中每一個存儲容器是數(shù)據(jù)倉庫的邏輯部分。計算機系統(tǒng)確定存儲在至少一個存儲容器中的數(shù)據(jù)包括具有滿足某些準(zhǔn)則的指定特性的數(shù)據(jù)。基于這些準(zhǔn)則,計算機系統(tǒng)確定要在與容器相關(guān)聯(lián)的數(shù)據(jù)上執(zhí)行哪些操作,并且在容器的數(shù)據(jù)上執(zhí)行那些操作。這樣的操作可以包括標(biāo)識頻繁使用或不頻繁使用的數(shù)據(jù)并且將其移動到較低速度、較高容量的存儲,壓縮數(shù)據(jù),或者其它操作。
現(xiàn)在,接下來的討論參照可以被執(zhí)行的數(shù)個方法和方法動作。應(yīng)當(dāng)指出,盡管方法動作可以以某一次序進(jìn)行討論或者在流程圖中被圖示為以特定次序發(fā)生,但是并不必然地要求特定的排序,除非有特別地陳述,或者由于一個動作依賴于在執(zhí)行該動作之前完成另一動作而要求。
本文描述的實施例可以實現(xiàn)各種類型的計算系統(tǒng)。這些計算系統(tǒng)現(xiàn)在越來越多地采取各種各樣的形式。計算系統(tǒng)可以例如是手持式設(shè)備,諸如智能電話或特色電話機、電器、膝上型計算機、可穿戴設(shè)備、桌上型計算機、大型計算機、分布式計算系統(tǒng)、或者甚至常規(guī)地尚未被視為計算系統(tǒng)的設(shè)備。在該描述中,以及在權(quán)利要求中,術(shù)語“計算系統(tǒng)”廣義地被定義為包括任何的設(shè)備或系統(tǒng)(或其組合),所述設(shè)備或系統(tǒng)包括至少一個物理且有形的處理器,以及能夠在其上具有計算機可執(zhí)行指令的物理且有形的存儲器,計算機可執(zhí)行指令可以由處理器執(zhí)行。計算系統(tǒng)可以分布在網(wǎng)絡(luò)環(huán)境之上并且可以包括多個組成計算系統(tǒng)。
如圖1中所圖示,計算系統(tǒng)101典型地包括至少一個處理單元102和存儲器103。存儲器103可以是物理系統(tǒng)存儲器,其可以是易失性的、非易失性的、或者二者的某種組合。術(shù)語“存儲器”還可以在本文中被用于指代非易失性大容量存儲裝置,諸如物理存儲介質(zhì)。如果計算系統(tǒng)是分布式的,則處理、存儲器和/或存儲容量也可以是分布式的。
如本文中所使用的,術(shù)語“可執(zhí)行模塊”或“可執(zhí)行組件”可以是指可以在計算系統(tǒng)上執(zhí)行的軟件對象、例程或方法。本文描述的不同的組件、模塊、引擎和服務(wù)可以實現(xiàn)為在計算系統(tǒng)上執(zhí)行的對象或過程(例如,作為分離的線程)。
在接下來的描述中,參照由一個或多個計算系統(tǒng)執(zhí)行的動作來描述實施例。如果這樣的動作實現(xiàn)在軟件中,則執(zhí)行動作的相關(guān)聯(lián)的計算系統(tǒng)的一個或多個處理器響應(yīng)于已經(jīng)執(zhí)行了計算機可執(zhí)行指令而引導(dǎo)計算系統(tǒng)的操作。例如,這樣的計算機可執(zhí)行指令可以體現(xiàn)在形成計算機程序產(chǎn)品的一個或多個計算機可讀介質(zhì)上。這樣的操作的示例牽涉到數(shù)據(jù)的操控。計算機可執(zhí)行指令(以及所操控的數(shù)據(jù))可以存儲在計算系統(tǒng)101的存儲器103中。計算系統(tǒng)101還可以包含通信信道,其允許計算系統(tǒng)101經(jīng)由有線或無線網(wǎng)絡(luò)與其它消息處理器通信。
本文描述的實施例可以包括或者利用專用或通用計算機系統(tǒng),該計算機系統(tǒng)包括計算機硬件,諸如例如一個或多個處理器和系統(tǒng)存儲器,如在下文更加詳細(xì)地討論的。系統(tǒng)存儲器可以包括在總存儲器103內(nèi)。系統(tǒng)存儲器還可以被稱為“主存儲器”,并且包括由至少一個處理單元102經(jīng)由存儲器總線可尋址的存儲器位置,在該情況下,在存儲器總線自身上斷言(assert)地址位置。系統(tǒng)存儲器傳統(tǒng)上已經(jīng)是易失性的,但是本文描述的原理在其中系統(tǒng)存儲器部分地或者甚至完全地是非易失性的情況下也適用。
本發(fā)明的范圍內(nèi)的實施例還包括用于承載或存儲計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理的和其它計算機可讀介質(zhì)。這樣的計算機可讀介質(zhì)可以是任何可獲得的介質(zhì),其可以由通用或?qū)S糜嬎銠C系統(tǒng)訪問。存儲計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì)是計算機存儲介質(zhì)。承載計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì)是傳輸介質(zhì)。因而,作為示例而非限制,本發(fā)明的實施例可以包括至少兩種明顯不同類型的計算機可讀介質(zhì):計算機存儲介質(zhì)和傳輸介質(zhì)。
計算機存儲介質(zhì)是存儲計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理硬件存儲介質(zhì)。物理硬件存儲介質(zhì)包括計算機硬件,諸如RAM、ROM、EEPROM、固態(tài)驅(qū)動(“SSD”)、閃速存儲器、相變存儲器(“PCM”)、光盤存儲裝置、磁盤存儲裝置或其它磁性存儲設(shè)備、或者可以用于以計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的形式存儲程序代碼的任何其它(多個)硬件存儲設(shè)備,所述程序代碼可以由通用或?qū)S糜嬎銠C系統(tǒng)訪問和執(zhí)行以實現(xiàn)所公開的本發(fā)明的功能性。
傳輸介質(zhì)可以包括網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路,其可以用于以計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的形式承載程序代碼,并且其可以由通用或?qū)S糜嬎銠C系統(tǒng)訪問?!熬W(wǎng)絡(luò)”被定義為能夠?qū)崿F(xiàn)電子數(shù)據(jù)在計算機系統(tǒng)和/或模塊和/或其它電子設(shè)備之間的輸運的一個或多個數(shù)據(jù)鏈路。當(dāng)經(jīng)由網(wǎng)絡(luò)或另一個通信連接(硬布線、無線、或者硬布線或無線的組合)向計算機系統(tǒng)提供或轉(zhuǎn)移信息時,計算機系統(tǒng)可以將該連接視為傳輸介質(zhì)。以上的組合也應(yīng)當(dāng)包括在計算機可讀介質(zhì)的范圍內(nèi)。
另外,在到達(dá)各種計算機系統(tǒng)組件時,計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼可以自動地從傳輸介質(zhì)轉(zhuǎn)移到計算機存儲介質(zhì)(或者反之亦然)。例如,經(jīng)由網(wǎng)絡(luò)或數(shù)據(jù)鏈路接收的計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可以緩沖在網(wǎng)絡(luò)接口模塊(例如,“NIC”)內(nèi)的RAM中,并且然后最終轉(zhuǎn)移到計算機系統(tǒng)RAM和/或計算機系統(tǒng)處的較不易失的計算機存儲介質(zhì)。因而,應(yīng)當(dāng)理解到,計算機存儲介質(zhì)可以包括在還(或者甚至主要)利用傳輸介質(zhì)的計算機系統(tǒng)組件中。
計算機可執(zhí)行指令包括例如指令和數(shù)據(jù),當(dāng)指令和數(shù)據(jù)在一個或多個處理器處被執(zhí)行時使通用計算機系統(tǒng)、專用計算機系統(tǒng)或者專用處理設(shè)備實施某一功能或者功能組。計算機可執(zhí)行指令可以例如是二進(jìn)制、中間格式指令,諸如匯編語言或者甚至源代碼。
本領(lǐng)域技術(shù)人員將領(lǐng)會到,本文描述的原理可以在具有許多類型的計算機系統(tǒng)配置的網(wǎng)絡(luò)計算環(huán)境中被實踐,許多類型的計算機系統(tǒng)配置包括個人計算機、桌上型計算機、膝上型計算機、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或者可編程的消費者電子產(chǎn)品、網(wǎng)絡(luò)PC、微型計算機、大型計算機、移動電話、PDA、平板電腦、尋呼機、路由器、交換機等。本發(fā)明還可以在分布式系統(tǒng)環(huán)境中實踐,其中通過網(wǎng)絡(luò)鏈接(通過硬布線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬布線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計算機系統(tǒng)二者執(zhí)行任務(wù)。照此,在分布式系統(tǒng)環(huán)境中,計算機系統(tǒng)可以包括多個組成計算機系統(tǒng)。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲器存儲設(shè)備二者中。
本領(lǐng)域技術(shù)人員將領(lǐng)會到,本發(fā)明可以在云計算環(huán)境中實踐。云計算環(huán)境可以是分布式的,盡管并不要求如此。當(dāng)為分布式時,云計算環(huán)境可以跨國界地分布在組織內(nèi)和/或具有跨多個組織所占有的組件。在該描述和以下權(quán)利要求中,“云計算”被定義為用于使得能夠?qū)崿F(xiàn)對可配置計算資源(例如,網(wǎng)絡(luò)、服務(wù)器、存儲裝置、應(yīng)用和服務(wù))的共享池的按需網(wǎng)絡(luò)訪問的模型。“云計算”的定義不限于在恰當(dāng)部署時可以從這樣的模型獲得的其它眾多優(yōu)點中的任一個。
更進(jìn)一步,本文描述的系統(tǒng)架構(gòu)可以包括多個獨立組件,每個獨立組件對于作為整體的系統(tǒng)的功能性有貢獻(xiàn)。當(dāng)對付平臺可擴(kuò)縮性問題時,該模塊化允許增大的靈活性,并且為此目的,提供各種優(yōu)點。系統(tǒng)復(fù)雜性和增長可以通過使用具有有限功能范圍的較小規(guī)模的部件而更加容易地被管理。平臺默認(rèn)公差通過使用這些松散耦合的模塊而增強。各個組件可以隨商業(yè)需要支配而以增量方式增長。模塊化發(fā)展還轉(zhuǎn)化成針對新功能性進(jìn)行市場推廣的減少時間。可以在沒有沖擊核心系統(tǒng)的情況下添加或減除新功能性。
圖1圖示了其中可以采用至少一個實施例的計算機架構(gòu)100。計算機架構(gòu)100包括計算機系統(tǒng)101。計算機系統(tǒng)101可以是任何類型的本地或分布式計算機系統(tǒng),包括云計算系統(tǒng)。計算機系統(tǒng)101包括用于執(zhí)行各種不同功能的模塊。例如,通信模塊104可以配置成與其它計算系統(tǒng)通信。通信模塊104可以包括能夠從其它計算系統(tǒng)接收數(shù)據(jù)和/或向其它計算系統(tǒng)傳送數(shù)據(jù)的任何有線或無線通信構(gòu)件。通信模塊104可以配置成與數(shù)據(jù)庫、移動計算設(shè)備(諸如移動電話或平板電腦)、嵌入式或其它類型的計算系統(tǒng)交互。
計算機系統(tǒng)101還包括應(yīng)用105。這些可以是任何類型的軟件應(yīng)用、服務(wù)或者軟件代碼功能性的其它部分。應(yīng)用105可以向數(shù)據(jù)倉庫發(fā)送讀取和/或?qū)懭胝埱?06。附加地或者可替換地,應(yīng)當(dāng)指出的是,讀取/寫入輸入/輸出(I/O)請求可以來自于另一個計算系統(tǒng)或者計算系統(tǒng)101外部的另一個應(yīng)用。向其發(fā)送I/O請求的數(shù)據(jù)倉庫可以包括來自各種不同數(shù)據(jù)類型中的任一個的任何量的數(shù)據(jù)。實際上,數(shù)據(jù)倉庫107可以包括第一數(shù)據(jù)存儲部分108A和第二數(shù)據(jù)存儲部分108B,但是可以包括基本上任何數(shù)目或類型的數(shù)據(jù)倉庫。數(shù)據(jù)倉庫可以是獨個的存儲設(shè)備,諸如硬驅(qū)動、固態(tài)驅(qū)動(諸如閃速驅(qū)動)、光學(xué)驅(qū)動(諸如DVD或藍(lán)光盤)、混合型驅(qū)動或其它數(shù)據(jù)存儲設(shè)備。數(shù)據(jù)存儲部分還可以包括臨時存儲裝置,諸如隨機存取存儲器(RAM)、物理緩存器(諸如處理器緩存器)、或者可以臨時地或者永久性地存儲
數(shù)據(jù)的任何其它類型的數(shù)據(jù)倉庫。
數(shù)據(jù)倉庫107可以由應(yīng)用作為單個的數(shù)據(jù)倉庫來尋址,即便數(shù)據(jù)倉庫本身包括不同邏輯部分和/或不同物理部分。例如,在一些情況下,數(shù)據(jù)倉庫107可以是硬驅(qū)動的陣列,其中第一和第二數(shù)據(jù)存儲部分108A和108B是硬驅(qū)動(盤)陣列的不同邏輯部分,其中邏輯部分可以跨越多個物理驅(qū)動,或者可以是相同驅(qū)動的不同邏輯部分。在其它情況下,第一數(shù)據(jù)存儲部分108A可以是某種類型的數(shù)據(jù)存儲裝置(例如,固態(tài)驅(qū)動(SSD)),并且第二數(shù)據(jù)存儲部分108B可以是硬驅(qū)動(或硬盤驅(qū)動(HDD))。許多其它實施例因而是可能的,并且照此此,將第一數(shù)據(jù)存儲部分108A描述為SSD并且將第二數(shù)據(jù)存儲部分108B描述為硬驅(qū)動的實施例僅僅是示例,并且不應(yīng)當(dāng)被解讀為限制如上文描述的一般數(shù)據(jù)倉庫107的存儲類型、存儲部分?jǐn)?shù)目或者其它特性。
每一個數(shù)據(jù)存儲部分可以包括存儲容器109A/109B。存儲容器可以是數(shù)據(jù)倉庫的邏輯或物理分區(qū),并且每個數(shù)據(jù)存儲部分可以包括基本上任何數(shù)目的存儲容器。這些存儲容器可以是相同的大小或不同的大小,并且針對每一個容器的大小制定可以改變。存儲容器可以在數(shù)據(jù)存儲部分之間以及甚至在數(shù)據(jù)倉庫之間移動,如將在下文進(jìn)一步描述的。
本文中的實施例可以實現(xiàn)成作為單個的存儲器分級體系而管理存儲硬件,諸如閃存和HDD。這樣的實施例可以產(chǎn)生具有比閃存更大的容量以及比HDD更好的性能的存儲裝置。實施例可以描述方法或系統(tǒng),其中寫入以低延時被持久地提交,寫入具有與隨機讀取的最小干擾,數(shù)據(jù)和元數(shù)據(jù)二者被高效地移動到云存儲裝置,作為近乎線性的HDD配置而提供對于奇偶校驗(parity)的支持,并且數(shù)據(jù)校驗和基于每一文件是可配置的。這樣的系統(tǒng)可以實現(xiàn)許多不同的數(shù)據(jù)存儲部分,如上文所概述的??梢詫㈦S機I/O請求(諸如寫入)再定向到第一數(shù)據(jù)存儲部分(例如,108A)中。該數(shù)據(jù)存儲部分可以是用于處理隨機數(shù)據(jù)寫入的最快的層級。這樣的數(shù)據(jù)存儲硬件的示例可以包括閃速或非易失性雙列直插存儲器模塊(NVDIMM)。系統(tǒng)可以使用順序?qū)懭雽魅氲膶懭肱康仉x臺到HDD層級(例如,108B)。順序?qū)懭朐试S奇偶校驗彈性(resilience)實現(xiàn)方面的奇偶校驗寫入的優(yōu)化。
在一些實施例中,將隨機寫入發(fā)送給閃速存儲器并且然后使其離臺到HDD。因為硬驅(qū)動擅長順序IO,并且因為閃速存儲器可以非??焖俚貓?zhí)行隨機I/O,所以I/O吞吐量可以增加。當(dāng)隨機寫入被再定向到閃存(或者某種其它類型的數(shù)據(jù)存儲裝置)時,構(gòu)建順序數(shù)據(jù)片段以用于離臺到硬驅(qū)動、帶、光學(xué)或其它數(shù)據(jù)存儲裝置上。
在回寫緩存和類似的緩存方法中,在更快速的層級中重新布置數(shù)據(jù)使得其可以作為較高容量層級中的一個鄰近單元而離臺。向順序模式中的重新布置甚至在高容量層級中也留存重新布置。傳統(tǒng)的回寫緩存方案將把所緩存的寫入放“回到它們所屬的地方”,這是它們最終變?yōu)樗鼈兿蚱渲须x臺的層級中的隨機寫入的成本的制約的原因。
在本文的實施例中,所緩存的寫入片段以其整體進(jìn)行離臺。該方案的一個益處在于,其允許以幾乎與高容量存儲層級可以向最終的存儲層級順序地寫入的相同速度來執(zhí)行數(shù)據(jù)寫入。然而,如果在快速層級中分段,則數(shù)據(jù)將在高容量層級中保持在分段狀態(tài)。暫存(staging)區(qū)域可以被實現(xiàn)為(1)確保被再定向到閃存的數(shù)據(jù)寫入在暫存區(qū)域中被持久地提交使得它們可以組裝成順序流以用于離臺并且以低的延時被確認(rèn)。暫存區(qū)域還可以(2)在某一時間段內(nèi)收集寫入以便吸收塊覆寫,抑制離臺的吞吐量要求,并且進(jìn)一步(3)吸收爆發(fā)寫入(例如,其中寫入負(fù)載不一致的工作負(fù)荷)。
對于(1),將暫存區(qū)域?qū)崿F(xiàn)為持久地組裝塊使得它們可以順序地離臺。暫存區(qū)域不需要到I/O模式中的額外可見性以優(yōu)化離臺,因為用于向前進(jìn)展的離臺是最低限度地完全可預(yù)測的。所要求的閃速或其它存儲器的部分是HDD數(shù)目、冗余性方案以及那些HDD的順序?qū)懭胪掏铝康暮瘮?shù)。其主要不是HDD層級的大小的函數(shù)。在一個實施例中,對于每一盤的600 8KB寫入IOPS的目標(biāo),具有200個盤的配置可能實現(xiàn)最小1GB的寫入級閃存以便達(dá)成(1)。許多其余的閃存(或其它的快速層級存儲裝置)可以專用于讀取緩存。至少在一些實例中,可能合期望的是,相比于(1)嚴(yán)格要求的情況,具有專用于寫入暫存的更多空間。實施例可以被設(shè)計成不會比系統(tǒng)能夠繼續(xù)維持某一數(shù)目的每秒輸入/輸出操作(IOPS)和延時目標(biāo)的速度更快地離臺。具有額外的存儲容器(例如,109A/109B)可以允許更為智能的離臺以及臨時地處置非均勻的寫入工作負(fù)荷的機會。
系統(tǒng)可以配置成制約小的隨機寫入使得其不需要使離臺速率加速以便滿足傳入的寫入。就以上(1)而言,離臺區(qū)域的大小將確定用于制約的發(fā)言權(quán)(floor);(2)和(3)可以使用任何額外的寫入級供應(yīng)以改進(jìn)超出該發(fā)言權(quán)。照此,系統(tǒng)可以解譯用于卷的預(yù)期的理想寫入工作負(fù)荷并且然后限制其寫入離臺以便在任何給定時間消耗不多于該數(shù)量。
如上文提及的存儲容器是存儲卷的邏輯分區(qū)。存儲容器可以是量級為64MB(或者某種其它單位大?。┑慕o定卷的范圍。容器可以但不要求全部具有相同大小,并且容器大小可以是固定的、可配置的、或者動態(tài)可變的。容器不會重疊,并且因此,給定的塊一次存在于恰好一個的容器內(nèi)。文件盤區(qū)(extent)表格追蹤邏輯文件盤區(qū)在其處開始的邏輯塊尋址(LBA)。在本文的實施例中,這些表格可以被修改成記錄容器的身份(ID)以及該盤區(qū)在其中開始的該容器內(nèi)的偏移。為了在塊上執(zhí)行I/O,系統(tǒng)查找盤區(qū)的存儲容器的位置以找到實際位置。這是允許系統(tǒng)移動容器的位置而不咨詢或者修改文件盤區(qū)表格的間接水平。以該方式,容器可以包括整個文件或者許多不同文件的片段。至少在一些實施例中,容器ID和偏移可以以使得容器ID和偏移對的大小與塊偏移的大小相同的這種方式進(jìn)行編碼。編碼可以確保兩個不同的容器不會整理在一起——也就是說,在容器之間的地址空間中存在分離。
關(guān)于存儲容器的元數(shù)據(jù)可以在每一卷的單個索引中被追蹤,其中關(guān)鍵詞是容器ID并且值是關(guān)于容器的信息,包括但不限于以下各項:容器的當(dāng)前物理位置、是否可準(zhǔn)許移動該容器、以及向容器寫入的最后時間。實施例可以根據(jù)需要將數(shù)據(jù)寫入再定向到閃速層級中的容器。當(dāng)閃速容器填滿時,從閃存向HDD(或者某種其它高容量存儲裝置)移動容器。來自HDD的容器然后可以被選擇并且移動到閃存中以便利用隨后的寫入進(jìn)行填充。
當(dāng)在文件上做出寫入請求時,系統(tǒng)可以執(zhí)行以下過程:1)檢查該文件塊的當(dāng)前位置。如果其由閃存支持,則系統(tǒng)將允許寫入繼續(xù)。2)如果用于該文件盤區(qū)的分配處于HDD上或者部分地處于HDD上,則其處于HDD上的部分將被重新分配到閃存。3)選擇用于文件的閃存的部分將處在用于寫入再定向的相對小數(shù)目的容器之一內(nèi)。4)系統(tǒng)將允許繼續(xù)向重新分配的空間寫入。5)系統(tǒng)將生成日志記錄以追蹤文件盤區(qū)已經(jīng)被重新分配的事實。6)如果寫入請求是透寫(如在一些數(shù)據(jù)共享中的情況那樣),則系統(tǒng)將寫入再做日志記錄并且在確認(rèn)請求之前等待其來自存儲裝置的確認(rèn)。應(yīng)當(dāng)指出,校驗和生成——完整性流——沒有在以上步驟中提及。流是否具有用于其數(shù)據(jù)的校驗和與是否重新分配文件的片段以使系統(tǒng)保持高效地運行無關(guān)。
當(dāng)由系統(tǒng)接收并且確認(rèn)寫入時,閃速(或其它快速層級存儲)容器開始填滿。此時,系統(tǒng)可以從閃速層級選擇用于寫入的存儲容器以向HDD層級中離臺。系統(tǒng)可以與至該容器的并發(fā)IO請求同步。不再允許至該容器的覆寫繼續(xù)并且將其重新分配給不同的閃速容器。讀取可以繼續(xù),但是將在完成移動之后不可準(zhǔn)許。系統(tǒng)讀取容器的內(nèi)容并且選擇向其中離臺容器的HDD層級上的位置。系統(tǒng)將容器(例如,在大的順序?qū)懭胫校懭氲紿DD中。系統(tǒng)更新容器表格以指示容器已經(jīng)移動并且寫入陳述這一點的再做日志記錄。系統(tǒng)完成與至容器的原始位置的并發(fā)I/O請求的同步。數(shù)據(jù)讀取然后被排放并且再定向到新的位置。
系統(tǒng)將快速層級的某一小部分視為其正在填充的容器,其中意圖是將容器離臺到HDD層級。在連續(xù)的寫入工作負(fù)荷中,系統(tǒng)從閃存向HDD中連續(xù)地移動容器。當(dāng)盤填滿和/或變成分段時,更少的可獲得的存儲容器存在于高容量層級上。此時,系統(tǒng)可以讀取和重新寫入高容量(例如,HDD)層級中的分段片段以便壓縮/清除它們,或者系統(tǒng)可以從HDD向閃存旋轉(zhuǎn)容器并且將新的寫入裝入該容器內(nèi)的自由空間中。兩種方案實現(xiàn)讀取和寫入。將新的寫入裝入現(xiàn)有的容器中保持寫入工作負(fù)荷是可預(yù)測的:寫入路徑絕不在壓縮/清除上受阻。裝入新的寫入不會引入無意中混合熱(新的寫入)和冷(很久以前寫入的,仍然被分配的)數(shù)據(jù)的可能性??梢詫崿F(xiàn)某種形式的按需清除/碎片整理以幫助補償。這些概念將在下文分別關(guān)于圖2和3的方法200和300進(jìn)一步解釋。
鑒于以上描述的系統(tǒng)和架構(gòu),將參照圖2和3的流程圖更好地領(lǐng)會可以依照所公開的主題實現(xiàn)的方法。出于簡化解釋的目的,將方法示出和描述為一系列的塊。然而,應(yīng)當(dāng)理解和領(lǐng)會到,所要求保護(hù)的主題不受塊的次序所限制,因為一些塊可以以不同的次序發(fā)生和/或與來自本文所描繪和描述的那些的其它塊并發(fā)地發(fā)生。此外,可能并不要求所有被圖示的塊來實現(xiàn)在下文中描述的方法。
圖2圖示了用于高效地管理數(shù)據(jù)存儲的方法200的流程圖?,F(xiàn)在將頻繁參照環(huán)境100的組件和數(shù)據(jù)來描述方法200。
方法200包括接收尋址到數(shù)據(jù)倉庫內(nèi)的第一數(shù)據(jù)存儲部分的寫入請求(210)。例如,數(shù)據(jù)倉庫107可以從在計算機系統(tǒng)101上運行的應(yīng)用105中的一個或多個接收寫入請求106。數(shù)據(jù)倉庫107可以包括多個不同的邏輯或物理存儲區(qū)域108A/108B,其中每一個存儲區(qū)域包括被稱為存儲容器109A/109B的邏輯或物理分區(qū)。數(shù)據(jù)倉庫107對于在計算機系統(tǒng)上運行的應(yīng)用105而言可能看起來是單個數(shù)據(jù)倉庫,但是可以包括多個不同的存儲類型,包括NVRAM、SSD、HDD、云、帶、DVD、藍(lán)光或其它類型的存儲裝置、存儲陣列或存儲網(wǎng)絡(luò)。應(yīng)當(dāng)指出,盡管將數(shù)據(jù)倉庫107描繪為計算機系統(tǒng)101的部分,但是數(shù)據(jù)倉庫可以在計算機系統(tǒng)101的外部,或者可以包括在內(nèi)部的一些存儲組件以及在外部的一些存儲組件。
方法200接下來包括將所接收的寫入請求再定向到數(shù)據(jù)倉庫內(nèi)的第二部分?jǐn)?shù)據(jù)存儲,第二數(shù)據(jù)存儲部分包括一個或多個存儲容器,每一個存儲容器包括數(shù)據(jù)倉庫的邏輯地指定的部分(220)。所接收的寫入請求106可以一般地定向到數(shù)據(jù)倉庫107,或者可以定向到數(shù)據(jù)倉庫的某一部分。例如,寫入請求可以定向到第一數(shù)據(jù)存儲部分108A,并且然后可以再定向到第二數(shù)據(jù)存儲部分108B。每一個數(shù)據(jù)存儲部分可以包括存儲容器109A/109B,它們本身是在邏輯上被定義的順序字節(jié)流。
在一些實施例中,數(shù)據(jù)倉庫內(nèi)的第二數(shù)據(jù)存儲部分108B在執(zhí)行輸入/輸出(I/O)操作時比第一數(shù)據(jù)存儲部分108A更快速。在這樣的實施例中,第一數(shù)據(jù)存儲部分可以是高容量存儲裝置,諸如硬驅(qū)動、光盤或帶驅(qū)動,而第二數(shù)據(jù)存儲部分可以是快速層級存儲裝置,諸如SSD或緩存存儲器。因此,在該實施例中,發(fā)送給第一(高容量)數(shù)據(jù)存儲部分108A(或者僅僅在其處接收)的寫入請求被再定向到第二、快速層級數(shù)據(jù)存儲部分108B。以該方式,可以在更加能夠快速寫入數(shù)據(jù)并且更多地被定制用于快速寫入數(shù)據(jù)的存儲硬件上執(zhí)行數(shù)據(jù)寫入。這可降低可能在寫入數(shù)據(jù)時不那么快的存儲硬件(例如,高容量存儲設(shè)備)上發(fā)生的瓶頸。
方法200還包括確定要將所接收的寫入請求寫入到第二數(shù)據(jù)存儲部分上的哪個存儲容器(230)并且標(biāo)識要從第二數(shù)據(jù)存儲部分向第一數(shù)據(jù)存儲部分離臺的至少一個存儲容器(240)。存儲容器可以包括對應(yīng)于多個不同的數(shù)據(jù)文件的多個數(shù)據(jù)文件部分。因而,例如,第二數(shù)據(jù)存儲部分108B中的給定存儲容器109B可以包括各種整體文件以及文件的各種部分(即,部分文件)。然后,如果容器被移動,則僅用于該容器的元數(shù)據(jù)(例如,標(biāo)識容器的大小、其身份以及其所位于的地方)將需要更新。文件元數(shù)據(jù)將不需要更新。
可以以各種方式來執(zhí)行標(biāo)識要離臺的存儲容器。一旦(通過確定模塊110)確定要將寫入請求106寫入哪個存儲容器109B,計算機系統(tǒng)101的標(biāo)識模塊111可以標(biāo)識最近很少寫入到哪個容器。然后,最近很少被寫入的不管什么存儲容器被選擇為要離臺并且移動到第一(例如,高容量)存儲裝置108A的容器。以該方式,具有“冷”數(shù)據(jù)(即,在某一時間段內(nèi)未改變的數(shù)據(jù))的快速層級存儲裝置上的容器被移動到高容量存儲裝置以在快速層級存儲裝置上為“熱”數(shù)據(jù)(即,頻繁改變的數(shù)據(jù))騰出空間。在另一個示例中,標(biāo)識要從第二數(shù)據(jù)存儲部分向第一數(shù)據(jù)存儲部分離臺的存儲容器可以包括確定哪個容器最接近裝滿數(shù)據(jù)。因而,標(biāo)識模塊111可以找到裝滿數(shù)據(jù)的那些容器并且將那些容器標(biāo)記為準(zhǔn)備用于離臺到較低層級、較高容量的存儲裝置。
更進(jìn)一步,在另一個示例中,標(biāo)識要從快速層級數(shù)據(jù)存儲裝置向高容量數(shù)據(jù)存儲裝置離臺的存儲容器可以包括訪問指示了哪些存儲容器將不會在指定量的時間內(nèi)使用的線索。例如,用戶或者應(yīng)用(例如,105)可以提供指示了特定容器或容器集合將不會在指定量的時間內(nèi)使用的線索。標(biāo)識模塊111可以訪問和解譯該線索,并且把將不會被使用的那些容器標(biāo)記為準(zhǔn)備用于離臺到高容量存儲裝置。線索可以進(jìn)一步指定容器或文件是只讀的,并且因此,容器或文件可以被讀取或刪除,但是不會被覆寫。應(yīng)當(dāng)理解到,盡管在上文已經(jīng)描述了標(biāo)識可用于離臺的存儲容器的一些方法,但是許多其它算法和方法可以單獨地或者與其它方法或算法組合地被使用,以確定哪些存儲容器要離臺以及使它們何時離臺。例如,一些實施例可以將尚未裝滿但是快速填充的容器標(biāo)識為準(zhǔn)備用于離臺,或者可以給予優(yōu)勝于諸如充滿冷數(shù)據(jù)或者包括冷數(shù)據(jù)的其它算法的所暗示的容器離臺優(yōu)先級。
方法200還包括使所標(biāo)識的存儲容器離臺到第一數(shù)據(jù)存儲部分,其中被離臺的容器的數(shù)據(jù)以與離臺之前數(shù)據(jù)在所標(biāo)識的存儲容器中被存儲的次序相同的次序存儲在第一數(shù)據(jù)存儲部分上(250)。例如,離臺模塊112可以離臺或者移動由標(biāo)識模塊111標(biāo)識為準(zhǔn)備用于離臺的那些存儲容器109B。當(dāng)容器被移動時,被離臺的容器中的數(shù)據(jù)可以從一個數(shù)據(jù)存儲部分(例如,108B)移動到另一個數(shù)據(jù)存儲部分(例如,108A)。
例如,如圖5中所圖示,數(shù)據(jù)倉庫501可以包括兩個數(shù)據(jù)存儲部分502A和502B。盡管第一數(shù)據(jù)存儲部分502A包括多個存儲容器503,但是這些容器503D中的一個可以離臺(例如,通過圖1的模塊112)并且移動到第二數(shù)據(jù)存儲部分502B。容器包括存儲在其內(nèi)部的任何數(shù)據(jù)文件。這些數(shù)據(jù)文件可以是順序的并且在空間上對準(zhǔn),或者可以是分段的并且沒有空間對準(zhǔn)。當(dāng)容器從第一數(shù)據(jù)存儲裝置502A離臺到第二數(shù)據(jù)存儲裝置502B時,數(shù)據(jù)文件和文件部分以它們當(dāng)前被存儲的形式一起移動。因而,容器內(nèi)的數(shù)據(jù)分段地或者順序地一起移動,并且在其新位置中重新扎營后沒有被重新對準(zhǔn)。相應(yīng)地,被離臺的容器的數(shù)據(jù)存儲在第二數(shù)據(jù)存儲裝置502B上,例如以與離臺之前數(shù)據(jù)在第一數(shù)據(jù)存儲裝置502A中被存儲的次序相同的次序被存儲在第二數(shù)據(jù)存儲裝置502B上。
當(dāng)將離臺的容器的數(shù)據(jù)寫入到第二數(shù)據(jù)存儲部分時,可以將數(shù)據(jù)順序地寫入存儲設(shè)備。當(dāng)向高容量存儲設(shè)備或介質(zhì)(諸如,HDD、帶驅(qū)動或光盤)寫入時,這可以具有顯著益處。這樣的高容量存儲設(shè)備可以被優(yōu)化用于順序數(shù)據(jù)存儲。例如,在一種情況下,存儲容器可以離臺到順序約束的介質(zhì),諸如疊瓦式磁記錄(SMR)。當(dāng)其在高容量介質(zhì)上順序地寫入時,其它類型的存儲介質(zhì)和設(shè)備,諸如硬驅(qū)動和DVD,也更加高效地寫入數(shù)據(jù)。
一旦容器已經(jīng)被離臺,存儲容器映射表格就可以被更新,存儲容器映射表格指示了用于數(shù)據(jù)倉庫中的每一個容器的身份和位置。因為存儲容器映射表格存儲數(shù)據(jù)倉庫501中的每一個容器的身份和位置,所以圖1的離臺模塊112在移動容器時不需要打開文件或者打開文件位置。相反,離臺模塊112可以只是標(biāo)識容器的位置并且移動它,而沒有修改文件元數(shù)據(jù)。一旦容器已經(jīng)被移動,容器元數(shù)據(jù)就在存儲容器映射表格中被更新。甚至對于其中數(shù)據(jù)倉庫501是文件系統(tǒng)的卷或者以其它方式聯(lián)結(jié)到文件系統(tǒng)的情況也是如此。
在一些實施例中,如在圖6中所示,存儲容器可以從第一數(shù)據(jù)存儲部分離臺到其它數(shù)據(jù)存儲部分,諸如數(shù)據(jù)倉庫601內(nèi)的第三數(shù)據(jù)存儲部分603C。在數(shù)據(jù)倉庫601中,第一數(shù)據(jù)存儲部分603A在隨機寫入方面可以最慢,并且因此可以將寫入請求602再定向到第二數(shù)據(jù)存儲部分603B(在再定向604中)或者第三數(shù)據(jù)存儲部分603C(在再定向605中)。第二數(shù)據(jù)存儲裝置603B可以比第一個更快,但是比第三個更慢,并且第三個在寫入數(shù)據(jù)方面可以最快。在第二和第三數(shù)據(jù)存儲部分已經(jīng)處置了寫入請求之后,那些存儲部分上的各種容器可以在返回數(shù)據(jù)606中離臺并且返回到第一數(shù)據(jù)存儲部分603A。如果寫入已經(jīng)處于存儲系統(tǒng)的最快部分中的目標(biāo)數(shù)據(jù),則系統(tǒng)可以在該數(shù)據(jù)存儲部分處(并且潛在地在相同容器中)執(zhí)行寫入并且不對寫入請求602進(jìn)行再定向。
數(shù)據(jù)寫入因而可以由它們被尋址到的、它們可以被再定向的存儲部分進(jìn)行處置,或者如果它們沒有被尋址到特定數(shù)據(jù)部分,則可以由最快的可獲得的存儲部分進(jìn)行處置。在一個示例中,十個寫入請求可以傳入并且可去往十個不同的容器,或者去往相同的容器。如果十個寫入針對相同文件而傳入,則它們可以去往相同容器或者多個容器。如果數(shù)據(jù)為熱,則它們可以移動到快速層級存儲裝置,或者如果該數(shù)據(jù)隨后變冷,則其可以移動到較低層級存儲裝置。離臺步驟可以瞄準(zhǔn)與原始請求目標(biāo)不同的數(shù)據(jù)存儲部分。例如,如果硬驅(qū)動容器是寫入請求的最初目標(biāo),則最初瞄準(zhǔn)的HDD容器可以直接重新分配給SSD,從而繞過任何中間的存儲類型,諸如云或帶。
返回到圖1,在一些實施例中,彈性實現(xiàn)(諸如鏡像或奇偶校驗)可以在第一數(shù)據(jù)存儲部分108A中實現(xiàn),并且第二、不同的彈性實現(xiàn)在數(shù)據(jù)倉庫107內(nèi)的第二數(shù)據(jù)存儲部分108B中實現(xiàn)。數(shù)據(jù)寫入將跨多個HDD進(jìn)行寫入,其中部分文件在一個驅(qū)動上,并且部分文件在另一個驅(qū)動上。數(shù)據(jù)然后可以被讀取回來,可以計算奇偶校驗,并且可以將數(shù)據(jù)寫入到更快的數(shù)據(jù)存儲層級。
現(xiàn)在轉(zhuǎn)向圖3,圖示了用于高效地存儲數(shù)據(jù)的方法300的流程圖?,F(xiàn)在將頻繁參照圖4的環(huán)境400的組件和數(shù)據(jù)來描述方法300。
方法300包括訪問針對存儲容器的集合的使用信息的一個或多個部分,存儲容器包括數(shù)據(jù)倉庫的邏輯部分;(310)。例如,計算機系統(tǒng)401的數(shù)據(jù)訪問模塊405可以訪問存儲在數(shù)據(jù)倉庫413中的存儲容器414的使用信息416。計算機系統(tǒng)401可以包括至少一個硬件處理器402(或處理核),連同存儲器403和用于與其它計算系統(tǒng)通信的通信模塊404。由計算機系統(tǒng)401的數(shù)據(jù)訪問模塊訪問的使用信息416可以包括針對存儲容器的集合的離臺歷史。離臺歷史可以指示哪些存儲容器被移動、它們被移動到哪里以及它們何時被移動。
方法300包括確定存儲在至少一個存儲容器中的數(shù)據(jù)包括具有滿足一個或多個準(zhǔn)則的指定特性的數(shù)據(jù)(320)。計算機系統(tǒng)401的確定模塊406可以確定存儲在存儲容器414中的數(shù)據(jù)415具有滿足某些準(zhǔn)則407的某些特性。準(zhǔn)則可以例如包括數(shù)據(jù)至少在閾值量的時間內(nèi)尚未被訪問的指示。這樣的數(shù)據(jù)可以被說成是冷數(shù)據(jù)。在其中數(shù)據(jù)存儲部分是硬驅(qū)動的情況下,并且數(shù)據(jù)至少在閾值量的時間內(nèi)尚未被訪問時,以順序方式將該數(shù)據(jù)寫入到硬驅(qū)動的末尾。硬驅(qū)動的末尾可以是旋壓板的內(nèi)部并且可以是硬驅(qū)動的最不易可訪問的部分(即,花費最長量的時間來訪問的部分)。最冷的數(shù)據(jù)因而可以放置在硬驅(qū)動的最里面的部分上。在一些情況下,容器可以包括不可移動的數(shù)據(jù)(諸如,全局元數(shù)據(jù))。在那些情況下,容器不被離臺。
基于準(zhǔn)則407,確定模塊406確定要在與容器相關(guān)聯(lián)的數(shù)據(jù)415上執(zhí)行哪些操作408(330)。操作執(zhí)行模塊409然后在容器的數(shù)據(jù)上執(zhí)行那些操作(340)。在一個示例中,要在與容器414相關(guān)聯(lián)的數(shù)據(jù)415上執(zhí)行的操作包括將至少一個容器從第一數(shù)據(jù)存儲部分旋轉(zhuǎn)到第二數(shù)據(jù)存儲部分。隨時間逝去,當(dāng)數(shù)據(jù)被刪除、移動或者以其它方式改變時,可以在存儲容器中出現(xiàn)孔洞。通過旋轉(zhuǎn)容器,孔洞可以在各種數(shù)據(jù)存儲部分中被重新填充。操作可以包括將容器的數(shù)據(jù)移動到數(shù)據(jù)倉庫的指定部分(例如,至用于冷數(shù)據(jù)的硬驅(qū)動的內(nèi)側(cè),或者至用于熱數(shù)據(jù)的硬驅(qū)動的外側(cè))。這被稱為盤定區(qū)(regioning)412。其它操作包括將一個容器的數(shù)據(jù)411壓縮成更小大小的容器。一旦已經(jīng)將容器壓縮成新的更小大小的容器,就可以釋放舊的容器。
在一些實施例中,可以在數(shù)據(jù)存儲部分上預(yù)留隱藏的容器以用于重新定位容器。這些隱藏的容器提供用于重新定位容器的額外空間。以該方式,可以引入、填充新的容器,并且新的容器可以被離臺至較慢數(shù)據(jù)存儲裝置。存儲容器的離臺以及存儲容器的壓縮可以是基于數(shù)據(jù)使用,如由操作模塊409在410中所確定的。以該方式,可以基于涉及數(shù)據(jù)的各種特性(諸如,使用信息416)而在該數(shù)據(jù)上執(zhí)行許多不同操作。一旦已經(jīng)確定要執(zhí)行操作(諸如,從較快的存儲裝置向較慢的存儲裝置移動數(shù)據(jù)),操作執(zhí)行模塊409就可以執(zhí)行操作。相應(yīng)地,較快的數(shù)據(jù)存儲部分可以用于臨時地吸收較高的吞吐量操作(諸如,隨機寫入)并且數(shù)據(jù)可以在隨后的時間離臺到較慢的數(shù)據(jù)存儲部分。
因而,提供了高效地管理數(shù)據(jù)存儲的方法、系統(tǒng)和計算機程序產(chǎn)品。此外,提供了在數(shù)據(jù)倉庫中高效地存儲數(shù)據(jù)的方法、系統(tǒng)和計算機程序產(chǎn)品。
權(quán)利要求支持
實施例可以包括一種計算機系統(tǒng),包括執(zhí)行用于高效地管理數(shù)據(jù)存儲的計算機實現(xiàn)的方法的至少一個處理器,其中方法包括:接收尋址到數(shù)據(jù)倉庫107內(nèi)的第一數(shù)據(jù)存儲部分108A的寫入請求106,將所接收的寫入請求106再定向到數(shù)據(jù)倉庫內(nèi)的第二數(shù)據(jù)存儲部分108B,第二數(shù)據(jù)存儲部分包括一個或多個存儲容器109B,每一個存儲容器包括數(shù)據(jù)倉庫107的邏輯地指定的部分,確定要將所接收的寫入請求106寫入到第二數(shù)據(jù)存儲部分108B上的哪些存儲容器,標(biāo)識要從第二數(shù)據(jù)存儲部分108B離臺到第一數(shù)據(jù)存儲部分108A的存儲容器109B,以及使所標(biāo)識的存儲容器離臺到第一數(shù)據(jù)存儲部分108A,其中被離臺的容器的數(shù)據(jù)以與離臺之前數(shù)據(jù)在所標(biāo)識的存儲容器中被存儲的次序相同的次序存儲在第一數(shù)據(jù)存儲部分上。
在一些實施例中,數(shù)據(jù)倉庫內(nèi)的第二數(shù)據(jù)存儲部分在執(zhí)行隨機輸入/輸出(I/O)操作方面比第一數(shù)據(jù)存儲部分更快。在一些實施例中,數(shù)據(jù)倉庫還包括第三數(shù)據(jù)存儲部分,第三數(shù)據(jù)存儲部分在I/O操作方面比第一數(shù)據(jù)存儲部分更快,但是在I/O操作方面比第二數(shù)據(jù)存儲部分更慢。在一些實施例中,所標(biāo)識的存儲容器從第一數(shù)據(jù)存儲部分離臺到第三數(shù)據(jù)存儲部分,并且隨后從第三數(shù)據(jù)存儲部分離臺到第二數(shù)據(jù)存儲部分。
提供了一種用于高效地存儲數(shù)據(jù)的計算機實現(xiàn)的方法,其中方法包括:訪問用于存儲容器414的集合的使用信息416中的一個或多個部分,存儲容器包括數(shù)據(jù)倉庫413的邏輯部分,確定存儲在至少一個存儲容器中的數(shù)據(jù)415包括具有滿足一個或多個準(zhǔn)則407的指定特性的數(shù)據(jù),基于該一個或多個準(zhǔn)則來確定要在與容器相關(guān)聯(lián)的數(shù)據(jù)上執(zhí)行哪些操作408;以及在容器的數(shù)據(jù)上執(zhí)行那些操作408。
在一些實施例中,用于數(shù)據(jù)的準(zhǔn)則中的至少一個包括至少在閾值量的時間內(nèi)尚未訪問數(shù)據(jù)的指示,并且要在數(shù)據(jù)上執(zhí)行的操作包括將容器的數(shù)據(jù)移動到數(shù)據(jù)倉庫的指定部分。在一些實施例中,數(shù)據(jù)倉庫包括硬驅(qū)動,并且將至少在閾值量的時間內(nèi)尚未被訪問的數(shù)據(jù)寫入到硬驅(qū)動的末尾。在一些實施例中,要在與容器相關(guān)聯(lián)的數(shù)據(jù)上執(zhí)行的操作包括將至少一個容器從第一數(shù)據(jù)存儲部分旋轉(zhuǎn)到第二數(shù)據(jù)存儲部分,使得容器中的孔洞在第一數(shù)據(jù)存儲部分上被重新填充。
提供了一種計算機系統(tǒng),包括以下各項:一個或多個處理器;用于接收尋址到數(shù)據(jù)倉庫107內(nèi)的第一數(shù)據(jù)存儲部分108A的寫入請求106的接收器104,用于將所接收的寫入請求106再定向到數(shù)據(jù)倉庫內(nèi)的第二數(shù)據(jù)存儲部分108B的再定向模塊,第二數(shù)據(jù)存儲部分包括一個或多個存儲容器109B,每一個存儲容器包括數(shù)據(jù)倉庫107的邏輯地指定的部分,用于確定要將所接收的寫入請求106寫入到第二數(shù)據(jù)存儲部分108B上的哪個存儲容器的確定模塊110,用于標(biāo)識要從第二數(shù)據(jù)存儲部分108B離臺到第一數(shù)據(jù)存儲部分108A的至少一個存儲容器的標(biāo)識模塊111,以及用于將所標(biāo)識的存儲容器離臺到第一數(shù)據(jù)存儲部分108A的離臺模塊112,其中被離臺的容器的數(shù)據(jù)被順序地存儲在第一數(shù)據(jù)存儲部分上。
在一些實施例中,標(biāo)識要從第二數(shù)據(jù)存儲部分離臺到第一數(shù)據(jù)存儲部分的至少一個存儲容器包括訪問指示了哪些存儲容器將不會在指定量的時間內(nèi)被使用的線索。在一些實施例中,所述至少一個存儲容器包括對應(yīng)于多個不同數(shù)據(jù)文件的多個數(shù)據(jù)文件部分。一些實施例還包括更新指示了針對數(shù)據(jù)倉庫中的每一個容器的身份和位置的容器映射表格。在一些實施例中,第一彈性實現(xiàn)在第一數(shù)據(jù)存儲部分中實現(xiàn),并且第二、不同的彈性實現(xiàn)在數(shù)據(jù)倉庫內(nèi)的第二數(shù)據(jù)存儲部分中實現(xiàn)。在一些實施例中,標(biāo)識要從第二數(shù)據(jù)存儲部分離臺到第一數(shù)據(jù)存儲部分的存儲容器包括確定哪個容器最近很少被寫入。在一些實施例中,標(biāo)識要從第二數(shù)據(jù)存儲部分離臺到第一數(shù)據(jù)存儲部分的存儲容器包括確定哪個容器填滿數(shù)據(jù),使得填滿的容器從第二數(shù)據(jù)存儲部分離臺并且移動到第一數(shù)據(jù)存儲部分。
本文描述的概念和特征可以體現(xiàn)在其它具體形式中而不脫離其精神或描述特性。所描述的實施例要在所有的方面中被視為僅說明性而非限制性的。本公開的范圍因此由隨附權(quán)利要求而不是前面的描述所指示。落入權(quán)利要求的等同方案的含義和范圍內(nèi)的所有改變都被包含在其范圍內(nèi)。