fbpx
was successfully added to your cart.

解析SMR硬碟與用於線上服務經驗

前言:
現在有越來越多高容量需求,SMR硬碟可以有更大的密度資料容量
但是這技術原理跟優缺? 在此分析與分享實際上線經驗.

SMR 硬碟第一個道理. 假設不考慮寫軌的話,純讀軌面積比較小


因為讀軌面積比較小.面積最大利用化的讀軌,但是這樣寫軌就好像磚瓦一樣疊在一起了


在寫入時候,會把旁邊Track資料都寫到了.


為了降低其他軌寫入量,因此寫入以Band為單位, Band是一個比Track還要小的單位. 

因為上述寫入特性 因此硬碟控制系統 會循環
1.為了求速度會有一塊不影響旁邊數據的地方可寫入Cache…
2.把原位置旁邊資料先找一個地方安置,因為原資料已無變化,再從Cache搬回原資料並檢查相鄰資料是否正確.
3.資料搬移完畢,把Cache清出給下一次寫入用.

因為寫入要搬來搬去 所以整體SMR寫入效果很不好的

那如果一些線上服務使用SMR硬碟會有怎樣狀況?並且要怎樣優化 我們來看看Dropbox的作法
以下出自
https://blogs.dropbox.com/tech/2018/06/extending-magic-pocket-innovation-with-the-first-petabyte-scale-smr-drive-deployment/

Dropbox是第一家採用SMR技術的主要科技公司,目前我們正在為這些高密度服務器增加數百PB容量的新容量,與傳統的PMR(垂直磁記錄)硬碟相比,其成本大大降低。現成的SMR硬碟比傳統硬碟的寫入速度慢因此,挑戰在於在不犧牲性能的情況下從更密集的硬碟節約成本。畢竟,我們的新產品支持小團隊之間的積極合作,直至最大的企業客戶。這是需要編寫的大量數據,而且體驗速度很快。

與我們最初推出的Magic Pocket一樣,我們通過創新性軟體和服務器架構來解決問題,以確保此解決方案符合我們的年度數據持久性超過99.9999999999%的標準,以及超過99.99%的可用性。我們的目標是利用我們在大型分佈式系統軟體方面的專業知識,使我們能夠在競爭對手之前充分利用驅動技術的持續發展。我們相信未來的儲存創新,包括固態硬碟(SSD),將受益於我們正在為SMR開發的相同架構方法,因此我們的投資現在將以多倍的收益回報。

在這篇文章中,我們將介紹我們在Dropbox儲存平台Magic Pocket中採用SMR HDD技術。我們討論了為什麼我們選擇使用SMR,硬體折衷和考慮,以及我們在此過程中遇到的一些挑戰。

什麼是SMR,我們為什麼要使用它?

傳統的垂直磁記錄(PMR)HDD允許在整個磁盤上進行隨機寫入,磚瓦式磁記錄(SMR)硬碟通過犧牲隨機寫入強制順序寫入來提供更高的密度。一起擠壓SMR磁盤上的磁道會導致磁頭擦除下一個磁道。外徑小的傳統區域可以緩存隨機寫入以及使用SSD。

SMR HDD提供更高的比特密度和更好的成本結構($ / GB),從而降低了密集硬體的總體擁有成本。我們的目標是構建最高密度的儲存服務器,SMR目前提供最高容量,比傳統儲存替代方案PMR更先進。

傳統的軌道佈局
SMR軌道佈局

SMR的類型

有三種類型的SMR硬碟要考慮:硬碟/設備管理,主機識別和主機管理SMR磁盤。雖然我們最初評估了主機識別和主機託管SMR磁盤,但我們最終還是選擇了主機託管磁盤。

硬碟或設備管理的SMR磁盤允許主機像傳統硬碟一樣對待它們。非順序寫入緩沖在每個磁盤上的傳統小區域中,然後再轉錄到順序區域。這涉及從連續區域讀取數據並將與新數據合併的原始數據寫回到連續區域。

主機感知硬碟允許理解SMR磁盤的主機控制連續區域的寫入。主機可以打開和關閉區域,監視寫入指針,部分寫入順序區域,並避免重寫區域導致的傳統區域緩存和性能瓶頸。主機感知硬碟提供比Drive Managed SMR更多的控制,這是我們的首要任務。

主機託管的SMR硬碟要求主機自行管理順序區域。該硬碟不會將新數據複製到順序區域,也不會​​在常規區域緩存數據。主機必須明確打開,填充和關閉順序區域。主機託管的SMR提供對數據儲存在硬碟上的方式的最大控制,並與我們以前的構建方式保持一致。

Dropbox儲存架構

Magic Pocket(MP)將用戶數據儲存在塊中,最大大小為〜4MB。塊以1GB範圍組織,MP平台相應地運行。由於這些範圍是以附加方式編寫的,並且是不可變的,SMR的順序寫入對於MP的工作負載來說是理想的。查看我們的部落格文章,深入了解Dropbox的Magic Pocket體系結構

數據中心

硬體折衷

在實施SMR磁盤時,我們必須考慮一些硬體折衷。我們致力於優化性能和數據傳輸速度,但也需要考慮硬體可靠性和總體擁有成本。這要求我們看看硬體堆棧的每一個元素。

機箱密度
我們最新的設計可在一個機箱中安裝大約100個LFF(大型機箱)磁盤,這使其成為生產中最密集的儲存系統。每個機箱100 LFF磁盤在19英寸標準數據中心機架中的機架空間中具有4U物理限制的設計限制,並且要求保持在42“深度限制。這使我們不需要設計自定義數據中心機架。我們將每個機架限制在外殼8完全配置的機箱內,以避免偏離標準數據中心地板的規格。

內存和CPU
我們測試的一件事就是決定將內存增加到每台主機96GB。我們這樣做是因為我們在磁盤上保留了塊的內存索引及其偏移量/長度。通過14TB SMR硬碟,我們顯著提高了單個機箱的容量; 每台機器的儲存量將比我們以前的架構中的機箱多2.29倍。這意味著我們的區塊索引需要按比例增加內存,每台機器需要96GB。

我們還必須稍微升級我們的CPU,將每個機箱的內核從16個轉換為20個內核,40個線程。額外的處理能力對於保持總的機箱I / O性能高於40Gbps和45Gbps的寫入和讀取是必要的。

SAS控制器
為了進一步提高可靠性並降低複雜性,我們從RAID控制器移到了主機總線適配器(HBA)。使用RAID的最初益處是利用緩存來減少寫入延遲。這證明是一項耗資巨大的工作,需要很多開銷:我們正在創建單獨的RAID 0並管理RAID控制器中的相關固件和錯誤,以暴露單個塊設備。我們還致力於啟用Direct I / O以減少雙緩存的CPU使用量。

消除創建這麼多RAID 0設備的額外優勢是將此儲存系統的整體配置時間從最多2小時減少到30分鐘。這使我們能夠更專注於實現該技術,並縮短設置時間。

添加HBA簡化了我們的體系結構,但犧牲了我們的初始緩存設備。我們理解任何新興技術都是對未知事物的探索。為了使我們減少暴露量,我們將重點放在了將復雜性作為成功標準。

高速緩存
隨著RAID控制器的移除,我們發現我們需要彌補寫入高速緩存的損失。我們的解決方案是添加我們自己的緩存層來保持性能要求。SSD硬碟可以彌補刪除RAID控制器的決定。

在前幾代儲存系統中,網絡數據已直接寫入硬碟。寫入大型SMR硬碟非常耗時,因此我們需要確保在硬碟繁忙時網絡不會停滯。為了使這個過程成為異步和非阻塞,我們添加了一個SSD來緩存數據,然後在後台懶散地刷新到SMR磁盤。

雖然現在這種設計對我們很有用,但我們看到,隨著密度的增加,我們正在飽和SATA總線,並且需要使用另一種傳輸協議。我們發現,我們正在推動SATA總線的極限,並成為我們可以從SSD看到的瓶頸。未來幾代人可能會有NVMe設計進行緩存。

Network
Magic Pocket開始使用低密度機箱(大約240TB)。隨著網絡速度的提高,我們隨著時間的推移密度上升,並且我們不必妥協密度的恢復時間,這是降低TCO的槓桿。

使用14TB SMR磁盤將每個主機的新機箱設置為1.4PB。這種級別的儲存密度需要網絡帶寬的另一增加來協助系統恢復。只要恢復時間符合我們的SLA,我們就會對可接受的故障域增加感到滿意。我們決定我們需要為每個機箱設計一個帶50Gbps NIC卡的基於SMR的機箱,以及一個具有100Gbps上行鏈路的非阻塞隔離結構網絡。我們獲得的好處是能夠在部署時快速將數據添加到機箱,並且能夠在修復時快速排空機箱,確保Magic Pocket滿足其SLA。

軟體重新設計

根據Magic Pocket設計,對象儲存設備(OSD)是一個守護進程,其行為非常類似於為大型值優化的關鍵值儲存。我們為每台機器每個磁盤運行一個守護進程,並且只有該守護進程才能訪問該磁盤。OSD將磁盤視為塊設備,並直接管理硬碟上的數據佈局。通過在SMR上不使用文件系統,我們能夠優化磁頭移動並根據軟體堆棧中的類型完成磁盤IO操作的優先級。為了與SMR磁盤通信,我們使用Libzbc作為磁盤IO的基礎。

SMR將元數據索引儲存在順序區域中。我們有兩個因素幸運。首先,容量大小在4個邏輯空間區域(256MB x 4 = 1GB)之間均勻分配。如果這不能被4整除,那麼任何多餘的空間將會丟失,或者需要進行更多的侵入式更改才能收回該空間。其次,元數據與塊數據的比例為0.03%,與常規區域和連續區域的比例非常吻合。

我們發現大型檔案寫入SMR更好(平均4-5 MB)。為了在這裡優化,寫入在特定階段被緩存。最初,我們嘗試使用多個小寫操作盡快從SSD刷新到SMR,但這樣做效率不高,因此我們轉而採用緩沖模型並減少了較大尺寸的寫入。


在OSD重新設計中,RPC路徑實時放置到SSD以進行緩存,而獲取和後台寫入直接發送到磁盤操作中的隊列。這些數據儲存在SMR上。

我們的首要任務是管理實時流量。實時流量由傳入的新塊和寫入組成,以支持該用戶數據。這裡最大的挑戰之一就是延遲!

所有對磁盤的寫操作都必須是連續的,並與4k邊界對齊; 但是,當實時數據進入時,它並不總是適合整齊的4k塊。這是使用臨時區域來拯救我們的地方。將這些塊從SSD刷新到磁盤的後台進程需要對齊,並確保我們執行大量寫入。

管理需要大量讀取和寫入的後台修復對時間要求不高,因此它們可能發生得更慢。

 

使用SMR的挑戰

使工作負載與SMR兼容的主要挑戰是隨機讀取/寫入活動並使其順序進行。為了實現這一點,我們重寫了OSD,以便經常更新的元數據保存在支持讀/寫寫入的SMR磁盤的常規區域中,而不可變塊數據保留在連續區域中。

我們需要克服處理順序寫入SMR磁盤的問題,我們通過幾個關鍵的解決方法來完成。例如,我們使用SSD作為現場寫入的暫存區域,同時在後台將其刷新到磁盤。由於SSD的寫入耐久性有限,因此我們利用內存作為後台操作的暫存區域。我們的軟體實施優先考慮實時的面向用戶的讀取/寫入,而不是後台作業讀取/寫入。我們通過將寫入操作批量寫入較大的塊來提高性能,避免了過度頻繁刷新寫入操作。從Go轉移到Rust也使我們能夠處理更多的磁盤和更大的磁盤,並且不會增加CPU和內存成本,因為它能夠直接控制內存分配和垃圾回收。查看我們的演示文稿,了解我們如何使用Rust優化Dropbox的儲存 了解更多。

通過與我們的硬體合作夥伴持續合作,我們利用尖端技術確保我們整個組件鍊是兼容的。在我們的配置中,我們使用擴展器來分配HBA控制器,從而允許HBA將連接均勻分佈到所有硬碟。但是,擴展器最初與SMR不兼容。在這種情況下以及其他類似情況下,我們與供應商合作,共同開發了在硬體鏈中創建功能的韌體。

在機箱中平均擁有100個硬碟的機械挑戰之一是,我們限制了發現瓶頸時可以產生多少硬體變化。空間現在是我們的限制因素,因此,尋找適合系統設計的組件將會給未來帶來新的挑戰。

下一步是什麼?

這種新的儲存設計使我們能夠與未來的磁盤技術迭代一起工作。在不久的將來,我們計劃將重點放在密度設計和更有效的方式來處理大流量。由於硬碟的總數量推動了這種形式的物理限制,我們的設計必須考慮到在系統上擁有大量數據的同時提高系統計算效率的潛在故障。

結論

我們致力於在Magic Pocket和Dropbox基礎架構上進行迭代和改進,並且這種部署只是一個步驟。這是一個激動人心的挑戰,以可靠的方式引入新的儲存技術。這個旅程不僅涉及系統的機械結構,而且涉及所需的主要軟體更新。沒有工程團隊之間的合作,這是不可能的。我們的基礎設施將受益雙重,這要歸功於更高的密度和更好的成本結構,釋放Dropbox用戶的創造力。

OSSLab翻譯末 補充:

目前市面上老款SMR硬碟都為Drive-managed ,也就是硬碟自行分配.無法配合Host(電腦主機)邏輯層檔案系統處理
這方面要SMR硬碟走向於Host-managed 這需要ATA  Command 加入Zoned Block Commands (ZBC)和Zoned-device ATA Commands (ZAC)
也要文件系統的配合…
目前來講 OSSLab不推薦使用Drive-managed  SMR硬碟
新款SMR已經開始在使用Host-managed 也有額外支援指令集.隨著時間演進.應該確實有不錯性價比.

與SMR配合的文件系統 https://github.com/Seagate/SMR_FS-EXT4

 

 

Thx Chang

Author Thx Chang

More posts by Thx Chang

Leave a Reply