分布式存儲的技術趨勢(一):三副本的弊端
雖然分布式存儲的SDS理念很好,橫向擴展能力不錯,自動添加和刪除節點都是優勢,但與傳統集中式存儲(磁盤陣列)相比,其穩定性和性能仍然存在明顯的短板。以Ceph、VSAN為代表的軟件定義存儲(Software Defined Storage,SDS)是一個橫向擴展、自動均衡、自愈合的分布式存儲系統,將商用x86服務器、固態硬盤、機械硬盤等硬件資源整合為一個瘦供給的資源池,并以塊存儲、文件存儲、對象存儲、Restful API等多種接口方式提供存儲服務。
無論是Ceph、VSAN,或者其演化版本,有一個共同的技術特征,即采用網絡RAID方式實現數據保護,以3副本或糾刪碼為代表,其中3副本用于對小塊數據讀寫性能有一定要求的應用場景,而糾刪碼則適用于視頻數據、備份及歸檔等大文件場景。以3副本為例,業務數據被分割為固定大小的數據塊,通常為4MB,每個數據塊在不同的節點上保存3個副本(如圖1所示),其分布機制是依照一致性哈希算法(Consistent Hashing)或CRUSH算法,將各個副本數據隨機分布在不同節點、不同磁盤中,以實現數據自動平衡和橫向擴展。當磁盤或節點遭遇故障或損壞時,系統會自動根據預先設定的規則,重新建立一個新的數據副本,稱之為數據重建。

圖 1 分布式存儲副本機制
雖然分布式存儲的SDS理念很好,橫向擴展能力不錯,自動添加和刪除節點都是優勢,但與傳統集中式存儲(磁盤陣列)相比,其穩定性和性能仍然存在明顯的短板。
首先,在性能方面,三副本分布式存儲容易受到IO分布不均勻和木桶效應的影響,導致大延遲和響應遲鈍的現象。以Ceph為例,多個存儲基本單元,Placement Group (PG),封裝為一個OSD,每個OSD直接對應于某一個機械硬盤HDD;主流的7200轉HDD,受到機械臂尋址限制,其單盤的讀寫性能僅為120 IOPS左右;由于數據在OSD上隨機分布,因而單個硬盤上的IO負載不會固定在平均值上,而是總體呈現為正態分布,少數HDD上因正態分布的尾部效應,導致其IO負載遠超平均值,以及遠超單盤的性能閥值,造成擁堵。此外,分布式存儲為保證數據完整性,必須定時進行數據完整性校驗,即數據scrub/deep-scrub操作,而這些操作產生額外的IO負載,可能會加重磁盤阻塞現象。根據木桶效應原理,系統的性能取決于集群中表現最差的磁盤,因此個別慢盤嚴重拖累整個系統的性能,其可能的后果,就是帶來大延遲、OSD假死,以及觸發數據非必需的重建。
其次,三副本分布式存儲還面臨穩定性問題。當存儲擴容、硬盤或節點損壞、網絡故障、OSD假死、 Deep-scrub等多種因素疊加,可能導致多個OSD同時重建,引發重建風暴。在數據重建過程中,重建任務不僅消耗系統的內存、CPU、網絡資源,而且還給存儲系統帶來額外的IO工作負載,擠占用戶工作負載的存儲資源。在此情形下,用戶時常觀察到,系統IO延遲大,響應遲鈍,輕者引起業務中斷,嚴重時系統可能會陷入不穩定的狀態,OSD反復死機重啟,甚至會導致數據丟失,系統崩潰。
此外,三副本分布式存儲還面臨數據丟失的風險。三副本最大可抵御兩個HDD同時損壞。當系統處于擴容狀態、或一個節點處于維護模式時,此時出現一個HDD故障,則該系統就會進入緊急狀態,出現兩個HDD同時故障,則可能導致數據丟失。對于一個具有一定規模的存儲系統而言,同時出現兩個機械硬盤故障的事件不可避免,尤其是當系統運行兩三年之后,隨著硬件的老化,出現Double、或Triple磁盤故障的概率急劇上升。此外,當系統出現大規模掉電或存儲節點意外宕機時,也可能會導致多個機械硬盤同時出現損壞,危及三副本分布式存儲的數據安全。
如何應對三副本隱患和風險,您預備好了嗎?更多信息,請關注分布式存儲的技術趨勢(二):雙重RAID。