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