本公開涉及計算機技術(shù)領(lǐng)域,具體地,涉及一種數(shù)據(jù)存儲方法及裝置。
背景技術(shù):
隨著數(shù)據(jù)存儲技術(shù)的高速發(fā)展,諸如SSD(Solid State Drives,固態(tài)硬盤)等等數(shù)據(jù)存儲裝置由于具有讀寫速度快、抗震動、低功耗、無噪音、低熱量、以及質(zhì)量輕等特點,已被廣泛應用于軍事、車載、工業(yè)、醫(yī)療、和航空等領(lǐng)域。
元數(shù)據(jù)(Metadata)又被稱為中介數(shù)據(jù)或中繼數(shù)據(jù),是用來描述資源數(shù)據(jù)的屬性信息的數(shù)據(jù),比如元數(shù)據(jù)可以指示資源數(shù)據(jù)的存儲位置、數(shù)據(jù)量等等信息。在將資源數(shù)據(jù)存入數(shù)據(jù)存儲裝置時,通常會對應存儲資源數(shù)據(jù)的元數(shù)據(jù),進而實現(xiàn)管理資源數(shù)據(jù)的目的。
目前,通常會周期性地對存儲在非易失性存儲器(比如閃存FLASH),中的元數(shù)據(jù)進行刷新,即周期性地將最新的元數(shù)據(jù)存入FLASH中,以便對資源數(shù)據(jù)進行管理。
技術(shù)實現(xiàn)要素:
本公開的目的是提供一種數(shù)據(jù)存儲方法及裝置,用于減小元數(shù)據(jù)寫入非易失性存儲器的數(shù)據(jù)量。
第一方面,提供一種數(shù)據(jù)存儲方法,應用于數(shù)據(jù)存儲裝置,包括:
將數(shù)據(jù)寫入所述數(shù)據(jù)存儲裝置;
根據(jù)所述數(shù)據(jù)的存儲信息,在所述數(shù)據(jù)存儲裝置的內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù);
確定所述更新版本的元數(shù)據(jù)與所述數(shù)據(jù)存儲裝置的非易失性存儲器中的最新版本的元數(shù)據(jù)之間的差異數(shù)據(jù);
將所述差異數(shù)據(jù)存入所述非易失性存儲器。
可選的,所述非易失性存儲器中存儲有基礎(chǔ)版本的元數(shù)據(jù),及至少一個歷史確定的差異數(shù)據(jù),所述方法還包括:
利用所述至少一個歷史確定的差異數(shù)據(jù),對所述基礎(chǔ)版本的元數(shù)據(jù)進行更新,以得到所述最新版本的元數(shù)據(jù)。
可選的,將所述差異數(shù)據(jù)存入所述非易失性存儲器,包括:
在所述差異數(shù)據(jù)達到預設閾值時,將所述差異數(shù)據(jù)存入所述非易失性存儲器。
可選的,在根據(jù)所述數(shù)據(jù)的存儲信息,在所述數(shù)據(jù)存儲裝置的內(nèi)存中更新元數(shù)據(jù)之前,還包括:
判斷所述數(shù)據(jù)的寫入方式,其中,所述寫入方式包括隨機寫和順序?qū)懀?/p>
根據(jù)所述數(shù)據(jù)的存儲信息,在所述數(shù)據(jù)存儲裝置的內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù),包括:
在所述數(shù)據(jù)的寫入方式為隨機寫時,根據(jù)所述數(shù)據(jù)的存儲信息,在所述內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù)。
可選的,在判斷所述數(shù)據(jù)的寫入方式之后,還包括:
在所述數(shù)據(jù)的寫入方式為順序?qū)憰r,將所述數(shù)據(jù)存儲在所述數(shù)據(jù)存儲裝置的起始地址和所述數(shù)據(jù)的數(shù)據(jù)量存入所述非易失性存儲器。
可選的,將所述數(shù)據(jù)存儲在所述數(shù)據(jù)存儲裝置的起始地址和所述數(shù)據(jù)的數(shù)據(jù)量存入所述非易失性存儲器,包括:
將包括所述起始地址、所述數(shù)據(jù)量、所述非易失性存儲器的壞塊分布狀況、及所述非易失性存儲器的物理分布狀況的信息存入所述非易失性存儲器。
第二方面,提供一種數(shù)據(jù)存儲裝置,包括內(nèi)存、非易失性存儲器及控制器;其中,
所述控制器用于將數(shù)據(jù)寫入所述數(shù)據(jù)存儲裝置;根據(jù)所述數(shù)據(jù)的存儲信息,在所述內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù);確定所述更新版本的元數(shù)據(jù)與所述非易失性存儲器中的最新版本的元數(shù)據(jù)之間的差異數(shù)據(jù);及,將所述差異數(shù)據(jù)存入所述非易失性存儲器。
可選的,所述非易失性存儲器中存儲有基礎(chǔ)版本的元數(shù)據(jù),及至少一個歷史確定的差異數(shù)據(jù),所述控制器用于:
利用所述至少一個歷史確定的差異數(shù)據(jù),對所述基礎(chǔ)版本的元數(shù)據(jù)進行更新,以得到所述最新版本的元數(shù)據(jù)。
可選的,所述控制器用于:
在所述差異數(shù)據(jù)達到預設閾值時,將所述差異數(shù)據(jù)存入所述非易失性存儲器。
可選的,所述控制器還用于:
在根據(jù)所述數(shù)據(jù)的存儲信息,在所述內(nèi)存中更新元數(shù)據(jù)之前,判斷所述數(shù)據(jù)的寫入方式,其中,所述寫入方式包括隨機寫和順序?qū)懀?/p>
在所述數(shù)據(jù)的寫入方式為隨機寫時,根據(jù)所述數(shù)據(jù)的存儲信息,在所述內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù)。
可選的,所述控制器還用于:
在判斷所述數(shù)據(jù)的寫入方式之后,在所述數(shù)據(jù)的寫入方式為順序?qū)憰r,將所述數(shù)據(jù)存儲在所述數(shù)據(jù)存儲裝置的起始地址和所述數(shù)據(jù)的數(shù)據(jù)量存入所述非易失性存儲器。
可選的,所述控制器用于:
將包括所述起始地址、所述數(shù)據(jù)量、所述非易失性存儲器的壞塊分布狀況、及所述非易失性存儲器的物理分布狀況的信息存入所述非易失性存儲器。
本公開實施例中,可以在將數(shù)據(jù)寫入數(shù)據(jù)存儲裝置時,根據(jù)寫入的數(shù)據(jù)的信息,更新存儲在數(shù)據(jù)存儲裝置的內(nèi)存中的元數(shù)據(jù),進而得到更新版本的元數(shù)據(jù),再將更新版本的元數(shù)據(jù)與存儲在非易失性存儲器中的最新版本的元數(shù)據(jù)進行比較,得到差異數(shù)據(jù),最后將差異數(shù)據(jù)存入非易失性存儲器中。這樣,在刷新非易失性存儲器中的元數(shù)據(jù)時,存入非易失性存儲器中的是相鄰兩個版本的元數(shù)據(jù)間的差異數(shù)據(jù),而不是存入的完整的更新版本的元數(shù)據(jù),可以有效地減小了元數(shù)據(jù)的寫入量,同時,由于對非易失性存儲器而言,擦寫的次數(shù)可能是有限的,減小了元數(shù)據(jù)的寫入量也就一定程度上減少了擦寫的次數(shù),相對延長了數(shù)據(jù)存儲裝置的壽命。
本公開的其他特征和優(yōu)點將在隨后的具體實施方式部分予以詳細說明。
附圖說明
附圖是用來提供對本公開的進一步理解,并且構(gòu)成說明書的一部分,與下面的具體實施方式一起用于解釋本公開,但并不構(gòu)成對本公開的限制。在附圖中:
圖1為本公開實施例中數(shù)據(jù)存儲方法的流程圖。
圖2為本公開實施例中寫元數(shù)據(jù)版本更新方式的示意圖。
圖3為本公開實施例中數(shù)據(jù)存儲裝置的結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖對本公開的具體實施方式進行詳細說明。應當理解的是,此處所描述的具體實施方式僅用于說明和解釋本公開,并不用于限制本公開。
在對本公開提供的數(shù)據(jù)存儲方法進行說明之前,首先對本公開涉及的相關(guān)技術(shù)進行說明。
本公開實施例中,數(shù)據(jù)存儲裝置例如可以是SSD,即,用固態(tài)電子存儲芯片陣列制成的硬盤。目前,SSD的存儲介質(zhì)一般可以有兩種,一種是采用FLASH芯片作為存儲介質(zhì),另外一種是采用動態(tài)隨機存取存儲器(Dynamic Random Access Memory,DRAM)作為存儲介質(zhì)。其中,采用FLASH芯片作為存儲介質(zhì)的SSD,它的外觀可以被制作成多種模樣,例如:筆記本硬盤、微硬盤、存儲卡等樣式。
相關(guān)技術(shù)中,數(shù)據(jù)存儲裝置(比如SSD)的非易失性存儲器FLASH芯片中存儲有數(shù)據(jù)存儲裝置中的全部資源數(shù)據(jù)的元數(shù)據(jù),在數(shù)據(jù)存儲裝置上電后,元數(shù)據(jù)可以被讀到內(nèi)存中,那么在向數(shù)據(jù)存儲裝置寫入數(shù)據(jù)時,寫入數(shù)據(jù)的元數(shù)據(jù)會先記錄在數(shù)據(jù)存儲裝置的內(nèi)存中,也就是對內(nèi)存中的元數(shù)據(jù)進行更新,隨著越來越多的數(shù)據(jù)寫入數(shù)據(jù)存儲裝置,將導致內(nèi)存中的元數(shù)據(jù)不斷地更新。當內(nèi)存中的元數(shù)據(jù)更新到一定程度(比如設定內(nèi)存中元數(shù)據(jù)的寫入量達到全盤元數(shù)據(jù)的1/8)之后便會觸發(fā)元數(shù)據(jù)的刷新,即將內(nèi)存中更新后的元數(shù)據(jù)存入FLASH芯片中。通常情況下,為了盡可能地恢復因異常掉電而丟失的數(shù)據(jù),一般不會將元數(shù)據(jù)的刷新周期設置得太大,因此,相鄰兩個版本的元數(shù)據(jù)之間有大部分是相同的,可見,存儲的元數(shù)據(jù)存在重合部分,大量重復的元數(shù)據(jù)占用較多的非易失存儲器的空間。
本公開充分考慮了相關(guān)技術(shù),提供一種數(shù)據(jù)存儲方法,用于減小元數(shù)據(jù)寫入非易失性存儲器的量。請參見圖1,圖1是根據(jù)一示例性實施例示出的一種數(shù)據(jù)存儲方法的流程圖,該方法可以應用于數(shù)據(jù)存儲裝置。如圖1所示,該方法包括以下步驟:
步驟S11:將數(shù)據(jù)寫入數(shù)據(jù)存儲裝置。
步驟S12:根據(jù)數(shù)據(jù)的存儲信息,在數(shù)據(jù)存儲裝置的內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù)。
步驟S13:確定更新版本的元數(shù)據(jù)與數(shù)據(jù)存儲裝置的非易失性存儲器中的最新版本的元數(shù)據(jù)之間的差異數(shù)據(jù)。
步驟S14:將差異數(shù)據(jù)存入非易失性存儲器。
元數(shù)據(jù)也就是用來記錄數(shù)據(jù)屬性信息的數(shù)據(jù),比如元數(shù)據(jù)可以包括數(shù)據(jù)的存儲地址,那么通過元數(shù)據(jù)便能夠從數(shù)據(jù)存儲裝置中找到相應的數(shù)據(jù)。內(nèi)存中存儲的元數(shù)據(jù)可以是用于描述大量的數(shù)據(jù)的元數(shù)據(jù),比如可以包括數(shù)據(jù)存儲裝置存儲的全部數(shù)據(jù)中每個數(shù)據(jù)的存儲地址,等等。
在將數(shù)據(jù)寫入數(shù)據(jù)存儲裝置時,可以根據(jù)寫入的數(shù)據(jù)的存儲信息,對數(shù)據(jù)存儲裝置的內(nèi)存中存儲的元數(shù)據(jù)進行更新。數(shù)據(jù)的存儲信息比如可以包括數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置中的地址等信息,更新后便能得到更新版本的元數(shù)據(jù),即記錄有寫入的數(shù)據(jù)的屬性信息的元數(shù)據(jù)。也就是說,每寫入一個數(shù)據(jù),都會對內(nèi)存中的元數(shù)據(jù)進行更新。
在得到更新版本的元數(shù)據(jù)后,可以計算內(nèi)存中存儲的更新版本的元數(shù)據(jù)與非易失性存儲器(比如FLASH芯片)中最新版本的元數(shù)據(jù)之間的差異數(shù)據(jù),然后將差異數(shù)據(jù)存入非易失性存儲器中。由于內(nèi)存中的更新版本的元數(shù)據(jù)是在非易失性存儲器中最新版本的元數(shù)據(jù)的基礎(chǔ)上進行更新的,因此,內(nèi)存中的更新版本的元數(shù)據(jù)與非易失性存儲器中的最新版本的元數(shù)據(jù)之間的差異不會太大,那么計算兩個版本的元數(shù)據(jù)之間的差異,比如可以在兩個版本的元數(shù)據(jù)間進行異或運算,便可以得到基本為0的稀疏矩陣,對稀疏矩陣進行壓縮,便可以得到差異數(shù)據(jù)。當然,由于差異數(shù)據(jù)的數(shù)據(jù)量可能較小,那么在存儲差異數(shù)據(jù)時,可以將多個差異數(shù)據(jù)存儲在同一頁(page)存儲空間中,進而節(jié)省存儲空間。
在計算差異數(shù)據(jù)時,非易失性存儲器中可能只存儲有一個版本的元數(shù)據(jù),說明歷史上還沒有存儲過差異數(shù)據(jù),那么可以直接將這一個版本的元數(shù)據(jù)確定為最新版本的元數(shù)據(jù)來計算差異數(shù)據(jù);或者,在計算差異數(shù)據(jù)時,非易失性存儲器中可能存儲有不止一個版本的元數(shù)據(jù),說明歷史上有存入過差異數(shù)據(jù),以下將對存在差異數(shù)據(jù)的情況下,重建最新版本的元數(shù)據(jù)的方式進行說明。
可選的,非易失性存儲器中存儲有基礎(chǔ)版本的元數(shù)據(jù),及至少一個歷史確定的差異數(shù)據(jù),那么可以利用至少一個歷史確定的差異數(shù)據(jù),對基礎(chǔ)版本的元數(shù)據(jù)進行更新,以得到最新版本的元數(shù)據(jù)。
例如,請參見圖2,數(shù)據(jù)存儲裝置的內(nèi)存中存儲有根據(jù)寫入的數(shù)據(jù)更新后的更新版本的元數(shù)據(jù),非易失性存儲器中存儲有基礎(chǔ)版本的元數(shù)據(jù)、差異數(shù)據(jù)1及差異數(shù)據(jù)2,那么可以從基礎(chǔ)版本的元數(shù)據(jù)開始,分別更新差異數(shù)據(jù)1和差異數(shù)據(jù)2,進而得到非易失性存儲器中的最新版本的元數(shù)據(jù)。
當然,為了避免迭代次數(shù)過多,可以定期地刷新基礎(chǔ)版本的元數(shù)據(jù),也就是將更新差異數(shù)據(jù)后的元數(shù)據(jù)作為新的基礎(chǔ)版本的元數(shù)據(jù),本公開實施例對此不作限定。
通過上述技術(shù)方案,存入非易失性存儲的是相鄰兩個版本的元數(shù)據(jù)之間的差異數(shù)據(jù),從而可以避免將重復的元數(shù)據(jù)寫入內(nèi)存中,這樣即能夠達到刷新元數(shù)據(jù)的目的,又能有效減小元數(shù)據(jù)的寫入量,同時也減少了非易失性存儲器的擦寫的次數(shù),相對延長了數(shù)據(jù)存儲裝置的壽命。
可選的,可以在差異數(shù)據(jù)達到預設閾值時,再將差異數(shù)據(jù)存入非易失性存儲器。
本公開實施例對于預設閾值究竟是多少不作限定,預設閾值可以是數(shù)據(jù)存儲裝置在出廠時設置好的,或者也可以是用戶根據(jù)使用情況自行設定,以及設定之后還能根據(jù)需要進行修改的。例如,可以設定當差異數(shù)據(jù)達到非易失性存儲器中的最新版本的元數(shù)據(jù)的1/16時,則認為差異數(shù)據(jù)達到預設閾值。
也就是說,無需在每寫入一個數(shù)據(jù)時就將差異數(shù)據(jù)寫入非易失性存儲器中,隨著數(shù)據(jù)的不斷寫入,內(nèi)存中的元數(shù)據(jù)也不斷地進行更新,那么可以在內(nèi)存中的更新版本的元數(shù)據(jù)與非易失性存儲器中的最新版本的元數(shù)據(jù)之間的差異數(shù)據(jù)達到預設閾值時,再去將差異數(shù)據(jù)存入非易失性存儲器中。這樣,既能達到刷新元數(shù)據(jù)的目的,也盡可能地減小了數(shù)據(jù)存儲裝置的運算量。
可選的,在根據(jù)數(shù)據(jù)的存儲信息,在數(shù)據(jù)存儲裝置的內(nèi)存中更新元數(shù)據(jù)之前,還可以判斷數(shù)據(jù)的寫入方式,其中,寫入方式包括隨機寫和順序?qū)?;那么可以在?shù)據(jù)的寫入方式為隨機寫時,再根據(jù)數(shù)據(jù)的存儲信息,在內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù)。
在寫入數(shù)據(jù)時,可以對寫操作進行隔離,分離出隨機寫和順序?qū)?,比如可以在非易失性存儲器的介質(zhì)層提供寫入隔離,將隨機寫與順序?qū)懜綦x到不同的寫入點,進而達到分別管理隨機寫數(shù)據(jù)的元數(shù)據(jù)和順序?qū)憯?shù)據(jù)的元數(shù)據(jù)的目的。本公開實施例中,可以在寫入的數(shù)據(jù)的寫入方式為隨機寫時,執(zhí)行步驟S11-步驟S14的數(shù)據(jù)存儲方法,進而達到減小隨機寫方式下的元數(shù)據(jù)的寫入量。
可選的,在數(shù)據(jù)的寫入方式為順序?qū)憰r,可以將數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置的起始地址和數(shù)據(jù)的數(shù)據(jù)量存入非易失性存儲器。
由于寫入方式為順序?qū)懙臄?shù)據(jù)可能是數(shù)據(jù)量較大的數(shù)據(jù),比如數(shù)據(jù)量為2G的流媒體數(shù)據(jù),等等。在將隨機寫和順序?qū)懜綦x到不同的寫入點后,順序?qū)懙臄?shù)據(jù)可以寫入一段連續(xù)的存儲空間中,那么在記錄順序?qū)懙臄?shù)據(jù)的元數(shù)據(jù)時,只需記錄數(shù)據(jù)存儲的起始地址以及數(shù)據(jù)量大小即可,那么在恢復數(shù)據(jù)時,可以通過計算得出存入的數(shù)據(jù)存儲在哪段連續(xù)的地址中,進而找到存入的數(shù)據(jù)。當然,由于通過本公開實施例中的方式,得到的順序?qū)憯?shù)據(jù)的元數(shù)據(jù)的數(shù)據(jù)量較小,那么可以將多個順序?qū)憯?shù)據(jù)的元數(shù)據(jù)存儲在同一頁(page)中,以節(jié)省非易失性存儲器的存儲空間。通過這樣的方式,可以較好地減小順序?qū)憯?shù)據(jù)的元數(shù)據(jù)量。
可選的,在數(shù)據(jù)的寫入方式為順序?qū)懙那闆r下,可以將包括起始地址、數(shù)據(jù)量、非易失性存儲器的壞塊分布狀況、及非易失性存儲器的物理分布狀況的信息存入非易失性存儲器。
也就是說,在存儲順序?qū)憯?shù)據(jù)的元數(shù)據(jù)時,為了能夠更加準確地預測出順序?qū)憯?shù)據(jù)的存儲位置,除了記錄記錄數(shù)據(jù)存儲的起始地址和數(shù)據(jù)量外,還可以記錄非易失性存儲器的壞塊分布狀況和物理分布狀況。在預測存儲的隨機寫數(shù)據(jù)的存儲位置時,可以根據(jù)非易失性存儲器的物理分布狀況得到該非易失性存儲器的地址跳轉(zhuǎn)規(guī)律,再通過非易失性存儲器的壞塊分布狀況除去其中的壞塊,便能夠較為準確地得到順序?qū)憯?shù)據(jù)的存儲位置。這樣,可以在減小順序?qū)憯?shù)據(jù)的元數(shù)據(jù)量的同時,更為準確的記錄數(shù)據(jù)的屬性信息。
基于同一發(fā)明構(gòu)思,本公開還提供了一種數(shù)據(jù)存儲裝置,該數(shù)據(jù)存儲裝置能夠執(zhí)行上述的數(shù)據(jù)存儲方法。請參考圖3,圖3是根據(jù)一示例性實施例示出的一種數(shù)據(jù)存儲裝置的示意圖。如圖3所示,該裝置300包括內(nèi)存301、非易失性存儲器302及控制器303。
控制器303用于將數(shù)據(jù)寫入數(shù)據(jù)存儲裝置300;根據(jù)數(shù)據(jù)的存儲信息,在內(nèi)存301中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù);確定更新版本的元數(shù)據(jù)與非易失性存儲器302中的最新版本的元數(shù)據(jù)之間的差異數(shù)據(jù);及,將差異數(shù)據(jù)存入非易失性存儲器302。
可選的,非易失性存儲器302中存儲有基礎(chǔ)版本的元數(shù)據(jù),及至少一個歷史確定的差異數(shù)據(jù),控制器303用于:
利用至少一個歷史確定的差異數(shù)據(jù),對基礎(chǔ)版本的元數(shù)據(jù)進行更新,以得到最新版本的元數(shù)據(jù)。
可選的控制器303用于:
在差異數(shù)據(jù)達到預設閾值時,將差異數(shù)據(jù)存入非易失性存儲器302。
可選的控制器303還用于:
在根據(jù)數(shù)據(jù)的存儲信息,在內(nèi)存301中更新元數(shù)據(jù)之前,判斷數(shù)據(jù)的寫入方式,其中,寫入方式包括隨機寫和順序?qū)懀?/p>
在數(shù)據(jù)的寫入方式為隨機寫時,根據(jù)數(shù)據(jù)的存儲信息,在內(nèi)存301中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù)。
可選的控制器303還用于:
在判斷數(shù)據(jù)的寫入方式之后,在數(shù)據(jù)的寫入方式為順序?qū)憰r,將數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置300的起始地址和數(shù)據(jù)的數(shù)據(jù)量存入非易失性存儲器302。
可選的控制器303用于:
將包括起始地址、數(shù)據(jù)量、非易失性存儲器302的壞塊分布狀況、及非易失性存儲器302的物理分布狀況的信息存入非易失性存儲器302。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將固態(tài)硬盤的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得數(shù)據(jù)存儲裝置執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
具體來講,本申請實施例中的一種數(shù)據(jù)存儲方法對應的計算機程序指令可以被存儲在光盤,硬盤,U盤等存儲介質(zhì)上,當存儲介質(zhì)中的與一種數(shù)據(jù)存儲方法對應的計算機程序指令被一數(shù)據(jù)存儲裝置,比如固態(tài)硬盤讀取或被執(zhí)行時,包括如下步驟:
將數(shù)據(jù)寫入所述數(shù)據(jù)存儲裝置;
根據(jù)所述數(shù)據(jù)的存儲信息,在所述數(shù)據(jù)存儲裝置的內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù);
確定所述更新版本的元數(shù)據(jù)與所述數(shù)據(jù)存儲裝置的非易失性存儲器中的最新版本的元數(shù)據(jù)之間的差異數(shù)據(jù);
將所述差異數(shù)據(jù)存入所述非易失性存儲器。
可選的,所述非易失性存儲器中存儲有基礎(chǔ)版本的元數(shù)據(jù),及至少一個歷史確定的差異數(shù)據(jù),所述存儲介質(zhì)中還存儲有另外一些步驟,所述另外一些步驟在被執(zhí)行過程中,還包括:
利用所述至少一個歷史確定的差異數(shù)據(jù),對所述基礎(chǔ)版本的元數(shù)據(jù)進行更新,以得到所述最新版本的元數(shù)據(jù)。
可選的,所述存儲介質(zhì)中存儲的與步驟:將所述差異數(shù)據(jù)存入所述非易失性存儲器,對應的計算機指令在被執(zhí)行過程中,包括:
在所述差異數(shù)據(jù)達到預設閾值時,將所述差異數(shù)據(jù)存入所述非易失性存儲器。
可選的,所述存儲介質(zhì)中存儲的與步驟:根據(jù)所述數(shù)據(jù)的存儲信息,在所述數(shù)據(jù)存儲裝置的內(nèi)存中更新元數(shù)據(jù),對應的計算機指令在被執(zhí)行之前,還包括:
判斷所述數(shù)據(jù)的寫入方式,其中,所述寫入方式包括隨機寫和順序?qū)懀?/p>
所述存儲介質(zhì)中存儲的與步驟:根據(jù)所述數(shù)據(jù)的存儲信息,在所述數(shù)據(jù)存儲裝置的內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù),對應的計算機指令在被執(zhí)行過程中,包括:
在所述數(shù)據(jù)的寫入方式為隨機寫時,根據(jù)所述數(shù)據(jù)的存儲信息,在所述內(nèi)存中更新元數(shù)據(jù),以得到更新版本的元數(shù)據(jù)。
可選的,所述存儲介質(zhì)中存儲的與步驟:判斷所述數(shù)據(jù)的寫入方式,對應的計算機指令在被執(zhí)行之后,還包括:
在所述數(shù)據(jù)的寫入方式為順序?qū)憰r,將所述數(shù)據(jù)存儲在所述數(shù)據(jù)存儲裝置的起始地址和所述數(shù)據(jù)的數(shù)據(jù)量存入所述非易失性存儲器。
可選的,所述存儲介質(zhì)中存儲的與步驟:將所述數(shù)據(jù)存儲在所述數(shù)據(jù)存儲裝置的起始地址和所述數(shù)據(jù)的數(shù)據(jù)量存入所述非易失性存儲器,對應的計算機指令在被執(zhí)行過程中,包括:
將包括所述起始地址、所述數(shù)據(jù)量、所述非易失性存儲器的壞塊分布狀況、及所述非易失性存儲器的物理分布狀況的信息存入所述非易失性存儲器。
以上所述,以上實施例僅用以對本公開的技術(shù)方案進行了詳細介紹,但以上實施例的說明只是用于幫助理解本公開的方法及其核心思想,不應理解為對本公開的限制。本技術(shù)領(lǐng)域的技術(shù)人員在本公開揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應涵蓋在本公開的保護范圍之內(nèi)。