分布式存儲中的元數據管理
元數據被定義為:描述數據的數據,對數據及信息資源的描述性信息。
元數據(Metadata)是描述其它數據的數據(data about other data),或者說是用于提供某種資源的有關信息的結構數據(structured data)。元數據是描述信息資源或數據等對象的數據,其使用目的在于:識別資源;評價資源;追蹤資源在使用過程中的變化;實現簡單高效地管理大量網絡化數據;實現信息資源的有效發現、查找、一體化組織和對使用資源的有效管理。
對于元數據的管理目前有幾種常用的解決方案:中心節點管理元數據,分布式管理元數據,無元數據設計;本文談談三種方案的特點:
1、中心節點管理元數據
在設計分布式(存儲)系統時,使用中心節點是非常簡潔、清晰地一種方案,中心節點通常兼具元數據存儲與查詢、集群節點狀態管理、決策制定與任務下發等功能;
優點:
A.由于其元數據集中式管理的特點,可以方便的處理集群運維管理的統計分析類需求;
B. 中心節點記錄了用戶數據的狀態信息(即元數據),在擴容時,可以選擇不做rebalance操作(rebalance引起的數據遷移可能帶來巨大的性能開銷),且仍能正常尋址;
缺點及解決方案:
a.單點故障是設計分布式系統最忌諱的問題之一,中心節點簡潔的設計也帶來了此問題,如何實現HA呢?;解決方案:(1)使用主備模型,主備之間使用同步或異步的方式進行增量或全量的數據同步(如TFS,mfs,HDFS2.0等),或者主備之間使用遠端共享存儲(如HDFS2.0,遠端存儲需要高可用);
b.存在性能和容量擴展上限,集中式中心節點自身硬件設施存在擴展(scale up)上限及查詢式尋址方式,導致此問題;即使client緩存元數據或使用緩存集群,也不能在根本上消除上限,在某些場景下(如海量小文件),此問題仍然存在;解決方案:(1)優化升級硬件,如使用SSD,大內存等機器;(2)當面臨此問題時,考慮使用分布式管理元數據方案。
2、分布式管理元數據
和中心節點的方案相似,只是將元數據分片并使用分布式節點管理存儲,在保有中心節點方案優點的同時,解決了性能和容量擴展上限的問題,同時,多個節點同時提供元數據查詢服務,系統性能得到提升;
缺點
此類系統較為少見,系統本身結構復雜,實現也有一定難度;
a.系統包含兩種相對獨立的分布式節點:元數據節點,數據節點,它們均是帶狀態節點,每種節點組成的分布式模塊都要面臨分布式CAP原則的取舍,都要做到可擴展,尤其是元數據對一致性有著更高要求;
b.元數據節點需要共同維護數據節點的狀態,并在狀態變化時作出一致性的決策;這些都對系統的設計和實現構成了很大挑戰;
c.另外,大量元數據所需的存儲設備也是一筆不可忽略的成本開銷;
上面兩種方案有著共同思想:記錄并維護數據的狀態(即元數據),數據尋址時先向元數據服務器查詢,再存取實際數據;
3、無元數據設計
主要以ceph為例,有別于上述二者的思想,此類系統的主要思想:使用算法計算尋址,尋址算法的輸入參數之一為集群狀態(如數據節點分布拓撲,權重,進程狀態等)的某種形式描述,此類常見算法有consistent hashing,Ceph RADOS系統的CRUSH算法,這類算法通常不直接管理用戶數據,而是引入中間一層邏輯分片結構(如consistent hashing的環片段,ceph的placement group),其粒度更大,其數量有限且相對固定,用戶存取的數據隸屬于其中唯一一個分片中,系統通過管理維護這些分片進而管理維護用戶數據;此類系統有的也有中心配置管理節點(如ceph rados的monitor),只提供集群和分片等重要狀態的管理維護,不提供元數據的存儲查詢;
優點:
A.如前所述,系統只需管理維護邏輯分片與集群狀態等信息,不存儲管理用戶數據的元數據,系統的可擴展性大大增強,這在大量元數據場景時尤為明顯;
B.尋址算法所需的參數數據量小且相對固定,client可以通過緩存的方式,達到若干client并行尋址的目的,避免了尋址性能瓶頸;
缺點分析:
a.集群擴容時(甚至權重改變時),需要做rebalance,尤其是數據規模很大(PB級以上)的集群,由此帶來的大量數據遷移使集群一直處于高負載的狀態,進而使得正常業務請求的延時、iops等性能指標下降;但有些場景做集群擴容時,并不希望做rebalance(如集群容量不足);對此,常見策略是每個集群預先做好性能、容量評估,需要擴容時,直接新建集群;如果單個集群必須做rebalance,通過人工干預限流降低集群負載;至于需要做rebalance的根本原因,本人認為擴容導致集群狀態改變,進而導致尋址算法結果改變,最終數據分布也需隨之改變;
b.數據的副本分布位置通過尋址算法計算得出,位置相對固定,幾乎不可人為調整;但通常可以通過改變權重的方式改變數據總體分布情況;
c.中心配置管理節點只管理分片信息,不知道單個用戶數據的信息,統計分析類的需求需要通過定期地收集數據節點信息等方式實現,并存儲維護。
總結:通過以上比較分析,三類系統的尋址策略,使系統本身均有自己相應的優缺點,它們都不是***的,但都有其適宜的場景和業務,在系統設計與選型時,需要做全面的考量。