• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    持久化內(nèi)存文件系統(tǒng)的磨損攻擊與防御機(jī)制*

    2020-09-23 07:33:10楊朝樹諸葛晴鳳沙行勉陳咸彰
    軟件學(xué)報(bào) 2020年6期
    關(guān)鍵詞:日志內(nèi)存磨損

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

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

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

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

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

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

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

    (1) 探索多種通過持久化內(nèi)存文件系統(tǒng)對(duì)NVM 造成磨損攻擊的病毒,分析病毒惡意磨損攻擊的嚴(yán)重性,并按攻擊的數(shù)據(jù)結(jié)構(gòu)分類病毒程序;

    (2) 提出索引節(jié)點(diǎn)元數(shù)據(jù)虛擬化技術(shù)防御病毒程序?qū)λ饕?jié)點(diǎn)存儲(chǔ)區(qū)的磨損攻擊.該技術(shù)可在系統(tǒng)運(yùn)行時(shí),把更新頻次高的索引節(jié)點(diǎn)動(dòng)態(tài)遷移到磨損度低的存儲(chǔ)區(qū),使得索引節(jié)點(diǎn)的大量更新操作分散到多個(gè)物理存儲(chǔ)區(qū),實(shí)現(xiàn)索引節(jié)點(diǎn)存儲(chǔ)區(qū)的磨損均衡,避免少數(shù)索引節(jié)點(diǎn)的存儲(chǔ)單元被磨損穿;

    (3) 提出超級(jí)塊遷移技術(shù),通過把超級(jí)塊遷移到磨損度低的存儲(chǔ)區(qū),使得對(duì)超級(jí)塊的大量更新操作分散到多個(gè)物理存儲(chǔ)區(qū),避免超級(jí)塊的存儲(chǔ)單元被磨損穿;

    (4) 提出文件數(shù)據(jù)頁磨損均衡技術(shù),結(jié)合持久化內(nèi)存文件系統(tǒng)必備的數(shù)據(jù)一致性機(jī)制,防御對(duì)文件數(shù)據(jù)和日志存儲(chǔ)單元的磨損攻擊.對(duì)文件進(jìn)行修改,總是獲取磨損度較低的空閑頁作為日志和文件數(shù)據(jù)的存儲(chǔ)區(qū),避免少數(shù)文件數(shù)據(jù)和日志的存儲(chǔ)單元被磨損穿;

    (5) 提出文件索引結(jié)構(gòu)遷移技術(shù),根據(jù)文件索引結(jié)構(gòu)物理空間的磨損程度,把更新頻次高的索引項(xiàng)遷移到磨損度低的物理頁,防止少數(shù)文件索引結(jié)構(gòu)的索引項(xiàng)的存儲(chǔ)單元被磨損穿;

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

    本文第1 節(jié)是本文的研究動(dòng)機(jī).第2 節(jié)探索通過文件操作攻擊NVM 的磨損攻擊.第3 節(jié)介紹本文提出的磨損攻擊防御機(jī)制.第4 節(jié)用實(shí)驗(yàn)驗(yàn)證提出的防御機(jī)制的有效性.第5 節(jié)總結(jié)全文.

    1 研究動(dòng)機(jī)

    持久化內(nèi)存文件系統(tǒng)包括兩類數(shù)據(jù),即元數(shù)據(jù)和文件數(shù)據(jù).元數(shù)據(jù)可分為超級(jí)塊、索引節(jié)點(diǎn)和文件索引結(jié)構(gòu),對(duì)大多數(shù)文件系統(tǒng)而言,還包括用于支持?jǐn)?shù)據(jù)一致性的日志.現(xiàn)有持久化內(nèi)存文件系統(tǒng)的設(shè)計(jì)沒有對(duì)文件數(shù)據(jù)和元數(shù)據(jù)實(shí)現(xiàn)磨損保護(hù),病毒程序可以輕易通過文件操作造成NVM 存儲(chǔ)設(shè)備的損壞.以下分析現(xiàn)有持久化內(nèi)存文件系統(tǒng)在磨損保護(hù)方面的設(shè)計(jì)缺陷:

    (1) 超級(jí)塊.保存文件系統(tǒng)的全局信息,如NVM 的空閑頁數(shù)和空閑索引節(jié)點(diǎn)數(shù)等,所以NVM 空間的分配和釋放、索引節(jié)點(diǎn)的申請(qǐng)和釋放都會(huì)修改超級(jí)塊,見表2,大量文件操作都需要更新超級(jí)塊,所以超級(jí)塊的更新頻次極高,但現(xiàn)有的持久化內(nèi)存文件系統(tǒng)都把超級(jí)塊保存在NVM 固定位置,不能移動(dòng),導(dǎo)致超級(jí)塊存儲(chǔ)區(qū)的磨損極為嚴(yán)重.

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

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

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

    (4) 文件數(shù)據(jù).更新文件數(shù)據(jù)和數(shù)據(jù)一致性實(shí)現(xiàn)機(jī)制有關(guān),如果持久化內(nèi)存文件系統(tǒng)采用預(yù)寫日志機(jī)制[33-35]實(shí)現(xiàn)數(shù)據(jù)一致性,文件覆蓋寫是直接就地更新文件數(shù)據(jù)的原存儲(chǔ)位置.現(xiàn)有的持久化內(nèi)存文件系統(tǒng),例如Shortcut-JFS[16],如果單個(gè)數(shù)據(jù)頁上更新的數(shù)據(jù)量小于頁大小的一半,則采用預(yù)寫日志機(jī)制實(shí)現(xiàn)數(shù)據(jù)一致性,持續(xù)修改文件的數(shù)據(jù)量小于頁大小一半時(shí),則被修改文件數(shù)據(jù)的存儲(chǔ)單元持續(xù)被磨損;PMFS[9]由于未實(shí)現(xiàn)數(shù)據(jù)一致性,僅支持元數(shù)據(jù)一致性,文件覆蓋寫是直接就地更新文件數(shù)據(jù)的原存儲(chǔ)位置,持續(xù)修改文件的固定區(qū)間的數(shù)據(jù),則被修改數(shù)據(jù)的存儲(chǔ)單元持續(xù)被磨損.

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

    文件更新操作都會(huì)涉及到修改元數(shù)據(jù)或者文件數(shù)據(jù),表2 展示了常用的文件操作對(duì)元數(shù)據(jù)和文件數(shù)據(jù)的更新情況.例如文件更新操作(write)需要修改索引節(jié)點(diǎn)的文件數(shù)據(jù)的最后修改時(shí)間,如果文件更新操作涉及到申請(qǐng)新的物理頁,則需要修改超級(jí)塊的空閑頁數(shù)和修改文件索引結(jié)構(gòu)的索引項(xiàng).為了保證本次修改的數(shù)據(jù)一致性,需要寫日志.所以文件更新操作需要修改超級(jí)塊、索引節(jié)點(diǎn)、文件索引結(jié)構(gòu)、文件數(shù)據(jù)和日志.

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

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

    為此,本文將基于現(xiàn)有持久化內(nèi)存文件系統(tǒng)的以上設(shè)計(jì)缺陷,探索通過文件操作攻擊底層NVM 存儲(chǔ)設(shè)備的方法,并提出相應(yīng)的保護(hù)機(jī)制.

    2 針對(duì)NVM 的磨損攻擊

    本節(jié)探索通過文件操作對(duì)NVM 造成惡意磨損的攻擊方式.如第1 節(jié)所述,文件系統(tǒng)的大量操作會(huì)對(duì)NVM造成磨損.本文發(fā)現(xiàn),對(duì)于現(xiàn)有無磨損攻擊防御機(jī)制的持久化內(nèi)存文件系統(tǒng),病毒程序不需復(fù)雜的設(shè)計(jì),僅需執(zhí)行簡(jiǎn)單的文件操作即可造成NVM 磨損穿.為此,本文提出5 種利用不同的基本文件操作對(duì)NVM 造成惡意磨損的攻擊方式,利用這5 種基本攻擊方式,可以任意組合成具有更大破壞力的病毒.為展示不同攻擊方式的破壞性,通過列舉每種攻擊方式修改的數(shù)據(jù)結(jié)構(gòu),計(jì)算每種數(shù)據(jù)結(jié)構(gòu)的寫次數(shù),然后分析數(shù)據(jù)結(jié)構(gòu)和物理存儲(chǔ)對(duì)應(yīng)關(guān)系,最后分析NVM 物理頁的磨損度.

    · 攻擊方式1:利用創(chuàng)建文件和刪除文件操作執(zhí)行磨損攻擊.

    創(chuàng)建文件需要完成4 個(gè)操作:(1) 申請(qǐng)索引節(jié)點(diǎn);(2) 申請(qǐng)物理頁,創(chuàng)建文件索引結(jié)構(gòu);(3) 在父目錄插入一條目錄項(xiàng);(4) 修改超級(jí)塊的空閑頁數(shù)和空閑索引節(jié)點(diǎn)數(shù).相應(yīng)地,刪除文件也需要完成4 個(gè)操作:(1) 釋放文件索引結(jié)構(gòu)的物理頁;(2) 在父目錄刪除文件的目錄項(xiàng);(3) 釋放索引節(jié)點(diǎn);(4) 修改超級(jí)塊的空閑頁數(shù)和空閑索引節(jié)點(diǎn)數(shù).此外,創(chuàng)建和刪除文件還需要寫日志確保文件的一致性.所以如表3 所示,創(chuàng)建文件和刪除文件操作會(huì)造成超級(jí)塊、索引節(jié)點(diǎn)、文件索引結(jié)構(gòu)、目錄文件數(shù)據(jù)和日志的更新.

    Table 3 Data structures of persistent in-memory file systems under wear attacks表3 持久化內(nèi)存文件系統(tǒng)被磨損攻擊的數(shù)據(jù)結(jié)構(gòu)

    因此,攻擊方式1 就是在持久化內(nèi)存文件系統(tǒng)的單個(gè)目錄下反復(fù)創(chuàng)建文件、刪除文件,例子如病毒程序1所示:通過一個(gè)簡(jiǎn)單的for 循環(huán),在一個(gè)給定的目錄下執(zhí)行108次創(chuàng)建文件和刪除文件操作,對(duì)文件系統(tǒng)的元數(shù)據(jù)和文件數(shù)據(jù)的存儲(chǔ)區(qū)造成大量寫操作.數(shù)據(jù)結(jié)構(gòu)的寫次數(shù)見表4,所有數(shù)據(jù)結(jié)構(gòu)的寫次數(shù)大于或等于108.索引節(jié)點(diǎn)、文件索引結(jié)構(gòu)和日志是否修改固定的存儲(chǔ)單元,這與持久化內(nèi)存文件系統(tǒng)的索引節(jié)點(diǎn)、物理頁、日志管理有關(guān).但是超級(jí)塊和目錄文件數(shù)據(jù)的存儲(chǔ)單元,這兩個(gè)數(shù)據(jù)結(jié)構(gòu)在病毒程序1 的操作中從不改變存儲(chǔ)位置,而且每次創(chuàng)建和刪除文件都會(huì)更新,所以病毒程序會(huì)在對(duì)應(yīng)的存儲(chǔ)單元執(zhí)行2×108次寫操作,迅速導(dǎo)致其磨損穿.

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

    Table 4 Revision counts of data structures of persistent in-memory file systems under wear attacks表4 持久化內(nèi)存文件系統(tǒng)中被磨損攻擊數(shù)據(jù)結(jié)構(gòu)的寫次數(shù)

    · 攻擊方式2:利用創(chuàng)建硬鏈接和刪除硬鏈接操作執(zhí)行磨損攻擊.

    創(chuàng)建硬鏈接需要完成兩個(gè)操作:1) 在目標(biāo)文件的父目錄增加一條目錄項(xiàng);2) 源文件索引節(jié)點(diǎn)的鏈接數(shù)加一.相應(yīng)地,刪除硬鏈接也需要完成兩個(gè)操作:1) 在目標(biāo)文件父目錄刪除一條目錄項(xiàng);2) 源文件索引節(jié)點(diǎn)的鏈接數(shù)減一.此外,創(chuàng)建和刪除硬鏈接還需寫日志確保文件的一致性.如表3 所示,創(chuàng)建硬鏈接和刪除硬鏈接會(huì)造成索引節(jié)點(diǎn)、目錄文件數(shù)據(jù)和日志的更新.

    因此,攻擊方式2 就是在持久化內(nèi)存文件系統(tǒng)對(duì)某個(gè)文件反復(fù)創(chuàng)建硬鏈接、刪除硬鏈接,例子如病毒程序2所示:通過一個(gè)簡(jiǎn)單的for 循環(huán),對(duì)一個(gè)給定的文件執(zhí)行108次創(chuàng)建硬鏈接和刪除硬鏈接操作,對(duì)文件系統(tǒng)的元數(shù)據(jù)和文件數(shù)據(jù)的存儲(chǔ)區(qū)造成大量寫操作.數(shù)據(jù)結(jié)構(gòu)的寫次數(shù)見表4,索引節(jié)點(diǎn)、文件數(shù)據(jù)和日志的寫次數(shù)大于108.日志是否修改固定的存儲(chǔ)單元與日志管理有關(guān),目錄文件數(shù)據(jù)和索引節(jié)點(diǎn)的存儲(chǔ)單元,這兩個(gè)數(shù)據(jù)結(jié)構(gòu)在病毒程序2 的操作中從不改變存儲(chǔ)位置,而且每次創(chuàng)建和刪除硬鏈接都會(huì)更新,所以病毒程序會(huì)在對(duì)應(yīng)的存儲(chǔ)單元執(zhí)行2×108次寫操作,迅速導(dǎo)致其磨損穿.

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

    · 攻擊方式3:利用創(chuàng)建軟鏈接和刪除軟鏈接操作執(zhí)行磨損攻擊.

    創(chuàng)建軟鏈接需要完成4 個(gè)操作:1) 申請(qǐng)目標(biāo)文件的索引節(jié)點(diǎn);2) 在目標(biāo)文件父目錄增加目錄項(xiàng);3) 申請(qǐng)物理頁保存源文件的位置信息;4) 修改超級(jí)塊的空閑頁數(shù)和空閑索引節(jié)點(diǎn)數(shù).相應(yīng)地,刪除軟鏈接也需要完成4 個(gè)操作:1) 釋放保存源文件位置信息的物理頁;2) 在目標(biāo)文件父目錄刪除目標(biāo)文件的目錄項(xiàng);3) 釋放目標(biāo)文件的索引節(jié)點(diǎn);4) 修改超級(jí)塊的空閑頁數(shù)和空閑索引節(jié)點(diǎn)數(shù).此外,創(chuàng)建和刪除軟鏈接還需寫日志確保文件的一致性.如表3 所示,創(chuàng)建軟鏈接和刪除軟鏈接會(huì)造成超級(jí)塊、索引節(jié)點(diǎn)、目錄文件數(shù)據(jù)和日志的更新.

    因此,攻擊方式3 就是在持久化內(nèi)存文件系統(tǒng)對(duì)某個(gè)文件反復(fù)創(chuàng)建軟鏈接、刪除軟鏈接,例子如病毒程序3所示:通過簡(jiǎn)單的for 循環(huán),對(duì)給定的文件執(zhí)行108次創(chuàng)建軟鏈接和刪除軟鏈接操作,對(duì)文件系統(tǒng)的元數(shù)據(jù)和文件數(shù)據(jù)存儲(chǔ)區(qū)造成大量寫操作.數(shù)據(jù)結(jié)構(gòu)的寫次數(shù)見表4,超級(jí)塊、索引節(jié)點(diǎn)、目錄文件數(shù)據(jù)和日志的寫次數(shù)大于或等于108.索引節(jié)點(diǎn)、日志是否修改固定的存儲(chǔ)單元與索引節(jié)點(diǎn)和日志管理有關(guān),超級(jí)塊和目錄文件數(shù)據(jù)的存儲(chǔ)單元,這兩個(gè)數(shù)據(jù)結(jié)構(gòu)在病毒程序3 的操作中從不改變存儲(chǔ)位置,而且每次創(chuàng)建和刪除軟鏈接都會(huì)更新,所以病毒程序會(huì)在對(duì)應(yīng)的存儲(chǔ)單元執(zhí)行2×108次寫操作,迅速導(dǎo)致其磨損穿.

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

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

    文件的覆蓋寫操作和文件系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)一致性機(jī)制有關(guān),如果采用預(yù)寫日志機(jī)制[33-35]實(shí)現(xiàn)數(shù)據(jù)一致性,則文件覆蓋寫需要完成3 步操作:1) 把更新內(nèi)容寫入日志;2) 把更新內(nèi)容寫入文件;3) 修改索引節(jié)點(diǎn).如果采用寫時(shí)復(fù)制機(jī)制[8,11]實(shí)現(xiàn)數(shù)據(jù)一致性,則文件覆蓋寫需要完成5 步操作:1) 把更新內(nèi)容寫入新申請(qǐng)的物理頁; 2) 修改文件索引結(jié)構(gòu);3) 修改索引節(jié)點(diǎn);4) 釋放被替換的文件數(shù)據(jù)頁;5) 修改超級(jí)塊的空閑頁數(shù).此外,文件覆蓋寫還需寫日志確保文件的一致性.如表3 所示,文件覆蓋寫操作會(huì)造成超級(jí)塊、索引節(jié)點(diǎn)、文件索引結(jié)構(gòu)、文件數(shù)據(jù)和日志的更新.

    因此,攻擊方式4 就是在持久化內(nèi)存文件系統(tǒng)對(duì)某個(gè)文件反復(fù)執(zhí)行覆蓋寫操作,例子如病毒程序4 所示:通過一個(gè)簡(jiǎn)單的for 循環(huán),對(duì)一個(gè)給定的文件執(zhí)行108次覆蓋寫操作,對(duì)文件元數(shù)據(jù)和文件數(shù)據(jù)存儲(chǔ)區(qū)造成大量寫操作.數(shù)據(jù)結(jié)構(gòu)的寫次數(shù)見表4,索引節(jié)點(diǎn)、文件索引結(jié)構(gòu)、文件數(shù)據(jù)和日志的寫次數(shù)等于108.每種數(shù)據(jù)結(jié)構(gòu)的寫次數(shù)和文件系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)一致性機(jī)制息息相關(guān),采用預(yù)寫日志機(jī)制,文件執(zhí)行覆蓋寫操作,對(duì)文件的數(shù)據(jù)的修改是直接修改原存儲(chǔ)位置,沒有涉及修改文件索引結(jié)構(gòu).因此,文件索引結(jié)構(gòu)的寫次數(shù)為0,文件數(shù)據(jù)的寫次數(shù)為108,病毒程序4 持續(xù)修改文件數(shù)據(jù)的固定區(qū)間108次,則文件數(shù)據(jù)頁被磨損穿;采用寫時(shí)復(fù)制機(jī)制,數(shù)據(jù)寫到新的位置,即需要申請(qǐng)物理頁和修改文件索引結(jié)構(gòu),則超級(jí)塊、文件索引結(jié)構(gòu)的寫次數(shù)為108.這兩個(gè)數(shù)據(jù)結(jié)構(gòu)在病毒程序4 的操作中從不改變存儲(chǔ)位置,而且每次都會(huì)更新,所以病毒程序會(huì)在對(duì)應(yīng)的存儲(chǔ)單元執(zhí)行108寫操作,迅速導(dǎo)致其磨損穿.無論是采用預(yù)寫日志還是寫時(shí)復(fù)制機(jī)制實(shí)現(xiàn)數(shù)據(jù)一致性,都需要修改索引節(jié)點(diǎn)和寫日志,如表4 所示,索引節(jié)點(diǎn)和日志的寫次數(shù)都為108,日志是否修改固定的存儲(chǔ)單元與日志管理有關(guān).索引節(jié)點(diǎn)在病毒4 的操作中從不改變存儲(chǔ)位置,所以病毒程序會(huì)在對(duì)應(yīng)的存儲(chǔ)單元執(zhí)行108寫操作,迅速導(dǎo)致其磨損穿.

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

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

    文件重命名需要完成3 個(gè)操作:1) 在目標(biāo)文件的父目錄增加一條目錄項(xiàng);2) 在源文件父目錄刪除該文件的目錄項(xiàng);3) 修改索引節(jié)點(diǎn).此外,文件重命名操作還需寫日志確保文件的一致性.如表3 所示,文件重命名操作會(huì)造成索引節(jié)點(diǎn)、目錄文件數(shù)據(jù)、日志的更新.

    因此,攻擊方式5 就是在持久化內(nèi)存文件系統(tǒng)對(duì)某個(gè)文件反復(fù)執(zhí)行重命名操作,例子如病毒程序5 所示:通過一個(gè)簡(jiǎn)單的for 循環(huán),對(duì)一個(gè)給定的文件執(zhí)行108次文件重命名操作,對(duì)文件系統(tǒng)的元數(shù)據(jù)和目錄文件數(shù)據(jù)存儲(chǔ)區(qū)造成大量寫操作.數(shù)據(jù)結(jié)構(gòu)的寫次數(shù)見表4,索引節(jié)點(diǎn)、文件數(shù)據(jù)和日志的寫次數(shù)為108,日志是否修改固定的存儲(chǔ)單元與日志管理有關(guān).每執(zhí)行一次文件重命名操作,需要修改源文件和目標(biāo)文件的索引節(jié)點(diǎn)和目錄文件數(shù)據(jù).文件數(shù)據(jù)和索引節(jié)點(diǎn)這兩個(gè)數(shù)據(jù)結(jié)構(gòu)在病毒程序5 的操作中從不改變存儲(chǔ)位置,而且每次對(duì)文件執(zhí)行重命名操作都會(huì)更新,所以病毒程序會(huì)在對(duì)應(yīng)的存儲(chǔ)單元執(zhí)行108寫操作,迅速導(dǎo)致其磨損穿.

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

    本節(jié)探索的5 種磨損攻擊方式涉及到持久化內(nèi)存文件系統(tǒng)所有的元數(shù)據(jù)和文件數(shù)據(jù),即超級(jí)塊、索引節(jié)點(diǎn)、文件索引結(jié)構(gòu)、文件數(shù)據(jù)和日志,每種數(shù)據(jù)都可以通過簡(jiǎn)單的文件操作進(jìn)行更新.實(shí)驗(yàn)證明:在PMFS[9],以上5 種攻擊方式發(fā)動(dòng)對(duì)NVM 的磨損攻擊,在很短的時(shí)間內(nèi)就能把NVM 磨損穿.而現(xiàn)有的持久化內(nèi)存文件系統(tǒng),無論是PMFS[9],還是BPFS[8],NOVA[10],SIMFS[11]和HiNFS[13]等,都沒有考慮NVM 磨損防御,即都可以通過簡(jiǎn)單的文件操作在很短的時(shí)間內(nèi)就能把底層的NVM 磨損穿,嚴(yán)重威脅到文件系統(tǒng)的數(shù)據(jù)穩(wěn)定性.

    3 磨損防御機(jī)制PFWD

    3.1 概述

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

    具體而言,PFWD 包括4 項(xiàng)技術(shù):超級(jí)塊遷移技術(shù)、索引節(jié)點(diǎn)元數(shù)據(jù)虛擬化技術(shù)、文件數(shù)據(jù)頁磨損均衡技術(shù)和文件索引結(jié)構(gòu)遷移技術(shù),見表5.其中,文件數(shù)據(jù)頁磨損均衡技術(shù)用于防御針對(duì)日志和文件數(shù)據(jù)的攻擊.

    Table 5 PFWD defense the data under wear attack表5 針對(duì)被攻擊數(shù)據(jù)的磨損防御機(jī)制PFWD

    在持久化內(nèi)存文件系統(tǒng)實(shí)現(xiàn)PFWD,NVM 的物理空間布局如圖1 所示:(1) 超級(jí)塊指針,指向超級(jí)塊的存儲(chǔ)區(qū).超級(jí)塊的存儲(chǔ)區(qū)可動(dòng)態(tài)調(diào)整,當(dāng)超級(jí)塊存儲(chǔ)區(qū)的磨損嚴(yán)重時(shí),超級(jí)塊可遷移到磨損較低的物理區(qū)間;(2) 物理頁寫次數(shù)表,記錄NVM 每個(gè)物理頁的寫次數(shù),每次更新物理頁的數(shù)據(jù),都要在物理頁寫次數(shù)表增加相應(yīng)的寫次數(shù),因?yàn)镻FWD 機(jī)制能保證NVM 物理空間的磨損均衡,所以物理頁寫次數(shù)表的存儲(chǔ)區(qū)間也是磨損均衡的;(3) 索引節(jié)點(diǎn)映射表,記錄虛擬索引節(jié)點(diǎn)的寫次數(shù)和偏移量,實(shí)現(xiàn)索引節(jié)點(diǎn)的遷移;(4) 超級(jí)塊、索引節(jié)點(diǎn)、文件索引結(jié)構(gòu)、文件數(shù)據(jù)、日志,分散在NVM 整個(gè)物理空間,通過超級(jí)塊遷移技術(shù)、索引節(jié)點(diǎn)元數(shù)據(jù)虛擬化技術(shù)、文件索引結(jié)構(gòu)遷移技術(shù)、文件數(shù)據(jù)頁磨損均衡技術(shù)實(shí)現(xiàn)以上5 種數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)區(qū)的磨損均衡.

    Fig.1 Layout of physical address space of NVM when PFWD is implemented in persistent in-memory file system圖1 持久化內(nèi)存文件系統(tǒng)實(shí)現(xiàn)PFWD 時(shí),NVM 的物理地址空間布局

    持久化內(nèi)存文件系統(tǒng)實(shí)現(xiàn)PFWD,物理頁寫次數(shù)表和索引節(jié)點(diǎn)映射表的空間開銷極小.例如,NVM 的存儲(chǔ)空間大小為10GB,物理頁大小為4KB,每8 字節(jié)記錄一個(gè)物理頁的寫次數(shù),則物理頁寫次數(shù)表占用的存儲(chǔ)空間是,僅占總存儲(chǔ)空間的0.2%.通常,所有文件索引節(jié)點(diǎn)總的存儲(chǔ)空間大小設(shè)計(jì)為持久化內(nèi)存文件系統(tǒng)存儲(chǔ)空間的1%,索引節(jié)點(diǎn)的大小為128KB[9-11],4KB 大小的物理頁能存儲(chǔ)32 個(gè)索引節(jié)點(diǎn).索引節(jié)點(diǎn)映射表中每個(gè)索引節(jié)點(diǎn)的寫次數(shù)和偏移量共占8 字節(jié),即分別用4 字節(jié)記錄寫次數(shù)和偏移量,則索引節(jié)點(diǎn)映射表所占存儲(chǔ)空間的大小是,僅占總存儲(chǔ)空間的0.06%.所以,物理頁寫次數(shù)表和索引節(jié)點(diǎn)映射表的存儲(chǔ)空間開銷可以忽略不計(jì).此外,為提高檢索效率,物理頁寫次數(shù)表和索引節(jié)點(diǎn)映射表都使用數(shù)組結(jié)構(gòu),并且兩種數(shù)據(jù)結(jié)構(gòu)采用修改DRAM 副本的方式更新其寫次數(shù),只有在適當(dāng)?shù)臅r(shí)機(jī)回寫NVM,以減少兩個(gè)數(shù)據(jù)結(jié)構(gòu)物理存儲(chǔ)區(qū)的寫次數(shù).因此,物理頁寫次數(shù)表和索引節(jié)點(diǎn)映射表所在存儲(chǔ)區(qū)的磨損極低.

    3.2 索引節(jié)點(diǎn)元數(shù)據(jù)虛擬化技術(shù)

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

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

    Fig.2 Inode virtualization圖2 索引節(jié)點(diǎn)元數(shù)據(jù)虛擬化

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

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

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

    Fig.3 Example of inode migration圖3 索引節(jié)點(diǎn)遷移示例

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

    3.3 超級(jí)塊遷移技術(shù)

    既有持久化內(nèi)存文件系統(tǒng)的設(shè)計(jì),例如BPFS[8],PMFS[9],NOVA[10],SIMFS[11]和HiNFS[13]等,超級(jí)塊保存在NVM 的固定位置,不能移動(dòng),大多數(shù)文件操作都需要修改超級(jí)塊.例如,物理頁和索引節(jié)點(diǎn)的分配和釋放都要修改超級(jí)塊的空閑頁數(shù)和空閑索引節(jié)點(diǎn),所以超級(jí)塊存儲(chǔ)區(qū)的磨損極為嚴(yán)重.而所有的持久化內(nèi)存文件系統(tǒng)都沒有對(duì)超級(jí)塊存儲(chǔ)區(qū)做磨損保護(hù),病毒程序通過簡(jiǎn)單的文件操作就能把超級(jí)塊存儲(chǔ)單元磨損穿.所以,現(xiàn)有的持久化內(nèi)存文件系統(tǒng)的設(shè)計(jì)是無法防御病毒發(fā)動(dòng)對(duì)超級(jí)塊存儲(chǔ)單元的磨損攻擊.

    為了有效防御病毒程序發(fā)動(dòng)對(duì)超級(jí)塊存儲(chǔ)單元的磨損攻擊,本文提出超級(jí)塊遷移技術(shù).如圖4 所示:設(shè)置一個(gè)超級(jí)塊指針,即把NVM 物理空間的前8 個(gè)字節(jié)作為超級(jí)塊指針,用來保存超級(jí)塊存儲(chǔ)區(qū)的首地址,超級(jí)塊可以遷移,當(dāng)超級(jí)塊存儲(chǔ)區(qū)的寫次數(shù)達(dá)到遷移閾值Wq,則把超級(jí)塊遷移到磨損低的物理頁.

    Fig.4 Example of superblock migration圖4 超級(jí)塊遷移示例

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

    超級(jí)塊遷移技術(shù)實(shí)現(xiàn)超級(jí)塊動(dòng)態(tài)遷移,使得集中對(duì)超級(jí)塊存儲(chǔ)區(qū)的寫操作分散到整個(gè)NVM 存儲(chǔ)空間,能有效地防御針對(duì)超級(jí)塊存儲(chǔ)單元的磨損攻擊.

    3.4 文件數(shù)據(jù)頁磨損均衡技術(shù)

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

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

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

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

    本文提出的文件數(shù)據(jù)頁磨損均衡技術(shù),實(shí)現(xiàn)日志數(shù)據(jù)的動(dòng)態(tài)遷移,對(duì)文件執(zhí)行覆蓋寫操作,都是使用日志文件數(shù)據(jù)頁替換文件被修改數(shù)據(jù)頁.每次數(shù)據(jù)寫入日志文件數(shù)據(jù)頁,都判斷其寫次數(shù)是否達(dá)到遷移閾值,達(dá)到則做數(shù)據(jù)遷移.對(duì)文件執(zhí)行數(shù)據(jù)追加操作,都是從空間管理模塊申請(qǐng)磨損低的物理頁來保存追加數(shù)據(jù),通過文件數(shù)據(jù)頁磨損均衡技術(shù),使得對(duì)日志和文件數(shù)據(jù)的更新操作分散到整個(gè)NVM 存儲(chǔ)空間,實(shí)現(xiàn)文件數(shù)據(jù)及日志存儲(chǔ)區(qū)的磨損均衡,能有效地防御針對(duì)文件數(shù)據(jù)和日志的存儲(chǔ)單元的磨損攻擊.

    3.5 文件索引結(jié)構(gòu)遷移技術(shù)

    文件索引結(jié)構(gòu)的修改也和文件系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)一致性機(jī)制有關(guān),本文第3.4 節(jié)已經(jīng)介紹了,現(xiàn)有持久化內(nèi)存文件系統(tǒng)都采用了寫時(shí)復(fù)制[8,10]機(jī)制或者寫時(shí)復(fù)制結(jié)合預(yù)寫日志[29-31]機(jī)制來實(shí)現(xiàn)數(shù)據(jù)一致性.本文提出的文件數(shù)據(jù)頁磨損均衡技術(shù)也是采用寫時(shí)復(fù)制機(jī)制實(shí)現(xiàn)數(shù)據(jù)一致性.現(xiàn)有持久化內(nèi)存文件系統(tǒng),文件被創(chuàng)建后,文件索引結(jié)構(gòu)就不會(huì)被遷移,即:現(xiàn)有的持久化內(nèi)存文件系統(tǒng)都沒有對(duì)文件索引結(jié)構(gòu)存儲(chǔ)區(qū)做磨損保護(hù),病毒程序通過簡(jiǎn)單的文件操作就能把文件索引結(jié)構(gòu)的存儲(chǔ)單元磨損穿.所以,現(xiàn)有的持久化內(nèi)存文件系統(tǒng)的設(shè)計(jì)是無法防御病毒發(fā)動(dòng)對(duì)文件索引結(jié)構(gòu)存儲(chǔ)單元的磨損攻擊.

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

    Fig.6 File index structure migration圖6 文件索引結(jié)構(gòu)遷移

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

    4 實(shí)驗(yàn)結(jié)果與分析

    本節(jié)驗(yàn)證提出的PFWD 技術(shù)對(duì)惡意磨損攻擊的防御效果及性能開銷.

    4.1 實(shí)驗(yàn)配置

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

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

    4.2 NVM磨損分析

    本節(jié)對(duì)比分析WPFS 和PMFS[9]兩種文件系統(tǒng)在本文提出的5 種磨損攻擊下的NVM 磨損情況.實(shí)驗(yàn)結(jié)果如圖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 種攻擊方式的磨損攻擊下,耗時(shí)最長(zhǎng)的是病毒程序1,即通過一個(gè)簡(jiǎn)單的for 循環(huán),在一個(gè)給定的目錄下執(zhí)行108次創(chuàng)建文件和刪除文件操作,在13 分鐘內(nèi)就能把底層NVM 存儲(chǔ)設(shè)備磨損穿,NVM總的寫次數(shù)為1.5×109,但是使用PFWD 技術(shù)的WPFS 文件系統(tǒng)卻能保護(hù)NVM 承受21 943 倍于PMFS 的文件操作/寫操作.表6 分析WPFS 和PMFS 所有物理頁的最大寫次數(shù)、標(biāo)準(zhǔn)偏差和變異系數(shù).實(shí)驗(yàn)結(jié)果表明:PFWD技術(shù)通過把大量集中對(duì)少數(shù)存儲(chǔ)區(qū)的寫操作分散到整個(gè)NVM 存儲(chǔ)空間,實(shí)現(xiàn)了NVM 存儲(chǔ)空間的磨損均衡,能有效防御病毒程序通過簡(jiǎn)單的文件操作就能把底層的NVM 存儲(chǔ)設(shè)備磨損穿.

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

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

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

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

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

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

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

    每次對(duì)物理頁數(shù)據(jù)和索引節(jié)點(diǎn)的更新,寫次數(shù)并不是立即寫回物理頁寫次數(shù)表和索引節(jié)點(diǎn)映射表,而是通過更新DRAM 副本的方式寫回,因此,這兩個(gè)數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)區(qū)的寫次數(shù)較少.所以表6 中,WPFS 沒有統(tǒng)計(jì)這些物理頁的寫次數(shù);因?yàn)楣舴绞? 和攻擊方式5 沒有攻擊索引節(jié)點(diǎn)表存儲(chǔ)區(qū),所以這兩種攻擊方式WPFS 也沒有統(tǒng)計(jì)索引節(jié)點(diǎn)表的物理頁的寫次數(shù).由表6 可知:由于PMFS[9]并沒有對(duì)元數(shù)據(jù)和文件數(shù)據(jù)進(jìn)行磨損保護(hù),本文探索的5 種病毒程序都是通過簡(jiǎn)單的文件操作,在PMFS[9]文件系統(tǒng),大量寫操作集中在少數(shù)的存儲(chǔ)區(qū),導(dǎo)致NVM 很快就被磨損穿;但是WPFS 考慮了NVM 的磨損保護(hù),把大量集中對(duì)少數(shù)存儲(chǔ)區(qū)的寫操作分散到NVM的整個(gè)存儲(chǔ)空間,實(shí)現(xiàn)NVM 的磨損均衡,能有效防御病毒程序發(fā)動(dòng)對(duì)NVM 的磨損攻擊.

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

    Fig.13 Comparison of NVM wear in WPFS and persistent in-memory file system when PFWD is not used under wear attacks圖13 對(duì)比WPFS 和持久化內(nèi)存文件系統(tǒng)未采用PFWD 技術(shù)時(shí),NVM 在磨損攻擊下的磨損情況

    4.3 性能實(shí)驗(yàn)對(duì)比

    為了評(píng)估PFWD 機(jī)制的性能開銷,實(shí)驗(yàn)中使用FIO[36]測(cè)試工具對(duì)比測(cè)試WPFS-NoPFWD 和WPFS 在不同塊大小的讀寫性能,測(cè)試結(jié)果如圖14~圖17 所示,圖中橫坐標(biāo)為讀寫塊大小分別1K,2K,4K,8K,16K,32K,64K,128K,256K,512K,縱坐標(biāo)表示文件讀寫吞吐率.圖14、圖15 分別表示隨機(jī)讀寫的性能對(duì)比,圖16、圖17 分別表示順序讀寫的性能對(duì)比.

    Fig.14 Random read圖14 隨機(jī)讀

    Fig.15 Random write圖15 隨機(jī)寫

    Fig.16 Sequential read圖16 順序讀

    Fig.17 Sequential write圖17 順序?qū)?/p>

    以上性能實(shí)驗(yàn)結(jié)果顯示:對(duì)于順序讀和隨機(jī)讀操作,WPFS 沒有明顯的性能下降.這是因?yàn)樽x操作不會(huì)觸發(fā)磨損均衡操作.對(duì)于順序?qū)懞碗S機(jī)寫操作,采用PFWD 技術(shù)的WPFS 會(huì)有5%左右的性能損失.原因是WPFS 需要在寫流程中更新物理頁寫次數(shù)表和索引節(jié)點(diǎn)映射表,并實(shí)施超級(jí)塊、文件數(shù)據(jù)、文件索引結(jié)構(gòu)和索引節(jié)點(diǎn)的遷移操作.總體而言,PFWD 的開銷極小.

    5 結(jié) 論

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

    猜你喜歡
    日志內(nèi)存磨損
    一名老黨員的工作日志
    扶貧日志
    心聲歌刊(2020年4期)2020-09-07 06:37:14
    “春夏秋冬”的內(nèi)存
    套管磨損機(jī)理研究
    游學(xué)日志
    鉆頭磨損后怎樣更換
    閃存的磨損均衡專利技術(shù)綜述
    河南科技(2014年19期)2014-02-27 14:15:25
    一種基于粗集和SVM的Web日志挖掘模型
    基于內(nèi)存的地理信息訪問技術(shù)
    防磨損襪子
    97在线视频观看| 69av精品久久久久久| 免费观看人在逋| 日韩三级伦理在线观看| 亚洲国产日韩欧美精品在线观看| 亚洲国产精品国产精品| 国产91av在线免费观看| 干丝袜人妻中文字幕| 久久久久性生活片| aaaaa片日本免费| 国产精品久久久久久久久免| 蜜桃久久精品国产亚洲av| 成熟少妇高潮喷水视频| 少妇人妻精品综合一区二区 | 中文字幕熟女人妻在线| av视频在线观看入口| 欧美成人一区二区免费高清观看| 久久久久九九精品影院| 成人性生交大片免费视频hd| 国产v大片淫在线免费观看| 色尼玛亚洲综合影院| 日日摸夜夜添夜夜添小说| 日本黄色视频三级网站网址| 日本 av在线| 亚洲精品国产成人久久av| 网址你懂的国产日韩在线| 亚洲四区av| 久久久久国内视频| 亚洲欧美清纯卡通| 精品久久久久久久末码| а√天堂www在线а√下载| 网址你懂的国产日韩在线| av福利片在线观看| 你懂的网址亚洲精品在线观看 | 少妇人妻精品综合一区二区 | 成年女人毛片免费观看观看9| 国产精品电影一区二区三区| 亚洲欧美成人精品一区二区| 不卡一级毛片| 婷婷色综合大香蕉| 热99在线观看视频| 男女做爰动态图高潮gif福利片| 丰满人妻一区二区三区视频av| 色综合站精品国产| 成人特级av手机在线观看| 波多野结衣高清作品| 精品久久久久久久久av| 亚洲最大成人av| а√天堂www在线а√下载| 毛片一级片免费看久久久久| 亚洲精品一区av在线观看| avwww免费| av免费在线看不卡| 亚洲精品粉嫩美女一区| 一夜夜www| 欧美成人一区二区免费高清观看| 麻豆av噜噜一区二区三区| 天堂网av新在线| 中国美白少妇内射xxxbb| h日本视频在线播放| 麻豆久久精品国产亚洲av| 身体一侧抽搐| 你懂的网址亚洲精品在线观看 | 午夜免费激情av| 久久午夜亚洲精品久久| 春色校园在线视频观看| 久久天躁狠狠躁夜夜2o2o| 亚洲婷婷狠狠爱综合网| 99久久精品国产国产毛片| 欧美色视频一区免费| 最近的中文字幕免费完整| 日韩 亚洲 欧美在线| 麻豆av噜噜一区二区三区| 尤物成人国产欧美一区二区三区| 真实男女啪啪啪动态图| 国产伦一二天堂av在线观看| 国产精品国产高清国产av| 网址你懂的国产日韩在线| 成年版毛片免费区| 看免费成人av毛片| 一级黄色大片毛片| 成人高潮视频无遮挡免费网站| 久久精品国产亚洲av涩爱 | 亚洲av二区三区四区| 日本黄大片高清| av天堂在线播放| 国产精品久久久久久精品电影| 国产精品一及| 国产精品日韩av在线免费观看| av在线播放精品| 一区二区三区四区激情视频 | 美女 人体艺术 gogo| 国产单亲对白刺激| 久久精品国产鲁丝片午夜精品| 99久久精品一区二区三区| 婷婷亚洲欧美| 亚洲成人精品中文字幕电影| 一级毛片我不卡| 久久久a久久爽久久v久久| 国内精品美女久久久久久| 91麻豆精品激情在线观看国产| av视频在线观看入口| 久久鲁丝午夜福利片| 99热这里只有是精品50| 中文字幕av在线有码专区| 日韩人妻高清精品专区| 色哟哟·www| 毛片一级片免费看久久久久| 最新在线观看一区二区三区| 国产又黄又爽又无遮挡在线| 赤兔流量卡办理| 内射极品少妇av片p| 亚洲经典国产精华液单| 免费看a级黄色片| 国产精品免费一区二区三区在线| 国产精品精品国产色婷婷| 性色avwww在线观看| 干丝袜人妻中文字幕| 啦啦啦观看免费观看视频高清| 不卡视频在线观看欧美| 99久久久亚洲精品蜜臀av| 最新中文字幕久久久久| 九九热线精品视视频播放| 美女内射精品一级片tv| 在线免费观看不下载黄p国产| 老司机福利观看| 看片在线看免费视频| 日本成人三级电影网站| 亚洲国产精品sss在线观看| 久久精品久久久久久噜噜老黄 | 婷婷精品国产亚洲av在线| 亚洲精品成人久久久久久| 波多野结衣高清作品| 岛国在线免费视频观看| 国产真实乱freesex| 亚洲国产精品久久男人天堂| 人妻丰满熟妇av一区二区三区| 日韩精品中文字幕看吧| 国产高清视频在线播放一区| 久久精品国产自在天天线| a级毛片免费高清观看在线播放| 日韩亚洲欧美综合| 特大巨黑吊av在线直播| 99热精品在线国产| 不卡一级毛片| 最新中文字幕久久久久| 欧美xxxx黑人xx丫x性爽| 欧美国产日韩亚洲一区| 精品久久久久久久人妻蜜臀av| 一个人看的www免费观看视频| av.在线天堂| 五月伊人婷婷丁香| 一级毛片电影观看 | 校园春色视频在线观看| 午夜免费男女啪啪视频观看 | 免费看美女性在线毛片视频| 亚洲欧美清纯卡通| 99热6这里只有精品| 中文字幕精品亚洲无线码一区| 国内精品久久久久精免费| 亚洲人成网站在线播放欧美日韩| 成人三级黄色视频| 色综合亚洲欧美另类图片| 成人午夜高清在线视频| 免费人成视频x8x8入口观看| 热99re8久久精品国产| 欧美色欧美亚洲另类二区| 观看免费一级毛片| 成人欧美大片| 黄色一级大片看看| 日本黄大片高清| 亚洲精品日韩av片在线观看| 五月伊人婷婷丁香| 国产黄色小视频在线观看| 麻豆精品久久久久久蜜桃| 在线播放国产精品三级| 国产探花极品一区二区| 国产男靠女视频免费网站| 久久久久久久午夜电影| 亚洲欧美日韩高清专用| 国产在视频线在精品| 久久久久国产精品人妻aⅴ院| 精品人妻偷拍中文字幕| 久久婷婷人人爽人人干人人爱| 我要看日韩黄色一级片| 亚洲欧美中文字幕日韩二区| 直男gayav资源| 亚洲最大成人中文| 五月伊人婷婷丁香| 久久久久久国产a免费观看| 久久久国产成人免费| 国产精品久久电影中文字幕| 国产激情偷乱视频一区二区| 国产视频一区二区在线看| 欧美日韩在线观看h| 草草在线视频免费看| 日韩强制内射视频| 国产黄a三级三级三级人| 一级毛片久久久久久久久女| 男女视频在线观看网站免费| 美女 人体艺术 gogo| 99热这里只有是精品在线观看| 午夜久久久久精精品| 99热这里只有是精品50| 欧美绝顶高潮抽搐喷水| 1000部很黄的大片| 热99在线观看视频| 男女之事视频高清在线观看| 久久久久性生活片| 日韩,欧美,国产一区二区三区 | 麻豆精品久久久久久蜜桃| 亚洲中文日韩欧美视频| 亚洲美女黄片视频| 欧美在线一区亚洲| 成熟少妇高潮喷水视频| 国产毛片a区久久久久| 蜜臀久久99精品久久宅男| 日本-黄色视频高清免费观看| 亚洲第一区二区三区不卡| 中文字幕av成人在线电影| 国产精品,欧美在线| 亚洲高清免费不卡视频| 麻豆国产av国片精品| 亚洲久久久久久中文字幕| 精品久久久久久久久久免费视频| 大又大粗又爽又黄少妇毛片口| 白带黄色成豆腐渣| 夜夜夜夜夜久久久久| 99热这里只有是精品在线观看| 国产又黄又爽又无遮挡在线| 99精品在免费线老司机午夜| 日本熟妇午夜| 我的女老师完整版在线观看| 成人av在线播放网站| 日日摸夜夜添夜夜添小说| av在线观看视频网站免费| 国产精品女同一区二区软件| 99热6这里只有精品| 老女人水多毛片| 国产女主播在线喷水免费视频网站 | 欧美xxxx性猛交bbbb| 精品一区二区三区av网在线观看| 一区二区三区高清视频在线| 欧美精品国产亚洲| 国产黄色视频一区二区在线观看 | 夜夜爽天天搞| 欧洲精品卡2卡3卡4卡5卡区| 日本熟妇午夜| 搡老岳熟女国产| 99久久无色码亚洲精品果冻| 一级av片app| 一个人看视频在线观看www免费| 精华霜和精华液先用哪个| 校园人妻丝袜中文字幕| 国产91av在线免费观看| av福利片在线观看| 日韩制服骚丝袜av| 国产成人a∨麻豆精品| 成年免费大片在线观看| 日日摸夜夜添夜夜添av毛片| 午夜福利在线在线| 九色成人免费人妻av| 别揉我奶头~嗯~啊~动态视频| 国产大屁股一区二区在线视频| 人妻夜夜爽99麻豆av| .国产精品久久| 深夜a级毛片| 国产成年人精品一区二区| 国产高清有码在线观看视频| 午夜激情欧美在线| 国产精品电影一区二区三区| 亚洲精品在线观看二区| 欧美性感艳星| 国产91av在线免费观看| 精品少妇黑人巨大在线播放 | 一级毛片我不卡| 天堂av国产一区二区熟女人妻| 国产一区二区在线观看日韩| 久久九九热精品免费| 大又大粗又爽又黄少妇毛片口| 久久久久久九九精品二区国产| 久久6这里有精品| 久久久久久久亚洲中文字幕| 日韩精品青青久久久久久| 色播亚洲综合网| 日本一本二区三区精品| 亚洲中文字幕日韩| 菩萨蛮人人尽说江南好唐韦庄 | 国产毛片a区久久久久| avwww免费| 久久国内精品自在自线图片| 亚洲成av人片在线播放无| 男人舔女人下体高潮全视频| 国产黄色小视频在线观看| 国产精品久久久久久av不卡| 我要搜黄色片| 久久午夜福利片| aaaaa片日本免费| 99热精品在线国产| 悠悠久久av| 日韩中字成人| 老司机影院成人| 久久人妻av系列| 国产一级毛片七仙女欲春2| 日韩欧美三级三区| 欧美色视频一区免费| 人妻制服诱惑在线中文字幕| 99在线人妻在线中文字幕| 99热6这里只有精品| 日韩成人伦理影院| 欧美日韩精品成人综合77777| 午夜福利在线观看吧| 日本撒尿小便嘘嘘汇集6| 69人妻影院| 直男gayav资源| 日日啪夜夜撸| 成人漫画全彩无遮挡| 亚洲图色成人| 在线观看66精品国产| 五月玫瑰六月丁香| 简卡轻食公司| 日韩精品中文字幕看吧| 丰满的人妻完整版| 久久99热6这里只有精品| 国产高清不卡午夜福利| 亚洲av免费在线观看| 在线免费十八禁| 看片在线看免费视频| 亚洲精品亚洲一区二区| 男女之事视频高清在线观看| 丝袜喷水一区| 又黄又爽又免费观看的视频| 精品乱码久久久久久99久播| 最近2019中文字幕mv第一页| 国产精品不卡视频一区二区| 无遮挡黄片免费观看| 色播亚洲综合网| 国产高清三级在线| 在线a可以看的网站| 亚洲人成网站在线观看播放| 欧美一区二区精品小视频在线| 我要看日韩黄色一级片| 晚上一个人看的免费电影| 三级经典国产精品| 婷婷六月久久综合丁香| 51国产日韩欧美| 又黄又爽又免费观看的视频| 久久久成人免费电影| 国产成人a∨麻豆精品| 精品日产1卡2卡| 欧美不卡视频在线免费观看| 草草在线视频免费看| av在线播放精品| 尤物成人国产欧美一区二区三区| 国产精品一区二区性色av| 在线观看美女被高潮喷水网站| 99久久成人亚洲精品观看| av天堂在线播放| 69av精品久久久久久| 亚洲中文日韩欧美视频| 亚洲综合色惰| 最新在线观看一区二区三区| 尾随美女入室| 直男gayav资源| 此物有八面人人有两片| 国产精品久久视频播放| 啦啦啦韩国在线观看视频| eeuss影院久久| 一本一本综合久久| 国产精品不卡视频一区二区| avwww免费| 熟女人妻精品中文字幕| 黄色一级大片看看| 十八禁网站免费在线| 夜夜夜夜夜久久久久| 中文亚洲av片在线观看爽| 久久精品国产清高在天天线| 午夜激情欧美在线| 精品福利观看| 黄色视频,在线免费观看| 久久久a久久爽久久v久久| 看非洲黑人一级黄片| 国内精品宾馆在线| 国产亚洲精品综合一区在线观看| 久久久成人免费电影| 最新在线观看一区二区三区| 国产免费一级a男人的天堂| 哪里可以看免费的av片| 国产69精品久久久久777片| 日韩精品中文字幕看吧| 欧美精品国产亚洲| 国产v大片淫在线免费观看| 国产精品一区二区性色av| 岛国在线免费视频观看| 欧美最黄视频在线播放免费| 五月伊人婷婷丁香| 午夜爱爱视频在线播放| 日韩精品中文字幕看吧| 婷婷亚洲欧美| 最近视频中文字幕2019在线8| 校园春色视频在线观看| 男女啪啪激烈高潮av片| 男人的好看免费观看在线视频| 国产黄片美女视频| 成人特级av手机在线观看| av黄色大香蕉| 亚洲乱码一区二区免费版| 国产淫片久久久久久久久| 日日摸夜夜添夜夜添av毛片| 热99在线观看视频| 国产片特级美女逼逼视频| 99久久九九国产精品国产免费| 麻豆国产97在线/欧美| 中文在线观看免费www的网站| 久久婷婷人人爽人人干人人爱| 老司机午夜福利在线观看视频| 老熟妇乱子伦视频在线观看| 狂野欧美激情性xxxx在线观看| 欧美日韩国产亚洲二区| 深爱激情五月婷婷| 日日摸夜夜添夜夜添小说| 十八禁网站免费在线| 麻豆一二三区av精品| 18禁在线播放成人免费| 少妇高潮的动态图| 亚洲精品国产av成人精品 | 国产精品久久视频播放| av在线蜜桃| 热99re8久久精品国产| 国产精品福利在线免费观看| 亚洲人成网站在线播| 亚洲av.av天堂| 中文字幕久久专区| 欧美性感艳星| 网址你懂的国产日韩在线| 欧美xxxx黑人xx丫x性爽| 亚洲欧美精品自产自拍| 少妇熟女欧美另类| 国产精品无大码| 亚洲人成网站在线播| 色吧在线观看| 免费一级毛片在线播放高清视频| 日韩成人av中文字幕在线观看 | 午夜爱爱视频在线播放| 欧美日韩在线观看h| 欧美高清性xxxxhd video| 美女黄网站色视频| 小蜜桃在线观看免费完整版高清| 91在线精品国自产拍蜜月| 一级黄色大片毛片| 亚洲成人久久爱视频| 久久人人精品亚洲av| 欧美另类亚洲清纯唯美| 国产成年人精品一区二区| 少妇的逼水好多| 午夜亚洲福利在线播放| 在线a可以看的网站| 久久久久九九精品影院| 成人毛片a级毛片在线播放| 午夜激情福利司机影院| 在线观看一区二区三区| 亚洲欧美日韩高清在线视频| av在线天堂中文字幕| 大香蕉久久网| 精品欧美国产一区二区三| 嫩草影视91久久| 如何舔出高潮| 深夜精品福利| 亚洲无线观看免费| 在线观看午夜福利视频| 精品人妻偷拍中文字幕| 国产精品久久久久久久久免| 精品乱码久久久久久99久播| 亚洲精华国产精华液的使用体验 | 欧美高清性xxxxhd video| 国产精品人妻久久久影院| 欧美高清成人免费视频www| 69人妻影院| 国产熟女欧美一区二区| 中文字幕精品亚洲无线码一区| 五月伊人婷婷丁香| 99热这里只有是精品50| 偷拍熟女少妇极品色| 国产黄片美女视频| 亚洲欧美中文字幕日韩二区| 18禁黄网站禁片免费观看直播| 在线播放国产精品三级| 麻豆国产97在线/欧美| 一个人看视频在线观看www免费| 亚洲精品久久国产高清桃花| 国产三级中文精品| 亚洲久久久久久中文字幕| 国产男人的电影天堂91| 91狼人影院| 在线观看午夜福利视频| 久久欧美精品欧美久久欧美| 亚洲图色成人| 久久精品综合一区二区三区| 老熟妇乱子伦视频在线观看| 亚洲国产色片| 黄片wwwwww| 欧美一级a爱片免费观看看| 偷拍熟女少妇极品色| 亚洲成人av在线免费| 最近2019中文字幕mv第一页| 最新中文字幕久久久久| 99精品在免费线老司机午夜| av视频在线观看入口| 国内精品美女久久久久久| 欧美3d第一页| 亚州av有码| av在线亚洲专区| 六月丁香七月| 此物有八面人人有两片| 亚洲第一电影网av| 露出奶头的视频| 欧美最新免费一区二区三区| 最近2019中文字幕mv第一页| 久久亚洲精品不卡| 日日摸夜夜添夜夜添小说| 亚洲av熟女| 三级国产精品欧美在线观看| 极品教师在线视频| 久久精品影院6| 两性午夜刺激爽爽歪歪视频在线观看| 男插女下体视频免费在线播放| 99国产极品粉嫩在线观看| 亚洲第一电影网av| 舔av片在线| 九九在线视频观看精品| a级毛色黄片| 亚洲av.av天堂| 亚洲国产日韩欧美精品在线观看| 97热精品久久久久久| 久久久午夜欧美精品| 国产乱人偷精品视频| 狂野欧美激情性xxxx在线观看| av天堂中文字幕网| 韩国av在线不卡| 亚洲av.av天堂| 中国美白少妇内射xxxbb| 欧美成人一区二区免费高清观看| 日产精品乱码卡一卡2卡三| 乱码一卡2卡4卡精品| 偷拍熟女少妇极品色| 精品熟女少妇av免费看| 99久国产av精品| 亚洲内射少妇av| 亚洲av五月六月丁香网| 非洲黑人性xxxx精品又粗又长| 精品一区二区免费观看| 尾随美女入室| 久久午夜亚洲精品久久| 看非洲黑人一级黄片| 免费一级毛片在线播放高清视频| 欧美成人a在线观看| 日日啪夜夜撸| av在线老鸭窝| av在线播放精品| 久久久久久九九精品二区国产| 成熟少妇高潮喷水视频| 97在线视频观看| 日本成人三级电影网站| 美女高潮的动态| 久久久久久久久久黄片| 人妻制服诱惑在线中文字幕| 人妻少妇偷人精品九色| 九九久久精品国产亚洲av麻豆| 午夜日韩欧美国产| 在线观看午夜福利视频| 最好的美女福利视频网| 成人美女网站在线观看视频| 欧美激情在线99| 中文字幕av成人在线电影| 亚洲不卡免费看| 成人特级av手机在线观看| 女同久久另类99精品国产91| 女人被狂操c到高潮| 国产国拍精品亚洲av在线观看| 少妇高潮的动态图| 韩国av在线不卡| 免费电影在线观看免费观看| 伊人久久精品亚洲午夜| 在现免费观看毛片| 日韩欧美精品v在线| 国产精品电影一区二区三区| 久久午夜福利片| 日韩欧美精品v在线| 亚洲丝袜综合中文字幕| 国模一区二区三区四区视频| 国产真实伦视频高清在线观看| 大又大粗又爽又黄少妇毛片口| 毛片一级片免费看久久久久| 国产爱豆传媒在线观看| 国产在视频线在精品| 国产精品精品国产色婷婷| 久久精品91蜜桃| 中文字幕免费在线视频6| 国产一区二区三区在线臀色熟女| 永久网站在线| 久久精品国产亚洲av天美| 亚洲无线在线观看| 成年女人看的毛片在线观看| 韩国av在线不卡| 免费高清视频大片| av天堂中文字幕网| 日本黄色片子视频| 有码 亚洲区| 高清午夜精品一区二区三区 | 国产精品国产高清国产av| 狂野欧美白嫩少妇大欣赏| 亚洲av免费在线观看| 亚洲色图av天堂| 欧美丝袜亚洲另类| 久久精品国产清高在天天线|