分散式儲存—硬碟容量不均衡導致的快取盤壽命急速衰減分析
【51CTO.com原創稿件】Ceph分散式儲存在擴充套件性、可靠性、效能上具備獨特的優勢,可以實現快速擴充套件多臺伺服器,動態伸縮到PB級容量,多副本機制保障資料高可靠,資料均衡分佈,併發效能高等場景。目前廣泛應用於網際網路、科研、教育、製造業、政府等諸多領域。ZStack雲平臺目前支援對接Ceph分散式儲存,使用的是分散式塊儲存,即使用librbd的塊裝置介面提供給Qemu訪問,進行雲主機、雲盤的IO讀寫。
雖然Ceph分散式儲存具備上述的優勢特點,但在實踐中,對硬體的選擇及配置均存在特別要求,尤其是硬碟、網路上,如果配置不當,儲存的可靠性和效能均會受到影響。
最近在日常巡檢一套ZStack生產環境的Ceph分散式儲存時,我們發現客戶新購的五臺伺服器的SSD壽命損耗存在異常。具體的現象是使用半年後,伺服器帶外管理介面看到SSD的壽命損耗只剩下89%,但使用smartctl讀取介質損耗引數依然顯示為100%。
此時會很疑惑,到底哪個資料更可靠,如果SSD壽命只剩下89%,那麼如何去調整優化Ceph分散式儲存?
問題回顧
針對這個問題,我們回顧一下這套分散式儲存的架構。當時採用了新購+利舊的方案來部署分散式儲存。
相應的配置資訊如下:
其中,新購的5臺機器採用了Intel Xeon E5-2660 v4的CPU,記憶體為256G,機器整體可插入8塊3.5寸硬碟,採用了兩塊480G SSD硬碟配置RAID1安裝系統,採用一塊960G SSD做Ceph分散式儲存的快取盤,每個快取盤對應了5個OSD資料盤,每個快取分割槽約160G的容量,每個OSD容量4T。儲存採用萬兆網路,做鏈路聚合 LACP Mode 4。
利舊的4臺機器採用了Intel Xeon E5-2697 V3的CPU,記憶體為256G,機器整體可以插入可插入8塊2.5寸硬碟,採用了兩塊480G SSD硬碟配置RAID1安裝系統,採用兩塊480G SSD做Ceph分散式儲存的快取盤,每個快取盤對應了2個OSD資料盤,每個快取分割槽約240G容量,每個OSD容量600G。儲存採用萬兆網路,做鏈路聚合 LACP Mode 4。
前五臺機器,每臺機器配置5塊4T硬碟容量,總儲存容量100T,後4臺,每臺機器4塊600G容量,總量9.6T。
初期將所有容量規劃到同一個儲存池中,總裸容量約109T,配置三副本後,容量約36T。
環境主要運行了SQL/">MySQL,Redis,ELK,Zabbix,Web服務,App服務等業務,合計業務型別主要偏向IOPS密集型業務。業務執行前兩個月,整體系統沒有任何問題。
SSD壽命引數分析診斷
針對SSD壽命損耗的不一致性,參考SSD的壽命引數,我們進行了以下分析:
Endurance Rating (Lifetime Writes): 生命週期內總寫入容量,客戶環境使用的960G SSD生命週期內總寫入量為1.86 PBW,即最多可寫入1.86PB的資料。
DWPD:Device Writes Per Day,硬碟每天寫入次數,全盤寫入,寫滿算一次,用於評估硬碟的耐久度。此款960G SSD的官網標稱耐久度為1 DWPD,即每天可全盤寫入一次。
所以從SSD生命週期總寫入量的角度來看,伺服器帶外管理介面看到的壽命損耗更為合理一些。
結合此硬碟的生命週期總寫入量和每天可擦寫一次,可瞭解此硬碟在1.86PB/960G/每天=1860000B/960G=1937天,約5年多的使用時間,與廠商承諾的5年質保的時間一致。
在使用ZStack雲平臺的IO監控工具及smartctl工具去排查分析960G SSD硬碟的每天寫入量,發現每天硬碟的寫入量在2.5T以上,接近SSD硬碟容量960G的三倍。
同時分析後4臺伺服器的SSD快取盤的硬碟寫入量很少,相應的硬碟總壽命未受過多影響。
測試發現,前五臺伺服器的SSD,IOPS 95%都在3000以上,讀寫比在15:85,平均讀IO塊大小為16K左右,寫IO塊大小為18K左右。而針對前五臺伺服器的OSD資料盤,IOPS 95%在30左右,讀寫比為86:14,平均讀IO塊大小為30K左右,寫IO塊大小為180K左右。
所以前五臺物理機的SSD快取盤每天寫入量接近官網標稱值的三倍,按照生命週期總寫入量的損耗預估,前五臺伺服器的SSD快取盤壽命可能不到兩年。
但後面4臺伺服器SSD的使用率為何沒有提上去,對前五臺伺服器的SSD進行均衡使用呢。
我們再來了解一下Ceph資料分佈的基本原理。Ceph的CRUSH MAP演算法,可以實現資料能夠均勻地分佈在不同容量硬碟的儲存節點,Ceph會根據OSD資料盤容量進行權重的計算,並基於儲存叢集的對映和資料分佈策略的placement rules進行雜湊計算。同一儲存池中,OSD資料盤容量大的,IO請求多,OSD資料盤容量小的,IO請求少。IO請求經由資料的雜湊到PG的對映過程,再由PG根據副本數對映到不同的OSD中。如果OSD硬碟不同,那麼容量大的硬碟可以處理更多的PG。相應的IO處理就更多。根據相應的IO均衡策略,如果儲存池內總容量109T,使用30%的容量,則會在所有的資料盤均平均儲存30%的容量,相對於前五臺節點採用的4T的資料盤,每個盤儲存約1.2T的資料,後四臺採用的600G的資料盤,每個盤儲存約180G的資料。
所以基於這種硬碟容量的不均衡,導致相應的IO請求也會不均衡,在業務壓力大時,後4臺機器無法均衡處理整體的IO請求,在分散式規劃時,需配置各機器的硬碟配置、網路配置一致。
分散式儲存優化方案
針對以上情況,考慮進行以下調整:
檢查當前業務使用情況,調整業務的使用方式,將部分非重要業務關閉,降低IO的使用方式,調整後,再監控相應IO的使用情況,發現960G SSD的每天寫入量已降低至1.8T,此時業務已無法持續調整。
在業務無法調整的情況下,只能考慮擴容及硬碟調整,在考慮擴容的過程中,還需要考慮後續業務量的增長。
因為當前的儲存容量,可以提供當前業務的儲存量,但在快取盤效能上,不足以支撐相應業務的需求,此款960G SSD的每天硬碟寫入次數DWPD為1,只能全盤刷入一遍。考慮到硬碟的每天寫入量,建議新快取盤採用新款的960GB SSD,官網的標稱值其在生命週期的總寫入量在為5.26PBW,每天硬碟的寫入量為3DWPD,即每天可擦寫三遍。
基於可靠與經濟的基本原則,我們考慮以下硬體擴容方案進行擴容:
1. 再新增3臺伺服器,採用總寫入量更高的960GB SSD,480G SSD系統盤,其他配置與原本前五臺配置相同;
2. 前五臺伺服器,也採用總寫入量更高的960GB SSD替換原本的960GB SSD,將前五臺機器擴容成8臺相同配置的機器;
3. 後4臺伺服器,將快取盤替換成步驟二移除下來的960GB SSD,此時每臺機器可以插入5塊資料盤;
4. 後4臺伺服器,將原本的2.5寸 600G SAS硬碟,變更為2.4T企業版SAS硬碟,目前2.5寸企業級硬碟最大容量受限於2.4T;
5. 儲存規劃,8臺E5-2660的伺服器提供5x4Tx8的儲存容量,約160T。後4臺伺服器提供5X2.4Tx4的儲存容量,約48T。
6. 前8臺單獨一個儲存池,後4臺單獨一個儲存池,均配置三副本。
具體的調整方案步驟,可參考以下步驟:
1. 從儲存池,移除後4臺伺服器的硬碟,並關閉這4臺機器;
2. 在新購入的三臺伺服器上,安裝部署Ceph儲存節點,加入到分散式儲存叢集的儲存池中;
3. 將原本的前五臺機器的一臺伺服器,移除硬碟,移除伺服器,等待Ceph儲存資料平衡恢復;
4. Ceph平衡完畢後,關閉此伺服器,將其上的960G SSD變更為耐久度更高的960G SSD;
5. 重複步驟3-4,完成前五臺機器的變更;
6. 變更後4臺伺服器的硬體,將前五臺機器中原本的960G SSD各分配一塊到後4臺伺服器,將每臺機器上的600G SAS硬碟更換成5塊2.4T的SATA硬碟,新增到Ceph儲存,針對這些2.4T硬碟,單獨規劃一個Ceph儲存池;
7. 新增步驟6建立的新儲存池到ZStack的Ceph主儲存作為資料雲盤池,建立資料雲盤時使用,在業務使用時,可將部分業務,部署在後4臺機器的儲存池中;
8. 新增新購入的三臺伺服器到ZStack的計算節點叢集中,同時用於提供計算資源。
使用上述方案變更,可以解決當前業務場景下,針對原本前5臺伺服器的每天硬碟寫入量3遍,導致SSD壽命加速衰減的情況,又新增了三臺伺服器進行了計算儲存的超融合擴容。針對Ceph容量儲存IO請求不均衡的場景,也使用單獨的儲存池,進行規劃,相同容量的硬碟規劃到同一儲存池,可以實現IO請求的均衡,IO資料的均衡,各SSD的使用也相對均衡,即8臺伺服器的使用損耗一致,後4臺伺服器的使用損耗也一致。
結語
綜上所述,分散式儲存在規劃部署時,需要考慮以下方面:
1. 同一儲存池的硬碟型號容量應一致,否則不同容量的硬碟在同一儲存池,會導致IO請求的不均衡,導致儲存分佈不均衡,在使用SSD快取盤的場景會導致使用大容量硬碟對應的SSD IO請求更多,損耗會更快;
2. 業務規劃需提前做好評估,針對IOPS,頻寬寫入進行提前規劃,高IO的業務需進行評估,準備的硬體是否可滿足業務需求,如果業務需求較高,需使用更高配置硬體或進行相應的硬體擴容;
3. 分散式儲存選擇SSD時,建議關注SSD的PBW(生命週期總寫入量)和DWPD(每天硬碟可寫入量),SSD壽命的損耗與其總寫入量需要規劃考慮業務型別,IO密集型業務應選擇更高DWPD的SSD。
【51CTO原創稿件,合作站點轉載請註明原文作者和出處為51CTO.com】
【責任編輯:趙立京 TEL:(010)68476606】