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





























