本發(fā)明屬于計算機存儲領域,更具體地,涉及一種基于文件級粒度的閃存安全刪除方法及系統(tǒng)。
背景技術:
隨著數(shù)據(jù)恢復技術的發(fā)展,當前計算機系統(tǒng)已經很難徹底刪除文件,通過恢復處理存儲介質上殘留的數(shù)據(jù),攻擊者可以竊取已刪除的機密信息,這已經成為威脅存儲系統(tǒng)信息安全的重要隱患。2016年的一次調查報告中發(fā)現(xiàn),從200多塊二手硬盤中(93%是機械硬盤,剩余是ssd),發(fā)現(xiàn)超過78%的二手硬盤里存在剩余數(shù)據(jù),其中67%的硬盤能恢復出個人機密信息,11%的硬盤包含公司敏感數(shù)據(jù)。另外調查顯示,36%的硬盤包含殘留數(shù)據(jù),即用戶進行了刪除操作后仍有數(shù)據(jù)殘留;40%的硬盤進行過格式化,但仍然有數(shù)據(jù)殘留在硬盤中;僅僅只有10%的硬盤采取過安全擦除手段來清除數(shù)據(jù)。這充分說明普通的刪除和格式化操作并不能真正的刪除數(shù)據(jù),用戶需要采取安全刪除手段來防止數(shù)據(jù)泄露。
安全刪除是指通過各種技術手段,使存儲載體中的數(shù)據(jù)被刪除后不可恢復,且設備可二次利用。目前已經針對磁介質提出多種基于覆寫的安全刪除方法,其主要思想是,刪除文件時,重寫該文件對應的lba(邏輯區(qū)塊地址)空間,覆蓋寫存有文件原始數(shù)據(jù)的物理介質,以此來安全刪除文件。但由于閃存異地更新的特點,當重寫該文件對應的lba空間時,存有文件原始數(shù)據(jù)的物理頁將變?yōu)闊o效,覆蓋寫的數(shù)據(jù)被寫入到新的物理頁,無法達到覆蓋寫文件原始數(shù)據(jù)的效果。同時,在經過大量讀寫后,文件的每個數(shù)據(jù)頁都有可能存在若干個副本,這些數(shù)據(jù)頁副本在存儲介質里保存的時間是不可預測的,只能在垃圾回收時回收一部分,占用了固態(tài)盤空間的同時,泄露了已刪除文件中的信息。因此,針對基于閃存的固態(tài)盤,需要引進一種新的安全刪除技術以改變這種困境。
現(xiàn)有安全刪除方法的粒度大致包括四類:頁級安全刪除、塊級安全刪除、文件級安全刪除以及全盤安全刪除。頁級的安全刪除方法以單個物理頁為單位,實時地安全刪除因寫更新產生的無效頁,在文件的編輯和修改過程中,寫更新操作非常頻繁,頁級的安全刪除方法會嚴重影響固態(tài)盤對正常的讀寫請求的響應;塊級安全刪除方法以物理塊為單位,采用塊擦除手段來安全刪除物理塊,當塊中存在有效頁時,需要遷移有效頁會帶來開銷,且塊粒度實用性差;而文件級的安全刪除以文件為單位,通常文件的刪除操作不頻繁,只有在用戶刪除某個文件時,才會觸發(fā)安全刪除操作,對固態(tài)盤的讀寫性能影響??;全盤安全刪除適用范圍窄,對于多用戶共享存儲資源的常見應用場景,對整個物理盤進行安全刪除是無法實現(xiàn)的,即使是對整個虛擬盤進行安全刪除也意味著某個文件的安全刪除。
對于基于閃存的固態(tài)盤,盡管不能采用覆寫文件的lba空間的方式來安全刪除文件,但可以直接對物理介質進行覆寫。對于slc閃存,有人通過實驗證實對slc閃存的物理頁進行二次寫入是可行的,即可以通過普通的物理頁寫入命令,對存儲敏感數(shù)據(jù)的物理頁進行覆蓋寫入,從而實現(xiàn)對slc閃存的安全刪除。但額外的物理頁覆寫操作會影響閃存對正常讀寫請求的響應,實時地安全刪除無效頁將嚴重影響固態(tài)盤的性能;且它提出的文件粒度的安全刪除方法需要遍歷整個固態(tài)盤的所有物理頁來確定文件對應的無效頁副本,延時非常大。
如圖1所示:對于mlc閃存,支持4種電壓級別,每個單元可存儲2bits,狀態(tài)變化嚴格遵循閾值電壓升高的規(guī)則,在擦除之前不能反向改變狀態(tài),即mlc閃存內部的寫入操作必須按照一定的順序進行;
當對基于mlc閃存的固態(tài)盤進行安全刪除時,有兩個限制:
(1)受編程串擾影響,當mlc閃存的低頁和高頁都有效時,不能單獨覆寫低頁或者高頁,否則會破壞高頁或者低頁中的數(shù)據(jù);
(2)mlc閃存的每個物理塊的錯誤率隨被覆寫的物理頁數(shù)量增加而上升,即每個物理塊只能承受部分物理頁被覆寫。
由于這些限制,傳統(tǒng)的解決方法有兩種:一種是將mlc閃存當做slc閃存使用,先只使用成對頁(pairedpage)中的低頁,只有當?shù)晚摕o效并進行了覆寫后,才能使用該低頁對應的高頁,嚴重的浪費了mlc閃存的容量;另一種是,當需要覆寫mlc閃存成對頁中的某個頁時,要先將成對頁中的另一個頁中的數(shù)據(jù)進行遷移,再覆寫此成對頁,浪費了mlc閃存容量的同時,安全刪除效率低下;因此,簡單的物理頁覆寫方法并不適合mlc閃存。
技術實現(xiàn)要素:
針對現(xiàn)有技術的以上缺陷或改進需求,本發(fā)明提供了一種基于文件級粒度的閃存安全刪除方法及系統(tǒng),其目的在于通過在文件系統(tǒng)層為每個文件分配一個guid號碼,向底層傳遞文件信息,使設備可以掌握文件數(shù)據(jù)塊的存儲位置、實時記錄每個文件產生的無效物理頁;當用戶刪除某個文件時,設備可以通過刪除命令找到文件對應的所有無效物理頁和所有有效物理頁,然后使用物理頁覆寫方法對文件所有的物理頁進行覆寫來達到安全刪除文件的目的,由此解決現(xiàn)有閃存安全刪除技術效率低、延時大的技術問題。
為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種基于文件級粒度的閃存安全刪除方法,該方法包括:
(1)guid分配和封裝:為每個文件分配一個全局唯一標識符guid,并將文件的guid封裝到文件的寫和刪除請求中;若是寫請求,則進入步驟(2);若是刪除請求則進入步驟(5);
(2)寫入介質判斷:若存儲介質為mlc閃存,則進入步驟(3);否則進入步驟(4);
(3)分配mlc閃存成對頁:根據(jù)寫請求的guid號找到該文件上一次寫入的物理頁位置,若是低頁,則分配該低頁對應的高頁給寫請求,使文件的數(shù)據(jù)塊分布在mlc成對的物理頁中;若是高頁,則分配空閑低頁給寫請求;若沒有空閑低頁,則啟動垃圾回收后分配空閑低頁給寫請求;
(4)記錄文件的無效頁:使用guid-page表實時地記錄每個文件產生的無效物理頁;
(5)刪除介質判斷:若存儲介質為mlc閃存,則進入步驟(6);若存儲介質為slc閃存,則進入步驟(7);
(6)基于mlc閃存的安全刪除:根據(jù)guid-page表和刪除請求找到要刪除文件對應的所有物理頁,物理頁所在物理塊的覆寫次數(shù)沒超上限的采用覆寫技術進行安全刪除,覆寫次數(shù)超上限的遷移物理塊中的有效頁后將物理塊擦除來達到安全刪除;
(7)基于slc閃存的安全刪除:根據(jù)guid-page表和刪除請求找到要刪除的文件對應的所有物理頁,再使用物理頁覆寫技術對這些物理頁中數(shù)據(jù)進行安全刪除;
(8)元數(shù)據(jù)的安全刪除:根據(jù)文件刪除操作產生的元數(shù)據(jù)修改請求和映射關系的修改,找到元數(shù)據(jù)所在的物理頁,對元數(shù)據(jù)所在物理頁進行安全刪除。
進一步地,所述步驟(3)具體包括:
(31)物理頁查詢:根據(jù)寫請求的guid查找guid-page表,找到對應guid-page表中頭結點指針指向的頁結點的物理頁號;
(32)對頁判斷:判斷所述物理頁號是低頁、高頁還是物理頁號初始值,若是低頁,分配所述低頁對應的高頁給寫請求,進入步驟(35);若是高頁或者物理頁號初始值,則判斷固態(tài)盤中是否有空閑低頁,若有,則分配空閑低頁給寫請求,進入步驟(34);否則進入步驟(33);
(33)垃圾回收:先遷移要回收的目標塊中的有效頁,同時根據(jù)有效頁對應的guid查找對應guid-page表中頭結點指針指向的頁結點的物理頁號,若頁結點的物理頁號和有效頁的物理頁號相同,則將頁結點的物理頁號改為有效頁遷移后的物理頁號;否則不做處理;之后根據(jù)目標塊中無效頁對應的guid查找對應guid-page表,刪除guid-page表中頁結點的物理頁號等于無效頁物理頁號的頁結點;擦除目標塊,之后分配空閑低頁給寫請求;
(34)更新物理頁號:將寫請求的guid-page表中頭結點指針指向的頁結點的物理頁號更新為新分配物理頁的物理頁號。
進一步地,所述步驟(4)具體包括:
(41)寫命中判斷:根據(jù)寫請求的邏輯地址查找地址映射表,若命中,則進入步驟(42);否則進入步驟(43);
(42)記錄無效物理頁:將舊物理頁的狀態(tài)置為無效,分配新的guid-page表的頁結點,頁結點的物理頁號為該舊物理頁號,新的頁結點鏈接在寫請求的guid對應的guid-page表尾部;
(43)更新地址映射表:更新地址映射表。
進一步地,所述步驟(6)具體包括:
(61)查找無效物理頁:根據(jù)刪除請求的guid,查找對應guid-page表中的頭結點指針指向的頁結點,該頁結點后鏈接的所有頁結點均為無效物理頁結點;
(62)重置guid-page表:根據(jù)刪除請求的guid,刪除對應guid-page表中所有頁結點,并將頭結點重新初始化;
(63)查找有效物理頁:將刪除請求的邏輯地址和大小解析為多個邏輯頁號,根據(jù)邏輯頁號查找地址映射表,找到對應的有效物理頁號,將找到的有效物理頁的狀態(tài)置為無效;
(64)覆寫次數(shù)判斷:對于所有找到的物理頁,判斷物理頁所在物理塊的覆寫計數(shù)是否超過該物理塊的覆寫次數(shù)上限;若沒有超過,則進入步驟(65);否則進入步驟(66);
(65)覆寫刪除:采用物理頁覆寫技術安全刪除物理頁中數(shù)據(jù);該物理頁所在物理塊的覆寫計數(shù)加1;
(66)物理塊擦除:遷移該物理頁所在的物理塊中的所有有效物理頁,同時更新相應地址映射表和guid-page表,之后擦除該物理塊實現(xiàn)安全刪除。
進一步地,所述步驟(7)具體包括:
(71)安全刪除無效物理頁:根據(jù)刪除請求的guid,查找對應guid-page表中的頭結點指針指向的頁結點,該頁結點后鏈接的所有頁結點均為無效物理頁結點,采用物理頁覆寫技術安全刪除無效物理頁中數(shù)據(jù);
(72)刪除頁結點:根據(jù)刪除請求的guid,刪除對應guid-page表中所有頁結點,并將頭結點重新初始化;
(73)安全刪除有效物理頁:將刪除請求的邏輯地址和大小解析為多個邏輯頁號,根據(jù)邏輯頁號查找地址映射表,找到對應的有效的物理頁號,采用物理頁覆寫技術安全刪除有效物理頁中數(shù)據(jù);
(74)更新地址映射表:將找到的有效的物理頁置為無效物理頁,更新地址映射表。
按照本發(fā)明的另一方面,提供了一種基于文件級粒度的閃存安全刪除系統(tǒng),該系統(tǒng)包括:
guid分配和封裝模塊,用于為每個文件分配一個全局唯一標識符guid,并將文件的guid封裝到文件的寫和刪除請求中;若是寫請求,則進入寫入介質判斷模塊;若是刪除請求則進入刪除介質判斷模塊;
寫入介質判斷模塊,用于判斷若存儲介質為mlc閃存,則進入mlc閃存成對頁分配模塊;否則進入文件無效頁記錄模塊;
mlc閃存成對頁分配模塊,用于根據(jù)寫請求的guid號找到該文件上一次寫入的物理頁位置,若是低頁,則分配該低頁對應的高頁給寫請求,使文件的數(shù)據(jù)塊分布在mlc成對的物理頁中;若是高頁,則分配空閑低頁給寫請求;若沒有空閑空間,則啟動垃圾回收后分配空閑低頁給寫請求;
文件無效頁記錄模塊,用于使用guid-page表實時地記錄每個文件產生的無效物理頁;
刪除介質判斷模塊,用于判斷若存儲介質為mlc閃存,則進入基于mlc閃存的安全刪除模塊;若存儲介質為slc閃存,則進入基于slc閃存的安全刪除模塊;
基于mlc閃存的安全刪除模塊,用于根據(jù)guid-page表和刪除請求找到要刪除文件對應的所有物理頁,物理頁所在物理塊的覆寫次數(shù)沒超上限的采用覆寫技術進行安全刪除,覆寫次數(shù)超上限的遷移物理塊中的有效頁后將物理塊擦除來達到安全刪除;
基于slc閃存的安全刪除模塊,用于根據(jù)guid-page表和刪除請求找到要刪除的文件對應的所有物理頁,再使用物理頁覆寫技術對這些物理頁中數(shù)據(jù)進行安全刪除;
元數(shù)據(jù)的安全刪除模塊,用于根據(jù)文件刪除操作產生的元數(shù)據(jù)修改請求和映射關系的修改,找到元數(shù)據(jù)所在的物理頁,對元數(shù)據(jù)所在物理頁進行安全刪除。
進一步地,所述mlc閃存成對頁分配模塊具體包括:
物理頁查詢單元,用于根據(jù)寫請求的guid查找guid-page表,找到對應guid-page表中頭結點指針指向的頁結點的物理頁號;
對頁判斷單元,用于判斷所述物理頁號是低頁、高頁還是物理頁號初始值,若是低頁,分配所述低頁對應的高頁給寫請求,進入更新物理頁號單元;若是高頁或者物理頁號初始值,則判斷固態(tài)盤中是否有空閑低頁,若有,則分配空閑低頁給寫請求,進入更新物理頁號單元;否則進入垃圾回收單元;
垃圾回收單元:用于先遷移要回收的目標塊中的有效頁,同時根據(jù)中有效頁對應的guid查找對應guid-page表中頭結點指針指向的頁結點的物理頁號,若頁結點的物理頁號和有效頁的物理頁號相同,則將頁結點的物理頁號改為有效頁遷移后的物理頁號;否則不做處理;之后根據(jù)目標塊中無效頁對應的guid查找對應guid-page表,刪除guid-page表中頁結點的物理頁號等于無效頁物理頁號的頁結點;擦除目標塊,之后分配空閑低頁給寫請求;
更新物理頁號單元,用于將寫請求的guid-page表中頭結點指針指向的頁結點的物理頁號更新為新分配物理頁的物理頁號。
進一步地,所述文件無效頁記錄模塊具體包括:
寫命中判斷單元,用于根據(jù)寫請求的邏輯地址查找地址映射表,若命中,則進入記錄無效物理頁單元;否則進入更新地址映射表單元;
記錄無效物理頁單元,用于將舊物理頁的狀態(tài)置為無效,分配新的guid-page表的頁結點,頁結點的物理頁號為該舊物理頁號,新的頁結點鏈接在寫請求的guid對應的guid-page表尾部;
更新地址映射表單元,用于更新地址映射表。
進一步地,所述基于mlc閃存的安全刪除模塊具體包括:
查找無效物理頁單元,用于根據(jù)刪除請求的guid,查找對應guid-page表中的頭結點指針指向的頁結點,該頁結點后鏈接的所有頁結點均為無效物理頁結點;
重置guid-page表單元,用于根據(jù)刪除請求的guid,刪除對應guid-page表中所有頁結點,并將頭結點重新初始化;
查找有效物理頁單元,用于將刪除請求的邏輯地址和大小解析為多個邏輯頁號,根據(jù)邏輯頁號查找地址映射表,找到對應的有效物理頁號,將找到的有效物理頁的狀態(tài)置為無效;
覆寫次數(shù)判斷單元,用于對于所有找到的物理頁,判斷物理頁所在物理塊的覆寫計數(shù)是否超過該物理塊的覆寫次數(shù)上限;若沒有超過,則進入覆寫刪除單元;否則進入物理塊擦除單元;
覆寫刪除單元,用于采用物理頁覆寫技術安全刪除物理頁中數(shù)據(jù);該物理頁所在物理塊的覆寫計數(shù)加1;
物理塊擦除單元,用于遷移該物理頁所在的物理塊中的所有有效物理頁,同時更新相應地址映射表和guid-page表,之后擦除該物理塊實現(xiàn)安全刪除。
進一步地,所述基于slc閃存的安全刪除模塊具體包括:
安全刪除無效物理頁單元,用于根據(jù)刪除請求的guid,查找對應guid-page表中的頭結點指針指向的頁結點,該頁結點后鏈接的所有頁結點均為無效物理頁結點,采用物理頁覆寫技術安全刪除無效物理頁中數(shù)據(jù);
刪除頁結點單元,用于根據(jù)刪除請求的guid,刪除對應guid-page表中所有頁結點,并將頭結點重新初始化;
安全刪除有效物理頁單元,用于將刪除請求的邏輯地址和大小解析為多個邏輯頁號,根據(jù)邏輯頁號查找地址映射表,找到對應的有效的物理頁號,采用物理頁覆寫技術安全刪除有效物理頁中數(shù)據(jù);
更新地址映射表單元,用于將找到的有效的物理頁置為無效物理頁,更新地址映射表。
總體而言,通過本發(fā)明所構思的以上技術方案與現(xiàn)有技術相比,具有以下技術特征及有益效果:
(1)相比較塊級粒度的安全刪除,本發(fā)明能減少安全刪除對固態(tài)盤讀寫性能的影響,不需要實時安全刪除每個文件因修改產生的無效頁,只有在用戶刪除文件時才需要執(zhí)行安全刪除;
(2)相比較現(xiàn)有基于mlc的安全刪除方法,本發(fā)明對mlc閃存的安全刪除更高效,解決了安全刪除mlc時編程串擾的問題,在安全刪除mlc的基礎上,減少了對mlc物理容量的浪費;
附圖說明
圖1是mlc閃存單元寫入順序示意圖;
圖2是本發(fā)明方法的實施流程圖;
圖3是guid_page表的結構示意圖;
圖4是guid分配與封裝的流程圖;
圖5是分配mlc閃存成對頁的流程圖;
圖6是記錄文件的無效頁的流程圖;
圖7是slc閃存的安全刪除的流程圖;
圖8是mlc閃存的安全刪除的流程圖;
圖9是元數(shù)據(jù)安全刪除的流程圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。
如圖2所示,本發(fā)明方法包括以下步驟:
(1)guid分配和封裝:為每個文件分配一個全局唯一標識符guid,并將文件的guid封裝到文件的寫和刪除請求中;若是寫請求,則進入步驟(2);若是刪除請求則進入步驟(5);
(2)寫入介質判斷:若存儲介質為mlc閃存,則進入步驟(3);否則進入步驟(4);
(3)分配mlc閃存成對頁:根據(jù)寫請求的guid號找到該文件上一次寫入的物理頁位置,若是低頁,則分配該低頁對應的高頁給寫請求,使文件的數(shù)據(jù)塊分布在mlc成對的物理頁中;若是高頁,則分配空閑低頁給寫請求;若沒有空閑空間,則啟動垃圾回收后分配空閑低頁給寫請求;
(4)記錄文件的無效頁:使用guid-page表實時地記錄每個文件產生的無效物理頁;
(5)刪除介質判斷:若存儲介質為mlc閃存,則進入步驟(6);若存儲介質為slc閃存,則進入步驟(7);
(6)基于mlc閃存的安全刪除:根據(jù)guid-page表和刪除請求找到要刪除文件對應的所有物理頁,物理頁所在物理塊的覆寫次數(shù)沒超上限的采用覆寫技術進行安全刪除,覆寫次數(shù)超上限的遷移物理塊中的有效頁后將物理塊擦除來達到安全刪除;
(7)基于slc閃存的安全刪除:根據(jù)guid-page表和刪除請求找到要刪除的文件對應的所有物理頁,再使用物理頁覆寫技術對這些物理頁中數(shù)據(jù)進行安全刪除;
(8)元數(shù)據(jù)的安全刪除:根據(jù)文件刪除操作產生的元數(shù)據(jù)修改請求和映射關系的修改,找到元數(shù)據(jù)所在的物理頁,對元數(shù)據(jù)所在物理頁進行安全刪除。
如圖3所示,本技術方案所述guid-page表結構為:
每個guid-page表的頭結點包括guid號和一個指向頁結點的指針,每個頁結點包括物理頁號和指向下一個頁結點的指針;mlc閃存的guid-page表除了頭結點指向的第一個頁結點為有效頁結點,除此之外其他頁結點均為無效頁結點;slc閃存的guid-page表中的頁結點均為無效頁結點。
如圖4所示為guid的分配和封裝流程,由于固態(tài)盤的異地更新特性,每個文件的數(shù)據(jù)塊可能在固態(tài)盤里存在很多無效頁副本,現(xiàn)有的文件系統(tǒng)不知道文件的無效頁副本在硬件中的存儲位置,因此本技術方案在文件系統(tǒng)層增添guid的分配與封裝過程,給每個文件分配一個guid來唯一標識每個文件,并將該文件的guid封裝到該文件的寫請求或刪除請求中,將包含guid的寫請求或刪除請求傳遞給通用塊層,再傳遞到驅動層,再傳遞到設備層,使設備可以通過guid掌握文件數(shù)據(jù)塊的存儲位置。
在現(xiàn)有的系統(tǒng)中,文件系統(tǒng)在刪除文件的時候,只刪除了文件的元數(shù)據(jù),并沒有刪除文件的數(shù)據(jù)塊。為實現(xiàn)單個文件的安全刪除,需要開啟trim功能。即所述刪除請求為trim命令,當用戶刪除文件時,操作系統(tǒng)將發(fā)送trim指令,文件系統(tǒng)接收到trim指令后,將要刪除的文件的guid包裝入trim請求中,傳送到通用塊層,再傳送到驅動層,再傳送到設備層,通知控制器哪些物理頁可以置為無效了。
本技術方案實施例中操作系統(tǒng)、文件系統(tǒng)、驅動層均支持trim指令的發(fā)送和傳輸,設備層也支持trim命令的處理。
當刪除某文件時,可以通過刪除請求的guid查找該文件對應的無效頁副本,并通過刪除請求的數(shù)據(jù)段查找該文件對應的有效頁;具體實施例流程如下:
(11)將要執(zhí)行寫或者刪除的文件的索引節(jié)點inode號記錄為文件的guid;
(12)將文件的guid封裝到文件的寫和刪除請求中。
如圖5所示為分配mlc閃存成對頁流程,由于mlc閃存芯片對寫入順序有嚴格要求,必須先寫成對頁中的低頁,再寫成對頁中的高頁,否則會造成數(shù)據(jù)錯誤;且成對頁之間存在編程串擾,覆寫成對頁中的某個頁時,將導致成對頁中的另一個頁的數(shù)據(jù)發(fā)生錯誤,因此基于mlc閃存的安全刪除很難實現(xiàn),本技術方案采用一種全新的物理頁分配方式即成對分配方式,具體流程如下:
(31)物理頁查詢:根據(jù)寫請求的guid查找guid-page表,找到對應guid-page表中頭結點指針指向的頁結點的物理頁號;
(32)對頁判斷:判斷所述物理頁號是低頁、高頁還是物理頁號初始值,若是低頁,分配所述低頁對應的高頁給寫請求,進入步驟(35);若是高頁或者物理頁號初始值,則判斷固態(tài)盤中是否有空閑低頁,若有,則分配空閑低頁給寫請求,進入步驟(34);否則進入步驟(33);
(33)垃圾回收:先遷移要回收的目標塊中的有效頁,同時根據(jù)有效頁對應的guid查找對應guid-page表中頭結點指針指向的頁結點的物理頁號,若頁結點的物理頁號和有效頁的物理頁號相同,則將頁結點的物理頁號改為有效頁遷移后的物理頁號;否則不做處理;之后根據(jù)目標塊中無效頁對應的guid查找對應guid-page表,刪除guid-page表中頁結點的物理頁號等于無效頁物理頁號的頁結點;擦除目標塊,之后分配空閑低頁給寫請求;
(34)更新物理頁號:將寫請求的guid-page表中頭結點指針指向的頁結點的物理頁號更新為新分配物理頁的物理頁號。
這樣做的好處是,對文件進行安全刪除時,可以將文件對應的高、低頁一起覆寫,避免了覆寫mlc時成對頁之間的編程串擾帶來的數(shù)據(jù)錯誤問題。
如圖6所示為記錄文件的無效頁流程,為了實現(xiàn)閃存文件級的安全刪除,不僅需要安全刪除文件在固態(tài)盤中的對應的有效頁,還需要安全刪除文件因修改產生的無效頁副本;因此,需要實時地記錄每個文件產生的無效物理頁和有效物理頁;其中文件對應的有效物理頁可以通過刪除命令找到,即在用戶刪除文件時,設備層將接收到的刪除命令的數(shù)據(jù)段解析成多個邏輯頁號,通過查找地址映射表得到文件對應的有效物理頁號;但由于映射表的一一對應關系,不能通過邏輯頁號找到文件對應的無效物理頁;因此需要一種方案來記錄文件對應的無效物理頁;具體流程如下:
(41)寫命中判斷:根據(jù)寫請求的邏輯地址查找地址映射表,若命中,則進入步驟(42);否則進入步驟(43);
(42)記錄無效物理頁:將舊物理頁的狀態(tài)置為無效,分配新的guid-page表的頁結點,頁結點的物理頁號為該舊物理頁號,新的頁結點鏈接在寫請求的guid對應的guid-page表尾部;
(43)更新地址映射表:更新地址映射表。
如圖7所示為slc閃存的安全刪除的流程,目前市面上的slc閃存都基本支持覆蓋寫入(只能將“1”改為“0”),即可在擦除前對物理頁進行覆寫(即第二次寫操作),而對閃存的錯誤率并不產生明顯的影響;因此,對于slc閃存,本技術方案實時記錄每個文件在編輯和修改過程中產生的無效物理頁,刪除文件時,通過刪除命令的guid和數(shù)據(jù)段找到該文件對應的所有有效物理頁和無效物理頁,再使用物理頁覆寫方法對這些物理頁進行覆寫,從而實現(xiàn)slc閃存的文件級安全刪除;具體流程如下:
(71)安全刪除無效物理頁:根據(jù)刪除請求的guid,查找對應guid-page表中的頭結點指針指向的頁結點,該頁結點后鏈接的所有頁結點均為無效物理頁結點,采用物理頁覆寫技術安全刪除無效物理頁中數(shù)據(jù);
(72)刪除頁結點:根據(jù)刪除請求的guid,刪除對應guid-page表中所有頁結點,并將頭結點重新初始化;
(73)安全刪除有效物理頁:將刪除請求的邏輯地址和大小解析為多個邏輯頁號,根據(jù)邏輯頁號查找地址映射表,找到對應的有效的物理頁號,采用物理頁覆寫技術安全刪除有效物理頁中數(shù)據(jù);
(74)更新地址映射表:將找到的有效的物理頁置為無效物理頁,更新地址映射表。
如圖8是mlc閃存的安全刪除的流程,本技術方案進行基于mlc刪除的安全刪除時,通過、刪除命令的guid和數(shù)據(jù)段找到該文件對應的所有有效物理頁和無效物理頁,同時安全刪除文件在mlc閃存中對應的高頁和低頁,避免編程串擾的影響;通過測試mlc閃存的每個塊能承受的覆寫頁數(shù),設置覆寫閾值,當mlc閃存中某個塊被覆寫的頁數(shù)超過了覆寫閾值時,不再使用物理頁覆寫方法進行安全刪除,而是遷移該塊中的有效頁,將該塊擦除來達到安全刪除的目的;具體流程如下:
(61)查找無效物理頁:根據(jù)刪除請求的guid,查找對應guid-page表中的頭結點指針指向的頁結點,該頁結點后鏈接的所有頁結點均為無效物理頁結點;
(62)重置guid-page表:根據(jù)刪除請求的guid,刪除對應guid-page表中所有頁結點,并將頭結點重新初始化;
(63)查找有效物理頁:將刪除請求的邏輯地址和大小解析為多個邏輯頁號,根據(jù)邏輯頁號查找地址映射表,找到對應的有效物理頁號,將找到的有效物理頁的狀態(tài)置為無效;
(64)覆寫次數(shù)判斷:對于所有找到的物理頁,判斷物理頁所在物理塊的覆寫計數(shù)是否超過該物理塊的覆寫次數(shù)上限;若沒有超過,則進入步驟(65);否則進入步驟(66);
(65)覆寫刪除:采用物理頁覆寫技術安全刪除物理頁中數(shù)據(jù);該物理頁所在物理塊的覆寫計數(shù)加1;
(66)物理塊擦除:遷移該物理頁所在的物理塊中的所有有效物理頁,同時更新相應地址映射表和guid-page表,之后擦除該物理塊實現(xiàn)安全刪除。
如圖9是元數(shù)據(jù)安全刪除的流程,當文件的數(shù)據(jù)塊安全刪除后,文件的元數(shù)據(jù)信息如文件的名稱、inode結點、映射信息等元數(shù)據(jù)仍該殘留在閃存中,會泄露文件信息。因此,需要進一步對該文件相關的元數(shù)據(jù)進行安全刪除,來徹底消除痕跡;具體流程如下:
(81)根據(jù)文件刪除操作產生的元數(shù)據(jù)修改請求和映射關系的修改,找到元數(shù)據(jù)所在的物理頁;
(82)判斷該物理頁是否已經被安全刪除過,若是,則結束刪除;否則對元數(shù)據(jù)所在物理頁進行安全刪除,即采用物理頁覆寫技術覆寫這些物理頁中的數(shù)據(jù),并標志該頁已經被安全刪除。
本領域的技術人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內。