分布式存儲的技術(shù)發(fā)展趨勢
分布式存儲的技術(shù)發(fā)展趨勢
一、三副本的弊端
以Ceph、VSAN為代表的軟件定義存儲(Software Defined Storage,SDS)是一個橫向擴(kuò)展、自動均衡、自愈合的分布式存儲系統(tǒng),將商用x86服務(wù)器、固態(tài)硬盤、機(jī)械硬盤等硬件資源整合為一個瘦供給的資源池,并以塊存儲、文件存儲、對象存儲、Restful API等多種接口方式提供存儲服務(wù)。
無論是Ceph、VSAN,或者其演化版本,有一個共同的技術(shù)特征,即采用網(wǎng)絡(luò)RAID方式實現(xiàn)數(shù)據(jù)保護(hù),以3副本或糾刪碼為代表,其中3副本用于對小塊數(shù)據(jù)讀寫性能有一定要求的應(yīng)用場景,而糾刪碼則適用于視頻數(shù)據(jù)、備份及歸檔等大文件場景。以3副本為例,業(yè)務(wù)數(shù)據(jù)被分割為固定大小的數(shù)據(jù)塊,通常為4MB,每個數(shù)據(jù)塊在不同的節(jié)點上保存3個副本(如圖1所示),其分布機(jī)制是依照一致性哈希算法(Consistent Hashing)或CRUSH算法,將各個副本數(shù)據(jù)隨機(jī)分布在不同節(jié)點、不同磁盤中,以實現(xiàn)數(shù)據(jù)自動平衡和橫向擴(kuò)展。當(dāng)磁盤或節(jié)點遭遇故障或損壞時,系統(tǒng)會自動根據(jù)預(yù)先設(shè)定的規(guī)則,重新建立一個新的數(shù)據(jù)副本,稱之為數(shù)據(jù)重建。

圖 1 分布式存儲副本機(jī)制
雖然分布式存儲的SDS理念很好,橫向擴(kuò)展能力不錯,自動添加和刪除節(jié)點都是優(yōu)勢,但與傳統(tǒng)集中式存儲(磁盤陣列)相比,其穩(wěn)定性和性能仍然存在明顯的短板。
首先,在性能方面,三副本分布式存儲容易受到IO分布不均勻和木桶效應(yīng)的影響,導(dǎo)致大延遲和響應(yīng)遲鈍的現(xiàn)象。以Ceph為例,多個存儲基本單元,Placement Group (PG),封裝為一個OSD,每個OSD直接對應(yīng)于某一個機(jī)械硬盤HDD;主流的7200轉(zhuǎn)HDD,受到機(jī)械臂尋址限制,其單盤的讀寫性能僅為120 IOPS左右;由于數(shù)據(jù)在OSD上隨機(jī)分布,因而單個硬盤上的IO負(fù)載不會固定在平均值上,而是總體呈現(xiàn)為正態(tài)分布,少數(shù)HDD上因正態(tài)分布的尾部效應(yīng),導(dǎo)致其IO負(fù)載遠(yuǎn)超平均值,以及遠(yuǎn)超單盤的性能閥值,造成擁堵。此外,分布式存儲為保證數(shù)據(jù)完整性,必須定時進(jìn)行數(shù)據(jù)完整性校驗,即數(shù)據(jù)scrub/deep-scrub操作,而這些操作產(chǎn)生額外的IO負(fù)載,可能會加重磁盤阻塞現(xiàn)象。根據(jù)木桶效應(yīng)原理,系統(tǒng)的性能取決于集群中表現(xiàn)最差的磁盤,因此個別慢盤嚴(yán)重拖累整個系統(tǒng)的性能,其可能的后果,就是帶來大延遲、OSD假死,以及觸發(fā)數(shù)據(jù)非必需的重建。
其次,三副本分布式存儲還面臨穩(wěn)定性問題。當(dāng)存儲擴(kuò)容、硬盤或節(jié)點損壞、網(wǎng)絡(luò)故障、OSD假死、 Deep-scrub等多種因素疊加,可能導(dǎo)致多個OSD同時重建,引發(fā)重建風(fēng)暴。在數(shù)據(jù)重建過程中,重建任務(wù)不僅消耗系統(tǒng)的內(nèi)存、CPU、網(wǎng)絡(luò)資源,而且還給存儲系統(tǒng)帶來額外的IO工作負(fù)載,擠占用戶工作負(fù)載的存儲資源。在此情形下,用戶時常觀察到,系統(tǒng)IO延遲大,響應(yīng)遲鈍,輕者引起業(yè)務(wù)中斷,嚴(yán)重時系統(tǒng)可能會陷入不穩(wěn)定的狀態(tài),OSD反復(fù)死機(jī)重啟,甚至?xí)?dǎo)致數(shù)據(jù)丟失,系統(tǒng)崩潰。
此外,三副本分布式存儲還面臨數(shù)據(jù)丟失的風(fēng)險。三副本最大可抵御兩個HDD同時損壞。當(dāng)系統(tǒng)處于擴(kuò)容狀態(tài)、或一個節(jié)點處于維護(hù)模式時,此時出現(xiàn)一個HDD故障,則該系統(tǒng)就會進(jìn)入緊急狀態(tài),出現(xiàn)兩個HDD同時故障,則可能導(dǎo)致數(shù)據(jù)丟失。對于一個具有一定規(guī)模的存儲系統(tǒng)而言,同時出現(xiàn)兩個機(jī)械硬盤故障的事件不可避免,尤其是當(dāng)系統(tǒng)運行兩三年之后,隨著硬件的老化,出現(xiàn)Double、或Triple磁盤故障的概率急劇上升。此外,當(dāng)系統(tǒng)出現(xiàn)大規(guī)模掉電或存儲節(jié)點意外宕機(jī)時,也可能會導(dǎo)致多個機(jī)械硬盤同時出現(xiàn)損壞,危及三副本分布式存儲的數(shù)據(jù)安全。
二、雙重Raid
為了解決三副本分布式存儲面臨的性能問題、穩(wěn)定性及可靠性等缺陷,道熵的鐵力士分布式存儲采用雙重RAID保護(hù)機(jī)制,除了繼承網(wǎng)絡(luò)RAID(節(jié)點間副本、跨節(jié)點糾刪碼)和一致性哈希隨機(jī)分布數(shù)據(jù)的特點,鐵力士將磁盤陣列特有的節(jié)點內(nèi)RAID技術(shù)和存儲虛擬化(池化)管理技術(shù), 即Storage Virtualization Manager (SVM),與分布式技術(shù)相結(jié)合,如圖2所示。

圖2 Titlis分布式存儲雙重Raid機(jī)制
網(wǎng)絡(luò)Raid技術(shù)
在鐵力士分布式存儲中,每個數(shù)據(jù)塊按照一致性哈希算法,隨機(jī)選擇兩個不同存儲節(jié)點來保存數(shù)據(jù)的兩個副本,保證當(dāng)任何一個節(jié)點宕機(jī)時,仍有一個數(shù)據(jù)副本保證讀寫操作,確保業(yè)務(wù)高可用和數(shù)據(jù)安全。
節(jié)點內(nèi)Raid技術(shù)
在鐵力士分布式存儲的每個節(jié)點內(nèi),通過SVM存儲虛擬化技術(shù)實現(xiàn)節(jié)點內(nèi)的RAID數(shù)據(jù)保護(hù),RAID級別選擇可以是鏡像,也可以是存儲效率更高的RAID5或6。節(jié)點內(nèi)RAID保護(hù)可抵御單個或多個硬盤損壞,故障修復(fù)限制在節(jié)點內(nèi)部,無需觸發(fā)網(wǎng)絡(luò)數(shù)據(jù)重建,有效地避免了網(wǎng)絡(luò)重建風(fēng)暴。
節(jié)點內(nèi)RAID結(jié)合網(wǎng)絡(luò)Raid(跨節(jié)點的副本/EC碼)技術(shù),鐵力士實現(xiàn)了雙重RAID數(shù)據(jù)保護(hù)。在三副本架構(gòu)中,一旦同時出現(xiàn)三塊磁盤故障或受損,數(shù)據(jù)就可能丟失;而在雙重RAID架構(gòu)中,即使每個節(jié)點同時出現(xiàn)一塊磁盤故障,數(shù)據(jù)仍然無憂,業(yè)務(wù)仍然持續(xù)??紤]到分布式存儲可能包含數(shù)十個甚至上百個存儲節(jié)點,雙重RAID的數(shù)據(jù)可靠性明顯超過三副本架構(gòu)。
存儲虛擬化技術(shù)
鐵力士在每個存儲節(jié)點運行在存儲虛擬化管理軟件(SVM)上,把該節(jié)點的存儲資源整合為一個統(tǒng)一管理的存儲池,為分布式系統(tǒng)提供vOSD資源。SVM采用寬條帶機(jī)制(見圖3),將每個vOSD的工作負(fù)載均勻分布在節(jié)點的每個磁盤上,大幅提高了單個vOSD的IOPS能力,可有效抵御三副本分布式存儲中的IO分布不均勻現(xiàn)象。
圖 3 節(jié)點內(nèi)Raid條帶機(jī)制
SVM存儲池由節(jié)點內(nèi)多個RAID小組構(gòu)成,通過虛擬卷為上層分布式系統(tǒng)提供vOSD存儲服務(wù)。每個vOSD對應(yīng)于三副本中由物理HDD承載的OSD。由分布式一致性哈希算法分配來的數(shù)據(jù)塊,將寫入SVM存儲池中、由虛擬卷支撐的vOSD,而非直接寫入物理硬盤。SVM 利用寬條帶技術(shù),將vOSD的工作負(fù)載均勻分布在各個物理磁盤上:每個大小為4MB的vOSD 對象數(shù)據(jù)塊,被分割為32KB的數(shù)據(jù)塊,依次被安排在RAID組的邏輯地址空間中;SVM 對各個RAID小組的邏輯地址空間采取順序?qū)憙?yōu)化策略:首次寫按各個小組的邏輯地址分配地址空間,按順序?qū)懭霐?shù)據(jù);后續(xù)重寫,則優(yōu)先填滿空閑地址空間,盡可能實現(xiàn)硬盤順序?qū)ぶ?,最大限度降低機(jī)械硬盤較慢的尋址操作次數(shù),利用機(jī)械硬盤順序?qū)戄^快的特點來提升IO性能。
二級DRAM+Flash 緩存加速
磁盤陣列中常見的性能加速手段是共享緩存加速,中高端磁盤陣列與低端磁盤陣列的在性能方面的一個重大區(qū)別,除了控制器個數(shù),就是緩存加速的能力。典型的中高端磁盤陣列能支持的共享緩存加速在512GB到1TB上下。鐵力士借鑒了磁盤陣列的設(shè)計,通過SVM虛擬化實現(xiàn)DRAM與Flash相結(jié)合的二級緩存加速:通過自適應(yīng)算法,自動識別動態(tài)或靜態(tài)熱數(shù)據(jù)(高頻率讀寫或最近讀寫數(shù)據(jù)),將最熱的數(shù)據(jù)保存在延遲最小的DRAM中,而將次熱的數(shù)據(jù)保存在更大容量、基于Flash的固態(tài)硬盤上;并由于分布式技術(shù)的加持,形成一個容量巨大的分布式二級緩存系統(tǒng)。與中高端磁盤陣列相比較,鐵力士分布式存儲系統(tǒng)支持?jǐn)?shù)10TB、甚至100TB以上的分布式緩存,相當(dāng)于其10倍、甚至100倍的緩存容量。
數(shù)據(jù)完整性校驗與數(shù)據(jù)自修復(fù)
SVM存儲虛擬化管理借鑒了WAFL(NetApp) 、Btrfs(SuSE)、ZFS(Oracle)、Storage Spaces(微軟)等文件系統(tǒng)的先進(jìn)經(jīng)驗,對底層存儲的每個數(shù)據(jù)塊增加一個256比特的校驗碼,并單獨保存在一對固態(tài)硬盤鏡像中,用于快速實現(xiàn)在線數(shù)據(jù)完整性校驗。一旦校驗碼檢查到數(shù)據(jù)受損,通過節(jié)點內(nèi)RAID功能實現(xiàn)數(shù)據(jù)自修復(fù)。該功能可快速定位硬件故障,并實現(xiàn)硬件故障自動隔離。
三、雙重Raid機(jī)制與三副本對比
雙重RAID究竟能否有效解決三副本的缺陷?讓我們從二者之間的對比開始。
故障修復(fù)時間更短,業(yè)務(wù)影響更小
硬盤損壞時,雙重RAID機(jī)制優(yōu)先通過節(jié)點內(nèi)RAID恢復(fù)數(shù)據(jù),該恢復(fù)機(jī)制可自動調(diào)節(jié)速度以避讓工作負(fù)載,前端業(yè)務(wù)無感知。無需觸發(fā)網(wǎng)絡(luò)數(shù)據(jù)重建,從而有效地避免了網(wǎng)絡(luò)重建風(fēng)暴。
節(jié)點故障時,可通過遷移磁盤到另一臺物理服務(wù)器,實現(xiàn)節(jié)點遷移(無需拷貝或重建數(shù)據(jù))。SVM存儲池上每個磁盤記載關(guān)于存儲池構(gòu)成的全部信息,分布式存儲的vOSD的ID號及用戶數(shù)據(jù),保存在SVM存儲池的虛擬卷上,自動隨著SVM存儲池的遷移從一臺物理服務(wù)器遷移到另一臺物理服務(wù)器,主機(jī)名及vOSD的ID號保存不變,實現(xiàn)快速節(jié)點修復(fù)。
容錯性更強(qiáng),可允許多節(jié)點同時有磁盤損壞
三副本分布式存儲通過跨節(jié)點的副本保護(hù),可有效防止單個或兩個磁盤損壞對業(yè)務(wù)數(shù)據(jù)的影響,但是容錯性受到限制,如在三副本的情況下,不同故障域內(nèi)之間,最多只能允許2個節(jié)點有磁盤損壞,超出2個節(jié)點出現(xiàn)磁盤故障,則極有可能發(fā)生數(shù)據(jù)丟失,如圖4所示。

圖 4 三副本分布式存儲多節(jié)點硬盤損壞導(dǎo)致數(shù)據(jù)丟失
鐵力士分布式存儲通過雙重Raid機(jī)制,能夠?qū)⑷蒎e性提升一個數(shù)量級。如圖5所示,以節(jié)點內(nèi)Raid10+節(jié)點間2副本為例,當(dāng)每個節(jié)點都出現(xiàn)磁盤故障的時候,可以通過節(jié)點內(nèi)Raid分別修復(fù),保障整個系統(tǒng)數(shù)據(jù)無丟失,業(yè)務(wù)無中斷。

圖 5 雙重RAID容忍多節(jié)點磁盤損壞
數(shù)據(jù)持久性(Durability)高出一個數(shù)量級
下面通過具體數(shù)值來比較三副本與雙重RAID的數(shù)據(jù)持久性(可靠性)。數(shù)據(jù)持久性指標(biāo)可通過存儲系統(tǒng)的AFR(Annual Failure Rate)來衡量??紤]一個1000個6TB硬盤的存儲集群,每個機(jī)械硬盤的MTTF(Mean Time to Failure)為1000,000小時。在計算中需要運用兩個著名的MTTF公式,一個是關(guān)于RAID6,其MTTF=(MTTF)*(MTTF)*(MTTF)/(N*(N-1)*(N-2)*MTTR), 另一個是關(guān)于RAID5,其MTTF=(MTTF)*(MTTF)/(N*(N-1)MTTR), 其中MTTR(Mean Time to Repair)是硬盤平均修復(fù)時間。
在三副本條件下,存儲系統(tǒng)共有333組三副本,每組三副本的MTTF相當(dāng)于N=3的RAID6,在分布式并發(fā)修復(fù)的條件下,MTTR通常為3小時(每半小時修復(fù)1TB數(shù)據(jù)),因此每組三副本的MTTF =1000000*1000000*1000000/(3*2*1*3)=5.56x 1016 小時,而整個系統(tǒng)的MTTF = 5.56x 1016 /333 =1.67x 1014 小時。折算為AFR(一年共8760小時),AFR=8760/(1.67x 1014) =5.2x 10-11。
在雙重RAID情況下,考慮節(jié)點內(nèi)采用(2+1) RAID5,存儲系統(tǒng)共有333組RAID5,為簡化計算,考慮每組RAID對應(yīng)于兩個vOSD,12TB數(shù)據(jù)。據(jù)測算,RAID5的MTTR為30小時,每組RAID5 (vOSD)的MTTF=1000000*1000000/(3*2*30)=5.56x 109 小時。當(dāng)一個RAID5組損壞時,由于vOSD在跨節(jié)點之間有鏡像保護(hù)(其可靠性相當(dāng)于N=2 RAID5),采用分布式并發(fā)修復(fù)12TB數(shù)據(jù),每半小時修復(fù)1TB數(shù)據(jù),需6小時,因此,其MTTR=(5.56x 109 )* (5.56x 109 )/(2*1*6)=2.58x 1018 小時??紤]到整個存儲系統(tǒng)有333組RAID5, 因此整個系統(tǒng)的MTTF=2.58x 1018/333 =7,75x 1015 小時,相當(dāng)于三副本MTTF的46倍。折算為AFR,雙重RAID的AFR=8760/(7.75x 1015)= 1.1x 10-12 。
對比三副本和雙重RAID的數(shù)據(jù)持久性,可見雙重RAID的數(shù)據(jù)可靠性高于三副本一個數(shù)量級以上。
四、總結(jié)
鐵力士分布式存儲將傳統(tǒng)磁盤陣列的RAID技術(shù)、存儲虛擬化管理技術(shù)與分布式存儲技術(shù)相結(jié)合,有效地解決了普通分布式存儲面臨的IO分布不均勻和木桶效應(yīng)導(dǎo)致的性能缺陷,大幅度提升系統(tǒng)IOPS性能,并避免了普通分布式存儲因網(wǎng)絡(luò)重建風(fēng)暴而可能導(dǎo)致的穩(wěn)定性隱患。同時,雙重RAID架構(gòu)的數(shù)據(jù)可靠性高于三副本分布式存儲一個數(shù)量級以上。
















 
 
 






 
 
 
 