Ceph分布式存儲在擴展性、可靠性、性能上具備獨特的優(yōu)勢,可以實現(xiàn)快速擴展多臺服務器,動態(tài)伸縮到PB級容量,多副本機制保障數(shù)據(jù)高可靠,數(shù)據(jù)均衡分布,高性能并發(fā)等場景。
雖然Ceph分布式存儲具備上述的優(yōu)勢特點,但在實踐中,對硬件的選擇及配置均存在特別要求,尤其是硬盤、網(wǎng)絡上,如果配置不當,存儲的可靠性和性能均會受到影響。
圖1 分布式存儲架構配置信息
最近在日常巡檢一套ZStack生產(chǎn)環(huán)境的Ceph分布式存儲時,發(fā)現(xiàn)客戶新購的5臺服務器的SSD壽命損耗存在異常。具體現(xiàn)象是使用半年后,服務器帶外管理界面看到SSD壽命損耗只剩89%,但使用smartctl讀取介質損耗參數(shù)依然顯示為100%。
此時會很疑惑,到底哪個數(shù)據(jù)更可靠,如果SSD壽命只剩下89%,那么如何去調整優(yōu)化Ceph分布式存儲?
針對這個問題,我們回顧一下這套分布式存儲的架構。當時采用了新購+利舊的方案來部署分布式存儲。相應的配置信息如圖1所示。
其中,新購的5臺機器采用了Intel Xeon E5-2660 v4 的 CPU,內存為 256G,機器整體可插入8塊3.5寸硬盤,采用了兩塊480G SSD硬盤配置RAID1安裝系統(tǒng),采用一塊960G SSD做Ceph分布式存儲的緩存盤,每個緩存盤對應了5個OSD數(shù)據(jù)盤,每個緩存分區(qū)約160G容量,每個OSD容量4T。存儲采用萬兆網(wǎng)絡,做鏈路聚合LACP Mode 4。
利舊的4臺機器采用了Intel Xeon E5-2697 V3的CPU,內存為 256G,機器整體可以插入可插入8塊2.5寸硬盤,采用了兩塊480G SSD硬盤配置RAID1安裝系統(tǒng),采用兩塊480G SSD做Ceph分布式存儲的緩存盤,每個緩存盤對應了2個OSD數(shù)據(jù)盤,每個緩存分區(qū)約240G容量,每個OSD容量600G。存儲采用萬兆網(wǎng)絡,做鏈路聚合LACP Mode 4。
前5臺機器每臺配置5塊4T硬盤容量,總存儲容量100T,后4臺中每臺機器4塊600G容量,總量9.6T。
初期將所有容量規(guī)劃到同一個存儲池中,總裸容量約109T,配置三副本后,容量約36T。
環(huán)境主要運行了MySQL、Redis、ELK、Zabbix、Web 服務、APP服務等業(yè)務,合計業(yè)務類型主要偏向IOPS密集型業(yè)務。業(yè)務運行前兩個月,整體系統(tǒng)沒有任何問題。
針對SSD壽命損耗的不一致性,參考SSD的壽命參數(shù),我們進行了以下分析。
Endurance Rating(Lifetime Writes): 生命周期內總寫入容量,客戶環(huán)境使用的960G SSD生命周期內總寫入量為1.86 PBW,即最多可寫入1.86PB的數(shù)據(jù)。
DWPD:Device Writes Per Day,硬盤每天寫入次數(shù),全盤寫入,寫滿算一次,用于評估硬盤的耐久度。此款960G SSD的官網(wǎng)標稱耐久度為1 DWPD,即每天可全盤寫入一次。
所以從SSD生命周期總寫入量的角度來看,服務器帶外管理界面看到的壽命損耗更為合理一些。
結合此硬盤的生命周期總寫入量和每天可擦寫一次,可了解此硬盤在1.86PB/960G/每天=1860000B/960G=1937天,約5年多的使用時間,與廠商承諾的5年質保的時間一致。
在使用ZStack云平臺的IO監(jiān)控工具及smartctl工具排查分析960G SSD硬盤的每天寫入量時發(fā)現(xiàn)每天硬盤的寫入量在2.5T以上,接近SSD硬盤容量960G的三倍。
同時分析后4臺服務器的SSD緩存盤的硬盤寫入量很少,相應的硬盤總壽命未受過多影響。
測試發(fā)現(xiàn),前5臺服務器的SSD,IOPS 95%都在3000以上,讀寫比在15:85,平均讀IO塊大小為16K左右,寫IO塊大小為18K左右。而針對前5臺服務器的OSD數(shù)據(jù)盤,IOPS 95%在30左右,讀寫比為86:14,平均讀IO塊大小為30K左右,寫IO塊大小為180K左右。
所以前5臺物理機的SSD緩存盤每天寫入量接近官網(wǎng)標稱值的三倍,按照生命周期總寫入量的損耗預估,前5臺服務器的SSD緩存盤壽命可能不到兩年。
但后面4臺服務器SSD的使用率為何沒有提上去,對前5臺服務器的SSD進行均衡使用呢。
我們再來了解一下Ceph數(shù)據(jù)分布的基本原理。Ceph的CRUSH MAP算法可以實現(xiàn)數(shù)據(jù)能夠均勻地分布在不同容量硬盤的存儲節(jié)點,Ceph會根據(jù)OSD數(shù)據(jù)盤容量進行權重的計算,并基于存儲集群的映射和數(shù)據(jù)分布策略的Placement Rules進行哈希計算。同一存儲池中,OSD數(shù)據(jù)盤容量大的,IO請求多,OSD數(shù)據(jù)盤容量小的,IO請求少。IO請求經(jīng)由數(shù)據(jù)的哈希到PG的映射過程,再由PG根據(jù)副本數(shù)映射到不同的OSD中。如果OSD硬盤不同,那么容量大的硬盤可以處理更多的PG。相應的IO處理就更多。
根據(jù)相應的IO均衡策略,如果存儲池內總容量109T,使用30%的容量,則會在所有的數(shù)據(jù)盤均平均存儲30%的容量,相對于前5臺節(jié)點采用的4T的數(shù)據(jù)盤,每個盤存儲約1.2T的數(shù)據(jù),后4臺采用的600G的數(shù)據(jù)盤,每個盤存儲約180G的數(shù)據(jù)。
圖2 160T存儲池配置
所以基于這種硬盤容量的不均衡,導致相應的IO請求也會不均衡,在業(yè)務壓力大時,后4臺機器無法均衡處理整體的IO請求,在分布式規(guī)劃時,需配置各機器的硬盤配置、網(wǎng)絡配置一致。
針對以上情況,考慮進行以下調整:
檢查當前業(yè)務使用情況,調整業(yè)務的使用方式,將部分非重要業(yè)務關閉,降低IO的使用方式,調整后,再監(jiān)控相應IO的使用情況,發(fā)現(xiàn)960G SSD的每天寫入量已降低至1.8T,此時業(yè)務已無法持續(xù)調整。
在業(yè)務無法調整的情況下,只能考慮擴容及硬盤調整,在考慮擴容的過程中,還需要考慮后續(xù)業(yè)務量的增長。
因為當前的存儲容量可以提供當前業(yè)務的存儲量,但在緩存盤性能上不足以支撐相應業(yè)務的需求,此款960G SSD的每天硬盤寫入次數(shù)DWPD為1,只能全盤刷入一遍??紤]到硬盤的每天寫入量,建議新緩存盤采用新款的960GB SSD,官網(wǎng)的標稱值其在生命周期的總寫入量在為5.26PBW,每天硬盤的寫入量為3DWPD,即每天可擦寫三遍。
基于可靠與經(jīng)濟的基本原則,我們考慮以下硬件擴容方案進行擴容:
1.再新增3臺服務器,采用總寫入量更高的960GB SSD,480G SSD系統(tǒng)盤,其他配置與原本前五臺配置相同。
2.前5臺服務器,也采用總寫入量更高的960GB SSD替換原本的960GB SSD,將前5臺機器擴容成8臺相同配置的機器。
3.后4臺服務器,將緩存盤替換成步驟二移除下來的960GB SSD,此時每臺機器可以插入5塊數(shù)據(jù)盤。
4.后4臺服務器,將原本的2.5寸600G SAS硬盤,變更為2.4T企業(yè)版SAS硬盤,目前2.5寸企業(yè)級硬盤最大容量受限于2.4T。
5.存 儲 規(guī) 劃,8臺 E5-2660的服務器提供5×4T×8的存儲容量,約160T,如圖2所示。后4臺服務器提供5×2.4T×4的存儲容量,約48T,如圖3所示。
6.前8臺單獨一個存儲池,后4臺單獨一個存儲池,均配置三副本。
具體的調整方案可參考以下步驟:
1.從存儲池,移除后4臺服務器的硬盤,并關閉這4臺機器。
2.在新購入的三臺服務器上,安裝部署Ceph存儲節(jié)點,加入到分布式存儲集群的存儲池中。
3.將原本的前5臺機器的一臺服務器,移除硬盤,移除服務器,等待Ceph存儲數(shù)據(jù)平衡恢復。
4.Ceph平衡完畢后,關閉此服務器,將其上的960G SSD變更為耐久度更高的960G SSD。
5.重復步驟3-4,完成前5臺機器的變更。
6.變更后4臺服務器的硬件,將前5臺機器中原本的960G SSD各分配一塊到后4臺服務器,將每臺機器上的600G SAS硬盤更換成5塊2.4T的SATA硬盤,添加到Ceph存儲,針對這些2.4T硬盤,單獨規(guī)劃一個Ceph存儲池。
圖3 48T存儲池配置
7.添加步驟6創(chuàng)建的新存儲池到ZStack的Ceph主存儲作為數(shù)據(jù)云盤池,創(chuàng)建數(shù)據(jù)云盤時使用,在業(yè)務使用時,可將部分業(yè)務,部署在后4臺機器的存儲池中。
8.添加新購入的3臺服務器到ZStack的計算節(jié)點集群中,同時用于提供計算資源。
使用上述方案變更,可以解決當前業(yè)務場景下,針對原本前5臺服務器的每天硬盤寫入量三遍,導致SSD壽命加速衰減的情況,又新增了3臺服務器進行了計算存儲的超融合擴容。針對Ceph容量存儲IO請求不均衡的場景,也使用單獨的存儲池進行規(guī)劃,相同容量的硬盤規(guī)劃到同一存儲池,可以實現(xiàn)IO請求的均衡,IO數(shù)據(jù)的均衡,各SSD的使用也相對均衡,即8臺服務器的使用損耗一致,后4臺服務器的使用損耗也一致。
綜上所述,分布式存儲在規(guī)劃部署時,需要考慮以下方面:
1.同一存儲池的硬盤型號容量應一致,否則不同容量的硬盤在同一存儲池,會導致IO請求的不均衡,導致存儲分布不均衡,在使用SSD緩存盤的場景會導致使用大容量硬盤對應的SSD IO請求更多,損耗會更快。
2.業(yè)務規(guī)劃需提前做好評估,針對IOPS,帶寬寫入進行提前規(guī)劃,高IO的業(yè)務需進行評估,準備的硬件是否可滿足業(yè)務需求,如果業(yè)務需求較高,需使用更高配置硬件或進行相應的硬件擴容。
3.分布式存儲選擇SSD時,建 議 關 注SSD的PBW(生命周期總寫入量)和DWPD(每天硬盤可寫入量),SSD壽命的損耗與其總寫入量需要規(guī)劃考慮業(yè)務類型,IO密集型業(yè)務應選擇更高DWPD的SSD。