Glusterfs支持七種Volume,即Distribute卷、Stripe卷、Replica卷、Distribute stripe卷和Distribute replica卷,Distribute Stripe, Replica Volume卷這七種卷能夠知足不一樣應用對高性能、高可用的需求。php
基本卷:linux
(1) distribute volume:分佈式卷算法
(2) stripe volume:條帶卷服務器
(3) replica volume:複製卷網絡
複合卷:併發
(4) distribute stripe volume:分佈式條帶卷分佈式
(5) distribute replica volume:分佈式複製卷ide
(6) stripe replica volume:條帶複製卷高併發
(7) distribute stripe replicavolume:分佈式條帶複製卷工具
數據分佈:
1、Distributed volume
2、Stripe volume
3、Replicated volume
4、distribute stripe volume
5、distribute replica volume
6、stripe replica volume
7、distribute stripe replica volume
基本卷:
(1) distribute volume:分佈式卷
文件經過hash算法分佈到全部brick server上,這種卷是glusterfs的基礎和最大特色;實只是擴大的磁盤空間,若是有一個磁盤壞了,對應的數據也丟失,文件級RAID 0,不具備容錯能力。
(2) stripe volume:條帶卷
相似RAID0,文件分紅數據塊以Round Robin方式分佈到brick server上,併發粒度是數據塊,支持超大文件,大文件性能高;
(3) replica volume:複製卷
文件同步複製到多個brick上,文件級RAID 1,具備容錯能力,寫性能降低,讀性能提高。
複合卷:
(4) distribute stripe volume:分佈式條帶卷
brickserver數量是條帶數的倍數,兼具distribute和stripe卷的特色;
(5) distribute replica volume:分佈式複製卷
brickserver數量是鏡像數的倍數,兼具distribute和replica卷的特色,能夠在2個或多個節點之間複製數據。
(6) stripe replica volume:條帶複製卷
相似RAID 10
同時具備條帶卷和複製卷的特色
(7) distribute stripe replicavolume:分佈式條帶複製卷
三種基本卷的複合卷
一般用於類Map Reduce應用
1、Distributed volume
在該模式下,並無對文件進行分塊處理,文件直接存儲在某個server節點上。「沒有從新發明輪子」,這句話很好的歸納了這種GlusterFS的設計思路。由於使用了已有的本地文件系統進行存儲文件,因此通用的不少linux命令和工具能夠繼續正常使用。這使得GlusterFS能夠在一個比較穩定的基礎上發展起來,也更容易爲人們所接受。由於須要使用到擴展文件屬性,因此其目前支持的底層文件系統有:ext三、ext四、ZFS、XFS等。
因爲使用本地文件系統,一方面,存取效率並無什麼沒有提升,反而會由於網絡通訊的緣由而有所下降;另外一方面,支持超大型文件會有必定的難度。雖然ext4已經能夠支持最大16T的單個文件,可是本地存儲設備的容量實在有限。因此若是有大量的大文件存儲需求,能夠考慮使用Stripe模式來實現,如考慮新建專門存儲超大型文件的stripe卷。
功能:
將文件存放在服務器裏,如上圖,File1和File2存放在server1,而File3存放在server2,文件都是隨機存儲
2、Stripe volume
其實Stripe模式至關於raid0,在該模式下,系統只是簡單地根據偏移量將文件分紅N塊(N個stripe節點時),而後發送到每一個server節點。server節點把每一塊都做爲普通文件存入本地文件系統中,並用擴展屬性記錄了總的塊數(stripe-count)和每一塊的序號(stripe-index)。stripe數必須等於volume中brick所包含的存儲服務器數,文件被分紅數據塊,以Round Robin的方式存儲在bricks中,併發粒度是數據塊,大文件性能好
功能:
將文件存放在不一樣服務器裏,如上圖,File被分割爲6段,一、三、5放在server1,二、四、6放在server2
3、Replicated volume
Replicated模式,也稱做AFR(AutoFile Replication),至關於raid1,即同一文件在多個鏡像存儲節點上保存多份,每一個replicated子節點有着相同的目錄結構和文件。replicated模式通常不會單獨使用,常常是以「Distribute+ Replicated」或「Stripe+ Replicated」的形式出現的。若是兩臺機的存儲容量不一樣,那麼就如木桶效應,系統的存儲容量由容量小的機器決定。replica數必須等於volume中brick所包含的存儲服務器數,可用性高。建立一個兩兩互爲備份的卷,存儲池中一塊硬盤損壞,不會影響到數據的使用,最少須要兩臺服務器才能建立分佈鏡像卷。
Replicated模式是在文件的級別上進行的(相比較於HDFS),並且在建立卷volume時就肯定每一個server節點的職責,並且只能人工的進行調整。這樣的話就相對的不靈活,若是一個節點A出了問題,就必定要用新的節點去替代A,不然就會出現一些問題隱患。
在Replicated模式下,每一個文件會有以下幾個擴展屬性:
讀寫數據時,具體的狀況以下:
讀數據時:系統會將請求均衡負載到全部的鏡像存儲節點上,在文件被訪問時同時就會觸發self-heal機制,這時系統會檢測副本的一致性(包括目錄、文件內容、文件屬性等)。若不一致則會經過changelog找到正確版本,進而修復文件或目錄屬性,以保證一致性。
寫數據時:以第一臺服務器做爲鎖服務器,先鎖定目錄或文件,寫changelog記錄該事件,再在每一個鏡像節點上寫入數據,確保一致性後,擦除changelog記錄,解開鎖。
若是互爲鏡像的多個節點中有一個鏡像節點出現了問題,用戶的讀/寫請求均可以正常的進行,並不會受到影響。而問題節點被替換後,系統會自動在後臺進行同步數據來保證副本的一致性。可是系統並不會自動地需找另外一個節點來替代它,而是須要經過人工新增節點來進行,因此管理員必須及時地去發現這些問題,否則可靠性就很難保證。
功能:
將文件存放在服務器裏,如上圖,File1同時存在server1和server2,File2也是如此,至關於server2中的文件是server1中文件的副本。
4、distribute stripe volume
分佈式的條帶卷,volume中brick所包含的存儲服務器數必須是stripe的倍數(>=2倍),兼顧分佈式和條帶式的功能。每一個文件分佈在四臺共享服務器上,一般用於大文件訪問處理,最少須要 4 臺服務器才能建立分佈條帶卷。
功能:
將文件存到不一樣服務器裏,如上圖,File被分割成4段,一、3在server1(exp1)中,二、4在server1(exp2)中。server2(exp3)一、3存放server1(exp1)中的備份文件,server2(exp4)二、4存放server1(exp2)中的備份文件。
5、distribute replica volume
分佈式的複製卷,volume中brick所包含的存儲服務器數必須是 replica 的倍數(>=2倍),兼顧分佈式和複製式的功能。
功能:
將文件備份隨機存放在服務器裏,如上圖,server1(exp1)存放File1文件,Server1(exp2)存放File2文件。server2(exp3)存放File1的備份文件,server2(exp4)存放File2的備份文件。
6、stripe replica volume
功能:
將文件分割並備份隨機存放在不一樣的服務器裏,如上圖,File被分割4段,一、3存放在server1(exp1)上,二、4存放在server2(exp4),server1上的(exp3)存放server2(exp4)的備份文件,server2上的(exp2)存放server1(exp1)的備份文件。
7、distribute stripe replica volume
分佈式條帶複製卷分佈條帶數據在複製卷集羣。爲了得到最佳效果,你應該使用分佈在高併發的條帶複製卷環境下並行訪問很是大的文件和性能是相當重要的。
功能:
將文件分割並備份隨機存放在不一樣服務器裏,如上圖,File被分割成4段,一、3存放在server1(exp1)中,二、4存放在server2(exp3)中。server1(exp2)存放server1(exp1)的備份文件,server2(exp4)存放server2(exp3)的備份文件。
參考資料:
http://www.gluster.com/products/gluster-file-system-architecture-white-paper/
http://www.gluster.com/products/performance-in-a-gluster-system-white-paper/
http://gluster.com/community/documentation/index.php/Main_Page
http://blog.csdn.net/liuaigui/