本發明專利技術涉及已驗證數據集合的非易失性介質日志記錄。將數據集合存儲在存儲集合中(例如被寫入到構成RAID陣列的硬盤驅動器的數據集合)可能會通過非順序寫入而降低所述存儲集合的性能,特別在存儲器件所迅速寫入的數據集合之后有順次跟隨的數據集合的情況下尤其如此。此外,由于數據集合和驗證器(例如校驗和)的非原子寫入和其間的故障(比如RAID寫入空洞的發生),存儲集合可能會表現出不一致。相反,可以在提交到存儲集合之前首先把數據集合和驗證器寫入以存儲在存儲器件的非易失性介質上。這樣的寫入可以被順序地寫入到日志,而不管各個數據集合在存儲集合中的位置如何;并且故障恢復可以簡單地涉及重新提交日志中的各條一致記錄以便校正對存儲集合的不完整寫入。
【技術實現步驟摘要】
已驗證數據集合的非易失性介質日志記錄
技術介紹
在計算領域內,許多情形涉及在一個或更多非易失性存儲器件(例如基于盤片的磁性和/或光學硬盤驅動器、固態存儲器件以及非易失性存儲器電路)上存儲數據。數據存儲的許多細節可以不同,比如字尺寸、尋址方法、將存儲器件的存儲空間劃分成一個或更多分區以及將存儲器件內的已分配空間暴露為計算環境內的一個或更多卷。在許多這樣的存儲情形中,可以利用各種技術來檢測對于數據的非意定改變。例如,器件的讀取或存儲邏輯中的錯誤、緩沖區欠載或溢出、存儲介質中的瑕疵或者外部干擾(比如宇宙射線)都可能不時導致在存儲于存儲介質上的數據中或者在從存儲介質讀取數 據中的非有意的改變。因此,在許多這樣的情形中,根據涉及對于對應的數據集合(例如不同的字、扇區、區段或其他數據集合)計算的驗證器(例如奇偶校驗位或校驗和)的檢錯方案將數據存儲在存儲器件上。所述驗證器可以被用來證實數據集合的內容已經被有效地存儲到存儲器件上和/或從存儲器件中讀取。作為一個這樣的例子,在存儲包括一個比特集合的數據集合的情境中,可以對各個比特應用異或(XOR)運算,從而得到可以存儲并且與該數據集合相關聯的一個奇偶校驗位。當后來讀取所述數據集合時,可以對其應用另一次異或運算,并且可以將結果與所述奇偶校驗位進行比較。任一個比特的改變都會導致這些XOR計算的失配,從而表明數據已被錯誤地存儲、改動或者從存儲器件錯誤地讀取。可以標識許多類型的驗證器,其在某些特征方面可能有所不同(例如易于計算,標識出數據集合的獄一f比特被改變的能力,以及能夠借以校正錯誤地讀取的數據部分的糾錯能力)。檢錯方案常常被用在廉價盤冗余陣列(RAID)陣列中,比如共用在一起以便獲得各種聚集屬性(比如改進吞吐量和自動數據鏡像)的硬盤驅動器集合。作為一個這樣的例子,RAID 4陣列涉及兩個或更多盤的集合,其中在所述陣列中包括一個盤,該盤不用來存儲用戶數據,而是用來存儲被存儲在其他盤上的數據的驗證器。例如,對于一個涉及每個存儲一兆兆字節數據的四個盤的RAID 4陣列,前三個盤的容量被共用從而形成用于用戶數據的三兆兆字節存儲空間,而第四個盤被包括在所述陣列中以保存用于存儲在前三個盤上的各個數據集合的驗證器(例如對于分別存儲在其他三個盤上的每三個64比特字,第四個盤包括一個驗證所述三個64比特字的完整性的64比特驗證器)。RAID陣列控制器包括被配置成實施針對所提供的驅動器集合的所選RAID級別的細節的電路(例如在接收到一個數據集合之后,將所述數據自動分配到三個用戶數據盤上,計算所述數據集合的驗證器,并且將驗證器存儲在第四個盤上)。所使用的RAID技術還可以實現附加的保護或特征;例如如果RAID 4陣列中的任何單個存儲器件發生故障,則可以通過使用剩余的存儲器件完全重建存儲在故障器件上的數據。
技術實現思路
提供本
技術實現思路
以簡化形式介紹下面在具體實施方式中進一步描述的一組概念。本
技術實現思路
不意圖標識出所要求保護的主題內容的關鍵因素或本質特征,也不意圖被用來限制所要求保護的主題內容的范圍。把數據寫入到存儲器件可能會存在幾個低效源頭和潛在問題。作為第一個例子,被寫入到存儲器件的數據集合可能涉及一個數據序列,比如寫入到存儲器件上的一個物理地址序列的數據。通過根據該序列寫入數據集合(例如作為鄰接數據塊的順序寫入),存儲器件可以獲得更快的查找時間、更高的吞吐量以及/或者由于查找時間和寫入操作的減少而導致的降低功率消耗和物理損耗。然而由于各種情況,存儲器件可能把所述數據序列作為兩個或更多子序列寫入,并且可能無法實現這些效率。作為第一個例子,針對寫入數據集合的請求可能包括兩個或更多針對寫入所述序列的一部分的請求(例如針對寫入地址1000-1015的第一請求和針對寫入地址1016到1031的第二請求),并且存儲器件可以單獨提交(commit)所述序列的每一個部分而不是一起提交整個序列。作為第二個例子,存儲器件可能接收到幾個寫入請求,并且在寫入序列的第一部分和序列的第二部分之間可能把一個不同的數據集合寫入在一個不同位置處,從而在第一部分與第二部分之間導致兩次附加的查找。這些和其他情況可以被標識為錯失了提升性能效率、功率效率以及存儲器件的使 用壽命的機會。在存儲基于驗證器的存儲集合時可能發生的第二個問題涉及存儲數據集合及其驗證器(或者反之亦然)之間的延遲。作為第一個例子,許多存儲器件只支持每次對一個位置(例如處于硬盤驅動器的寫入頭下方的位置,或者由固態存儲器件中的地址寄存器指定的位置)的寫入,并且對于數據的順序存儲涉及在驗證器之前寫入數據集合,或者反之亦然。作為第二個例子,如果數據集合和驗證器被存儲在不同的存儲器件上,則可能難以把第一存儲器件存儲數據集合的時刻與第二存儲器件存儲數據集合的驗證器的時刻同步。在這些和其他例子中,存儲數據集合和相應的驗證器可能不是按照同步方式發生的,而是按照順序方式發生的。然而在存儲數據集合之后并且在存儲驗證器之前可能發生(一個或多個)存儲器件的故障,比如掉電、硬件故障、軟件崩潰、或者從陣列當中意外地去除存儲器件。因此,驗證器與驗證器所表示的數據不匹配。由非原子寫入導致的這一問題有時被標識為RAID寫入空洞,其可能在所導致的許多后果當中顯現。例如,(一個或多個)存儲器件可能難以確定如何補救這一錯誤,例如所述失配表示錯誤的驗證器、數據集合的非意定改變(例如存儲集合的誤比特率(BER)的顯現)還是對于數據集合或驗證器的錯誤讀取。這一信息缺乏甚至可能危害最近沒有被寫入的數據集合的一部分的準確性的置信度。例如,如果其中一個存儲器件發生故障,則針對(利用錯誤的驗證器)從剩余的存儲器件恢復該存儲器件上的數據的嘗試可能導致錯誤的數據重建。例如,為了從已經丟失或受到破壞的特定卷恢復數據并且用修復的或替換存儲器件來替代,可以通過把相同位置(例如其他器件上的相同物理或邏輯地址)處的各個字與所述地址處的字集合的校驗和XOR在一起來計算所丟失的存儲器件上的數據的每一個字,并且該結果得到丟失的字。然而如果校驗和已經非有意地改變,則所述XOR運算得到錯誤的結果,并且會用錯誤的數據來替換所替代卷上的字。作為另一個例子,如果對于包括部分A和B的數據集合存儲驗證器C,并且在更新A和C時發生災難性故障,則計算機可能能夠識別出數據集合與驗證器C之間的失配。這一無能可能不僅會削弱在災難性故障時正參與寫入的A和C的置信度,而且還會削弱可能甚至長時間沒有被訪問過的B的置信度。這里給出了用于降低由于比如RAID寫入空洞之類的問題所導致的數據丟失和恢復時間延長的風險以及提高存儲集合的效率的技術。根據這些技術,在存儲集合當中的一個或更多存儲器件上可以生成一個日志,其被配置成存儲將被提交到存儲集合的數據集合。所述日志例如可以包括被結構化為一個循環數組的記錄序列,其中每一條記錄具有用以存儲一個數據集合以及為該數據集合計算的驗證器的容量。可以首先按照接收順序把將要寫入到存儲集合的所有數據集合連同為該數據集合計算的驗證器存儲在日志中。這些技術可以通過提供一種機制來減輕RAID寫入空洞的后果,通過所述機制可以在提交到存儲集合中的位置之前把非原子寫入存儲在存儲器件的非易失性存儲器上。如果在把數據集合寫入到日志的同時發生故障,則存儲在本文檔來自技高網...
【技術保護點】
一種在由至少一個存儲器件提供的存儲集合中存儲數據集合的方法,所述方法涉及具有處理器的計算機并且包括:在處理器上執行被配置成實施以下操作的指令:????在存儲器件上生成日志,所述日志被配置成存儲分別與一個驗證器相關聯的各個數據集合;????在接收到針對在存儲集合中的某一位置處存儲數據集合的請求之后,將所述數據集合存儲在日志中;????選擇存儲在日志中的數據集合的一個批次;以及????對于所述批次的對應數據集合:????????為該數據集合計算一個驗證器;????????將所述驗證器存儲日志中;????????將該數據集合和該數據集合的驗證器存儲在存儲集合中;以及????????在把該數據集合和該數據集合的驗證器存儲在存儲集合中之后,從日志中去除該數據集合。
【技術特征摘要】
...
【專利技術屬性】
技術研發人員:D摩斯,K梅拉,R納加,S費爾馬,S拉帕爾,
申請(專利權)人:微軟公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。