在上一篇中我給出了整個SMR學習部分的思惟導圖,說的比較抽象,這一部分仍然是從總體上來學SMR部分;下面的部分都是總結的,更加精練的話,能夠去看論文《疊瓦式磁記錄磁盤的研究進展》,這篇論文是咱們寫的有關SMR磁盤的一個綜述;node
接下來的部分相對於論文中提到的會更加的詳細,針對其中的一些部分,我會在後面更加詳細的分析;算法
本文屬於原創,轉載請私信我,並指明出處!數據庫
Shingled magnetic Recording做爲下一代被用於增長硬盤單位面積內的存儲容量的技術,在未來的一段時間內,將會使得磁盤容量的井噴式的爆發增加。文中與傳統磁盤相對比介紹SMR磁盤的組織結構和特色,得出SMR磁盤的種類。根據是否有STL層,區分爲host-managed SMR磁盤和drive-managed SMR磁盤。本文中將介紹drive-managed磁盤上有關數據佈局,映射方式以及碎片處理的研究方法和研究現狀,同時還會介紹host-managed磁盤中band固定時的三種不一樣應用,分別是SMRDB,HISMRFS,以及strict append。還會介紹磁盤band不固定時的另外一種應用,caveat scriptor。以上應用從不一樣的方面改進了SMR的不足之處,發揮了SMR磁盤的容量以及性能特色。以上總體說明了SMR現有的研究現狀。緩存
隨着數據密度快速增長到超順磁限定的極限密度[1],從製造工藝上來講,進一步的減少每比特的大小來增長單位密度的存儲容量變得不可能了。此外,隨着大數據時代的到來,減小單位存儲容量的代價這一需求變得愈來愈迫切。新的存儲技術,好比熱輔助磁存儲技術(HAMR)[2]和比特模式磁存儲(BPMR)[3]正處於火熱的研究之中,可是在這兩種技術商業化以前還有一些工程上的重大挑戰須要克服。因此這兩種方法目前並不可取。安全
相對於其餘新的存儲技術,Shingled magnetic Recording (SMR)彷佛是目前提升存儲容量最好的辦法。SMR磁盤在不少方面都可以代替傳統的磁盤[4] [5] [6] [7] [8] [9],這是由於生產商的製造工藝只須要作出細小的改變就可以生產製造出來[6],與傳統磁盤是相互兼容的。下面來詳細介紹Shingled magnetic Recording (SMR)。性能優化
SMR磁盤是如何提供可觀的更高的存儲密度的呢,這是由於磁盤採用了瓦片式的結構[11],將連續的tracks部分的覆蓋放置,以此來達到存放更多的數據的效果。傳統磁盤和SMR磁盤的組織結構以下圖所示。app
傳統磁盤是一個個單獨的track被小的間隔隔開來防止track之間的寫影響,因爲現代工業條件的限制,不可能再縮短track之間的距離來達到增長容量的目的。與此同時,研究發如今磁盤的讀寫中,對寫磁頭和讀磁頭長度需求是能夠不同的。寫磁頭的長度要大於讀磁頭的長度,所以Shingled magnetic Recording磁盤問世了。佈局
Shingled magnetic Recording磁盤容量增長是以犧牲隨機寫操做的能力爲代價的。當對上游的數據進行寫操做的時候,會由於覆蓋會對下游的數據進行覆蓋,所以隨機寫操做會受到很大的影響。可是相應的,在單位面積內,可用的track更多,容量也就更大了。Shingled magnetic Recording磁盤是將必定數量的track組成固定大小的band。Band之間由gap隔開,避免寫相互影響。性能
爲了知足SMR磁盤與現有的系統相互兼容的目的,在SMR設備和host之間,提出了 Shingle Translation Layer(STL)。STL能夠將隨機寫轉換成順序寫,而且對於主機來講提供標準的接口。這使得SMR設備可以在傳統的HDDs上獲得應用,實現與現有的磁盤系統很好的兼容的目的。這種方式下就提出了第一種SMR結構,drive-managed SMR。其總體結構以下圖所示。學習
可是,隨着數據量的變大,STL上的垃圾回收策略,映射方式策略使得STL變得愈來愈複雜,嚴重的影響了磁盤的總體性能。所以又提出了第二種SMR結構系統,host-managed SMR。這種方式將STL所作的工做所有都交給SMR-aware 文件系統,各類針對SMR磁盤的性能優化都放在host中實現。其總體的結構以下圖所示。
爲了使得SMR磁盤可以在市場上獲得普遍的應用,標準組織針對SMR提出了Zoned Block Commands (ZBC)和Zoned-device ATA Commands (ZAC)標準[13]。爲區域塊設備設立標準通訊協議,人們提出了新的標準化方法。ZBC是爲了知足SCSI設備的需求。這些標準是由T10組織設立的,而ZAC則是爲了知足ATA設備的需求,由T13組織設立。
ZAC和ZBC命令標準既包含了drive-managed設備,也包含了host-managed設備。SMR設備是在最近幾年最有可能代替傳統的HDD市場的設備。若是沒有ZAC和ZBC標準的支持,則SMR磁盤不能與傳統的文件系統相互兼容。這會極大的影響SMR磁盤的應用和推廣。
接下來,本文的第二部分將介紹基於host-managed SMR磁盤上固定band大小的應用。包括SMR-aware 文件系統SMRDB,HiSMRfs,以及相似於日誌文件系統的strict-append文件系統。在本文的第三部分將介紹基於host-managed SMR磁盤上不固定大小的磁盤應用——caveat scriptor。而在本文的第四部分介紹和對比分析基於drive-managed SMR磁盤上的STL策略。最後總述SMR磁盤的現階段成果和研究狀態,分析SMR磁盤系統可能的研究方向。
SMR磁盤相對於傳統磁盤而言,有相同的讀性能。可是隨機寫和原地址數據更新卻沒有傳統磁盤的性能好了。鑑於SMR磁盤在寫行爲上的改變,做者認爲最好的利用SMR的方式並非想傳統磁盤那樣去使用它,而是充分利用該磁盤順序寫的特性。於是開發了SMRDB這種key-value的數據存儲方式[10]。代表SMR磁盤可以在衆多應用上高效的代替傳統磁盤。
SMRDB 是應用在SMR磁盤上的key-value數據庫引擎。SMRDB可以對傳統磁盤兼容,而且可以提供更好的性能。它設計部署在host-managed SMR磁盤上,而且並不依賴文件系統,而是直接運行在磁盤上。SMRDB消除了對block-level 驅動管理的的SMR磁盤的解決辦法和新的SMR文件系統的依賴。
SMRDB被設計成數據庫引擎,擁有本身的數據讀取方式和存儲管理。直接運行在host-managed SMR磁盤上而不須要任何的磁盤重映射方式。SMRDB能夠被用做單獨的數據庫引擎,或者已存在的文件系統在SMR磁盤上可以使用它來存儲固定大小的鍵值對。
2.1.1 數據的讀取與管理
SMRDB不須要磁盤固件提供任何的數據管理,只是將磁盤band分紅小的隨機讀取空間和固定大小的瓦band。隨機讀取區域被用於讀取高層的瓦片band信息。而不是具體的key元數據。KV對和相關聯的元數據都存儲在瓦片類型的band中。
2.1.2 數據讀取操做
SMRDB提供了本身的GET/PUT/DELETE/SCAN操做。Put操做是首先把數據以字典形式存放到mentable中。當數據量達到必定閾值以後,一塊兒flush到空白的瓦片band中去。Delete操做是對於要刪除的數據插入一個tombstone 詞條,這樣使得數據無效化,一段時間後後臺執行清理操做釋放空間。Get操做首先在內存裏面檢查關鍵字,若是沒有再在band上查找key值。Scan操做直接查找index值,找到對應的關鍵字,再定位對於的值。
2.1.3 後臺操做
SMRDB後臺的操做主要包括如下幾個方面的內容。Band的組織形式,數據的compaction方式,level0/level1層的band選擇,還有冷熱數據的分離方式。SMRDB的數據組織結構是兩層的,每層都容許有重複的key值。第一層存放的是從內存中memtable dump下來的數據。第二層則是存放的基本有序的數據。當第一層的數據量達到必定的閾值以後,會存放到第二層,在此期間執行compaction操做。是的第二層存放的數據是基本有序且不重複。Compaction操做是將有重疊部分的band進行分解,獲得多個band,再根據本身定義的順序度量標準存放。第一層數據用於compaction操做,進行重複數據的刪除,第二層數據選擇的準則是儘可能減小數據移動操做。最後一個冷熱數據的分離,SMRDB採用延時cleaning的方法,上層保留熱數據,下層保留冷數據。
HiSMRfs是在SMRfs的基礎之上,爲了進一步的提升SMRfs的性能而提出的一些改進的方法[12]。與SMRfs的主要區別是,HiSMRfs實現了基於內存的元數據樹結構和hash表,目的是爲了加速在目錄上的元數據的查找。而SMRfs則是使用傳統文件系統中的鏈式文件來存儲元數據。除此以外,SMRFS須要一個臨時的文件系統做爲讀寫的緩衝區,當文件被打開,整個文件都須要背拷貝到臨時文件系統,而HISMRfs則是採用文件命令隊列和調度器實現的,這樣可以大大的提升系統性能表現。除此以外,由於元數據比較小,並且讀寫比較頻繁,這樣HiSMRfs的針對SMRFS的設計顯然會有比較好的性能優化。
HiSMRfs是一種運行在SMR磁盤上的文件系統,可以在沒有重映射層的狀況下管理SMR磁盤和支持隨機寫操做。爲了達到比較好的性能,HiSMRfs分離了元數據和文件數據,而且分開管理它們。
HiSMRfs提供給應用程序標準的可移植操做系統接口。使用元數據管理模塊和文件數據管理塊經過設備的讀寫接口直接分別在磁盤的unshingled部分和shingled部分管理元數據和文件數據。而且使用File Caching and Placement 模塊依據文件大小和讀取頻次來辨別和分離熱數據和冷數據而且將數據存放在不一樣類型的磁盤上。使用樹結構的元數據管理模塊,而且使用哈希表來加快文件的查詢。在文件數據管理模塊中實現了四個主要的模塊,分別是文件數據分配模塊,垃圾回收模塊,需求隊列調度模塊以及band layout模塊。HiSMRfs中的RAID 模塊則是實如今文件系統層面的,而且提供了良好的容錯性能。
2.2.1 HISMRfs的組織結構
從圖中容易看出HiSMRfs由6個部分組成,分別是應用接口,元數據管理模塊,文件數據管理模塊,文件緩存,規約模塊,RAID模塊以及設備接口。元數據管理模塊採用樹型結構,每一個節點存儲元數據信息,各節點之間採用父指針,孩子指針以及鄰居指針相鏈接,最重要的是,管理模塊才用了hash表的結構,加快了在文件目錄中目標數據的查找速度。另外對於元數據的操做都會被時間戳記錄在日誌文件中,而且存儲在非瓦片磁盤上。文件數據的管理模塊又分紅四個部分,分別是文件數據分配模塊,垃圾回收模塊,需求隊列調度模塊以及band/zone佈局模塊。文件數據分配模塊決定數據寫的位置。需求隊列調度模塊高效的調度文件的讀寫需求以獲取更高的文件系統利用率和性能表現。垃圾回收模塊則負責回收被釋放的空間,在HiSMRfs中,提供了兩種垃圾回收方式,一種是基於文件的,一種是基於band的。基於文件的是在空餘的地方順序寫,而釋放原文件空間。基於band的則是將有用數據從新寫在新的band中,釋放原來的band。
2.2.2 RAID模塊。
相對於傳統的RAID系統是在block層面實現的,HiSMRfs則是在文件層實現RAID的功能的。於是HISMRfs可以工做在一系列SMR存儲設備上。一次同時,它還提供了很好的容錯性。經過文件系統信息的反饋,HISMRfs可以進一步的在錯誤發生和設備出錯方面有更好的性能表現。RAID總體結構以下圖所示。
Strict append 是一種相似於日誌文件系統的文件管理方式,其總體的結構以下圖所示。
在strict append中,SMR磁盤會被分紅多個band,每一個band的大小都是固定的。此外,每一個band都有一個寫指針用於新數據的尾部添加。若是band中沒有任何的有用的數據,寫指針就會重置到band的開頭,用於接受新的數據寫入。
Strict append SMRfs是基於用戶空間的文件系統,整個文件系統的工做流程如上圖所示[25]。分爲地址隱藏層,地址解釋層以及磁盤層。在地址隱藏層包括系統調用模塊,buffercache,以及cleaner這三個部分。系統調用模塊接受上層用戶提交的命令,對相應的作出指導,能夠直接更新磁盤層的文件元數據,也能夠將命令傳遞給buffercache。全部的讀寫操做的文件對象都是放在大小爲2GB的buffercache中,而後再將讀寫命令傳遞給地址解釋層的 band meminfo 模塊。Band meminfo模塊保留有磁盤的信息,它決定數據寫的磁盤位置。根據數據的不一樣,存放到磁盤層的不一樣位置,unshingled的部分存放的是文件的元數據,shingled部分則是存放的是實際的文件數據 。任何一個文件會依據band id號,band內的偏移量,以及文件的block號這三個量來惟一的肯定文件所處的位置。當數據量到達必定的閾值以後,則須要使用cleaning機制來對磁盤進行清理了。
當文件系統達到以前定義的容量閾值以後,會引起cleaning機制。垃圾回收線程會釋放那些可能含有部分有效數據的band。Cleaning經過將須要清除的band中的有用數據移到新的band中,而且將該band的寫指針從新指向band的開頭部分,以此來達到清除band和釋放band空間的效果。同時,垃圾回收線程還會根據新文件的地址更改inode的結構。Cleaning的效果會被不少的因素影響,不一樣的cleaning策略也有不一樣的cleaning代價。
因爲SMR磁盤記錄會對下游的數據產生影響,這樣雖然增長了單位空間內的磁盤容量,可是也形成了隨機寫的不方便。Caveat scriptor則是在利用了傳統磁盤地址空間上提出了幾個磁盤參數[23][24],可以有效的避免上游數據的寫操做對下有數據的影響,可以有效的實現SMR磁盤的隨機寫功能。
每個LBA都有兩個明顯的參數:No overlap range 和isolation distance。No overlap range是連續的不重複寫的LBA的最小距離;isolation distance是可能存在重疊的LBA中的最大距離,以下圖所示
在給定的caveat scriptor模式中,全部的都有相同的DNOR和DID值,也就是caveat scriptor選擇DNOR足夠小,DID足夠大以知足全部的磁盤。以下圖所示
在上圖中,DNOR的大小是7,DID的大小是34.咱們根據上述兩個參數在磁盤上能夠獲得磁盤的隨機寫區域和順序寫區域。band的大小小於DNOR可以獲得一個隨機的寫band,由於LBA都被DID LBAs充分的隔開了,任何在隨機寫band上的數據不會由於其餘塊數據的寫而對原來寫入的數據產生影響。而對於順序寫區域,在磁盤上,上下游都充分的被DID隔開的band可以做爲順序寫的band,在這樣的band中,沒有LBA 會被不一樣的band中的LBA重疊破壞。
參數DID和DNOR知足這樣的大小關係 0<=DNOR<=DID。當從區域i到j進行寫操做的時候,從max(i+1+DNOR,j+1)到(j + DID)的區域可能被損害。而實際上損害的區域依賴於塊的數量,track上寫的位置以及track在磁盤上的佈局。那麼在SMR磁盤上是怎樣利用caveat-scriptor實現隨機寫和順序寫的呢?使用不大於DNOR的塊,在這些塊的上下游都使用長度爲DID的塊隔開,這樣在長度不大於DNOR的區域內能夠執行隨機寫而不會對下游的數據產生影響。順序寫則是對於任意大小的塊,在順序寫區域的上游和下游都放置DID大小的控制塊,這樣就不只能夠實現順序寫,也能夠不影響其餘區域的隨機寫。
SMR磁盤的穩定隨機寫性能和更新在磁盤的應用上顯得十分重要,爲了更好地讓SMR取代現存的磁盤並獲得普遍應用,不得不從它們出發進行考慮和設計。
對SMR來講,在磁盤的盤片上的磁道以瓦片的排布方式被組織[14],使得它的存儲密度增長,可是寫磁頭定位到一個磁道上比其餘標準磁盤顯得很大,也就是說寫磁頭橫跨的磁道數目由標準磁盤的一個變成多個,當在一個磁道上進行寫操做時,可能會影響相鄰磁道上的數據。以下圖
對bands進行設計,bands由在同一盤片上的連續tracks組成[15],即一個band包含幾個連續的tracks。磁盤上的全部數據都存儲在bands上,相鄰的bands之間有k(k的大小由寫磁頭的寬度決定)個空tracks,做爲兩個bands的安全間隙。Bands的組成不採用同一柱面的tracks,是由於同一柱面的tracks之間的切換,通過盤片間的切換後,磁頭還須要尋找到相應磁道,這樣會增長磁盤系統的開銷,使得其性能下降。
爲了解決SMR隨機寫的問題,David Hall等人開發了一個數據處理算法[16] 即SMR短塊算法(short-block SMR algorithm),該算法涉及到了兩個佈局:I-region和E-region;主要的存儲數據安排I-region上, 在I-region中包含額外tracks,這些額外的tracks一部分用做refresh buffer,用來緩衝舊的數據;另外一部分做爲相鄰兩個I-region的guard tracks,如圖2所示。 E-region用來接收從主機來的寫請求操做,經過對這兩個region分別進行合理的組織安排,可以使得SMR可以維持穩定的隨機寫性能。首先將請求的寫操做暫存在E-region中,給E-region一個合適的清理速率,目的是爲E-region接收新的寫操做提供充足的空間,使之持續穩定的接收寫操做,在對E-region執行清理機制操做時,會引起後臺的刷新操做,在I-region相關聯的位置開始進行讀操做,old data被讀到I-region的buffer tracks當中;讀操做完成後,把從E-region讀出來的寫操做寫入到I-region的相應位置中,並將old data重寫到原來的位置,在I-region的tracks上寫的方式是順序的,當數據更新完成後,E-region中對應的寫操做將被清除。
當寫塊大小小於4時使用這種算法的穩定隨機寫性能比標準HDD好,超過了這個值性能就開始降低。
爲了下降隨機寫形成的寫操做次數,延長寫塊的長度,又提出了一個貪婪算髮:給任意初始狀態和一個邏輯track去更新k,選擇一個使得寫數目最小的做爲終態,若是這樣的終態不止一個,選擇最集中的一個。通常說來,這個值接近N/2。
下圖爲給定的原始狀態圖,假定有三個狀態,,tracks個數爲4,寫磁頭的寬度爲2,各個狀態到達每一個終態的寫操做次數如圖所示。狀態1指向狀態2,在外側線上的1/2表明從第一個狀態的第一個邏輯track到達終態2須要兩次寫操做,等等。
假設3個狀態
使用貪婪算法,能夠將上圖簡化成下圖,以此達到減小平均寫次數提升系統性能的目的。
該算法可以有效地下降隨機寫的平均次數。
實現數據更新的佈局設計,數據更新有兩種類型update out-of-place,update in-place。
在SMR中不多采用update out-of-place這種模式,update out-of-place採用了兩個region(I-region和E-region),在此以前已經提到,這裏不作詳細說明。I-region和E-region構成了一個迂迴系統[17],在執行更新操做時,將數據更新到新的地址塊,原始的地址塊變爲無效;雖然能夠避免寫放大,可是E-region和I-region不得不執行垃圾收集(GC,Garbage Collection)操做來回收無效塊和形成的碎片;因爲將更新的數據更新到新的位置,邏輯塊地址到物理塊地址的映射表(LBA-to-PBA mapping table)也所以變得更加複雜。
SMR的更新採用Update in-pace這種模式[18][19],須要額外的預留空間用來緩衝數據,下圖是SMR實現Update in-pace的佈局圖。
Physical Space Layout for In-place Update SMR
圖的左側是SMR的RAZ結構,相鄰的RAZ track之間有k個空tracks(k的值由寫磁頭的大小決定),即把RAZ作成相似標準HDD的樣式,不存在寫放大問題。用於緩衝元數據。RAZ實現的兩種策略分別爲:①將非易失RAM(NVROM)附加到SMR做爲一個專用RAZ②在SMR中,用單獨的一個個bands組成專用region做爲RAZ。在執行數據更新操做時,從mapping表中找到相關聯的物理地址,把老數據讀到緩衝區,再將老數據與新數據合併,最後在相應物理地址上寫新數據,刷新老的數據。與update in-place 模式的不一樣之處是不須要GC(Garbage Collection)操做,mapping表相對較爲簡單。
經過前面的介紹,咱們可知update in-place模式在提升SMR的性能方面優越於update out-of-place模式,可是update in-place實現須要預留額外的空間,所以爲了達到空間與性能平衡,對mapping進行改進設計。
邏輯塊地址到物理塊地址的映射表(LBA-to-PBA mapping table)的改進。邏輯塊地址(LBA,Logical Block Address)到物理塊地址(PBA,Physical Block Address)映射的設計也是SMR的重要部分。
經過前面的介紹,咱們可知update in-place模式在提升SMR的性能方面優越於update out-of-place模式,所以對mapping的改進設計也是基於update in-place模式。
假設普通磁盤和SMRs的tracks 組織方式同樣,每一個band包含4個tracks,寫磁頭的寬度爲2,band之間有一個空track做爲安全隔離帶,採用的映射機制依舊爲傳統的標準磁盤的映射機制,則有[1-100]對應第一個track,[101-200]對應第二個track, [201-300]對應第三個track等等。SMR磁盤的利用率爲4/(4+1)=0.8,實際磁盤空間用SG表示,在SMR上執行一次更新可能會招致額外的讀和寫。如圖所示(one band),更新a 會招致2次讀,3次寫,即寫放大問題,寫放大計算用WAR (Write Amplification Ratio)表示,SG和WAR的計算以下(N表明磁盤的band包含的tracks數目,W爲寫磁頭的寬度,i的取值爲0-(N-1)[20]。
若是改變tracks的使用順序使得減小寫放大問題變得可行,因而,就能夠對邏輯塊地址到物理塊地址的映射表(LBA-to-PBA mapping table)進行改進,來實現tracks使用順序的改變。
因而就有3種不一樣的方案。
第一種方案,當SMR使用容量低於25%時,數據依次存儲在磁盤的每一個band的第一個或第四個track上;隨着磁盤的使用容量增長,低於50%是將增長的數據依次存儲在磁盤的每一個band的第四個或第一個track;當磁盤使用容量增長低於75%時,增長的數據依次存儲到磁盤的每一個band的第二個track;隨着磁盤使用容量的繼續增長,增長的數據存儲到第三個track。表如今映射表中爲:將磁盤上每一個band上的tracks進行分組(即first track,second track,third track,fourth track),首先連續映射所有的fourth track或者first track,其次連續映射first track或fourth track,接着連續映射second track,最後映射third track。該方案記做R(4123)或R(1423)
第二種方案,當SMR使用容量低於50%時,數據依次存儲在磁盤的每一個band的第一個和第四個track上(即存儲完第一個band的第一和第四tracks,再存儲第二個band的第一和第四tracks,依次類推);當磁盤使用容量增長低於75%時,增長的數據依次存儲到磁盤的每一個band的第二個track;隨着磁盤使用容量的繼續增長,增長的數據存儲到第三個track。表如今映射表中爲:將磁盤上每一個band上的tracks進行分組(即first track and fourth track,second track,third track),首先將每一個band的第一和第四track依次排列進行連續映射,其次連續映射second track,最後映射third track。該方案記做14R(23)
第三種方案,當SMR使用容量低於75%時,數據依次存儲在磁盤的每一個band的第一個、第二和第四個track上(即存儲完第一個band的第1、第二和第四tracks,再存儲第二個band的第1、第二和第四tracks,依次類推);隨着磁盤使用容量的繼續增長,增長的數據存儲到第三個track。表如今映射表中爲:將磁盤上每一個band上的tracks進行分組(即first track and fourth track,second track,third track),首先將每一個band的第1、第二和第四track依次排列進行連續映射,其次連續映射second track,最後映射third track。該方案記做124R(3)
這樣三種mapping方案,當磁盤使用容量低於50%方案一和方案二使得磁盤性能較好,總體來看第一種方案最好。
Band的清理機制,對於bands的清理機制的基本佈局有兩種[18][19]。第一種佈局:每一個band都附有一個循環日誌,經過從日誌的尾部到日誌的頭部移動實時數據來回收自由空間;第二種佈局:經過壓縮一個或幾個完整的bands,將數據存放到少數幾個空的band,並將壓縮的bands清空釋放出來。
循環日誌結構在band在中的組織安排以下圖所示。循環日誌包含日誌頭部和日誌尾部日誌頭部和日誌尾部之間有個安全隔離帶,由k個空tracks組成(k由寫磁頭的寬度決定)爲了防止在頭部進行寫操做破壞尾部數據。
Layout in a Band with Circular Log
爲了使band的清理機制的效率更高,系統開銷下降,使得系統的響應能力獲得提升提出了一種數據分類算法[20]。
該算法基於清理機制的第二種佈局提出來的,band的清理機制會產生數據的移動,爲了下降執行band清理操做致使的數據移動,主要將數據分紅三類[20][21],即free blocks, cold blocks, hot blocks。這樣分類的緣由是:cold blocks與hot blocks相比,選擇精簡壓縮hot blocks越少,數據移動的量越少(壓縮hot blocks的意義很小,這裏不考慮對hot blocks的壓縮); cold blacks與 free blocks相比,cold blacks選擇壓縮的權重小於free blocks時進行壓縮產生的數據移動量會減小。由此產生了cold-weight算法,算法推倒以下:
首先,%free + %cold + %hot = 1
當分別給hot blocks和cold blocks一個whot ,wcold則有:
%free + (wcold × %cold) + (whot × %hot)
將%hot替換掉,能夠獲得:
%free + (wcold × %cold) + (whot × (1 - %free - %cold))
最右面的式子展開
%free + (wcold × %cold) + whot - (whot × %free) - (whot ×%cold)
由以上分析將whot視做常量對待,忽略不計,合併相同的項。
%free × (1 - whot) + %cold× (wcold - whot)
除以(1 - whot)
%free + %cold × (wcold - whot)/(1 - whot )
將whot視做0,該公式變爲:%free + %cold ×wcold
因而Cold-weight算法爲當執行band compaction前,由公式計算出的每一個band的值,選出所規定數目的幾個值最大的bands,進行清理壓縮。
假設有三個數據段,如圖,每次只清理壓縮一個數據段,此時free blocks和cold blocks的權重相同(cold blocks沒設權重),由公式可知選擇的壓縮的數據段爲第一個數據段,不是指望的結果
若是將cold blocks的權重設爲0.5,以下圖所示。有公式計算可得,選擇清理壓縮的數據段是第三個數據段,是指望的結果。
所以該算法能夠減小數據移動,使得band壓縮效率更高,同時也提升了系統的響應能力。
整個SMR磁盤的研究方向主要是集中在兩個方面,一個是在實現與傳統系統的兼容的狀況下,如何儘量的提升SMR磁盤隨機寫的性能表現。咱們在文中提到的各類 STL層的策略,包括數據的組織形式,映射方法以及對數據的清理策略都是圍繞這一目的來設計和實現的。固然也包括各類host-managed上的各式各樣的SMR-friendly文件系統的設計和改進等,也都是爲了達到在固定大小的band狀況下的良好的隨機寫性能表現。而另外一個方面則是一種比較新穎的方式,選擇不固定大小的band,根據磁盤自身的佈局特色,定義參數DID和DNOR來克服SMR磁盤自身會對下游數據寫覆蓋的缺點,實現SMR磁盤的良好的隨機寫性能。
現有的ZAC,ZBC已經開始定義和設計實現SMR磁盤的標準。將來可能的研究方向仍是集中在具體的不一樣領域上使得SMR磁盤更好的知足在具體領域的使用。