重複資料刪除和SSD的互補方法

fumin發表於2011-11-18
/*******************************
 * 資訊儲存專題課程作業
 * 重複資料刪除技術和SSD技術的互補方法
 *******************************/

摘要

重複資料刪除和SSD是目前儲存領域非常熱門的話題,近幾年來得到了飛速的發展。重複資料刪除由於其較高的計算和索引開銷,容易成為效能瓶頸,所以一直沒有在主儲存系統中立足。SSD則受限於壽命和可靠性方面的問題,資料中心接受SSD產品的步伐非常緩慢。研究人員發現這兩種技術其實存在互補的可能性,SSD具有重複資料刪除需要的隨機讀寫速度,而重複資料刪除可以有效降低SSD的IO負載。本文分別從這兩個角度介紹了二者互補的解決方案,CAFTL在裝置一級攔截重複資料,延長SSD的壽命;ChunkStash使用flash儲存指紋來加快索引的速度,提高了重複資料刪除的吞吐率。

關鍵字:重複資料刪除,flash,SSD

1 緒論

計算、儲存、傳輸是計算機系統面對的三個基本問題,儲存問題作為其中之一,其重要性不言而喻。但是隨著計算機和網際網路在全球範圍的普及,資料量正經歷著爆炸式的增長。面對這些海量資料,計算機系統如何能保證充足的儲存容量和訪問速度,就成了儲存技術研究人員主要思考的問題。

目前磁碟仍然是構成儲存系統的主流基礎裝置,其相對低廉的價格、較高的容量、RAID技術帶來的可靠性等優點,都是其仍然統治著大規模儲存市場的原因。研究人員不斷的挖掘磁碟技術的潛力,目前儲存密度、轉速等效能指標都已接近極限,急需新的技術來提高儲存系統的容量和訪問速度。在這種背景下,重複資料刪除技術和基於flash的固態儲存技術得到了研究人員的廣泛重視。

重複資料刪除是一種無損的壓縮技術,它從資料中刪除掉重複資料來節省儲存空間。重複資料刪除技術的基本原理是將資料按照一定的方法進行分塊,可以是定長分塊,也可以是內容感知的變長分塊,然後使用SHA-1等雜湊摘要演算法計算每一個資料塊的指紋,再利用指紋來區分不同內容的資料塊,對於相同內容的資料塊就只儲存一份資料副本。目前重複資料刪除技術已經成功應用到了資料備份和歸檔系統中。

基於flash的固態儲存裝置現在已經非常普及了,使用flash作為主存的U盤、數碼產品隨處可見。flash作為半導體儲存器,相比磁碟具有很多的優點,比如更高的隨機讀寫效能、抗震性和低能耗。可以說flash就是為了取代磁碟而出現的。

近些年來,得益於大量研究人員的努力,重複資料刪除和flash技術都愈發成熟了,理應在更大的舞臺上發揮作用,但是由於它們自身的一些限制,使得推廣的步伐非常緩慢。

1.1 固態儲存技術背景

1.1.1 基於NAND flash晶片的固態儲存裝置(SSD)


圖1 三星公司NAND flash的內部結構

目前市場上的大部分SSD採用的都是NAND flash晶片, NAND flash的體系結構如圖1所示[4]。在專業術語中,flash晶片又稱為die,若干個die組成一個package;每一個die被劃分為多個plane,每一個plane進一步被劃分為數以千計的block(注意,這裡的block和磁碟的塊是不同的概念);每一個block由許多page(64-128個)組成;每一個page都包括一塊資料區(通常4KB),和一些備用的儲存空間,備用儲存空間通常作為後設資料區。因為目前磁碟仍然具有統治地位,大多數作業系統支援的是磁碟的驅動程式,所以在flash晶片之上實現了Flash Translation Layer(FTL),向外提供和磁碟一樣的介面。

flash儲存器支援三種基本操作:讀、程式設計(寫)和擦除。程式設計就是寫操作,讀和程式設計都是以page為單位的,而擦除是以block為單位。flash儲存器在技術上有三個嚴格的限制:(1)不能二次程式設計,也就是對一個page只能程式設計一次,在下一次程式設計之前必須對整個block執行擦除操作;(2)不能隨機寫,一個block內的page必須按順序寫;(3)擦除的次數限制,block擦除一定次數就會磨損,通常是10,000到100,000次。

為了克服flash儲存器的這些限制,設計者在FTL這一層為flash量身定做了很多的技術:(1)間接對映,flash儲存器會儲存一張邏輯地址和實體地址的對映表,將上層IO請求的邏輯地址轉換為實體地址;(2)日誌式的寫操作,按照實體地址順序一個接一個地寫page,如果要向一個邏輯地址寫資料,那麼就將原來的物理page置為失效,把資料寫到新page,再修改對映表;(3)垃圾回收,定期地回收有很多失效頁的block,先將有效的頁遷移到新的block上,再擦除block;(4)損耗平衡,由於某些熱點資料的修改非常頻繁,會導致某些block過早磨損,所以負載均衡機制會將IO負載均衡到每一個block上;(5)過量儲存空間,為了幫助垃圾回收和損耗均衡,SSD通常會提供一些額外的儲存空間。

1.1.2 SSD的壽命問題

SSD從最開始出現,人們對它的期望就是磁碟的替代者,但是時至今日,這一理想還遠遠沒有實現。首先,flash的位密度越大,它的可靠性和壽命就越短;其次,傳統的可靠性解決方案RAID,用於SSD並不成功;再次,SSD的壽命始終沒有得到證明。這就解釋了為什麼SSD仍然只能出現在個人使用者的U盤、數碼產品這樣的應用領域,而商業使用者始終對大規模部署SSD心存疑慮,誰也不希望自己的儲存裝置突然就壞掉了。

一塊flash儲存器的壽命主要由兩個因素決定:(1)寫操作負載,顯然寫地越多flash壽終正寢地越快;(2)垃圾回收和損耗均衡機制,它們的實現策略對flash儲存器的壽命會產生巨大的影響。目前大多數的研究工作都將重點放在第二個因素上,很少有人從第一個因素的角度來解決flash的壽命問題。這也是理所當然的,通常認為儲存裝置對IO負載只能逆來順受。而本文的一個重點就是討論如何從裝置一級優化寫操作負載。

1.2 重複資料刪除技術背景

1.2.1 背景和基本方法

重複資料刪除技術出現的早期,磁帶庫是備份和歸檔系統的主要儲存介質,原因是備份和歸檔系統對儲存空間的要求特別大,出於經濟的考慮只能選用容量大、價格低廉的磁帶庫。但是隨著磁碟技術的發展,磁碟的容量逐漸趕上了磁帶,而且價格也不斷下降,於是有人提出使用磁碟來儲存備份資料。磁碟相對磁帶的優勢就是支援隨機訪問,這為重複資料刪除技術的出現奠定了基礎,通過結合磁碟技術和重複資料刪除技術,可以大大節約成本。

一個典型的重複資料刪除技術解決方案的基本步驟是分塊、雜湊、查重、儲存和更新。    分塊的功能是按照一定的粒度將資料流切分為資料塊,最簡單的作法是按照固定的長度進行切分,這樣每一個資料塊是一樣長的,但是這樣分塊方法會出現資料偏移的問題,即增加或刪除一個位元組,後面的資料塊將會受到影響。於是就出現了內容感知分塊法,這種方法根據資料的內容進行分塊,通常生成的資料塊是不一樣長的,最典型的就是採用Rabin指紋的分塊演算法。

雜湊的功能是計算每一個資料塊的指紋,指紋將會作為資料塊的身份證,伴其終生。最長使用的雜湊演算法是SHA-1演算法,它為每一個資料塊生成一個20位元組的指紋。指紋將會作為區分資料塊的依據,這麼做的原因是逐個位元組比較資料塊的開銷太大了。

查重就是在系統裡查詢重複的指紋。重複資料刪除系統會儲存一張指紋索引,裡面記錄了所有已儲存資料塊的指紋,索引資料結構的實現有多種選擇,可以採用雜湊表和B樹。查重是重複資料刪除系統的關鍵環節,大多數研究人員都將精力放到了這一個環節。

儲存就是將資料塊寫入儲存裝置,只有當查重沒有發現重複資料塊才會執行這一步,如果查重發現系統已經儲存了該資料塊,就會跳過這一步。

更新就是更新指紋索引,只有當查重沒有發現重複資料塊才會執行這一步,將該指紋插入到索引結構中,如果查重發現系統已經儲存了該指紋,就會跳過這一步。

1.2.2 重複資料刪除的效能問題

重複資料刪除的邏輯雖然簡單,但是存在的問題卻不少,最引人關注的就是磁碟瓶頸問題。查重的關鍵是系統儲存的指紋索引,如果採用SHA-1演算法和8KB的平均塊長,那麼指紋和資料的比例大約是1:400,那麼8TB的資料會產生20GB的指紋。重複資料刪除的目的就是節約成本,那麼用RAM來儲存指紋無疑違背了這一原則,通常的作法就是使用磁碟來儲存指紋索引。於是系統每接收一個資料塊,都需要去訪問磁碟中的指紋索引,而且極有可能導致多次磁碟IO,因為不論是雜湊表還是B樹,都不可能保證一次找到想要的資料。最壞的情況就是指紋索引根本沒有該指紋,而系統不得不訪問B樹的高度次磁碟,更可悲的是這完全是無用功。

當儲存成為效能瓶頸,最常用的作法有二:(1)使用速度更快的儲存裝置替代原有的儲存裝置;(2)使用體系結構的辦法,用容量較小但速度更快的儲存裝置構建快取。現在大多數的研究者採用的是第二種辦法,考慮到SHA-1是隨機性非常高的演算法,指紋將會隨機地分佈在索引的各個位置,區域性性很差導致了快取的低命中率,所以設計一個優秀的快取並不是一件容易的事情,好在現在已經有了非常成熟的解決方案。本文的一個重點是討論如何使用第一種方法來解決效能問題。

目前重複資料刪除技術已經被廣泛應用到備份和歸檔領域,但是在主儲存系統,如檔案系統、虛擬機器等應用場景,仍然舉步維艱。據我所知,只有ZFS和opendedup檔案系統採用了重複資料刪除技術,而且更多的是實驗性質。原因就是重複資料刪除對系統的效能影響太大,不僅僅是前文提到的寫效能,而且讀效能也受到了影響,原因是經過重複資料刪除之後的資料是離散分佈在磁碟上的,使得檔案系統的快取不能發揮作用。

2 利用重複資料刪除技術提高SSD的壽命

SSD的壽命問題是其還不能取代磁碟的重要原因,寫密集型應用會加速SSD的損毀,IO負載是由上層應用決定,除了儘量避免SSD用於寫密集型應用以外,還可以考慮如何從裝置一級來減少IO負載。正如前文介紹的,重複資料刪除技術可以發現IO負載中的重複資料,如果要寫的資料已經儲存在SSD了,那麼就可以避免這一次寫操作。但是重複資料刪除技術會帶來大量的計算開銷,如果將其放在SSD讀寫的關鍵路徑上,無疑對效能會產生嚴重的影響,下面介紹的CAFTL針對這些問題進行了研究。

2.1 CAFTL的重複資料刪除

CAFTL[1]的全稱是Content-Aware Flash Translation Layer,顧名思義就是要在FTL這一層攔截寫入重複資料的IO請求。CAFTL在設計時面臨的最大的挑戰就是SSD本身的計算、記憶體資源十分有限以及非常高的效能要求。因此CAFTL從一開始就不準備追求完美的重刪率,採用了in-line和out-of-line相結合的方式,在IO負載很重的情況下,將重複資料刪除排除在關鍵路徑之外,從而保證系統的效能。

因為檔案系統的IO負載存在很多小寫請求,備份系統常用的變長分塊並不適合CAFTL的應用場景,所以CAFTL採用的是定長的分塊方法,將資料塊定為page大小,這種設定非常自然,因為flash的讀寫都是以page為單位的。

圖2展示了CAFTL處理寫請求的流程,(1)寫請求的資料會被放到快取中,(2)計算資料的指紋,(3)查詢fingerprint store對指紋進行查重,(4)如果發現匹配的指紋,就更新對映表,將寫請求的邏輯地址對映到匹配資料塊的實體地址,(5)如果沒有發現匹配的指紋,照常寫入資料。

fingerprint store就是CAFTL的指紋索引,由於flash記憶體有限,再考慮到大部分指紋其實都沒有機會發生匹配,CAFTL並不儲存完整的指紋索引,而是儲存發生匹配最多的熱門指紋。如圖所示,指紋索引被分為多個segment,segment又由bucket連結串列組成,bucket的每一個條目儲存的資訊是{?ngerprint, (location, hotness)},其中hotness表示這個指紋的熱度(也就是引用數)。通過摸運算,指紋被對映到某個segment中,然後依次查詢每一個bucket。

 

圖2 CAFTL處理寫請求的流程

考慮一下CAFTL的修改問題,IO請求修改一個page的資料,傳統SSD只需要讓舊page失效,將新資料寫到新page再修改對映表。但是CAFTL需要檢視是否有其它邏輯地址(LBA)被對映到這個舊page的實體地址(PBA),這就需要遍歷整個對映表。因此CAFTL設計了二重對映機制,引入了虛擬地址(VBA)的概念,增加了二級對映表,表的每一個條目的資訊是{PBA, reference},這裡的reference指的是指紋的引用數,注意reference是4位元組的,而hotness是1位元組的,大於255的引用數都是一樣的熱度。指向同一個PBA的LBA將會改為指向一個VBA,再由VBA對映到PBA。考慮到31位地址可以定址2G個page,相當於8TB資料,這對於目前的SSD已經足夠了,CAFTL將32位地址的第一位用於區分PBA和VBA。如果要修改一個LBA的資料,先判斷對映到的目標地址是PBA還是VBA,如果是VBA就不將舊page置為失效,而是將其引用次數減1。

2.2 in-line重複資料刪除的效能優化

flash自身的資源是非常有限的,而重複資料刪除對計算資源和記憶體資源的需求很大。圖3是快取大小對CAFTL讀寫效能影響,橫座標是11種不同的IO負載,縱座標是相對於普通FTL的效能影響,當flash的記憶體很少時,重複資料刪除對效能的影響比較嚴重,因為大量的寫請求會因為不能得到快取而被阻塞。圖4是處理器對CAFTL讀效能的影響,因為SSD的寫是非同步的,寫入快取就是寫入成功,精確測量什麼時候真正寫入flash比較困難,所以通過測試讀效能從側面反映讀被寫阻塞了。可以說兩個測試反映的都是緩衝區被填滿後導致IO請求阻塞。針對這個問題,CAFTL採取了幾個優化方法。

 
圖3 快取對CAFTL的影響

 

圖4 雜湊計算速度對效能的影響

CAFTL通過取樣法減少指紋的計算。在檔案系統的應用場景下,重複資料量並不是很多,這意味著大多數的指紋計算都是在“浪費”時間。因此CAFTL將若干個page組成一個抽樣元組,從中取一個page計算指紋,如果這個指紋能在指紋索引中查到,說明這個元組中很有可能存在大量重複資料,反之則認為其中重複資料很少。CAFTL的抽樣方法是對元組中每一個page讀取前四個位元組並轉換為數字,選擇值最大的page為樣本。這種做法的理論依據是Broder定律[5],即兩個集合最大或最小的元素相同的概率等於兩個集合相似度。抽樣法會丟失部分重刪率,但對效能的改進比較顯著。

預雜湊技術,CAFTL為每一個page額外計算和儲存一個4位元組的CRC32校驗碼。因為CRC32的計算速度比SHA-1要快得多,所以在計算page的指紋之前先計算CRC32校驗碼,如果不能在指紋索引中查詢到此校驗碼,就可以肯定其指紋也不在指紋索引裡,從而避免SHA-1計算。

動態切換,當IO負載很高的時候,就關閉in-line重複資料刪除。CAFTL通過觀察快取的使用情況來判斷當前的IO負載,如果快取所剩無幾就關閉in-line重複資料刪除,反之則開啟in-line重複資料刪除。

2.3 CAFTL的out-of-line重複資料刪除

由於CAFTL對效能的要求很苛刻, out-of-line的重複資料刪除幾乎成為必然的選擇,在系統空閒的時候進行重複資料刪除可以避開IO請求的關鍵路徑。

上文介紹的in-line重複資料刪除會遺漏一些重複的資料,並且存在一些page沒有計算指紋,out-of-line重複資料刪除的工作就是找出“漏網之魚”。out-of-line重複資料刪除的工作原理比較簡單,CAFTL掃描flash的後設資料,找出未計算指紋的page,給它們補上SHA-1指紋並判斷是否重複。

3 利用flash技術解決重複資料刪除的磁碟瓶頸問題

flash的隨機讀效能和順序讀效能一樣出色,從這點看無疑非常適合儲存重複資料刪除技術的指紋索引,因為指紋索引是一個讀密集型的資料結構。但是flash也有缺點,其隨機寫效能比順序寫要低很多,而且flash的寫以page為單位而且不能二次程式設計,這就導致小寫成為flash的問題,而索引更新恰恰都是隨機寫和小寫。下面就介紹一種揚長避短的解決方案:Chunk Metadata Store on Flash(ChunkStash)。

3.1 ChunkStash的體系結構

圖5所示為ChunkStash[2]的體系結構,一共由三部分組成:RAM儲存區,flash儲存區和磁碟儲存區。ChunkStash的磁碟儲存區是一個container容器,如圖6所示,這部分的設計採用的是Data Domain的設計方案[3],為了保護資料和指紋的區域性性,所有的資料塊都用container進行封裝儲存在磁碟上,container包括資料區(1024個資料塊)和後設資料區(64KB),資料區儲存著資料塊,後設資料區儲存了資料塊的指紋、偏移、長度等後設資料資訊,container都是不可修改,記憶體中會有一個container緩衝區,當寫滿時就給container貼上“封條”寫到磁碟去,如此既保護了資料的區域性性也避免了磁碟小寫。flash儲存區存放container後設資料區的副本,取代了磁碟中的指紋索引,為了避免隨機寫和小寫,flash都是按順序寫的,而且和磁碟的container容器同步更新,一個container的後設資料區是64KB,所以flash每次都是順序寫16個page(如果page是4KB的話)。RAM中的資料結構是最複雜的,也是ChunkStash的關鍵,Chunk Metadata Write Buffer是container緩衝區的後設資料部分,Metadata Cache是指紋快取,每次訪問flash中的指紋就將其所屬container的所有指紋都讀入指紋快取中,有效減少訪問flash的次數,由於flash中的指紋是根據資料塊的邏輯順序儲存的,必須在記憶體中對它建立索引方便查詢,Hash Table Index就是為此設計的,它的結構比較複雜,可以將其看成是指紋索引的摘要。

 

圖5 ChunkStash體系結構


圖6 Container容器

圖7是ChunkStash重複資料刪除的流程圖。當一個資料塊到達系統,首先會在指紋快取中查詢,如果未命中就繼續在container緩衝區中找,仍未找到則再查詢雜湊表定位其在flash中可能的位置,最後如果是新資料塊就加入container緩衝區。
 

圖7 流程圖

3.2 為ChunkStash設計的雜湊表

由於flash中的指紋按照資料塊的邏輯順序儲存,必須為其建立索引,不然查重就得順序遍歷指紋庫了。ChunkStash在記憶體中儲存了一張雜湊表來索引flash中的指紋庫,這張雜湊表的設計目標是每當指紋快取未命中,最多隻需要訪問一次flash就可以判斷指紋是否存在。雜湊表的結構如圖7所示,雜湊表的每個條目需要6個位元組。

 

圖8 雜湊表結構

雜湊表使用的關鍵技術是cuckoo hashing。傳統的解決雜湊衝突的方法有線性探測和拉鍊法,線性探測會增加查詢雜湊表的時間,而拉鍊法佔用較多記憶體。cuckoo hashing為每個鍵(在ChunkStash中就是指紋)分配n個候選位置,如果新來的鍵x的n個位置都被佔了,那麼就強迫其中一個位置的鍵y讓出位置,y再在自己的剩餘n-1個位置中找位置,依次類推直到所有鍵都找到位置。但是為y重新分配位置可能又會導致一系列重新分配,甚至產生死鎖,所以系統只會嘗試固定次數的重新分配,實在不行就把鍵放入輔助連結串列。這樣查詢雜湊表的最壞情況是搜尋n個位置加上輔助連結串列,研究表明,輔助連結串列的長度非常小。

ChunkStash的雜湊表使用n個雜湊函式h1,……,hn計算n個候選位置。要獲得指紋的候選位置,就分別計算h1(x),……,hn(x),候選位置就是計算結果低位取模。圖8中,compact key signature是指紋的摘要,取自雜湊函式計算結果的高位,pointer是指向flash的指標。查詢雜湊表的過程是這樣的:計算指紋x的第k個候選位置,即hk(x)的低位取模,再將雜湊表中這個位置儲存的簽名和hk(x)的高位比較,如果不匹配就查詢下一個候選位置,如果匹配就根據pointer找到flash中完整的指紋,如果完整的指紋也匹配就查詢成功了,如果未匹配就表示查詢失敗,將指紋插入這個位置,併為這個位置的原指紋尋找其他的候選位置。

另外,在最壞的情況下,查詢一次雜湊表需要計算n個雜湊函式,這是可以優化的。有研究表明兩個雜湊函式可以模擬多個雜湊函式:

hi (x)=g1 (x)+i*g2 (x)

因此,在cuckoo hashing中使用較多的雜湊函式並不會造成額外的開銷。

3.3 ChunkStash效能評價

通過flash和RAM相結合的方式儲存指紋索引,ChunkStash避免flash的隨機寫操作的同時,充分利用了flash的隨機讀效能。圖9是ChunkStash和Data Domain設計方案Zhu08-BDB的比較,Zhu08-BDB在記憶體中用Bloom Filter過濾指紋索引中不存在的指紋,磁碟中用資料庫儲存完整指紋索引。縱座標是備份吞吐率,橫座標表示兩次完全備份,第一次重複資料較少,第二次重複資料很多。比較Zhu08-BDB-HDD和ChunkStash-SSD可以看出SSD對於效能的提高是非常明顯的。實驗還測試了ChunkStash的雜湊表的效率,Zhu08-BDB-SSD表示將資料庫儲存在SSD中,比較Zhu08-BDB-SSD和ChunkStash-SSD可以看出雜湊表的效率要比Bloom Filter高得多。

但是應該看到ChunkStash的高效是必然,因為不僅flash的成本要比磁碟高得多,而且其雜湊表使用的RAM也比Bloom Filter多得多。每一個指紋需在雜湊表佔6位元組,而平均塊長為8KB、總資料量為8TB的資料集有1G個指紋,再考慮到雜湊表的裝載因子不可能是1,其實際消耗的記憶體空間還會更大。
 

圖9 ChunkStash和DDFS的效能比較

4 總結

重複資料刪除技術和flash儲存器都是在儲存學界討論非常熱門的技術,但由於各自存在的侷限性,都未能在更多的場景中扮演更重要的角色。

重複資料刪除技術能夠節省大量的儲存和頻寬資源,但是同時帶來大量的計算和索引開銷,不能勝任對效能要求比較苛刻的場景。虛擬機器是一個應用重複資料刪除的理想領域,因為多個虛擬機器之間經常安裝相同的系統軟體和應用,虛擬機器磁碟映象之間會存在大量重複資料,目前雖然已有研究人員進行了實驗,但為了降低效能影響,大多采用了定長分塊和out-of-line重複資料刪除,使得重複資料刪除不能發揮最大的作用。在檔案系統中也存在可觀的重複資料,檔案系統的負載中讀請求佔據了很大的比例,而重複資料刪除技術會將檔案的資料分散在磁碟,使得快取失效,導致大量磁碟隨機讀,所以鮮有檔案系統提供對重複資料刪除技術的支援,opendedup是其中的佼佼者。

SSD是以磁碟取代者的姿態出現在公眾視野的,但目前來看,由於壽命和可靠性等方面的原因,要想徹底顛覆磁碟的地位仍然任重道遠。flash晶片屬於半導體儲存器,具有容量較大、沒有機械運動、能耗低、高效的隨機訪問等特點,但是其有限的擦除次數導致SSD的壽命較短。儘管SSD生產商宣稱SSD能夠支援數年的日常使用,關於SSD壽命的問題仍然討論地非常激烈,SSD仍然有待證明自己。

研究人員發現二者之間其實存在互補的關係,SSD可以提供重複資料刪除需要的隨機訪問速度,而重複資料刪除可以通過降低SSD的IO負載來延長其壽命,於是近年來關於二者相互作用的研究越來越多。重複資料刪除技術要想在檔案系統等領域獲得一席之地,一定需要像flash這樣的新型儲存期間的支援;而flash要想進軍資料中心,而不僅僅是存在於玩具之中,也需要重複資料刪除這樣的技術來幫忙。

CAFTL和ChunkStash在這方面做了很好的嘗試。通過in-line和out-of-line相結合的方式,以及一些優化策略,CAFTL把效能影響降低了很多,但是它的重刪率也受到了很大的影響。為了避免flash不擅長的隨機寫和小寫,ChunkStash在flash中儲存了指紋庫,記憶體中用壓縮的指紋索引檢索指紋庫,這樣可以達到很高的效能,但是消耗較多記憶體,導致成本很高。

參考文獻

[1] Feng Chen, Tian Luo, Xiaodong Zhang. CAFTL: A Content-Aware Flash Translation Layer Enhancing the Lifespan of Flash Memory based Solid State Drives. In Proceedings of FAST’11.
[2] DEBNATH, B. , SENGUPTA, S. , AND LI, J. ChunkStash Speeding up Inline Storage Deduplication using Flash Memory. In Proceedings of USENIX’10.
[3] ZHU, B. , LI, K. , AND PATTERSON, H. Avoiding the Disk Bottleneck in the Data Domain Deduplication File System. In Proceedings of FAST’08.
[4] AGRAWAL, N. , PRABHAKARAN, V. , WOBBER, T. , DAVIS, J. D. , MANASSE, M. , AND PANIGRAHY, R. Design tradeoffs for SSD performance. In Proceedings of USENIX’08.
[5] A. Z. Broder. On the resemblance and containment of documents. In Proceedings of SEQUENCES ’97.


相關文章