截至週末,我看到今年OCP全球峯會的pdf資料又更新了一部分,這次我網盤分享第二部分共47個文檔:

2019 OCP Global Summit – Part2 演講資料網盤打包下載

鏈接:pan.baidu.com/s/1c0M6bc

提取碼:fkb2

註:大家也可以點擊本文底部「閱讀原文」轉至下載頁面。

結合上次分享的《2019 OCP Global Summit會議資料下載 - Part 1》,解壓縮後兩部分目錄可以直接合併。

下面接著聊一個比較「久」的話題——20年前我剛工作時就和硬碟打交道。四年前的OCP 2015期間我還專門整理出過2份中文ppt資料:

OCP開源硬體1:IP硬碟&存儲密度

OCP開源硬體2:SMR硬碟技術路線之爭

同時給大家推薦我寫的另外2篇:

這些硬碟參數你都懂嗎?(上)-從案例引發的討論

這些硬碟參數你都懂嗎?(下)-監控選型與系統設計

今天要寫的是微軟在OCP上的一個技術分享《HDD IOPS – The Never Ending Story》,具體點說是關於即將正式發布的雙磁頭臂HDD機械硬碟(Multi Actuator Drivers)。

雙磁頭臂提速原理:單盤2個LUN獨立工作

如上圖,希捷和WD都準備了這種產品,其硬體結構上也比較類似。現有的硬碟是每個碟片正反面2個讀寫磁頭,如果8碟HDD一共就是16個磁頭。以此為例換成雙磁頭臂設計,上面4個碟片的磁頭就會由磁頭臂1來帶動,而磁頭臂2則負責下面4個碟片的8個磁頭。見下圖:

如果上下兩部分獨立並行工作的話,不難理解雙磁頭臂HDD的理論性能接近於翻倍。但是沒有免費的午餐,增加一個磁頭臂需要多一個電機,帶來功耗和成本的上升;同時對(機箱)機械結構設計也有挑戰,這一點我會放在後面說。

自從有了SSD之後,高轉速(10k、15k)硬碟的日子越來越不好過,因為它們以前的高IOPS低延時優勢在快閃記憶體面前幾乎變得一文不值。未來的HDD市場主流都是7200轉乃至5x00轉的天下,但隨著單盤容量增大平均每TB的IOPS性能越來越低,所以只能用於NL近線存儲,比如:照片/視頻、數據分析(如Hadoop)、機器學習等,以及冷數據歸檔。

上圖中有一條「Dual Actuator」的曲線,不知為什麼在14TB的標點上IOPS提升看來沒有一倍?我們還是以下文中的具體測試數據為準吧。

我覺得這張原理圖相當清晰:每個磁頭臂負責的一半碟片擁有各自的通道和伺服系統,雖然它們都經過硬碟的Cache緩存和單一SAS lane與主機通信,但是會分別映射出2個LUN。如果我沒理解錯的話,系統會看到「2塊獨立的硬碟」,這樣做看似有點粗暴,卻是提升性能最簡單有效的辦法。

思考題:假設在普通的伺服器/工作站上使用雙磁頭臂硬碟,應該建議怎樣配置呢?當然很可能你需要連接在SAS RAID或HBA卡上。

早期性能測試結果:隨機寫略低、順序寫QD1掉速?

點開圖片後雙擊可放大,以下同。橫坐標依次為4KB(1-64隊列深度)、8KB…4MB、8MB,我記得SATA規範隊列深度是32,這裡用SAS介面就比較有必要了。

上面引用自希捷MACH.2的早期測試結果,可以看出雙磁頭臂硬碟2個LUN的隨機讀性能可以同時達到最大,這樣總IOPS就從最大200翻倍達到最大400左右。

雙磁頭臂HDD的隨機寫似乎要慢一些,每個LUN最高IOPS都在150多。相比之下,傳統單磁頭臂硬碟的寫IOPS也會比讀慢一點。

順序讀性能也相當理想,LUN0和LUN1各自都有超過250MB/s,加在一起就是500MB/s了,理論上6Gb/s SATA也夠,但用SAS(12Gb/s)的理由我剛說過。

雙磁頭臂HDD的順序寫最大帶寬與順序讀相仿,但低隊列深度(主要是QD=1)的表現看來比較差。不知正式上市後是否還會如此?

系統設計要點、怎樣用效果好?

我們來看看系統設計要點。

- 首先,由於雙磁頭臂硬碟功耗變大,對機箱的散熱和供電需求提高了;

- 其次,每塊盤可以提供更高的順序流(帶寬),存儲平臺的網路介面速度匹配嗎?SAS Expander的上行帶寬夠不夠?

- 微軟Project Olympus項目中的J2010磁碟櫃,已經驗證過支持這些新的高性能硬碟。

上圖中的AV是Anti-Vibration的縮寫吧?

Olympus J2010是一款4U 88盤(3.5英寸)JBOD機箱,它的每塊硬碟供電最多支持13W。微軟表示將會面對雙磁頭臂硬碟測試確認RV/AV性能。這裡的RV應該是指旋轉振動,除了本文開頭推薦的鏈接中有介紹之外,我還在《硬碟在真實環境中的抗振能力對比》專門討論過這個主題。

擴展閱讀:《Facebook如何將硬碟性能損失由90%降低到2%

最後,演講者指出多磁頭臂硬碟單獨不能作為解決方案,也就是說要配合存儲系統的設計,這樣基本上侷限在企業級/數據中心應用了。微軟還表示仍然需要降低長尾延時,並需要與硬碟廠商在IO優先順序方面配合工作。

回到我上文中提出的思考題,我腦子裡最簡單的使用方式:

- 比如我有一塊多磁頭臂硬碟,2個LUN直接做個RAID 0如何?

- 比如我有多塊多磁頭臂硬碟,將每個HDD的LUN 0做一組RAID,餘下的LUN 1做另一組RAID,或者再跨越2個LUN整個RAID10/50/60啥的?需要考慮的問題是,如果只有某塊盤的1個LUN故障,替換硬碟Rebuild重建時,2個LUN只能一起動吧。

- 多副本、EC糾刪碼的情況以此類推...

最後希望我寫的對大家有幫助。還有些待將來確定的東西,總要不斷跟著業界發展學習,這就是技術有意思的地方吧:)

:本文只代表作者個人觀點,與任何組織機構無關,如有錯誤和不足之處歡迎在留言中批評指正。進一步交流技術,可以加我的QQ/微信:490834312。如果您想在這個公眾號上分享自己的技術乾貨,也歡迎聯繫我:)

尊重知識,轉載時請保留全文,並包括本行及如下二維碼。感謝您的閱讀和支持!《企業存儲技術》微信公眾號:HL_Storage

歷史文章匯總chuansong.me/account/hu


推薦閱讀:
相關文章