分布式存儲的技術趨勢(二):雙重RAID機制
為了解決三副本分布式存儲面臨的性能問題、穩定性及可靠性等缺陷,道熵的鐵力士分布式存儲采用雙重RAID保護機制,在前文中我們探討了分布式存儲的基本原理,分析了三副本分布式存儲的潛在隱患:
- 性能問題:三副本分布式存儲受到IO分布不均勻和木桶效應的影響,導致大延遲和響應遲鈍的現象;
- 穩定性問題:頻繁的數據重建會導致用戶業務受到影響、甚至業務中斷;
- 數據丟失風險:尤其是,當硬件老化,或出現大規模掉電或節點意外宕機時,可能會導致多個機械硬盤同時出現損壞,危及三副本分布式存儲的數據安全。
為了解決三副本分布式存儲面臨的性能問題、穩定性及可靠性等缺陷,道熵的鐵力士分布式存儲采用雙重RAID保護機制,除了繼承網絡RAID(節點間副本、跨節點糾刪碼)和一致性哈希隨機分布數據的特點,鐵力士將磁盤陣列特有的節點內RAID技術和存儲虛擬化(池化)管理技術, 即Storage Virtualization Manager (SVM),與分布式技術相結合,如圖2所示。

圖 2 OneStack分布式存儲雙重Raid機制
網絡Raid技術
在鐵力士分布式存儲中,每個數據塊按照一致性哈希算法,隨機選擇兩個不同存儲節點來保存數據的兩個副本,保證當任何一個節點宕機時,仍有一個數據副本保證讀寫操作,確保業務高可用和數據安全。
節點內Raid技術
在鐵力士分布式存儲的每個節點內,通過SVM存儲虛擬化技術實現節點內的RAID數據保護,RAID級別選擇可以是鏡像,也可以是存儲效率更高的RAID5或6。節點內RAID保護可抵御單個或多個硬盤損壞,故障修復限制在節點內部,無需觸發網絡數據重建,有效地避免了網絡重建風暴。
節點內RAID結合網絡Raid(跨節點的副本/EC碼)技術,鐵力士實現了雙重RAID數據保護。在三副本架構中,一旦同時出現三塊磁盤故障或受損,數據就可能丟失;而在雙重RAID架構中,即使每個節點同時出現一塊磁盤故障,數據仍然無憂,業務仍然持續。考慮到分布式存儲可能包含數十個甚至上百個存儲節點,雙重RAID的數據可靠性明顯超過三副本架構。
存儲虛擬化技術
鐵力士在每個存儲節點運行在存儲虛擬化管理軟件(SVM)上,把該節點的存儲資源整合為一個統一管理的存儲池,為分布式系統提供vOSD資源。SVM采用寬條帶機制(見圖3),將每個vOSD的工作負載均勻分布在節點的每個磁盤上,大幅提高了單個vOSD的IOPS能力,可有效抵御三副本分布式存儲中的IO分布不均勻現象。

圖 3 節點內Raid條帶機制
SVM存儲池由節點內多個RAID小組構成,通過虛擬卷為上層分布式系統提供vOSD存儲服務。每個vOSD對應于三副本中由物理HDD承載的OSD。由分布式一致性哈希算法分配來的數據塊,將寫入SVM存儲池中、由虛擬卷支撐的vOSD,而非直接寫入物理硬盤。SVM 利用寬條帶技術,將vOSD的工作負載均勻分布在各個物理磁盤上:每個大小為4MB的vOSD 對象數據塊,被分割為32KB的數據塊,依次被安排在RAID組的邏輯地址空間中;SVM 對各個RAID小組的邏輯地址空間采取順序寫優化策略:首次寫按各個小組的邏輯地址分配地址空間,按順序寫入數據;后續重寫,則優先填滿空閑地址空間,盡可能實現硬盤順序尋址,最大限度降低機械硬盤較慢的尋址操作次數,利用機械硬盤順序寫較快的特點來提升IO性能。
二級DRAM+Flash 緩存加速
磁盤陣列中常見的性能加速手段是共享緩存加速,中高端磁盤陣列與低端磁盤陣列的在性能方面的一個重大區別,除了控制器個數,就是緩存加速的能力。典型的中高端磁盤陣列能支持的共享緩存加速在512GB到1TB上下。鐵力士借鑒了磁盤陣列的設計,通過SVM虛擬化實現DRAM與Flash相結合的二級緩存加速:通過自適應算法,自動識別動態或靜態熱數據(高頻率讀寫或最近讀寫數據),將最熱的數據保存在延遲最小的DRAM中,而將次熱的數據保存在更大容量、基于Flash的固態硬盤上;并由于分布式技術的加持,形成一個容量巨大的分布式二級緩存系統。與中高端磁盤陣列相比較,鐵力士分布式存儲系統支持數10TB、甚至100TB以上的分布式緩存,相當于其10倍、甚至100倍的緩存容量。
數據完整性校驗與數據自修復
SVM存儲虛擬化管理借鑒了WAFL(NetApp) 、Btrfs(SuSE)、ZFS(Oracle)、Storage Spaces(微軟)等文件系統的先進經驗,對底層存儲的每個數據塊增加一個256比特的校驗碼,并單獨保存在一對固態硬盤鏡像中,用于快速實現在線數據完整性校驗。一旦校驗碼檢查到數據受損,通過節點內RAID功能實現數據自修復。該功能可快速定位硬件故障,并實現硬件故障自動隔離。
關于雙重RAID更多信息,請關注分布式存儲的技術趨勢(三):雙重Raid與三副本對比。