首先,原作者分析Ceph運維中遇到的問題是真實存在的,甚至在實際的運維過程中還出現過其他更復雜的問題。因為最初的Ceph只是社區提供的一套開源版,因而想要實現產品化需要趟過很多次“坑”,就像最早的安卓系統一樣。我想任何產品在一開始都難以做到十全十美,因為技術本身就是在發現問題與解決問題的道路上不斷前進發展的。不過,在這里我想澄清的事實是:連初涉Ceph的運維人員都能發現的問題,研究Ceph多年的資深技術人員們肯定也早已發現。

接下來我就根據那篇文章中提到的坑,來說一說在實際產品化過程中我們是如何解決它們的。

一、擴容問題

Ceph本身基于Crush算法,具備了多種數據復制策略,可以選擇在磁盤、主機、機柜等等位置附著。例如:如果采取3副本的數據保護策略,就可以通過復制策略來決定這3個副本是否同時分布在不同的磁盤、不同的主機、不同的隔離域、不同的機柜等位置來保證部分硬件故障后數據安全性和服務運行不中斷。

Ceph底層是用資源池(POOL)來實現數據邏輯隔離,往往我們會出現因容量或性能不足需要對資源池進行擴容的問題,但是在容量擴容過程中,勢必會帶來進行數據重新平衡的要求。Ceph中數據以PG為單位進行組織,因此當數據池中加入新的存儲單元(OSD)時,通過調整OSDMAP會帶來數據重平衡。正如文章所提到的,如果涉及到多個OSD的擴容是可能導致可用PG中OSD小于min_size,從而發生PG不可用、IO阻塞的情況。為了盡量避免這種情況的出現,只能將擴容粒度變小,比如每次只擴容一個OSD或者一個機器、一個機柜(主要取決于存儲隔離策略),但是這樣注定會帶來極大的運維工作量,甚至連擴容速度可能都趕不上數據增長速度。

正是針對這個問題,元核云分布式存儲產品在運維管理平臺層面進行了優化。擴容發生時,運維人員只需要將待擴容的服務器信息以及策略加入到運維管理平臺中,后面的事情都由運維管理平臺進行自動化處理。簡單來說,運維平臺會根據PG的狀態和待擴容OSD資源,尋求一個最優的擴容方式,即在不影響PG可用性的情況下,循序漸進地進行OSD擴容,直到擴容動作完全完成為止。例如:在三副本的場景下,當某一個PG加入兩個OSD后,運維平臺會通過算法把擴容分為兩次完成,每次僅擴容一個OSD,這樣就能保證PG的min_size始終大于1。而這整個過程完全由運維平臺自動完成,對運維管理員完全透明。

二、數據遷移過程中的IO爭用問題

文章中提到的第二個問題主要是講在頻繁數據遷移過程中帶來的IO爭用問題。當集群規模變大后,硬盤損壞、PG數量擴充可能會變得常態化。

以我們的運維經驗來看,客戶大概每年都會有幾次的相關運維操作。在我們運維過的所有集群中,最大的超過了1000個存儲節點,而在這過程中會遭遇到每個月損壞1-2臺硬盤、3個月左右進行一次集中換盤的情況。這些運維操作都需要通過數據遷移來進行數據恢復,數據恢復過程中會對硬盤的IO進行爭用,如何有效、智能地控制并恢復IO,并做到使業務IO不受影響,是Ceph運維管理的核心工作。

在元核云自動化運維管理平臺中,會采用時間策略、流量策略來控制數據恢復的速率。我們會在業務的高峰期,8:00——18:00這一時間段內使用某種流量恢復策略,在業務的低峰期,18:00——第二天8:00這一時間段使用另一種流量恢復策略。在流量恢復策略中,可以基于磁盤的IO利用率情況,來動態調整數據流量恢復速率,比如說設置恢復流量占用IO利用率閾值不能超過50%,則總會保證不因恢復流量導致IO的利用率超過50%,當業務IO占比越大,恢復IO占比就越小,當業務IO利用率超過50%時,則停止恢復IO。此種方式可以靈活有效地利用閑時IO,在不影響業務IO的情況下,快速完成數據遷移恢復。

三、PG數量調整問題

當解決了數據遷移過程中的PG可用性問題和IO爭用問題后,關于文章中提到的PG數量調整問題自然也就解決了。數據遷移本身是一個常態化的過程,當控制了數據在遷移過程中的不良影響,同時在OSDMap變化過程中,PG始終能夠保持可用狀態,那么就并不會像那篇文章中所說的那樣,調整PG數量會帶來災難性的后果。況且,PG的調整確實也不是一個經常性的動作。

四、集群利用率問題

文章中提到的存儲成本問題主要是講集群可用率問題,即Ceph集群規模增大后,偽隨機算法導致了存儲資源分布不均衡,磁盤利用率方差過大的問題。

其實要做到保證每塊盤的數據均衡,這是一個比較復雜的過程。因為首先要確保數據分布能夠遵循每個Pool的Rule-Set規則,同時又要保證每個Pool對應的PG較為合理的分布在每個OSD中(因為有些Pool是放元數據的,并不會承載大量的數據),同時還要保證當PG數量發生變化時不會發生災難性的數據遷移(stable_mod)。元核云在Ceph基礎上開發了智能數據分布管理特性,它能通過預先設定好的計算模型,反復迭代計算,預測出一個最優的數據分布,在現實運維經驗中,我們可以保證OSD之間的數據容量之差不超過2%,存儲集群空間可用率達到95%以上。此特性功能會對因集群初始化、擴容、硬件故障等原因導致的數據遷移后的數據失衡進行管控,實現較優的空間使用率。

五、運維復雜度問題

正如文章所提到的,Ceph本身是一個十分復雜的體系,要做到穩定運維非??粗貓F隊的實力。元核云除了對Ceph核心進行了深度優化,還提供了一套支持跨數據中心多Ceph集群的自動化運維管理平臺,能極大提高運維效率、降低Ceph存儲集群運維成本。目前我們通過這套運維平臺,做到了五個數據中心上千個節點的存儲集群,每年僅需一個運維人力的案例。

總而言之,對于那篇文章中提到的“坑”,其實我們早已做好了充分的預防策略。紙上談兵都是容易的,實際操作卻比之復雜千萬倍。怎樣才能跳出人云亦云的圈子,真正認識到事實的本來面目,還是需要有長久的實踐操作經驗才能夠看清楚。元核云主導負責的某大型金融集團近50PB+的分布式存儲方案,屬于國內金融行業最大的Ceph存儲案例,達到了4年的軟件存儲產品本身零故障記錄,期間也經歷了各種網絡異常、服務器和硬盤故障、服務器擴容、操作系統打補丁和升級、存儲軟件打補丁和升級等運維問題,仍然完好地維護了存儲數據。軟件定義存儲軟件系統屬于工程型項目,需要大規模的生產實踐經驗和時間積累,遇“坑”填“坑”,才能保證其產品的成熟度。存儲畢竟是底層核心的關鍵技術產品,數據的最后一道防線,如果要正式進行生產應用,還是建議大家使用成熟的商業化Ceph存儲產品。

未經允許不得轉載:存儲在線-存儲專業媒體 » 元核云如何解決Ceph分布式存儲中碰到的坑
分享到

songjy

相關推薦

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走