相關申請的交叉引用
本專利申請涉及:共同未決的共同轉讓的美國專利申請案第_____號,代理人卷號hgst-h20151246us1,于________提交的題為“methodofpreventingmetadatacorruptionbyusinganamespaceandamethodofverifyingchangestothenamespace(通過使用命名空間防止元數(shù)據(jù)損壞的方法以及驗證對該命名空間的改變的方法)”;以及共同未決的共同轉讓的美國專利申請案第_____號,代理人卷號hgst-h20151244us1,題為“generalizedwriteoperationsverificationmethod(一般化寫入操作驗證方法)”。上述申請出于所有目的通過引用以其全文結合在此。
本公開總體上涉及在數(shù)據(jù)存儲管理領域中以及更具體地在文件系統(tǒng)領域中預防元數(shù)據(jù)損壞。
背景技術:
在各種操作系統(tǒng)中,文件系統(tǒng)用于組織數(shù)字文件以便于對文件進行存儲和檢索。文件系統(tǒng)可以管理存儲在數(shù)據(jù)存儲設備上的數(shù)據(jù)塊并將其組織到文件和目錄中。元數(shù)據(jù)被文件系統(tǒng)用于維護數(shù)據(jù)塊的使用的信息,并且通常利用數(shù)據(jù)文件(例如,用戶數(shù)據(jù))被存儲在相同的存儲設備上。
文件系統(tǒng)元數(shù)據(jù)的一致性對于文件系統(tǒng)的運行和用戶數(shù)據(jù)的可訪問性是非常重要的。有時,最終用戶的工作負載可以觸發(fā)不當?shù)幕蝈e誤的行為,這對于不穩(wěn)定的和成熟的文件系統(tǒng)都是成立的?;謴褪軗p文件系統(tǒng)卷是非常耗時的,并且通常涉及在文件系統(tǒng)卷的未安裝狀態(tài)或離線狀態(tài)中運行的文件系統(tǒng)檢查實用程序。例如,通過對用戶和相關聯(lián)的應用程序造成數(shù)據(jù)訪問的不可接受延遲,這可以防止存儲設備高效且正確地運行。此外,尤其對于復雜的元數(shù)據(jù)損壞而言,恢復受損文件系統(tǒng)卷是重要的任務。因此,文件系統(tǒng)檢查實用程序不能通過使文件系統(tǒng)元數(shù)據(jù)從所有可能的損壞恢復到一致狀態(tài)來保證文件系統(tǒng)卷的一致性。
與使用檢查實用程序來恢復受損文件系統(tǒng)相比,防止文件系統(tǒng)元數(shù)據(jù)損壞是更有前景的方法。然而,防止損壞的現(xiàn)有技術非期望地且通常包括復雜的邏輯并且限定于個別文件系統(tǒng)和損壞原因。
技術實現(xiàn)要素:
提供一種具有增強效率、可靠性和一般性的能夠預留元數(shù)據(jù)的一致性的數(shù)據(jù)存儲系統(tǒng)也將是有利的。
本公開的實施例利用了一種驗證系統(tǒng),在文件系統(tǒng)元數(shù)據(jù)上執(zhí)行所請求的修改或其他寫操作之前,所述驗證系統(tǒng)實現(xiàn)了驗證過程。在對存儲設備中的文件系統(tǒng)卷進行初始化期間以及一旦為元數(shù)據(jù)結構預留了元數(shù)據(jù)區(qū)域,將表征元數(shù)據(jù)結構和元數(shù)據(jù)區(qū)域的信息存儲在存儲設備中,所述信息可能采用區(qū)域圖例的形式,所述區(qū)域圖例由如幻數(shù)簽名、節(jié)點大小、未來預留的集群大小以及元數(shù)據(jù)區(qū)域范圍等描述符組成。響應于請求更新存儲在元數(shù)據(jù)區(qū)域中的元數(shù)據(jù),針對所存儲的信息對請求中提供的相關信息進行驗證。此外,如果用戶數(shù)據(jù)寫入請求試圖修改元數(shù)據(jù)區(qū)域,則可以通過針對所存儲的關于元數(shù)據(jù)區(qū)域的信息來防止所述修改。同樣地,如果元數(shù)據(jù)寫入請求試圖修改任何元數(shù)據(jù)區(qū)域以外的(多個)物理扇區(qū),則同樣可以通過驗證過程來防止所述修改。此外,可以通過驗證,尤其是通過幻數(shù)簽名和/或元數(shù)據(jù)節(jié)點檢查的序列標識號,來防止由元數(shù)據(jù)寫入請求對元數(shù)據(jù)區(qū)域進行的不當?shù)男薷摹?/p>
如果驗證過程發(fā)現(xiàn)請求中提供的信息與如在元數(shù)據(jù)區(qū)域圖例中所存儲的信息之間的不一致性,則將請求修改當做是有害的或無效的并且可以不執(zhí)行。作為結果,可以保護所存儲的元數(shù)據(jù)免受潛在地不安全修改??梢灾付ù鎯υO備(例如,專用分區(qū)、分區(qū)表、專用非易失性存儲器芯片等)中的特定區(qū)域用于存儲命名空間,所述命名空間為所預留的元數(shù)據(jù)區(qū)域集合區(qū)域圖例。對于命名空間或區(qū)域圖例上的操作的請求也可以基于描述符的值服從于有效性驗證。驗證過程可以由軟件或在主機或存儲設備中實現(xiàn)的硬件邏輯來控制和執(zhí)行。
通過使用驗證系統(tǒng)和過程,可以有效防止根據(jù)本公開的文件系統(tǒng)卷免受元數(shù)據(jù)損壞,有利地減少或消除事后對如所要求的潛在耗時的和不可預測的恢復過程的需要。此外,由于驗證所依賴的信息有關元數(shù)據(jù)結構和元數(shù)據(jù)區(qū)域特性,因此所述信息固有地可用在各種文件系統(tǒng)中。因此,這種驗證過程對于不同類型的文件系統(tǒng)和損壞原因是有利地通用的。
在本公開的一個實施例中,驗證文件系統(tǒng)卷修改的方法包括:響應于用于修改文件系統(tǒng)卷的寫入請求,訪問與表征元數(shù)據(jù)結構的描述符集合相關聯(lián)的存儲值以及用于元數(shù)據(jù)結構的預留區(qū)域?;谒稣埱笠约芭c所述描述符集合相關聯(lián)的存儲值來驗證所述請求的有效性。
上述是概要,從而包含細節(jié)的簡化、概括和省略;因此,本領域的技術人員會認識到概要只是對本發(fā)明的舉例說明,決不意味著對本發(fā)明的任何限制。在后面闡述的非限制性具體實施方式中,完全由權利要求書限定的本發(fā)明的其他方面、發(fā)明性特征和優(yōu)點將變得顯而易見。
附圖說明
通過結合附圖閱讀以下具體實施方式將更好理解本發(fā)明的實施例,附圖中相同的參考字符用于指代相同元件,并且其中:
圖1展示了根據(jù)本公開的實施例的示例性驗證系統(tǒng),所述示例性驗證系統(tǒng)能夠防止不安全的數(shù)據(jù)存儲內容修改;
圖2展示了根據(jù)本公開的實施例的示例性邏輯架構,所述邏輯架構利用所存儲的描述符來驗證用于已驗證區(qū)域上進行元數(shù)據(jù)操作的寫入請求;
圖3a展示了根據(jù)本公開的實施例的用于表征元數(shù)據(jù)區(qū)域的示例性信息,所述元數(shù)據(jù)區(qū)域用于防止對相關聯(lián)的元數(shù)據(jù)結構進行的不安全操作;
圖3b展示了根據(jù)本公開的實施例的命名空間的示例性數(shù)據(jù)結構;
圖4展示了根據(jù)本公開的實施例的存儲設備中的命名空間的示例性安排;
圖5是流程圖,描繪了根據(jù)本公開的實施例的示例性驗證過程,所述驗證過程響應于用于在文件系統(tǒng)卷中改變內容(元數(shù)據(jù)或用戶數(shù)據(jù))的寫入操作;
圖6是流程圖,描繪了根據(jù)本公開的實施例的示例性過程,所述過程響應于用于創(chuàng)建命名空間的請求;
圖7a是流程圖,描繪了根據(jù)本公開的實施例的示例性驗證過程,所述驗證過程響應于用于刪除與分區(qū)相關聯(lián)的命名空間的請求;
圖7b是流程圖,描繪了根據(jù)本公開的實施例的示例性驗證過程,所述驗證過程響應于用于將區(qū)域圖例添加到命名空間的請求;
圖8a展示了根據(jù)本公開的實施例的示例性數(shù)據(jù)存儲系統(tǒng)的配置,所述數(shù)據(jù)存儲系統(tǒng)帶有駐留在主機上的驗證子系統(tǒng);
圖8b展示了根據(jù)本公開的實施例的另一示例性數(shù)據(jù)存儲系統(tǒng)的配置,所述數(shù)據(jù)存儲系統(tǒng)帶有駐留在存儲設備上的驗證子系統(tǒng);
圖9是框圖,展示了根據(jù)本公開的實施例的示例性計算系統(tǒng),所述計算系統(tǒng)能夠通過驗證過程來防對文件系統(tǒng)元數(shù)據(jù)進行的不當寫入操作;以及
圖10展示了根據(jù)本公開的實施例的驗證系統(tǒng)和過程的示例性配置。
具體實施方式
現(xiàn)在將詳細參考本發(fā)明的優(yōu)選實施例,在附圖中示出了所述實施例的示例。盡管將結合優(yōu)選實施例描述本發(fā)明,但將會理解的是它們并不旨在將本發(fā)明限制于這些實施例。相反,本發(fā)明旨在覆蓋替換,修改和等價物,其可以包括在由附加權利要求限定的本發(fā)明的精神和范圍內。此外,在以下本發(fā)明的實施例的具體實施方式中,為了提供本對發(fā)明徹底的理解闡明了許多特定細節(jié)。然而,本領域技術人員將意識到本發(fā)明可以以不同于這些具體細節(jié)而實施。在其他實例中,沒有對眾所周知的方法、過程、部件和電路進行具體實施方式以免不必要地對本發(fā)明的實施例的多個方面造成混淆。雖然為了清晰的目的,方法被描繪為一系列編號步驟,但編號并不必須表示步驟的順序。應該理解的是,可以跳過、并行執(zhí)行、或不需要保持嚴格序列順序執(zhí)行這些步驟中的一些。示出本發(fā)明的實施例的附圖是半圖解的而不是按比例的,并且,特別地,一些大小是為了表示清晰,并且在附圖中被夸大示出。類似地,雖然為了便于描述,附圖中的視圖通常示出類似的方向,但是附圖中的描繪在很大程度上是任意的。通常,能夠在任何方向中操作本發(fā)明。
概念與命名
然而,應當記住,所有這些和類似的術語與適當?shù)奈锢砹肯嚓P聯(lián),并且只是應用于這些量的方便標簽。除非另有說明,如從以下討論顯而易見的是,應認識到在整個本發(fā)明中,利用術語例如“處理”或“訪問”或“執(zhí)行”或“存儲”或“渲染”等的討論是指計算機系統(tǒng)或相似電子計算裝置的動作和處理,這些裝置將計算機系統(tǒng)的寄存器和內存以及其他計算機可讀介質中表示為物理(電子)量的數(shù)據(jù)處理并轉換為計算機系統(tǒng)內存或寄存器或其他這類信息存儲、傳輸或顯示裝置中的相似表示為物理量的其他數(shù)據(jù)。當部件出現(xiàn)在若干實施例中時,使用相同參考號表示所述部件與原始實施例中所展示的部件相同。
用于安全元數(shù)據(jù)修改的一般化驗證方案
總體上,本公開的實施例提供了驗證機制以基于表征元數(shù)據(jù)結構和/或元數(shù)據(jù)區(qū)域的描述符來防止不安全的數(shù)據(jù)存儲內容修改。在元數(shù)據(jù)區(qū)域分配和初始化期間,可以生成和存儲描述符。針對所存儲的關于預留的元數(shù)據(jù)區(qū)域的描述符來驗證針對數(shù)據(jù)存儲內容修改的請求,以便判定所請求的操作是否傾向于導致元數(shù)據(jù)的不一致性。
圖1展示了根據(jù)本公開的實施例的示例性驗證系統(tǒng)100,所述示例性驗證系統(tǒng)能夠防止不安全的數(shù)據(jù)存儲內容修改。如圖所示,驗證系統(tǒng)100包括文件系統(tǒng)驅動程序110、存儲設備140中的文件系統(tǒng)卷120以及文件系統(tǒng)創(chuàng)建實用程序,所述文件系統(tǒng)創(chuàng)建實用程序在這個示例中是mkfs實用程序130。系統(tǒng)100還包括存儲驅動程序(未示出),所述存儲驅動程序與mkfs實用程序130和文件系統(tǒng)驅動程序110合作以實現(xiàn)驗證過程。
更具體地,mkfs實用程序130通過預留和初始化存儲空間(例如,元數(shù)據(jù)區(qū)域122和123)來為存儲設備140的分區(qū)內部的元數(shù)據(jù)結構創(chuàng)建文件系統(tǒng)卷120(如由“(2)”所示)。根據(jù)本公開,mkfs實用程序還可以創(chuàng)建存儲在存儲設備中(如由“(1)”所示)中的命名空間。如以下更具體實施方式的,命名空間包括已驗證區(qū)域圖例的集合,每個已驗證區(qū)域圖例包含表征相應元數(shù)據(jù)區(qū)域和/或元數(shù)據(jù)結構的關鍵信息。命名空間被存儲在存儲設備140的專用分區(qū)121中或者被存儲在主引導記錄(mbr)分區(qū)表或全局唯一標識符guid分區(qū)表(gpt)中。在一些其他實施例中,命名空間可以被存儲在存儲設備(例如,nand閃速存儲器)中的特殊存儲器芯片中。命名空間還可以被加密,并且只有包含密鑰的請求可以訪問命名空間以執(zhí)行命名空間修改操作。
在操作期間,當文件系統(tǒng)驅動程序110初始化用于添加或更新存儲在文件系統(tǒng)卷120(如由“(3)”所示)中的(多條)元數(shù)據(jù)記錄或用戶數(shù)據(jù)的寫入請求時,基于與分區(qū)120(如由“(4)”所示)相關聯(lián)的現(xiàn)有區(qū)域圖例來驗證所述請求。例如,在操作元數(shù)據(jù)區(qū)域預留期間,創(chuàng)建這些現(xiàn)有區(qū)域圖例。如果請求中提供的描述符與存儲為區(qū)域圖例的信息匹配,則可以執(zhí)行所請求的操作。但是,如果驗證過程將寫入請求中所請求的修改操作當做無效的,則可以阻止對文件系統(tǒng)卷的所請求的修改。在一些實施例中,報告并記錄來自這一驗證過程的否定結果以便于用戶發(fā)現(xiàn)導致文件系統(tǒng)損壞的可疑活動。
當文件系統(tǒng)驅動程序110需要預留另一個元數(shù)據(jù)區(qū)域(如由“(5)”所示)時,它將一些自由空間定位在文件系統(tǒng)卷上,在內部分配并預留這一區(qū)域,為所預留的區(qū)域準備區(qū)域圖例,并且試圖將這一區(qū)域圖例存儲到命名空間中。另一個獨立子系統(tǒng)(例如,主機側上的設備驅動程序或存儲設備的控制器)可以用于檢查新的區(qū)域圖例(如由“(6)”所示)。如果新的區(qū)域圖例具有不同于任何現(xiàn)有區(qū)域圖例中的幻數(shù)簽名的幻數(shù)簽名,則可以添加新的區(qū)域圖例。但是如果新的區(qū)域圖例中的幻數(shù)簽名與任何現(xiàn)有區(qū)域圖例中的幻數(shù)簽名相同,則需要驗證新的區(qū)域圖例。在另一方面,如果驗證過程確定了新的區(qū)域圖例是無效的,則將命名空間修改的請求當做是無效的,并且相應地,可以阻止所請求的操作。在一些實施例中,報告并記錄來自這一驗證過程的否定結果以便于用戶發(fā)現(xiàn)導致文件系統(tǒng)損壞的可疑活動。
因此,根據(jù)本公開的驗證方案可以有效防止文件系統(tǒng)元數(shù)據(jù)損壞,有利地減少或消除事后對如所要求的潛在耗時的和不可預測的恢復過程的需要。
圖2展示了根據(jù)本公開的實施例的示例性邏輯架構200,所述邏輯架構利用所存儲的描述符來驗證用于在已驗證區(qū)域221至223上進行元數(shù)據(jù)操作的寫入請求。梭巡相互的描述符230描述設備空間210中已驗證區(qū)域221至223。
將理解的是,本公開出于驗證目的不限于用于表征元數(shù)據(jù)結構和/或元數(shù)據(jù)區(qū)域的任何特定類型的信息。圖3a展示了根據(jù)本公開的實施例的用于表征元數(shù)據(jù)區(qū)域的示例性信息,所述元數(shù)據(jù)區(qū)域用于防止對相關聯(lián)的元數(shù)據(jù)結構進行的不安全操作。在由文件系統(tǒng)創(chuàng)建實用程序創(chuàng)建文件系統(tǒng)卷301后,為元數(shù)據(jù)結構預留文件系統(tǒng)卷中的元數(shù)據(jù)區(qū)域。由此,文件系統(tǒng)卷301中的每個元數(shù)據(jù)區(qū)域已經被描述符集合的值所界定,并且可以被所述描述符集合的值所表征,所述描述符集合包括幻數(shù)簽名、節(jié)點大小、可能預留的集群大小以及范圍中的一個或多個。
更具體地,在所展示的示例中,幻數(shù)簽名303是特殊的預定義二進制值,所述預定義二進制值標識特定的元數(shù)據(jù)結構。節(jié)點大小302是有待放置在元數(shù)據(jù)結構中的元數(shù)據(jù)項目的一部分的粒度。預留的集群大小305可以是最小的、最大的或默認大小的連續(xù)元數(shù)據(jù)區(qū)域307。通過偏移306和大小305(例如,根據(jù)區(qū)域中的開始塊以及塊的數(shù)量(或者距開始塊的偏移))來描述所預留的元數(shù)據(jù)區(qū)域的布局。由于所選擇的用于表征元數(shù)據(jù)結構和元數(shù)據(jù)區(qū)域的信息在文件系統(tǒng)卷初始化期間被定義并且固有地可用在各種文件系統(tǒng)中,利用這一信息的驗證過程對于不同類型的文件系統(tǒng)是有利地通用的。
本領域技術人員將認識到,出于驗證目的,本公開并不限于用于組織元數(shù)據(jù)區(qū)域和元數(shù)據(jù)結構的特性信息的格式或數(shù)據(jù)結構。圖3b展示了根據(jù)本公開的實施例的命名空間的示例性數(shù)據(jù)結構300。在這個示例中,所述信息被表示在已驗證區(qū)域圖例310、320和330中,每個圖例對應于為各個元數(shù)據(jù)結構預留的元數(shù)據(jù)區(qū)域。每個圖例包括用于描述符集合的值,即,幻數(shù)簽名311、節(jié)點大小312、預留的集群大小313以及范圍314。由于描述符獨立于個別文件系統(tǒng)和元數(shù)據(jù)內容的特殊性,根據(jù)本公開的依賴于描述符的驗證方案一般適用于各種文件系統(tǒng)。已驗證區(qū)域圖例可以是可擴展標簽語言(xml)、純文本或者任何其他本領域公知的合適的格式。
公知的是,各個文件系統(tǒng)駐留在存儲設備的專用分區(qū)中。已驗證區(qū)域圖例的聚合可以被存儲在不同于文件系統(tǒng)的分區(qū)中,所述已驗證區(qū)域圖例的聚合描述了具體文件系統(tǒng)卷的元數(shù)據(jù)區(qū)域。因此,區(qū)域圖例提供有關文件系統(tǒng)卷的信息的獨立源。已驗證區(qū)域圖例的聚合在此被稱作命名空間。圖4展示了根據(jù)本公開的實施例的存儲設備中的命名空間的示例性安排。在這個示例中,存儲設備包括多個分區(qū)1-m(例如,431和432),每個都與各自的命名空間(例如,410或420)相關聯(lián)。每個命名空間包括已驗證區(qū)域圖例(例如,411至413),所述已驗證區(qū)域圖例描述了響應分區(qū)中的元數(shù)據(jù)區(qū)域。
根據(jù)本公開,包含在命名空間中的特性化信息被用在驗證過程中以確保對于元數(shù)據(jù)或用戶數(shù)據(jù)的所要求的文件系統(tǒng)卷修改操作的有效性。另外,可以根據(jù)要求編輯命名空間中的信息。例如,命名空間操作可以將區(qū)域圖例添加到命名空間,將區(qū)域圖例從命名空間移除,或者刪除整個命名空間等。由于對于命名空間的不當操作也可以導致元數(shù)據(jù)的不一致性,因此根據(jù)本公開,請求編輯命名空間可以服從于驗證過程,如以下更具體實施方式的。
圖5是流程圖,描繪了根據(jù)本公開的實施例的示例性驗證過程500,所述驗證過程響應于用于在文件系統(tǒng)卷中改變內容(元數(shù)據(jù)或用戶數(shù)據(jù))的寫入操作。這種修改請求通常由文件系統(tǒng)驅動程序、特殊用戶空間實用程序或者特殊化的用戶空間實用程序生成,所述特殊用戶空間實用程序能夠修改文件系統(tǒng)卷中的任何物理扇區(qū),所述特殊化的用戶空間實用程序能夠通過提取數(shù)據(jù)或修改文件系統(tǒng)狀態(tài)來與一些文件系統(tǒng)的卷一起工作。在驗證期間,分析寫入操作以便提取相關信息,針對所存儲的相關元數(shù)據(jù)的已驗證區(qū)域圖例來檢查所述相關信息。在這個示例中,所提取的信息包括邏輯塊尋址(lba)、已知幻數(shù)簽名的存在、多個塊以及節(jié)點大小。
更具體地,在501處,基于所述請求中提供的lba是否與任何卷圖例中的范圍重疊到命名空間中來判定寫入操作是否被引導寫入到任何元數(shù)據(jù)區(qū)域中。如果沒有重疊,則在508處檢查所述請求的類型,例如,元數(shù)據(jù)或用戶數(shù)據(jù)。如果所述請求的類型是用戶數(shù)據(jù),則根據(jù)502處的請求來執(zhí)行所請求的寫入用戶數(shù)據(jù)操作。然而,如果沒有重疊并且寫入操作是元數(shù)據(jù)類型,則確定寫入請求是無效的(在590處)并且報告為不一致的元數(shù)據(jù)修改請求。如果lba與任意范圍重疊,則判定寫入操作的字節(jié)流是否包含與區(qū)域圖例中所提供的相同的幻數(shù)簽名(在503處),所請求的塊的數(shù)量對于寫入到元數(shù)據(jù)區(qū)域中是否有效(在504處),以及寫入請求的大小是否等于如區(qū)域圖例中所描述的一個或多個節(jié)點的大小(在506處)。如果所述請求中提供的任何信息與已驗證區(qū)域圖例中的值不一致,則宣布所述請求是無效的(在505處),因為它將導致元數(shù)據(jù)的不一致。否則,所述請求通過驗證,并且根據(jù)507處的寫入請求改變元數(shù)據(jù)。
圖6是流程圖,描繪了根據(jù)本公開的實施例的示例性過程,所述過程響應于用于創(chuàng)建命名空間的請求。在601處,判定是否已經創(chuàng)建命名空間。如果“是”并且如果命名空間驗證過程被禁用(如在602處判定的),則在604處刪除存在的命名空間而無需驗證,接著在605處確認所述刪除。然而,如果命名空間已經存在并且驗證過程被啟用,則在603處被刪除前檢查命名空間中的區(qū)域圖例,并且在605處確認所述刪除。試圖刪除命名空間中的圖例的過程基于文件系統(tǒng)卷的內部知識,準備了相同的一組區(qū)域圖例。如果所準備的一組區(qū)域圖例與包含在待刪除的命名空間中的區(qū)域圖例不一致,則驗證過程可以丟棄刪除操作。
在另一方面,如果不存在待創(chuàng)建的命名空間(如601中判定的),則在606處,判定命名空間驗證是否旨在被啟用。如果未被啟用,則在608處添加命名空間的區(qū)域圖例。在609處,檢查是否添加所有的區(qū)域圖例。然而,如果命名空間驗證旨在被啟用(如在606處所判定的),則在607處,例如通過設置標志或任何其他本領域中公知的合適的方法,啟用驗證機制。
在文件系統(tǒng)卷中的元數(shù)據(jù)結構被文件系統(tǒng)創(chuàng)建實用程序創(chuàng)建以后,可以刪除或以其他方式修改相關聯(lián)的命名空間。根據(jù)本公開,命名空間驗證過程可以用于保護命名空間免受不當操作。根據(jù)本公開的實施例,命名空間包括標識號、所有用于創(chuàng)建的已驗證區(qū)域的幻數(shù)簽名以及它們所有的節(jié)點大小。接收到命名空間刪除請求后,執(zhí)行命名空間驗證過程以判定命名空間內容是否在刪除請求中被適當?shù)孛枋?,并且相應地,確定刪除操作的有效性。
圖7a是流程圖,描繪了根據(jù)本公開的實施例的示例性驗證過程700,所述驗證過程響應于用于刪除與分區(qū)相關聯(lián)的命名空間的請求?;谟脩粽埱蠡驊贸绦蛏伤稣埱?。例如,所述過程700可以用在圖6中執(zhí)行框603。在一些實施例中,如參照圖6所描述的,可以基于用于創(chuàng)建命名空間的請求生成用于刪除命名空間的請求。在驗證過程700中,檢查由試圖刪除命名空間的過程所準備的區(qū)域圖例。所述區(qū)域圖例是在文件系統(tǒng)內部知識的基礎上準備的。然后,驗證過程將現(xiàn)有區(qū)域圖例與所準備的區(qū)域圖例進行對比。
更具體地,在701處,判定所述請求是否提供命名空間的有效標識號。如果不是,則在702處丟棄所述請求。如果所述請求提供了有效的命名空間標識號,則進一步判定命名空間是否包括幻數(shù)703,所述請求是否提供有效的節(jié)點大小704,以及所述請求是否提供元數(shù)據(jù)結構的所有幻數(shù)簽名705。如果有任何信息被判定為與所存儲的命名空間不一致,則刪除命名空間的請求被宣布是無效的并且可以在702處丟棄。否則,如在706處所請求的,刪除命名空間。
圖7b是流程圖,描繪了根據(jù)本公開的實施例的示例性驗證過程750,所述驗證過程響應于用于將區(qū)域圖例添加到命名空間的請求。在751處,判定命名空間是否包含具有在所述請求中提供的幻數(shù)簽名的圖例。如果命名空間不包括這種幻數(shù)簽名,則如所請求的可以在752處添加新的圖例而不進行進一步驗證。否則,在753處,將具有幻數(shù)簽名的現(xiàn)有圖例中的節(jié)點大小與待刪除的圖例的節(jié)點大小進行比較。如果節(jié)點大小不一致,則在755處將所述請求中提供的區(qū)域圖例當做是無效的,并且因此不能被添加到命名空間。如果節(jié)點大小一致,則在754處將待添加的圖例中的范圍與預留的集群大小(例如,最小的、默認的或最大的大小)進行比較。如果所處范圍大小等于預留的最小的、默認的或最大的集群大小,則在752處將區(qū)域圖例添加到命名空間。否則,在755處將所述請求中提供的區(qū)域圖例當做是無效的。
根據(jù)本公開的驗證機制可以被實現(xiàn)為存儲設備(例如,硬盤驅動程序)和/或主機(計算機或數(shù)據(jù)存儲系統(tǒng))上的軟件、硬件或其組合。另外,驗證機制可以用在本地文件系統(tǒng)或分布式文件系統(tǒng)中。在一些實施例中,數(shù)據(jù)存儲系統(tǒng)是單個計算設備,其中驗證系統(tǒng)可以是專用操作系統(tǒng)實用程序或專用應用程序。在一些其他實施例中,驗證系統(tǒng)被集成在操作系統(tǒng)、文件系統(tǒng)創(chuàng)建實用程序或應用程序中。在又一些其他實施例中,數(shù)據(jù)存儲系統(tǒng)是具有文件系統(tǒng)服務器的服務器-客戶端系統(tǒng)并且被耦合到存儲設備。
圖8a展示了根據(jù)本公開的實施例的示例性數(shù)據(jù)存儲系統(tǒng)800的配置,所述數(shù)據(jù)存儲系統(tǒng)帶有駐留在主機810上的驗證子系統(tǒng)813。主機810包括文件系統(tǒng)驅動程序811,所述文件系統(tǒng)驅動程序向塊層子系統(tǒng)812發(fā)起讀取/寫入請求。塊層子系統(tǒng)812可以將文件系統(tǒng)的讀取/寫入請求變換成小型計算機系統(tǒng)接口(scsi)/串行高級技術附件(sata)數(shù)據(jù)包。在變換成scsi/sata數(shù)據(jù)包之前,驗證系統(tǒng)813可以檢查文件系統(tǒng)的寫入請求??商鎿Q地,驗證系統(tǒng)813檢查scsi/sata數(shù)據(jù)包,所述scsi/sata數(shù)據(jù)包是從主機的塊層子系統(tǒng)812(未示出)接收的。文件系統(tǒng)卷以及相關聯(lián)的已驗證區(qū)域圖例被存儲在存儲設備820上。在這一配置中,可以相當容易地管理驗證子系統(tǒng)813。例如,用戶可以設定何時驗證可以有效或者無效。
當文件系統(tǒng)驅動程序811發(fā)出請求以修改存儲在存儲設備820中的文件系統(tǒng)卷或命名空間時,驗證子系統(tǒng)813訪問已驗證區(qū)域圖例并驗證請求的有效性,如參照圖5至圖7b更詳細討論的。在文件系統(tǒng)安裝操作期間,已驗證區(qū)域圖例可以首先從存儲設備讀取到動態(tài)隨機存取存儲器(dram)中,從而使得文件系統(tǒng)訪問來自dram的已驗證區(qū)域圖例。
圖8b展示了根據(jù)本公開的實施例的另一示例性數(shù)據(jù)存儲系統(tǒng)850的配置,所述數(shù)據(jù)存儲系統(tǒng)帶有駐留在存儲設備870上的驗證子系統(tǒng)871。主句860包括文件系統(tǒng)驅動程序861,所述文件系統(tǒng)驅動程序向塊層862發(fā)起讀取/寫入請求。塊層子系統(tǒng)862將文件系統(tǒng)的讀取/寫入請求變換成scsi/sata數(shù)據(jù)包。驗證子系統(tǒng)871駐留在存儲設備上。驗證子系統(tǒng)871包括檢查scsi/sata數(shù)據(jù)包,所述scsi/sata數(shù)據(jù)包是從主機的塊層子系統(tǒng)862(接收的。對于帶有有限計算能力的存儲設備,驗證子系統(tǒng)871優(yōu)選地被實現(xiàn)為硬件模塊(例如,包括現(xiàn)場可編程門陣列(fpga)或應用專用集成電路(asic))。
圖9是框圖,展示了根據(jù)本公開的實施例的示例性計算系統(tǒng)900,所述計算系統(tǒng)能夠通過驗證過程來防止對文件系統(tǒng)元數(shù)據(jù)進行的不當操作。計算系統(tǒng)900包括處理器901、系統(tǒng)存儲器902、圖形處理單元(gpu)903、輸入/輸出(i/o)接口904、網絡電路905、操作系統(tǒng)910以及應用程序軟件920。文件系統(tǒng)創(chuàng)建實用程序921被實現(xiàn)為應用程序。操作系統(tǒng)910包括文件系統(tǒng)驅動程序911和驗證子系統(tǒng)912。在一些其他實施例中,驗證子系統(tǒng)也可以被實現(xiàn)為個體或應用程序的一部分。在所示示例中,計算系統(tǒng)900通過i/o接口904耦合到存儲設備940。存儲設備940存儲用戶數(shù)據(jù)、元數(shù)據(jù)記錄以及已驗證區(qū)域圖例,所述已驗證區(qū)域圖例表征存儲元數(shù)據(jù)結構的元數(shù)據(jù)記錄的元數(shù)據(jù)區(qū)域。在一些其他實施例中,存儲設備可以通過網絡電路905和通信網絡耦合到計算系統(tǒng)900。在這種情況下,驗證子系統(tǒng)優(yōu)選地駐留在存儲設備側上。
當合并由cpu901輸入和執(zhí)行的配置時,文件系統(tǒng)創(chuàng)建實用程序921可以在存儲設備中創(chuàng)建文件系統(tǒng)卷。文件系統(tǒng)驅動程序911管理存儲設備940中的用戶數(shù)據(jù)和元數(shù)據(jù)。文件系統(tǒng)驅動程序911可以將用于元數(shù)據(jù)的已驗證區(qū)域圖例存儲到存儲設備940上,發(fā)出用于添加、刪除或以其他方式修改元數(shù)據(jù)或已驗證圖例的請求。驗證子系統(tǒng)912基于已驗證區(qū)域圖例來驗證所述請求的有效性。
在一些實施例中,根據(jù)本公開的命名空間創(chuàng)建和刪除過程可以被集成到文件系統(tǒng)創(chuàng)建實用程序921(例如,mkfs實用程序)中或者從文件系統(tǒng)創(chuàng)建實用程序分離。文件系統(tǒng)創(chuàng)建實用程序可以基于文件系統(tǒng)細節(jié)負責在命名空間中的群描述符中編檔。在一些實施例中,文件系統(tǒng)驅動程序關于新的元數(shù)據(jù)預留與驗證子系統(tǒng)進行通信,所以它可以基于合適的數(shù)據(jù)和驗證的結果生成有效的請求,并且適當?shù)貙γ臻g造成改變。在一些其他實施例中,在通過驗證子系統(tǒng)自身來分析文件系統(tǒng)卷中的元數(shù)據(jù)改變的基礎上,跟蹤新的元數(shù)據(jù)區(qū)域預留。因此,驗證過程對于文件系統(tǒng)驅動程序而言可以是透明的。
驗證子系統(tǒng)912可以執(zhí)行各種如參照圖1至圖8b詳細討論的其他功能。如本領域技術人員將想到的,本公開不限于任何特定的操作系統(tǒng)。操作系統(tǒng)910可以是dos視窗操作系統(tǒng)、os/2、macintosh以及基于unix的操作系統(tǒng)或任何其他本領域公知的操作系統(tǒng)。
根據(jù)本公開,驗證系統(tǒng)(或子系統(tǒng))可以由用戶手動配置或者由軟件程序自動配置。例如,可以禁用、啟用或定制驗證功能(包括元數(shù)據(jù)驗證和命名空間驗證)以適應特定情況下對操作和保護的各種需要。驗證邏輯可以駐留在主機側(例如,在塊層中)上或主機存儲系統(tǒng)中的存儲側上。將理解的是,本公開不限于用于驗證元數(shù)據(jù)和命名空間修改請求的驗證系統(tǒng)的任何特定配置。
圖10展示了根據(jù)本公開的實施例的驗證系統(tǒng)和過程的示例性配置。在所示示例中,驗證邏輯和命名空間(1014、1024和1034)駐留在存儲設備上,并且文件系統(tǒng)驅動程序(1012、1022和1032)駐留在主機上。然而,將理解的是,參照圖10所描述的驗證過程還可以在其中驗證邏輯和命名空間駐留在主機上的系統(tǒng)中實現(xiàn)。
在一些情境中,可獲得的驗證系統(tǒng)可以保持去激活(例如,基于用戶指令和配置)。例如,最終用戶可以確定文件系統(tǒng)是值得信任的并且指示跳過針對元數(shù)據(jù)相關的寫入操作的驗證過程。簡圖1010示出了對于所有請求普遍禁用驗證功能的主機存儲系統(tǒng)(設備1011和1013)的示例性配置。在這一配置中,執(zhí)行對命名空間1014或存儲在存儲設備1013上的元數(shù)據(jù)的任何請求的修改(或寫入操作)而不進行驗證。支路寫入操作驗證的示例性方法不是在預留元數(shù)據(jù)區(qū)域時創(chuàng)建命名空間,即使可能已經為在存儲設備中存儲命名空間預留了空間。將理解的是,任何其他適合的方法也可以用于阻止元數(shù)據(jù)驗證,而不脫離本公開的范圍。
在一些其他情景中,驗證系統(tǒng)可以用于選擇性地驗證元數(shù)據(jù)相關的寫入請求,而命名空間可以為所有元數(shù)據(jù)創(chuàng)建。例如,不驗證寫入到日志區(qū)域中的請求,但驗證寫入到元數(shù)據(jù)的最終位置的請求。簡圖1020示出了僅對與驗證需求(例如,特殊標志)的指示相關聯(lián)的請求啟用驗證功能的主機存儲系統(tǒng)(設備1021和1023)的示例性配置。在這一配置中,如果從文件系統(tǒng)驅動程序1022發(fā)送的修改請求與特殊標志相關聯(lián),則所述請求通過驗證邏輯1025服從于驗證。如果所述請求被驗證為有效,則執(zhí)行所請求的修改。這一方法有利地提高了管理整個數(shù)據(jù)存儲棧的靈活性和性能。
簡圖1030示出了對于所有請求普遍啟用驗證功能的主機存儲系統(tǒng)(設備1031和1033)的示例性配置。在這一配置中,由驗證邏輯1035驗證從文件系統(tǒng)驅動程序1032發(fā)送的任何請求的修改以在執(zhí)行前確認有效性。特別地,所請求的刪除動作可以服從于更嚴格的驗證,其需要特殊授權的證明(例如,以請求中提供的密鑰的形式)。
根據(jù)本公開的實施例,命名空間可以采用多種方式存儲。在一些實施例中,在加密或不加密的情況下,命名空間可以存儲在專用分區(qū)中。加密可以用于進一步保護命名空間數(shù)據(jù)免受未授權的訪問和修改。在一些其他實施例中,命名空間數(shù)據(jù)可以存儲在存儲設備(例如,專用nand閃存芯片)中的特殊存儲器區(qū)域中。特殊存儲器區(qū)域結合相關聯(lián)的特殊用戶接口可以有利地為命名空間數(shù)據(jù)提供更好的保護。
盡管本文已經公開某些優(yōu)選實施例和方法,從上述公開中本領域技術人員將會清楚,在不脫離本發(fā)明的精神和范圍的情況下,可以對這些實施例和方法進行變化和修改。在此的意圖是本發(fā)明應當僅限于所附權利要求以及適用法律的規(guī)則和原理所要求的范圍。