999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

持久化內存文件系統的磨損攻擊與防御機制*

2020-09-23 07:33:10楊朝樹諸葛晴鳳沙行勉陳咸彰
軟件學報 2020年6期
關鍵詞:物理

楊朝樹 , 諸葛晴鳳 , 沙行勉, , 陳咸彰,3 , 吳 林 , 吳 挺

1(重慶大學 計算機學院,重慶 400044)2(華東師范大學 計算機科學與軟件工程學院,上海 200062)3(重慶大學 通信工程學院,重慶 400044)

目前,處理器和存儲系統之間的數據I/O 是極為嚴重的性能瓶頸,導致計算機系統無法應對上層應用的強時效性和高可靠等存儲服務需求.新型非易失性存儲器(non-volatile memory,簡稱NVM),如相變存儲器(phase change memory,簡稱PCM)[1-4]和3D Xpoint[5]等,具有非易失性、低延遲、存儲密度高、抗震性好、低功耗和可按字節尋址等優點.表1 中PCM 的存儲密度是DRAM 的2 倍~4 倍,讀寫延遲比NAND Flash 低3 個和2 個數量級,比HDD 分別低5 個和3 個數量級.鑒于NVM 的優良特性,取得了學術界和工業界的廣泛關注,被視為潛力巨大的新一代存儲設備.NVM 給現有的存儲系統的發展帶來了新的機遇,NVM 既可以作為內存,也可以作為外存[3,6,7].近年出現諸多利用 NVM 作為內存的新型持久化內存文件系統,例如 BPFS[8],PMFS[9],NOVA[10],SIMFS[11],SCMFS[12]和HiNFS[13]等.這類持久化內存文件系統充分發揮NVM 的低延遲、可按字節尋址等優點,優化文件系統的I/O 棧,使得文件訪問吞吐率達到GB/s 級.

Table 1 Comparison among DRAM,PCM,NAND Flash,and HDD[14]表1 比較DRAM,PCM,NAND Flash 和HDD[14]

雖然NVM 擁有諸多優點,但是卻普遍具有一個重要的缺陷,即存儲單元的寫耐受度低[1-3,15-23].PCM 是代表性的NVM 存儲器,利用相變材料的晶態(低電阻,表示“1”)和非晶態(高電阻,表示“0”)所表現出來的導電性差異來存儲數據.數據在0 與1 之間的改變需要向存儲單元加大電流,使其在晶態與非晶態之間轉變,導致存儲單元的磨損.所以PCM 存儲單元的寫耐受度有限,最大寫次數約為108[24-27],即PCM 相變材料在晶體和非晶體的轉變次數達到108時,該存儲單元將變得不穩定,被視為已損壞(即磨損穿).因此,病毒主要針對NVM 寫耐受度低的缺點,通過持續修改NVM 某個存儲單元,最終損壞該存儲單元,導致數據出錯,進而破壞整個存儲系統的可靠性.現有防御措施的主要思想是以空間換壽命,通過磨損均衡技術把針對少量存儲單元的大量寫操作分散到其他存儲空間,使得每個存儲單元的磨損度相對平均,從而避免被過度磨損.

現階段學術界在兩個層面探索磨損均衡技術:在硬件層面,典型的方法有 Start-Gap[28]和安全刷新算法(security refresh)[29],核心思想是通過在控制器動態改變邏輯地址到物理地址的映射來實現磨損均衡,但是這些磨損均衡算法抗惡意攻擊的能力不強,RTA(remapping timing attack)[30]等病毒程序可以迅速探測到映射的變化規律,進而繼續對固定的物理存儲單元造成損傷;另一種是軟件層面,主要集中在操作系統,通過動態改變進程的邏輯地址到物理地址的映射來實現磨損均衡.作為管理NVM 存儲設備的基本設施,目前的持久化內存文件系統卻沒有防御針對NVM 的磨損攻擊.例如:SanGuo[31]提出一種考慮磨損度的空閑頁分配技術,卻沒有系統性地保護既有文件數據和元數據的存儲單元;文獻[24]提出面向PCM 存儲系統的磨損均衡機制,但是不能充分抵御針對文件索引結構等元數據和文件數據存儲區的磨損攻擊.病毒程序利用簡單的文件操作,即可磨損穿現有持久化內存文件系統的文件數據或元數據存儲區,導致文件系統的數據錯誤,嚴重破壞存儲系統的可靠性.

為此,本文首次探索多種借助持久化內存文件系統的文件操作對NVM 造成惡意磨損的攻擊方式.通過分析各種攻擊方式攻擊的數據結構,本文提出持久化內存文件系統磨損防御技術(persistent in-memory file system wear defense technique,簡稱PFWD)來保護NVM 的存儲單元.PFWD 技術包括4 個部分,分別是索引節點元數據虛擬化技術、超級塊遷移技術、文件數據頁磨損均衡技術和文件索引結構遷移技術.PFWD 的核心思想:對索引節點、超級塊、文件數據、文件索引結構和日志的更新操作均勻分布到整個NVM 存儲空間.RTA 無法攻破本文提出的防御機制,因為RTA 的有效攻擊需要滿足兩個必要條件:一是要探測到物理空間重映射后的地址;二是獲取寫該地址的權限.在本文提出的基于文件系統的PFWD 防御機制中,RTA 不具備這兩個條件,因為PFWD 把達到磨損遷移條件的物理空間直接回收到空閑鏈表并防止立即重分配,其地址映射信息對上層應用封閉,所以RTA 無法查知該物理空間的地址,也不能獲取其訪問權限.因此,本文將探討通過文件系統對NVM 存儲空間的磨損攻擊方式,并提出對應的PFWD 防御技術,實現NVM 存儲空間的磨損均衡.本文的主要貢獻如下.

(1) 探索多種通過持久化內存文件系統對NVM 造成磨損攻擊的病毒,分析病毒惡意磨損攻擊的嚴重性,并按攻擊的數據結構分類病毒程序;

(2) 提出索引節點元數據虛擬化技術防御病毒程序對索引節點存儲區的磨損攻擊.該技術可在系統運行時,把更新頻次高的索引節點動態遷移到磨損度低的存儲區,使得索引節點的大量更新操作分散到多個物理存儲區,實現索引節點存儲區的磨損均衡,避免少數索引節點的存儲單元被磨損穿;

(3) 提出超級塊遷移技術,通過把超級塊遷移到磨損度低的存儲區,使得對超級塊的大量更新操作分散到多個物理存儲區,避免超級塊的存儲單元被磨損穿;

(4) 提出文件數據頁磨損均衡技術,結合持久化內存文件系統必備的數據一致性機制,防御對文件數據和日志存儲單元的磨損攻擊.對文件進行修改,總是獲取磨損度較低的空閑頁作為日志和文件數據的存儲區,避免少數文件數據和日志的存儲單元被磨損穿;

(5) 提出文件索引結構遷移技術,根據文件索引結構物理空間的磨損程度,把更新頻次高的索引項遷移到磨損度低的物理頁,防止少數文件索引結構的索引項的存儲單元被磨損穿;

(6) 實驗表明:在病毒程序的惡意磨損攻擊下,本文提出的PFWD 技術能將NVM 可容忍的總寫次數提高10 240 倍,而且該倍數隨著NVM 存儲空間的增大而增大.

本文第1 節是本文的研究動機.第2 節探索通過文件操作攻擊NVM 的磨損攻擊.第3 節介紹本文提出的磨損攻擊防御機制.第4 節用實驗驗證提出的防御機制的有效性.第5 節總結全文.

1 研究動機

持久化內存文件系統包括兩類數據,即元數據和文件數據.元數據可分為超級塊、索引節點和文件索引結構,對大多數文件系統而言,還包括用于支持數據一致性的日志.現有持久化內存文件系統的設計沒有對文件數據和元數據實現磨損保護,病毒程序可以輕易通過文件操作造成NVM 存儲設備的損壞.以下分析現有持久化內存文件系統在磨損保護方面的設計缺陷:

(1) 超級塊.保存文件系統的全局信息,如NVM 的空閑頁數和空閑索引節點數等,所以NVM 空間的分配和釋放、索引節點的申請和釋放都會修改超級塊,見表2,大量文件操作都需要更新超級塊,所以超級塊的更新頻次極高,但現有的持久化內存文件系統都把超級塊保存在NVM 固定位置,不能移動,導致超級塊存儲區的磨損極為嚴重.

Table 2 Common file operations表2 常用的文件操作

(2) 索引節點.保存文件的基本信息,如文件大小、文件數據的最后訪問時間(atime)、文件數據的最后修改時間(mtime)、索引節點的最后修改時間(ctime)、存儲文件數據的物理頁數、鏈接數等.文件的創建、打開、關閉、硬鏈接、軟鏈接等操作都會更新索引節點.雖然現有的持久化內存文件系統采用緩存機制[32]來減少更新NVM 中真實索引節點的寫次數,但存儲文件數據的物理頁數、鏈接數、文件大小等重要信息都必須立即寫回NVM,以保證數據的一致性.現有的持久化內存文件系統使用數組或者樹型結構組織文件系統的索引節點.NOVA[10],SIMFS[11]和SCMFS[12]采用數組結構管理索引節點,即在NVM 劃分一段連續的物理空間存儲所有的索引節點; BPFS[8],PMFS[9]和HiNFS[13]采用樹形結構管理索引節點,即所有索引節點的物理存儲空間按段管理,因此,索引節點分散存放在NVM 的物理空間.無論采用那種數據結構保存索引節點,每個文件的索引節點在它的生命周期內都存放在NVM 的固定位置,不能移動.如表2 所示,大量常用文件操作都需要更新索引節點,所以索引節點存儲區的磨損極為嚴重.

(3) 文件索引結構.更新文件索引結構和數據一致性的實現機制有關,文件系統的一致性主要分為元數據一致性和數據一致性.元數據一致性僅保證文件元數據能恢復到一致性狀態;數據一致性同時保證文件元數據和文件數據恢復到一致性狀態,因此數據一致性保證一致性的強度比文件元數據一致性高.文件系統主要采用預寫日志(write-ahead logging,簡稱WAL)[33-35]和寫時復制(copy-on-write,簡稱COW)[8,11]機制來實現數據一致性.采用預寫日志機制實現數據一致性,文件覆蓋寫是直接修改文件數據的原存儲位置,因此不涉及修改文件索引結構;采用寫時復制機制實現數據一致性,文件覆蓋寫是把數據寫到新的存儲位置,然后修改文件索引結構.預寫日志和寫時復制機制,文件執行數據追加(append write)操作,都在文件索引結構添加索引項(備注:如果文件最后的數據頁不能保存本次追加的數據).現有的持久化內存文件系統,例如 SIMFS[11]采用偽文件寫(pseudo-file write,簡稱PFW),BPFS[8]采用短路影子分頁(short-circuit shadow paging,簡稱SCSP),兩種都屬于寫時復制機制.NOVA[10]文件數據一致性采用寫時復制機制;Shortcut-JFS[16]采用自適應日志(adaptive logging,簡稱AL),即預寫日志結合寫時復制機制.AL 的核心思想是:如果單個數據頁上更新的數據量小于頁大小的一半,則采用預寫日志機制實現數據一致性;如果單個數據頁上更新的數據量大于或等于頁大小的一半,則采用寫時復制機制實現數據一致性.現有的持久化內存文件系統,如果采用寫時復制實現數據一致性,文件執行覆蓋寫操作,需修改文件索引結構,每個文件的索引結構在它的生命周期內都存放在NVM 的固定位置,不能移動,如果持續修改文件某個區間的數據,需頻繁修改文件索引結構,導致文件索引結構的存儲區持續被磨損.

(4) 文件數據.更新文件數據和數據一致性實現機制有關,如果持久化內存文件系統采用預寫日志機制[33-35]實現數據一致性,文件覆蓋寫是直接就地更新文件數據的原存儲位置.現有的持久化內存文件系統,例如Shortcut-JFS[16],如果單個數據頁上更新的數據量小于頁大小的一半,則采用預寫日志機制實現數據一致性,持續修改文件的數據量小于頁大小一半時,則被修改文件數據的存儲單元持續被磨損;PMFS[9]由于未實現數據一致性,僅支持元數據一致性,文件覆蓋寫是直接就地更新文件數據的原存儲位置,持續修改文件的固定區間的數據,則被修改數據的存儲單元持續被磨損.

(5) 日志.持久化內存文件系統采用日志實現數據一致性.日志的存儲區可以是NVM 的一段連續的區域,例如PMFS[9]的日志保存在一段連續的存儲空間(PMFS-Log)中,持續地執行基本的文件操作,就能寫穿PMFSLog 的存儲單元;日志的存儲區域也可以分散在整個NVM 存儲空間,例如,NOVA[10]為每個索引節點管理一個私有日志(日志結構體),以下簡稱索引節點私有日志,默認大小是4KB,通過在索引節點私有日志中記錄索引節點修改信息實現元數據一致性,同時,通過垃圾回收機制回收已提交的日志的存儲空間.針對通過修改多個索引節點的操作,例如rename,unlink 等,NOVA 為每個CPU 分配一個日志(journal)區間來保存索引節點的修改信息,以保證元數據一致性,日志存儲空間默認大小是4KB,簡稱索引節點公有日志.NOVA 的私有日志和公有日志保存在固定的存儲區間,因此,持續執行簡單的文件操作,就能把NOVA 的日志存儲區間磨損穿.無論采用何種方式組織日志,現有的持久化內存文件系統都沒有考慮日志存儲區間的磨損均衡,如表2 所示,大多數文件操作都需要寫日志來確保文件的一致性,因此,日志的修改頻次極高,所以日志存儲區的磨損極為嚴重.

文件更新操作都會涉及到修改元數據或者文件數據,表2 展示了常用的文件操作對元數據和文件數據的更新情況.例如文件更新操作(write)需要修改索引節點的文件數據的最后修改時間,如果文件更新操作涉及到申請新的物理頁,則需要修改超級塊的空閑頁數和修改文件索引結構的索引項.為了保證本次修改的數據一致性,需要寫日志.所以文件更新操作需要修改超級塊、索引節點、文件索引結構、文件數據和日志.

由以上可知:每個文件的元數據在它的生命周期都存放在NVM 的固定位置,都不會被移動,文件數據是否移動和持久化內存文件系統實現數據一致性機制有關,所以攻擊者實現病毒程序,通過文件操作持續修改文件的元數據或者數據,使得元數據或文件數據的存儲區迅速被磨損穿.例如,PCM 存儲單元的最大寫次數約為108[24-27],PMFS 的寫延遲為300ns~500ns[9].持續修改NVM 的某個存儲單元,則可以通過下面公式估算PCM 的使用壽命:

PCM 存儲單元最大寫次數取108,PMFS 的寫延遲取500ns,則PCM 的使用壽命為50s,不到1 分鐘就能把PCM 磨損穿,所以現有持久化內存文件系統的設計,攻擊者利用文件操作輕易就能把NVM 存儲設備損壞.

為此,本文將基于現有持久化內存文件系統的以上設計缺陷,探索通過文件操作攻擊底層NVM 存儲設備的方法,并提出相應的保護機制.

2 針對NVM 的磨損攻擊

本節探索通過文件操作對NVM 造成惡意磨損的攻擊方式.如第1 節所述,文件系統的大量操作會對NVM造成磨損.本文發現,對于現有無磨損攻擊防御機制的持久化內存文件系統,病毒程序不需復雜的設計,僅需執行簡單的文件操作即可造成NVM 磨損穿.為此,本文提出5 種利用不同的基本文件操作對NVM 造成惡意磨損的攻擊方式,利用這5 種基本攻擊方式,可以任意組合成具有更大破壞力的病毒.為展示不同攻擊方式的破壞性,通過列舉每種攻擊方式修改的數據結構,計算每種數據結構的寫次數,然后分析數據結構和物理存儲對應關系,最后分析NVM 物理頁的磨損度.

· 攻擊方式1:利用創建文件和刪除文件操作執行磨損攻擊.

創建文件需要完成4 個操作:(1) 申請索引節點;(2) 申請物理頁,創建文件索引結構;(3) 在父目錄插入一條目錄項;(4) 修改超級塊的空閑頁數和空閑索引節點數.相應地,刪除文件也需要完成4 個操作:(1) 釋放文件索引結構的物理頁;(2) 在父目錄刪除文件的目錄項;(3) 釋放索引節點;(4) 修改超級塊的空閑頁數和空閑索引節點數.此外,創建和刪除文件還需要寫日志確保文件的一致性.所以如表3 所示,創建文件和刪除文件操作會造成超級塊、索引節點、文件索引結構、目錄文件數據和日志的更新.

Table 3 Data structures of persistent in-memory file systems under wear attacks表3 持久化內存文件系統被磨損攻擊的數據結構

因此,攻擊方式1 就是在持久化內存文件系統的單個目錄下反復創建文件、刪除文件,例子如病毒程序1所示:通過一個簡單的for 循環,在一個給定的目錄下執行108次創建文件和刪除文件操作,對文件系統的元數據和文件數據的存儲區造成大量寫操作.數據結構的寫次數見表4,所有數據結構的寫次數大于或等于108.索引節點、文件索引結構和日志是否修改固定的存儲單元,這與持久化內存文件系統的索引節點、物理頁、日志管理有關.但是超級塊和目錄文件數據的存儲單元,這兩個數據結構在病毒程序1 的操作中從不改變存儲位置,而且每次創建和刪除文件都會更新,所以病毒程序會在對應的存儲單元執行2×108次寫操作,迅速導致其磨損穿.

病毒程序1.攻擊方式1 的示例代碼.

Table 4 Revision counts of data structures of persistent in-memory file systems under wear attacks表4 持久化內存文件系統中被磨損攻擊數據結構的寫次數

· 攻擊方式2:利用創建硬鏈接和刪除硬鏈接操作執行磨損攻擊.

創建硬鏈接需要完成兩個操作:1) 在目標文件的父目錄增加一條目錄項;2) 源文件索引節點的鏈接數加一.相應地,刪除硬鏈接也需要完成兩個操作:1) 在目標文件父目錄刪除一條目錄項;2) 源文件索引節點的鏈接數減一.此外,創建和刪除硬鏈接還需寫日志確保文件的一致性.如表3 所示,創建硬鏈接和刪除硬鏈接會造成索引節點、目錄文件數據和日志的更新.

因此,攻擊方式2 就是在持久化內存文件系統對某個文件反復創建硬鏈接、刪除硬鏈接,例子如病毒程序2所示:通過一個簡單的for 循環,對一個給定的文件執行108次創建硬鏈接和刪除硬鏈接操作,對文件系統的元數據和文件數據的存儲區造成大量寫操作.數據結構的寫次數見表4,索引節點、文件數據和日志的寫次數大于108.日志是否修改固定的存儲單元與日志管理有關,目錄文件數據和索引節點的存儲單元,這兩個數據結構在病毒程序2 的操作中從不改變存儲位置,而且每次創建和刪除硬鏈接都會更新,所以病毒程序會在對應的存儲單元執行2×108次寫操作,迅速導致其磨損穿.

病毒程序2.攻擊方式2 的示例代碼.

· 攻擊方式3:利用創建軟鏈接和刪除軟鏈接操作執行磨損攻擊.

創建軟鏈接需要完成4 個操作:1) 申請目標文件的索引節點;2) 在目標文件父目錄增加目錄項;3) 申請物理頁保存源文件的位置信息;4) 修改超級塊的空閑頁數和空閑索引節點數.相應地,刪除軟鏈接也需要完成4 個操作:1) 釋放保存源文件位置信息的物理頁;2) 在目標文件父目錄刪除目標文件的目錄項;3) 釋放目標文件的索引節點;4) 修改超級塊的空閑頁數和空閑索引節點數.此外,創建和刪除軟鏈接還需寫日志確保文件的一致性.如表3 所示,創建軟鏈接和刪除軟鏈接會造成超級塊、索引節點、目錄文件數據和日志的更新.

因此,攻擊方式3 就是在持久化內存文件系統對某個文件反復創建軟鏈接、刪除軟鏈接,例子如病毒程序3所示:通過簡單的for 循環,對給定的文件執行108次創建軟鏈接和刪除軟鏈接操作,對文件系統的元數據和文件數據存儲區造成大量寫操作.數據結構的寫次數見表4,超級塊、索引節點、目錄文件數據和日志的寫次數大于或等于108.索引節點、日志是否修改固定的存儲單元與索引節點和日志管理有關,超級塊和目錄文件數據的存儲單元,這兩個數據結構在病毒程序3 的操作中從不改變存儲位置,而且每次創建和刪除軟鏈接都會更新,所以病毒程序會在對應的存儲單元執行2×108次寫操作,迅速導致其磨損穿.

病毒程序3.攻擊方式3 的示例代碼.

· 攻擊方式4:利用文件覆蓋寫操作執行磨損攻擊.

文件的覆蓋寫操作和文件系統實現數據一致性機制有關,如果采用預寫日志機制[33-35]實現數據一致性,則文件覆蓋寫需要完成3 步操作:1) 把更新內容寫入日志;2) 把更新內容寫入文件;3) 修改索引節點.如果采用寫時復制機制[8,11]實現數據一致性,則文件覆蓋寫需要完成5 步操作:1) 把更新內容寫入新申請的物理頁; 2) 修改文件索引結構;3) 修改索引節點;4) 釋放被替換的文件數據頁;5) 修改超級塊的空閑頁數.此外,文件覆蓋寫還需寫日志確保文件的一致性.如表3 所示,文件覆蓋寫操作會造成超級塊、索引節點、文件索引結構、文件數據和日志的更新.

因此,攻擊方式4 就是在持久化內存文件系統對某個文件反復執行覆蓋寫操作,例子如病毒程序4 所示:通過一個簡單的for 循環,對一個給定的文件執行108次覆蓋寫操作,對文件元數據和文件數據存儲區造成大量寫操作.數據結構的寫次數見表4,索引節點、文件索引結構、文件數據和日志的寫次數等于108.每種數據結構的寫次數和文件系統實現數據一致性機制息息相關,采用預寫日志機制,文件執行覆蓋寫操作,對文件的數據的修改是直接修改原存儲位置,沒有涉及修改文件索引結構.因此,文件索引結構的寫次數為0,文件數據的寫次數為108,病毒程序4 持續修改文件數據的固定區間108次,則文件數據頁被磨損穿;采用寫時復制機制,數據寫到新的位置,即需要申請物理頁和修改文件索引結構,則超級塊、文件索引結構的寫次數為108.這兩個數據結構在病毒程序4 的操作中從不改變存儲位置,而且每次都會更新,所以病毒程序會在對應的存儲單元執行108寫操作,迅速導致其磨損穿.無論是采用預寫日志還是寫時復制機制實現數據一致性,都需要修改索引節點和寫日志,如表4 所示,索引節點和日志的寫次數都為108,日志是否修改固定的存儲單元與日志管理有關.索引節點在病毒4 的操作中從不改變存儲位置,所以病毒程序會在對應的存儲單元執行108寫操作,迅速導致其磨損穿.

病毒程序4.攻擊方式4 的示例代碼.

· 攻擊方式5:利用文件重命名操作執行磨損攻擊.

文件重命名需要完成3 個操作:1) 在目標文件的父目錄增加一條目錄項;2) 在源文件父目錄刪除該文件的目錄項;3) 修改索引節點.此外,文件重命名操作還需寫日志確保文件的一致性.如表3 所示,文件重命名操作會造成索引節點、目錄文件數據、日志的更新.

因此,攻擊方式5 就是在持久化內存文件系統對某個文件反復執行重命名操作,例子如病毒程序5 所示:通過一個簡單的for 循環,對一個給定的文件執行108次文件重命名操作,對文件系統的元數據和目錄文件數據存儲區造成大量寫操作.數據結構的寫次數見表4,索引節點、文件數據和日志的寫次數為108,日志是否修改固定的存儲單元與日志管理有關.每執行一次文件重命名操作,需要修改源文件和目標文件的索引節點和目錄文件數據.文件數據和索引節點這兩個數據結構在病毒程序5 的操作中從不改變存儲位置,而且每次對文件執行重命名操作都會更新,所以病毒程序會在對應的存儲單元執行108寫操作,迅速導致其磨損穿.

病毒程序5.攻擊方式5 的示例代碼.

本節探索的5 種磨損攻擊方式涉及到持久化內存文件系統所有的元數據和文件數據,即超級塊、索引節點、文件索引結構、文件數據和日志,每種數據都可以通過簡單的文件操作進行更新.實驗證明:在PMFS[9],以上5 種攻擊方式發動對NVM 的磨損攻擊,在很短的時間內就能把NVM 磨損穿.而現有的持久化內存文件系統,無論是PMFS[9],還是BPFS[8],NOVA[10],SIMFS[11]和HiNFS[13]等,都沒有考慮NVM 磨損防御,即都可以通過簡單的文件操作在很短的時間內就能把底層的NVM 磨損穿,嚴重威脅到文件系統的數據穩定性.

3 磨損防御機制PFWD

3.1 概述

從上一節可知,病毒程序可以通過利用不同的文件操作組合出多種針對NVM 的磨損攻擊方式,它們攻擊的數據涉及到持久化內存文件系統的所有數據,即超級塊、索引節點、文件索引結構、文件數據和日志.為此,本文認為,應從保護被攻擊數據的角度防御病毒的惡意磨損攻擊.本節據此提出持久化內存文件系統磨損防御機制(persistent in-memory file system wear defense mechanism,簡稱PFWD)防御病毒對NVM 的磨損攻擊.

具體而言,PFWD 包括4 項技術:超級塊遷移技術、索引節點元數據虛擬化技術、文件數據頁磨損均衡技術和文件索引結構遷移技術,見表5.其中,文件數據頁磨損均衡技術用于防御針對日志和文件數據的攻擊.

Table 5 PFWD defense the data under wear attack表5 針對被攻擊數據的磨損防御機制PFWD

在持久化內存文件系統實現PFWD,NVM 的物理空間布局如圖1 所示:(1) 超級塊指針,指向超級塊的存儲區.超級塊的存儲區可動態調整,當超級塊存儲區的磨損嚴重時,超級塊可遷移到磨損較低的物理區間;(2) 物理頁寫次數表,記錄NVM 每個物理頁的寫次數,每次更新物理頁的數據,都要在物理頁寫次數表增加相應的寫次數,因為PFWD 機制能保證NVM 物理空間的磨損均衡,所以物理頁寫次數表的存儲區間也是磨損均衡的;(3) 索引節點映射表,記錄虛擬索引節點的寫次數和偏移量,實現索引節點的遷移;(4) 超級塊、索引節點、文件索引結構、文件數據、日志,分散在NVM 整個物理空間,通過超級塊遷移技術、索引節點元數據虛擬化技術、文件索引結構遷移技術、文件數據頁磨損均衡技術實現以上5 種數據結構的存儲區的磨損均衡.

Fig.1 Layout of physical address space of NVM when PFWD is implemented in persistent in-memory file system圖1 持久化內存文件系統實現PFWD 時,NVM 的物理地址空間布局

持久化內存文件系統實現PFWD,物理頁寫次數表和索引節點映射表的空間開銷極小.例如,NVM 的存儲空間大小為10GB,物理頁大小為4KB,每8 字節記錄一個物理頁的寫次數,則物理頁寫次數表占用的存儲空間是,僅占總存儲空間的0.2%.通常,所有文件索引節點總的存儲空間大小設計為持久化內存文件系統存儲空間的1%,索引節點的大小為128KB[9-11],4KB 大小的物理頁能存儲32 個索引節點.索引節點映射表中每個索引節點的寫次數和偏移量共占8 字節,即分別用4 字節記錄寫次數和偏移量,則索引節點映射表所占存儲空間的大小是,僅占總存儲空間的0.06%.所以,物理頁寫次數表和索引節點映射表的存儲空間開銷可以忽略不計.此外,為提高檢索效率,物理頁寫次數表和索引節點映射表都使用數組結構,并且兩種數據結構采用修改DRAM 副本的方式更新其寫次數,只有在適當的時機回寫NVM,以減少兩個數據結構物理存儲區的寫次數.因此,物理頁寫次數表和索引節點映射表所在存儲區的磨損極低.

3.2 索引節點元數據虛擬化技術

索引節點是文件系統的重要組成部分,每個索引節點擁有唯一的編號(ino),文件系統通過ino 來檢索索引節點.本文把保存單個索引節點的NVM 物理空間稱為“索引節點槽(inode slot)”,文件系統所有的索引節點槽組成“索引節點存儲區”.既有的持久化內存文件系統,ino 和Inode slot 具有固定的映射關系,即索引節點存放在NVM 的固定位置.例如:NOVA[10],SIMFS[11]和SCMFS[12]采用數組結構保存所有的索引節點,即在NVM 劃分一段連續的物理空間存儲所有的索引節點;BPFS[8],PMFS[9]和HiNFS[13]雖然通過樹形結構把索引節點分散存放在NVM 的物理空間,但是一經使用就不再改變其存儲位置.所以,文件系統對索引節點的所有寫操作都作用于固定的存儲單元.這種固定映射關系的索引節點存儲區是無法抵御惡意磨損攻擊,病毒程序通過簡單的文件操作就能把索引節點存儲單元磨損穿.為此,本文提出一種高效的索引節點元數據虛擬化技術,使得文件的索引節點在其整個生命周期內能動態遷移.該技術的核心思想:如果保存某個索引節點的Inode slot 的磨損次數達到遷移閾值,則把該索引節點遷移到磨損較低的Inode slot,通過動態調整索引節點的物理位置,使得對單個索引節點集中的寫操作分散到整個索引節點存儲區,實現索引節點存儲區的磨損均衡.

為實現索引節點遷移,首先要能改變ino 到Inode slot 的映射關系,即改變索引節點的存儲位置.為此,索引節點元數據虛擬化技術提出在文件系統初始化時,在內核預留一段連續的虛擬地址空間作為“索引節點虛擬地址空間”,同時申請多個NVM 物理頁作為“索引節點存儲區”.索引節點虛擬地址空間被分割為多個大小相等的虛擬索引節點(virtual inode,簡稱vInode),索引節點存儲區則被劃分為多個大小相等的Inode slot.索引節點虛擬地址空間的大小等于索引節點存儲區的物理空間大小,單個vInode 所占的虛擬地址空間大小也等于單個Inode slot 的物理空間大小,即vInode 的總數等于Inode slot 的總數.如圖2 所示,vInode 通過頁表(page table)和Inode slot 一一對應,該映射關系所采用的格式與進程頁表的格式相同,利用 CPU 既有的硬件 MMU(memory management unit)完成虛擬地址到物理地址的轉換.為了實現索引節點的遷移,索引節點元數據虛擬化技術提出在NVM 新增數據結構“索引節點映射表”,索引節點映射表用來記錄vInode 的偏移量(offset).偏移量的總數等于文件系統索引節點的總數,即等于vInode 和Inode slot 的總數.偏移量的計算,具體而言,vInode 的起始地址減去索引節點虛擬地址空間的起始地址是一個固定的差值.該差值是vInode 大小的整數倍,用該差值對vInode 的大小求余,結果記為vInode 偏移量(以下簡稱偏移量).因此,索引節點的檢索流程,例如查詢索引節點3,則從索引節點映射表中得到偏移量,用偏移量乘以vInode 的大小,再加上索引節點虛擬地址空間的基址,得到vInode 的虛擬地址首地址,利用MMU 完成虛擬地址到物理地址的轉換,最終得到索引節點3 的實際數據.通過索引節點元數據虛擬化技術,實現ino 和Inode slot 動態解綁,使得修改索引節點映射表的偏移量就可以改變ino 和Inode slot的映射關系,即可實現索引節點的遷移.

Fig.2 Inode virtualization圖2 索引節點元數據虛擬化

為了將索引節點遷移到寫次數較少的Inode slot,則每次更新索引節點,則需要記錄Inode slot 的寫次數.由于vInode 和Inode slot 是一一映射關系,因此,Inode slot 的寫次數也是vInode 的寫次數,如圖2 所示:為每個vInode 設置一個寫計數器(write count)器(以下簡稱寫計數器),用于記錄vInode 的寫次數,寫計數器保存在索引節點映射表里.ino、偏移量和寫計數器在索引節點映射表是一一對應關系,具體對應關系如圖2 所示.

索引節點元數據虛擬化技術使得索引節點的更新操作均勻分布到索引節點存儲區,即:每次更新索引節點,需要增加該索引節點對應的vInode 的寫計數器.如果vInode 的寫次數達到設定的遷移閾值Wp,則查找vInode寫計數器,把該索引節點數據拷貝到一個空閑的索引節點的Inode slot;然后把該索引節點對應的vInode 的計數器清零;最后,在索引節點映射表修改偏移量,實現索引節點的動態遷移.上述遷移方法可能產生一種極端情況,即索引節點在兩個Inode slot 來回遷移.例如:索引節點A對應vInodeA,vInodeA對應Inode slotA,索引節點B對應vInodeB,vInodeB對應Inode slotB且索引節點B處于空閑狀態,當vInodeA的寫次數達到遷移閾值,則索引節點A遷移到索引節點B的物理存儲空間Inode slotB,使得索引節點A對應vInodeB,索引節點B對應vInodeA;同時,重置vInodeA的寫次數為0 和索引節點B處于空閑狀態,繼續寫索引節點A,當寫次數再次達到遷移閾值,索引節點A的數據再次遷移到索引節點B的物理存儲空間Inode slotA.因此,持續修改索引節點A,導致索引節點A在Inode slotA和Inode slotB來回遷移,迅速把這兩個存儲區間磨損穿.為解決上述問題并提高索引節點的管理效率,本文提出使用鏈表實現隊列(queue)來管理空閑索引節點,以下簡稱索引節點空閑鏈表.索引節點的申請和釋放規則:總是從索引節點空閑鏈表的尾部獲取索引節點,而把釋放的索引節點插入到索引節點空閑鏈表頭部,從而避免短期內重復使用最近寫過的索引節點.鑒于索引節點更新頻次高,導致索引節點存儲區的磨損較為嚴重,為達到NVM 整個存儲空間的磨損均衡,本文提出索引節點以頁大小為粒度的遷移方法,即:每次更新索引節點,在物理頁寫次數表增加其Inode slot 所在物理頁的寫次數,如果該物理頁的寫次數達到遷移閾值Wq(Wq>>Wp),則把該頁所有的索引節點遷移到寫次數較少的空閑頁.

索引節點的遷移流程如圖3 所示.圖3(a)為遷移前的索引節點映射表,此時,索引節點1 對應的vInode 的寫次數為199,索引節點3 對應的vInode 的寫次數為0 且處于空閑狀態;同時,該索引節點位于索引節點空閑鏈表的表尾.如果索引節點遷移的閾值此時為200.更新索引節點1,則做索引節點遷移.首先,把索引節點1 的數據拷貝到索引節點3 的Inode slot;然后增加索引節點3 對應的vInode 的寫計數器,索引節點1 對應的vInode 的寫計數器清零;最后修改索引節點映射表中索引節點1 的偏移量為3 和索引節點3 的偏移量為1,即完成索引節點的遷移.如圖3(a):ino 為1 和3 的偏移量分別為1 和3,偏移量為1 和3 的vInode 的寫次數分別為199 和0.遷移完成后的索引節點映射表如圖3(b)所示,此時,ino 為1 和3 的偏移量分別為3 和1,偏移量為1 和3 的vInode 的寫次數分別為0 和1.

Fig.3 Example of inode migration圖3 索引節點遷移示例

索引節點元數據虛擬化技術使用頁表來實現vInode 到Inode slot 的映射,直接利用CPU 的MMU 完成虛擬地址到物理地址的轉換,最大程度保證索引節點檢索的性能.索引節點的遷移對用戶透明,只需把索引節點數據遷移到空閑且磨損少的Inode slot、修改索引節點映射表的偏移量和修改vInode 的計數器值,就能實現索引節點遷移,對其他正在使用的文件沒有影響.通過索引節點元數據虛擬化技術,實現索引節點的動態遷移,使得對索引節點的寫操作可以分散到不同的Inode slot,實現索引節點存儲區的磨損均衡,能有效地防御病毒對索引節點存儲單元的磨損攻擊.

3.3 超級塊遷移技術

既有持久化內存文件系統的設計,例如BPFS[8],PMFS[9],NOVA[10],SIMFS[11]和HiNFS[13]等,超級塊保存在NVM 的固定位置,不能移動,大多數文件操作都需要修改超級塊.例如,物理頁和索引節點的分配和釋放都要修改超級塊的空閑頁數和空閑索引節點,所以超級塊存儲區的磨損極為嚴重.而所有的持久化內存文件系統都沒有對超級塊存儲區做磨損保護,病毒程序通過簡單的文件操作就能把超級塊存儲單元磨損穿.所以,現有的持久化內存文件系統的設計是無法防御病毒發動對超級塊存儲單元的磨損攻擊.

為了有效防御病毒程序發動對超級塊存儲單元的磨損攻擊,本文提出超級塊遷移技術.如圖4 所示:設置一個超級塊指針,即把NVM 物理空間的前8 個字節作為超級塊指針,用來保存超級塊存儲區的首地址,超級塊可以遷移,當超級塊存儲區的寫次數達到遷移閾值Wq,則把超級塊遷移到磨損低的物理頁.

Fig.4 Example of superblock migration圖4 超級塊遷移示例

如圖4 所示:超級塊保存在物理頁A,當更新超級塊時,判斷物理頁A的寫次數是否達到閾值Wq.如果沒有達到閾值,則修改超級塊并且增加物理頁A的寫次數;否則,把超級塊遷移到磨損低且空閑的物理頁B,修改超級塊并且增加物理頁B的寫次數,然后修改超級塊指針指向物理頁B,最后釋放物理頁A,即完成超級塊遷移.

超級塊遷移技術實現超級塊動態遷移,使得集中對超級塊存儲區的寫操作分散到整個NVM 存儲空間,能有效地防御針對超級塊存儲單元的磨損攻擊.

3.4 文件數據頁磨損均衡技術

實現數據一致性是文件系統的基本功能,預寫日志[33-35]和寫時復制[8,11]是實現數據一致性的兩種不同機制.文件的更新和實現數據一致性的機制息息相關,現有的持久化內存文件系統采用寫時復制或者寫時復制結合預寫日志機制實現數據一致性.BPFS[8],NOVA[10],SIMFS[11]采用寫時復制機制實現文件數據一致性.對于文件覆蓋寫,寫時復制機制是把數據寫到新的存儲位置,然后修改文件索引結構,持續地修改文件數據,難以在短時間內把文件數據頁磨損穿.但是,頻繁地更新文件索引結構,導致文件索引結構存儲區間迅速被磨損穿(見第3.5 節).Shortcut-JFS[16]采用自適應日志(adaptive logging,簡稱AL),即預寫日志結合寫時復制機制實現數據一致性.持久化內存文件系統采用預寫日志機制實現數據一致性或沒有實現數據一致性,文件覆蓋寫是直接修改文件數據的原存儲位置.因此,持續修改文件的數據,則迅速寫穿文件數據存儲空間.持久化內存文件系統無論是支持文件元數據一致性,還是支持數據一致性(備注:文件元數據一致性僅需保證文件元數據一致性狀態,數據一致性需要保證文件元數據和文件數據一致性狀態),都需要備份文件元數據信息.PMFS[9]僅支持元數據一致性,通過在NVM 劃分一段連續的存儲區間(PMFS-log)來保存文件元數據信息,重復執行簡單的文件操作,很快就能把PMFS-log 存儲空間寫穿.NOVA[10]的每個索引節點都有一個私有日志,稱為索引節點私有日志,同時為每個CPU 劃分一個日志區間,簡稱索引節點公有日志.NOVA 的索引節點私有日志和公有日志的存儲區間是固定的,只有當存儲空間容量不夠,才會申請其他物理頁來擴充容量.因此,持續對文件做簡單的文件操作,在段時間內就能把索引節點的私有日志或者公有日志的存儲單元磨損穿.

為了有效地防御病毒程序發動對文件數據頁和日志存儲單元的磨損攻擊,本文提出了文件數據頁磨損均衡技術.如圖5 所示,日志由日志元數據和日志文件數據組成.日志元數據主要包括文件元數據、日志狀態、修改起始位置、文件修改大小和日志文件指針等,其中:文件元數據記錄被修改索引節點的基本信息;日志狀態包括初始化(initial)、提交(commit)、CheckPoint;日志文件指針指向日志文件.每個打開的文件都為其分配一個私有日志.如果文件操作不涉及文件數據的修改,則不使用日志文件;如果文件操作涉及到文件數據的修改,則使用日志文件.

Fig.5 Wear-leveling technique of file data page圖5 文件數據頁磨損均衡技術

文件數據頁磨損均衡技術采用寫時復制機制實現數據一致性,即:把更新數據寫入日志文件,通過交換文件數據頁和日志文件數據頁來實現文件的覆蓋寫.首先把索引節點被修改信息、文件被替換數據頁的指針、修改的起始位置、修改大小等數據寫入日志元數據;然后把更新數據寫入日志文件;最后修改索引節點及交換日志文件數據頁和文件被修改數據頁,即修改日志文件索引結構和文件索引結構.對文件執行數據追加(append write)操作,不使用日志文件,首先從空間管理模塊申請磨損低的物理頁,寫入追加數據,在物理頁寫次數表增加物理頁的寫次數;然后把本次修改的元數據信息寫入日志元數據;最后修改文件索引節點,把新增物理頁的指針寫入文件索引結構.當開始修改文件索引節點和文件數據時,設置日志狀態為提交狀態;當所有的修改數據都持久化到NVM,設置日志為CheckPoint 狀態,即修改完成.文件執行覆蓋寫操作,首先判斷日志文件數據頁的寫次數是否達到遷移閾值:如果達到遷移閾值,則申請磨損低的物理頁替換該日志文件數據頁,然后把數據寫入新申請的物理頁,在物理頁寫次數表增加寫次數;否則,把數據寫入日志文件,增加物理頁的寫次數.日志元數據的遷移方法同上.每次寫日志元數據,需在物理頁寫次數表增加寫次數,然后判斷其寫次數是否達到遷移閾值:如果達到遷移閾值,則把日志元數據遷移到磨損低的存儲空間.當日志元數據遷移完成后,修改文件索引節點指向日志元數據新的存儲區間,釋放原存儲區間.

本文提出的文件數據頁磨損均衡技術,實現日志數據的動態遷移,對文件執行覆蓋寫操作,都是使用日志文件數據頁替換文件被修改數據頁.每次數據寫入日志文件數據頁,都判斷其寫次數是否達到遷移閾值,達到則做數據遷移.對文件執行數據追加操作,都是從空間管理模塊申請磨損低的物理頁來保存追加數據,通過文件數據頁磨損均衡技術,使得對日志和文件數據的更新操作分散到整個NVM 存儲空間,實現文件數據及日志存儲區的磨損均衡,能有效地防御針對文件數據和日志的存儲單元的磨損攻擊.

3.5 文件索引結構遷移技術

文件索引結構的修改也和文件系統實現數據一致性機制有關,本文第3.4 節已經介紹了,現有持久化內存文件系統都采用了寫時復制[8,10]機制或者寫時復制結合預寫日志[29-31]機制來實現數據一致性.本文提出的文件數據頁磨損均衡技術也是采用寫時復制機制實現數據一致性.現有持久化內存文件系統,文件被創建后,文件索引結構就不會被遷移,即:現有的持久化內存文件系統都沒有對文件索引結構存儲區做磨損保護,病毒程序通過簡單的文件操作就能把文件索引結構的存儲單元磨損穿.所以,現有的持久化內存文件系統的設計是無法防御病毒發動對文件索引結構存儲單元的磨損攻擊.

為了有效地防御病毒程序發動對文件索引結構存儲單元的磨損攻擊,本文提出了文件索引結構遷移技術,如圖6 所示,每次更新文件索引結構的索引項,都判斷該索引項所在物理頁的寫次數是否達到遷移閾值Wq:如果沒有達到遷移閾值,則直接修改索引項;如果達到遷移閾值,則拷貝該索引項所在物理頁的所有索引項到空閑且磨損低的物理頁,修改索引項.然后修改上一級索引項,再判斷上一級索引項所在的物理頁的寫次數是否達到遷移閾值Wq:如果沒有達到遷移閾值,則本次文件索引結構遷移完成;如果達到遷移閾值,則對上一級文件索引結構做遷移.按此迭代操作.

Fig.6 File index structure migration圖6 文件索引結構遷移

本文提出的文件索引結構遷移技術同樣適用于本文第3.4 節的日志文件索引結構.通過對文件索引結構做遷移操作,使得文件索引結構更新操作分散到整個NVM 存儲空間,能有效地防御針對文件索引結構的存儲單元的磨損攻擊.

4 實驗結果與分析

本節驗證提出的PFWD 技術對惡意磨損攻擊的防御效果及性能開銷.

4.1 實驗配置

為進行驗證,本文基于PFWD 技術實現一個帶磨損保護的持久化內存文件系統(wear protected persistent in-memory file system,簡稱WPFS).對比的對象是近年來具有代表性的新型持久化內存文件系統PMFS[9].為了記錄文件系統物理頁的寫次數,實驗在PMFS[9]的源代碼中加入物理頁的磨損計數器,計數器自身的寫操作不記錄在文件系統頁面的寫次數中.本文采用第2 節提出的5 種磨損攻擊病毒程序分別攻擊WPFS 和PMFS[9],分析WPFS 和PMFS 的NVM 存儲空間的磨損情況;對比WPFS 和WPFS-NoPFWD(WPFS 未實現PFWD)的讀寫性能,分析持久化內存文件系統增加PFWD 的開銷.實驗結果證明,PFWD 能有效地防御病毒程序發動的磨損攻擊.

本文的實驗平臺配置有3.20GHz Intel i5-4460 處理器,8GB 的DRAM 內存,操作系統為Ubuntu 15.04,Linux內核是4.4.30.本實驗中使用4GB 的DRAM 內存模擬NVM.為更好地展示WPFS 防御磨損攻擊的效果,在磨損效果實驗中,WPFS 僅使用40MB 的NVM 存儲空間,即物理頁的大小為4KB,總共10240 個物理頁.在性能開銷實驗中,WPFS 和WPFS-NoPFWD 的NVM 存儲空間為4GB 大小.

4.2 NVM磨損分析

本節對比分析WPFS 和PMFS[9]兩種文件系統在本文提出的5 種磨損攻擊下的NVM 磨損情況.實驗結果如圖7~圖12 所示.

Fig.7 NVM wear under attack 1圖7 攻擊方式1 的攻擊下NVM 的磨損情況

Fig.8 NVM wear under attack 2圖8 攻擊方式2 的攻擊下NVM 的磨損情況

Fig.9 NVM wear under attack 3圖9 攻擊方式3 的攻擊下NVM 的磨損情況

Fig.10 NVM wear under attack 4圖10 攻擊方式4 的攻擊下NVM 的磨損情況

Fig.11 NVM wear under attack 5圖11 攻擊方式5 的攻擊下NVM 的磨損情況

Fig.12 NVM wear under all attacks mode proposed in this paper圖12 本文探索出的5 種攻擊方式的攻擊下NVM 的磨損情況

PMFS 在本文提出的5 種攻擊方式的磨損攻擊下,耗時最長的是病毒程序1,即通過一個簡單的for 循環,在一個給定的目錄下執行108次創建文件和刪除文件操作,在13 分鐘內就能把底層NVM 存儲設備磨損穿,NVM總的寫次數為1.5×109,但是使用PFWD 技術的WPFS 文件系統卻能保護NVM 承受21 943 倍于PMFS 的文件操作/寫操作.表6 分析WPFS 和PMFS 所有物理頁的最大寫次數、標準偏差和變異系數.實驗結果表明:PFWD技術通過把大量集中對少數存儲區的寫操作分散到整個NVM 存儲空間,實現了NVM 存儲空間的磨損均衡,能有效防御病毒程序通過簡單的文件操作就能把底層的NVM 存儲設備磨損穿.

Table 6 Analysis for the wear of NVM under the five proposed wear attacks表6 分析NVM 在提出的5 種磨損攻擊下的磨損情況

由圖7 可知:病毒程序1 在PMFS 中運行不到13 分鐘,就對NVM 的3 個頁面造成超過108次寫操作.假設底層NVM 存儲設備的寫耐受度為108[24-27],這3 個NVM 存儲單元即已被磨損穿.與此同時,其他90%以上的NVM 頁面的寫次數仍然為0.表6 中,在PMFS 和WPFS 上分別運行病毒程序1 后,其底層NVM 物理頁的最大寫次數分別為6.0×108和6.8×104,PMFS/WPFS 的倍數高達8 824;其次,兩者的標準偏差分別為1 732.5 和7 394 591.8,PMFS/WPFS 的倍數高達4 268;變異系數分別為0.026 6 和50.647 9,PMFS/WPFS 的倍數高達1 904.病毒程序1 在目錄下反復執行創建文件和刪除文件,達到把超級塊、索引節點、目錄文件數據、文件索引結構和日志的存儲區迅速磨損穿.由于PMFS 沒有對以上數據的存儲區做磨損保護,尤其是日志區域,更是整個文件系統反復使用一塊固定的日志PMFS-Log[9],所以無法抵御病毒程序的惡意磨損攻擊.而WPFS 考慮到以上數據存儲區的磨損保護,把大量集中對少數存儲區的寫操作分散到整個存儲空間,實現了NVM 的磨損均衡,能夠有效防御病毒程序1 的惡意磨損攻擊.

由圖8 可知,病毒程序2 在PMFS 中運行不到9 分鐘,就對NVM 的兩個頁面造成超過108次寫操作.假設底層NVM 存儲設備的寫耐受度為108[24-27],這兩個NVM 磨損單元即已被磨損穿.與此同時,其他90%以上的NVM頁面的寫次數仍然為0.表6 中,病毒程序2 分別在PMFS 和WPFS 運行,NVM 物理頁的最大寫次數分別為4.0×108和6.8×104,PMFS/WPFS 的倍數高達5 882;其次,兩者的標準偏差分別為1 732.5 和5 590 350.8,PMFS/WPFS 的倍數高達3 227;變異系數分別為0.026 6 和57.241 8,PMFS/WPFS 的倍數高達2 152.病毒程序2對文件反復執行創建硬鏈接和刪除硬鏈接,達到迅速把索引節點、目錄文件數據和日志的存儲區磨損穿.由于PMFS 沒有對以上數據的存儲區做磨損保護,所以無法抵御病毒程序的惡意磨損攻擊.而WPFS 考慮到以上數據存儲區的磨損保護,把大量集中對少數存儲區的寫操作分散到整個存儲空間,實現了NVM 的磨損均衡,能夠有效防御病毒程序2 的惡意磨損攻擊.

由圖9 可知:病毒程序3 在PMFS 中運行不到12 分鐘,就對NVM 的4 個頁面造成超過108次寫操作.假設底層NVM 存儲設備的寫耐受度為108[24-27],這4 個NVM 磨損單元即已被磨損穿.與此同時,其他90%以上的NVM 頁面的寫次數仍然為0.如表6 所示:病毒程序3 分別在PMFS 和WPFS 運行,NVM 物理頁的最大寫次數分別為6.0×108和7.4×104,PMFS/WPFS 的倍數高達8 108;其次,兩者的標準偏差分別為1 732.5 和7 460 140.0,PMFS/WPFS 的倍數高達4 306;變異系數分別為0.024 3 和47.821 4,PMFS/WPFS 的倍數高達1 968.病毒程序3對文件反復執行創建軟鏈接和刪除軟鏈接,達到迅速把超級塊、索引節點、目錄文件數據和日志的存儲區磨損穿.由于PMFS 沒有對以上數據存儲區做磨損保護,所以無法抵御病毒程序的惡意磨損攻擊.而WPFS 考慮到以上數據存儲區的磨損保護,把大量集中對少數存儲區的寫操作分散到整個存儲空間,實現了NVM 的磨損均衡,能夠有效防御病毒程序3 的惡意磨損攻擊.

由圖10 可知:病毒程序4 在PMFS 中運行不到2 分鐘,就對NVM 的一個頁面造成超過108次寫操作.假設底層NVM 存儲設備的寫耐受度為108[24-27],這一個NVM 磨損單元即已被磨損穿.與此同時,其他99.99%以上的NVM 頁面的寫次數仍然為0.如表6 所示:病毒程序4 分別在PMFS 和WPFS 運行,NVM 物理頁的最大寫次數分別為1.0×108和6.8×104,PMFS/WPFS 的倍數高達1 471;其次,兩者的標準偏差分別為1 732.5 和988 211.8,PMFS/WPFS 的倍數高達570;變異系數分別為0.026 6 和101.192 9,PMFS/WPFS 的倍數高達3 804.病毒程序4反復對文件數據的某個區間執行覆蓋寫操作,達到迅速把超級塊、文件數據、文件索引結構的存儲區磨損穿.由于PMFS 沒有對以上數據的存儲區做磨損保護,所以無法抵御病毒程序的惡意磨損攻擊.而WPFS 考慮到以上數據存儲區的磨損保護,把大量集中對少數存儲區的寫操作分散到整個存儲空間,實現了NVM 的磨損均衡,能夠有效防御病毒程序4 的惡意磨損攻擊.

由圖11 可知:病毒程序5 在PMFS 中運行不到2 分鐘,就對NVM 的4 個頁面造成超過108次寫操作.假設底層NVM 存儲設備的寫耐受度為108[24-27],這4 個NVM 磨損單元即已被磨損穿.與此同時,其他90%以上的NVM 頁面的寫次數仍然為0.如表6 所示:病毒程序5 分別在PMFS 和WPFS 運行,NVM 物理頁的最大寫次數分別為7.0×108和8.6×104,PMFS/WPFS 的倍數高達8 140;其次,兩者的標準偏差分別為1 732.5 和9 054 293.1,PMFS/WPFS 的倍數高達5 226;變異系數分別為0.020 8 和51.191 4,PMFS/WPFS 的倍數高達2 461.病毒程序5對文件反復執行重命名操作,達到迅速把索引節點、目錄文件數據和日志的存儲區磨損穿.由于PMFS 沒有對以上存儲區做磨損保護,所以無法抵御病毒程序的惡意磨損攻擊.而WPFS 考慮到以上數據存儲區的磨損保護,把大量集中對少數存儲區的寫操作分散到整個存儲空間,實現了NVM 的磨損均衡,能夠有效防御病毒程序5 的惡意磨損攻擊.

由圖12 可知:在本文探索出的5 種病毒程序共同發動對NVM 的磨損攻擊,在PMFS 運行,就對NVM 的5個頁面造成超過108次寫操作.假設底層NVM 存儲設備的寫耐受度為108[24-27],這5 個NVM 磨損單元即已被磨損穿;還造成NVM 的18 個頁面超過8.6×106,接近NVM 存儲設備的寫耐受度.與此同時,其他90%以上的NVM 頁面的寫次數仍然為0.但是在WPFS 運行,NVM 物理頁的最大寫次數為364 095.由于PMFS[9]沒有對文件系統元數據和文件數據的存儲區做磨損保護,所以無法抵御病毒程序的惡意磨損攻擊.而WPFS 考慮到NVM的磨損保護,把大量集中對少數存儲區的寫操作分散到整個存儲空間,實現了NVM 的磨損均衡,能夠有效防御病毒程序的惡意磨損攻擊.

每次對物理頁數據和索引節點的更新,寫次數并不是立即寫回物理頁寫次數表和索引節點映射表,而是通過更新DRAM 副本的方式寫回,因此,這兩個數據結構的存儲區的寫次數較少.所以表6 中,WPFS 沒有統計這些物理頁的寫次數;因為攻擊方式4 和攻擊方式5 沒有攻擊索引節點表存儲區,所以這兩種攻擊方式WPFS 也沒有統計索引節點表的物理頁的寫次數.由表6 可知:由于PMFS[9]并沒有對元數據和文件數據進行磨損保護,本文探索的5 種病毒程序都是通過簡單的文件操作,在PMFS[9]文件系統,大量寫操作集中在少數的存儲區,導致NVM 很快就被磨損穿;但是WPFS 考慮了NVM 的磨損保護,把大量集中對少數存儲區的寫操作分散到NVM的整個存儲空間,實現NVM 的磨損均衡,能有效防御病毒程序發動對NVM 的磨損攻擊.

圖13 表示在病毒程序的磨損攻擊下,持久化內存文件系統是否采用本文提出的PFWD 技術時NVM 的磨損對比,橫坐標表示NVM 總的寫次數,縱坐標表示NVM 以頁為粒度的最大寫次數.如果持久化內存文件系統未使用PFWD 技術,NVM 很快就會被磨損穿;如果持久化內存文件系統使用PFWD 技術,則NVM 所有物理頁的最大寫次數僅僅為9 766,遠遠未達到底層NVM 存儲設備的寫耐受度108[24-27].在WPFS 文件系統,病毒程序要使得NVM 被磨損穿,NVM 總的寫次數幾乎要達到10240×108次,NVM 物理頁的寫次數都接近108,使得NVM總的寫次數提高了10 240 倍,而且該倍數隨著NVM 存儲空間的增大而增大.

Fig.13 Comparison of NVM wear in WPFS and persistent in-memory file system when PFWD is not used under wear attacks圖13 對比WPFS 和持久化內存文件系統未采用PFWD 技術時,NVM 在磨損攻擊下的磨損情況

4.3 性能實驗對比

為了評估PFWD 機制的性能開銷,實驗中使用FIO[36]測試工具對比測試WPFS-NoPFWD 和WPFS 在不同塊大小的讀寫性能,測試結果如圖14~圖17 所示,圖中橫坐標為讀寫塊大小分別1K,2K,4K,8K,16K,32K,64K,128K,256K,512K,縱坐標表示文件讀寫吞吐率.圖14、圖15 分別表示隨機讀寫的性能對比,圖16、圖17 分別表示順序讀寫的性能對比.

Fig.14 Random read圖14 隨機讀

Fig.15 Random write圖15 隨機寫

Fig.16 Sequential read圖16 順序讀

Fig.17 Sequential write圖17 順序寫

以上性能實驗結果顯示:對于順序讀和隨機讀操作,WPFS 沒有明顯的性能下降.這是因為讀操作不會觸發磨損均衡操作.對于順序寫和隨機寫操作,采用PFWD 技術的WPFS 會有5%左右的性能損失.原因是WPFS 需要在寫流程中更新物理頁寫次數表和索引節點映射表,并實施超級塊、文件數據、文件索引結構和索引節點的遷移操作.總體而言,PFWD 的開銷極小.

5 結 論

本文首次探索多種借助持久化內存文件系統的文件操作對NVM 造成惡意磨損的攻擊方式.提出持久化內存文件系統磨損防御技術PFWD.PFWD 技術通過把大量集中對少數存儲區的寫操作分散到整個NVM 存儲空間,實現了NVM 存儲空間的磨損均衡,能有效防御病毒程序通過簡單的文件操作就能把底層的NVM 存儲設備磨損穿.即使NVM 存儲設備在硬件層已經實現了NVM 的磨損均衡,PFWD 技術在持久化內存文件系統層通過避免集中的寫操作,使得寫操作分散到整個NVM 存儲空間,能使得硬件層的磨損均衡算法減少數據遷移的開銷,提高存儲系統的吞吐率.

猜你喜歡
物理
物理中的影和像
只因是物理
井岡教育(2022年2期)2022-10-14 03:11:44
高考物理模擬試題(五)
高考物理模擬試題(二)
高考物理模擬試題(四)
高考物理模擬試題(三)
留言板
如何打造高效物理復習課——以“壓強”復習課為例
處處留心皆物理
我心中的物理
主站蜘蛛池模板: 无套av在线| 最新国产高清在线| 国产肉感大码AV无码| 久久黄色视频影| 71pao成人国产永久免费视频| 91无码国产视频| 国产成人乱无码视频| 九九香蕉视频| 亚洲国产成人综合精品2020| 强奷白丝美女在线观看| 欧美亚洲国产日韩电影在线| 三区在线视频| 午夜综合网| 手机精品福利在线观看| 全裸无码专区| 91国内外精品自在线播放| 日韩在线视频网| www.精品视频| 全部毛片免费看| 久久a毛片| 在线日本国产成人免费的| 亚洲欧美另类专区| 欧美日韩在线成人| 亚洲h视频在线| 九九久久精品免费观看| 国产91无码福利在线 | 国产精品七七在线播放| 在线五月婷婷| 久久窝窝国产精品午夜看片| 国产一区免费在线观看| 91精品日韩人妻无码久久| 精品午夜国产福利观看| 亚洲人成成无码网WWW| 她的性爱视频| 亚洲一区二区约美女探花| 欧美精品不卡| 中文字幕在线看视频一区二区三区| 免费一级全黄少妇性色生活片| 亚洲色图欧美视频| 2021亚洲精品不卡a| 伊人大杳蕉中文无码| 欧美啪啪精品| 亚洲一区免费看| 老色鬼欧美精品| 91福利国产成人精品导航| 国产在线拍偷自揄观看视频网站| 国产一级毛片高清完整视频版| 精品一区二区三区中文字幕| 久久青草热| 亚洲成在人线av品善网好看| 成人91在线| 久久永久视频| 中文字幕亚洲乱码熟女1区2区| 成人在线观看一区| 在线视频97| 国产超薄肉色丝袜网站| 国产日韩欧美视频| 香蕉久人久人青草青草| 性色生活片在线观看| 欧美性猛交一区二区三区| 日韩天堂视频| 国产亚洲精品97在线观看| 国产成人精品三级| 国产免费人成视频网| 精品天海翼一区二区| 日韩最新中文字幕| 国产精品免费露脸视频| 欧美在线网| 77777亚洲午夜久久多人| 狠狠亚洲五月天| 欧美视频在线不卡| 日韩在线第三页| 国产簧片免费在线播放| 国产精品所毛片视频| 亚洲成人网在线播放| 精品91在线| 无码粉嫩虎白一线天在线观看| 日本免费新一区视频| 国产在线观看一区二区三区| 欧美一道本| 91口爆吞精国产对白第三集| 日韩欧美中文在线|