引言
云存儲是從云計算概念上衍生、發展出來的一個概念,指利用集群、分布式文件系統等技術,將網絡中大量各種不同類型的存儲設備集合起來協同工作,共同對外提供數據存儲和業務訪問功能的一個系統。云存儲作為云計算系統的基礎和支撐,專注于解決云計算中海量數據的存儲挑戰,所以云存儲是一個以數據存儲和管理為核心的云計算系統。與傳統的存儲系統相比,云存儲系統具有以下優點。
高可靠性。云存儲使用了數據多副本容錯、存儲節點異構可互換等措施來提升系統的可靠性,因此云存儲能夠容忍節點的故障,甚至有很大一部節點失效也不會影響系統的正常運行,較好的解決了硬件故障的影響,提高了可靠性。
高擴展性。云存儲技術通過將不同廠商、型號、位置的存儲設備抽象成一個虛擬的存儲資源池,資源池的規模可以動態伸縮,滿足應用和用戶規模增長的需要,使之具有高可擴展性。高擴展的特性使云存儲能夠適用于海量數據存儲。
高可用性。傳統的存儲系統在做定期性的維護和升級時,通常會導致服務的臨時中斷。而云存儲通過虛擬化資源池技術,能實現系統不停機的情況下數據動態遷移,因此使用云存儲不會導致業務的中止,具有高可用性。
低成本。云存儲對大量價格低廉的同構或者異構存儲設備進行了有效整合,降低了系統的構建成本;云存儲的通用性使資源的利用率大幅提升,緩解了成本與資源利用率之間的矛盾,降低了運行成本。
綜上所述,云存儲除了可以節省整體的硬件成本外,還具備良好的可擴展性、對用戶的透明性、按需分配的靈活性和負載的均衡性等特點,云存儲系統為海量數據的存儲提供了有效的解決方案。
1 典型云存儲架構介紹
云存儲作為一個復雜的綜合系統,其核心在于內置的分布式文件系統,它是云存儲的基礎。所謂分布式文件系統是指文件系統管理的物理存儲資源不局限在本地節點上,而是通過網絡與節點相連,然后把整個分布式存儲資源以統一的視圖呈現給用戶。目前已有大量的分布式文件系統,有些是商業化產品,有些是開源項目,每種分布式文件系統各有其特點和適用場景,以是否存在元數據節點可以將其分為兩類:基于中心的分布式文件系統和無中心的分布式文件系統,它們決定了云存儲系統的架構。其中GFS(Google File System)是前一種類型的代表,HDFS是其開源實現;Dynamo是Amazon設計開發的存儲基礎架構,是無中心云存儲架構的典型,下面分別對其做概要介紹。
1.1 GFS架構介紹
GFS是Google公司為了滿足迅速增長的數據處理要求,設計并實現的分布式文件系統。GFS分布式文件系統主要有3個組件:Master、Chunkserver和GFS Client。
Master管理所有的文件系統元數據。這些元數據包括名字空問、訪問控制信息、文件和Chunk的映射信息、以及當前Chunk的位置等信息。
Chunkserver負責具體數據的存儲,GFS存儲的文件都被分割成固定大小的Chunk。在Chunk創建的時候,Master節點會給每個Chunk分配一個不變的、唯一的64位的Chunk標識。Chunk節點把Chunk以文件的形式保存在本地硬盤上,并且根據指定的Chunk標識和字節范圍來讀寫塊數據。出于可靠性的考慮,每個塊都會復制到多個塊服務器上。
GFS的客戶端以代碼庫的形式被鏈接到客戶程序里。客戶端代碼提供了一套類似傳統文件系統的API接口函數,支持常用的文件操作,如創建新文件、刪除文件、打開文件、關閉文件、讀和寫文件。
為了提高系統效率,GFS采取了把數據流和控制流分開的運行機制。Master和Client及Chunkserver節點的通信只交互控制流(元數據信息),所有的數據操作都是由客戶端直接和Chunk節點進行交互的。
GFS文件系統具有幾個特點:
①系統定位于存儲大量的大文件,系統也支持小文件,但未針對小文件做專門的優化;②大部分文件的更新是通過添加新數據完成的,而不是改變己存在的數據,一旦寫完,文件就只可讀;③系統工作主要由兩種讀操作構成。對大量數據的流方式的讀操作和對少量數據的隨機方式的讀操作。
由以上分析可以看出,GFS并不是一個通用的云存儲系統,它更適合于大型的搜索業務,因為GFS的設計考慮了許多具體搜索業務的特性,如文件的大小、讀寫頻率等。GFS采用中心節點來管理整個文件系統的元數據,這可以大大簡化設計,從而降低實現難度。但是,這樣的結構也帶來了單點失效和性能瓶頸的問題,而這也將在一定程度上影響系統的擴展性。
1.2 Dynamo架構介紹
Dynamo是Amazon設計、開發的一種基礎存儲架構。由于業務的快速發展,傳統的存儲系統無法滿足電子商務交易過程中產生的海量、半結構化數據的需求,因此Amazon設計開發了自己的存儲系統Dynamo。Dynamo在設計之初被定位為一個高可靠、高可用且具有良好容錯性的系統,它以簡單的鍵/值方式存儲數據,不支持復雜的查詢,Dynamo中存儲的是數據的原始形式,不識別任何數據結構,這使得它幾乎可以處理所有的數據類型。
相比傳統的集中式存儲系統,Dynamo是一個完全分布式的、無中心節點的存儲系統。如何在節點上均勻分布數據是非常關鍵的問題,Dynamo使用改進后的一致性哈希算法解決這個問題,如圖2所示。一致性哈希算法分兩步進行,首先計算出設備節點哈希值,將設備配置到環上的一個點(每個點代表一個哈希值);然后計算數據的哈希值,按順時針方向將其映射到環上距其最近的節點;當新增節點時,按照上述規則,調整相關數據到新的節點上。刪除節點和添加節點過程相反。
Dynamo通過一致性哈希算法切分數據,分放在不同的節點上。環上每個節點只需要處理落在它和它的前驅節點之間的數據,這樣當有新的節點加入或者撤出時系統的震蕩較小。一致性哈希是一種隨機函數,在節點量較少的情況下很有可能造成節點數據分布的不均勻,并且一致性哈希算法在選擇節點位置時并沒有考慮環上不同節點的性能差異。為了解決這個問題,亞馬遜在Dynamo中引入了節點虛擬化的概念。每個虛擬節點屬于一個實際的物理節點。一個物理節點根據性能的差異可能擁有一個或多個虛擬節點。每個虛擬節點能力基本相當,并隨機分布在哈希空問中。存儲時,數據按照哈希值映射到某個虛擬節點負責的區域,然后被存儲在該虛擬節點所對應的物理節點。分布在一致性環上的虛擬節點有效的解決了性能不均問題,它將放在環上作為一個節點的視為一組機器,這一組機器是通過同步機制保證數據一致的。
2 Gluster架構分析
Gluster是一個開源的無元數據節點的分布式文件系統,由于其無中心的特點,因此具有強大的橫向擴展能力,通過擴展能夠支持數PB存儲容量。Gluster通過TCP/IP或InfiniBand RDMA網絡將物理分布的存儲資源聚集在一起,使用單一全局命名空間來管理數據。Gluster基于可堆疊的用戶空間設計,可為各種不同的數據負載提供優異的性能。
2.1總體架構
Gluster主要由存儲服務器(Brick Server)、客戶端以及存儲網關組成。Gluster架構中沒有元數據節點,這是其最大的設計特點,對于提升整個系統的性能、可靠性和穩定性都有著決定性的意義。客戶端可通過原生Gluster協議訪問數據,對于不支持運行Gluster客戶端(如Windows系統)的節點可采用NFS/CIFS標準協議通過存儲網關訪問存儲系統。
存儲服務器主要提供基本的數據存儲功能,數據通過彈性哈希算法分布在不同的存儲服務器上。存儲服務器運行Gluster的后臺服務進程,負責處理來自客戶端的數據服務請求。數據以原始格式直接存儲在服務器的本地文件系統上,如EXT3、EXT4、XFS、ZFS等,運行服務時指定數據存儲路徑。
在客戶端方面,由于沒有元數據服務器,客戶端需要實現數據卷管理、I/O調度、文件定位、數據緩存等功能。客戶端利用FUSE(File system in UserSpace)模塊將Gluster掛載到本地文件系統之上,以POSIX兼容的方式來訪問系統數據。Gluster客戶端的負載相對傳統分布式文件系統要高,包括CPU占用率和內存占用。
Gluster存儲網關提供彈性卷管理和NFS/CIFS訪問代理功能。卷管理器負責邏輯卷的創建、刪除、容量擴展與縮減、容量平滑等功能,并負責向客戶端提供邏輯卷信息及主動更新通知功能等。對于Windows客戶端或沒有安裝Gluster的客戶端,需要通過NFS/CIFS代理網關來訪問,這時網關被配置成NFS或Samba服務器。
2.2彈性哈希算法
對于基于中心的分布式系統而言,元數據處理是決定系統擴展性、性能以及穩定性的關鍵。大多數傳統分布式存儲系統通過使用一個中央元數據服務器來解決這個問題。它是一個集中的服務器,里面包含的所有文件的名稱和相關的物理位置,但這樣系統可能有兩方面的問題。
1)性能瓶頸:元數據服務器成為性能瓶頸。數據在任意時間被以任何方式被存取時,元數據都必須同步更新記錄信息。由于文件和文件操作的增加,集中式的元數據系統可能成為性能瓶頸。
2)單點故障:這可能是一個更為嚴重的問題,即集中式元數據服務器成為單點故障。如果元數據服務器離線或被破壞,所有操作基本上就會停止。
另一種方法是放棄集中元數據服務器,而采用分布式元數據的方法,即引入多個元數據服務器,形成一個元數據服務器集群。這種方法雖然克服了集中式元數據存儲的缺點,但它又引入了新的性能和可用性問題。因為元數據服務器之間通過使用各種鎖和同步機制來保持數據同步時,帶來了大量的性能開銷,還面臨著元數據未能正確保持同步或被損壞時,導致多個實例之間不再完全一致的風險隋況。
因為將元數據和數據分離的存儲系統都面臨著性能和可靠性問題,Gluster另辟蹊徑,不再將元數據從數據中分離,而通過彈性哈希算法尋址數據,它是Gluster許多獨特的優勢的關鍵。Gluster中數據訪問流程如下:
1)以文件路徑和文件名作為輸入參數,計算Hash值。
2)根據Hash值在集群中選擇子卷(存儲服務器),進行文件定位。
3)對所選擇的子卷進行數據訪問。
通過使用彈性哈希算法,使得Gluster的每次文件存取操作更快和更可靠,因為使用算法計算元數據在速度上超過任何從存儲介質檢索元數據的速度,也不存在對任何單一的元數據存儲節點的訪問瓶頸了,因為每個節點都是獨立的,無需同步元數據,實現了真正的分布式部署的線性擴展。
Gluster的彈性哈希算法的采用的是DaviesMeyer算法,將一個給定的路徑/文件名作為算法的輸入,然后得到唯一的定長輸出值。Davies-Meyer算法具有良好的平均分布特性,計算效率很高。假設邏輯卷中的存儲節點有N個,則輸出值的整數空間被平均劃分為N個連續子空間,每個空間分別映射到一個存儲節點。這樣,計算得到的Hash值就會被投射到一個存儲節點,即選擇的子卷。
然而在具體產品實現中需要考慮到現實中可能發生的各種情況,比如磁盤故障、容量耗盡、文件需要重新分配等,所以彈性哈希算法還需要適應添加或刪除物理磁盤、個別磁盤訪問頻率過高等問題,從而使系統具備彈性線性擴展的特點。Gluster通過以下方法來解決:
1)設置了一個非常大數目的虛擬卷。
2)使用哈希算法分配文件給虛擬卷。
3)使用一個單獨的進程來分配虛擬卷到多個物理設備。
因此,添加或刪除磁盤或節點時,算法本身并不需要改變,只是將虛擬卷重新遷移或分配到新的物理卷。這樣負載波動或性能調優時,存儲服務器可以動態添加或刪除,數據自動在整個存儲系統的服務器中重新平衡。
如果文件重命名或移動文件,彈性哈希算法顯然會計算出一個不同的值,這會導致文件被定位到一個不同的邏輯卷。因為文件可能很大,改寫并移動文件通常不是一個實時操作。為解決這個問題,在文件被重新命名時,Gluster會創建一個指向原邏輯卷的指針。用戶通過新文件名計算出邏輯卷位置時,系統會通過指針將文件重定向到以前邏輯卷的位置。在后臺進程完成文件的遷移后,指針被移除。類似地,如果文件需要移動或重新分配(例如,如果磁盤因為訪問頻率過高或性能在下降),前臺實時發布遷移操作指令,物理數據遷移置于后臺選擇適當時機執行。
2. 3系統特點
(1)彈性存儲
彈性存儲的概念,是指能夠靈活地適應數據的增長(或減少),在不中斷系統的情況下按需對存儲池中的資源做添加或刪除。Gluster設計目標之一就是彈性,它允許動態增刪數據卷、擴展或縮減數據卷、增刪存儲服務器等,而不影響任何正在運行的業務。最新Gluster版本已具有良好的彈性,能夠滿足對存儲系統彈性要求高的應用需求,尤其是對云存儲服務系統。
(2)線性橫向擴展
存儲系統的擴展能力分為縱向擴展(Scale-Up)和橫向擴展(Scale-Out)。縱向擴展指提高單個節點的存儲容量或性能,但存在理論上或物理上的各種限制,不能無限制的增長。橫向擴展指通過增加存儲節點來提升整個系統的容量或性能,這是最主要的存儲擴展機制,目前大多分布式文件系統都具備橫向擴展能力。
但要真正實現線性擴展對于存儲系統而言是非常困難的,通常系統規模擴展與性能提升之間是LOG對數曲線關系,因為規模的擴展同時會產生開銷而消耗了部分性能的提升。Cluster是真正線性橫向擴展架構,它通過橫向擴展存儲節點即可以獲得線性的存儲容量和性能的提升。Cluster利用3種基本技術來獲得線性橫向擴展能力:①消除元數據節點;②高效數據分布,獲得擴展性和可靠性;③通過完全分布式架構的并行化獲得性能的最大化。
Cluster通過綜合縱向擴展和橫向擴展技術,獲得了多維擴展能力,能夠將更多磁盤、內存、I/O資源聚集成更大容量、更高性能的虛擬存儲池。
3 結語
通過先進的架構設計,Cluster在大幅降低構建和維護成本的基礎上,能夠提供具有高擴展性、高性能、高可用性的彈性存儲系統。通過使用彈性的哈希算法完全消除元數據的特點,使Cluster的具有突出的適應能力,這極大地降低了數據丟失、損壞或變得不可用的風險。
目前,Gluster正處于快速發展的過程中,無中心的架構使它具有天然的獨特優勢,現在己有基于它推出商業化的存儲系統,因此Cluster是一個有著廣闊前景的集群文件系統,特別適合于構建云存儲系統。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.lukmueng.com/
本文標題:一種無中心的云存儲架構分析