分佈式存儲—硬盤容量不均衡致使的緩存盤壽命急速衰減分析算法
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。
環境主要運行了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,即天天可擦寫三遍。
基於可靠與經濟的基本原則,咱們考慮如下硬件擴容方案進行擴容:
具體的調整方案步驟,可參考如下步驟:
使用上述方案變動,能夠解決當前業務場景下,針對本來前5臺服務器的天天硬盤寫入量3遍,致使SSD壽命加速衰減的狀況,又新增了三臺服務器進行了計算存儲的超融合擴容。針對Ceph容量存儲IO請求不均衡的場景,也使用單獨的存儲池,進行規劃,相同容量的硬盤規劃到同一存儲池,能夠實現IO請求的均衡,IO數據的均衡,各SSD的使用也相對均衡,即8臺服務器的使用損耗一致,後4臺服務器的使用損耗也一致。
結語
綜上所述,分佈式存儲在規劃部署時,須要考慮如下方面: