GlusterFs卷類型分析及建立、使用(結合kubernetes集羣分析)

引言

本文經過對卷類型的分析對比,來幫助讀者選取生產環境最符合服務的掛載存儲,命令可結合《glusterfs詳解及kubernetes 搭建heketi-glusterfs》進行實驗,下面進入正題html

幾種卷類型

  • 基礎卷:布式卷(distribute)、條帶卷(stripe)、複製卷(replica)、糾錯卷(Dispersed )
  • 複合卷:分佈式條帶卷(distribute stripe)、分佈式複製卷(distribute replica)、條帶複製卷(stripe replica)、分佈式條帶複製卷(distribute stripe)

1、基礎卷

如下建立掛載卷,都可經過如下命令進行查看、啓用、中止、刪除node

#查看已建立掛載卷
gluster volume info
#啓動掛載卷
gluster volume start gv0
#刪除前,先中止掛載卷
gluster volume stop gv0
#刪除掛載卷
gluster volume delete gv0

1. 布式卷(distribute voulme)

分佈式模式,既DHT,是GlusterFS的默認模式,在建立卷時,默認選項是建立分佈式卷。在該模式下,並無對文件進行分塊處理,而是經過hash算法分佈到全部brick server上,只是擴大了磁盤空間,相似window中的跨區卷linux

distribute voulme特色算法

  • 文件分佈在不一樣的服務器,不具有冗餘性。
  • 更容易且廉價地擴展卷的大小。
  • 單點故障會形成數據丟失,不具有容錯性。
  • 依賴底層的數據保護。
1.1. 建立命令
gluster volume create gv0 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0

2. 條帶卷(stripe volume)

條帶模式,既Striped,相似RADI 0,在該模式下,根據偏移量將文件分紅N塊(N個條帶節點),輪詢地存儲在每一個Brick Server節點。節點把每一個數據塊都做爲普通文件存入本地文件系統,經過擴展屬性記錄總塊數和每塊的序號。在配置時指定條帶數必須等於卷中Brick 所包含的存儲服務器數,在存儲大文件時,性能尤其突出,可是不具有冗餘性。安全

stripe volume特色服務器

  • 數據被分割成更小塊分佈到塊服務器羣中的不一樣條帶區。
  • 分佈減小了負載且更小的文件加速了存取的速度。
  • 沒有數據冗餘,不具有冗餘性。
  • 單點故障會形成數據丟失,不具有容錯性。網絡

    ⚠️RAID0稱爲條帶化存儲,將數據分段存儲在各個磁盤中,讀寫都可以並行處理,所以讀寫速率爲單個磁盤的N倍,沒有冗餘功能,任何一個磁盤的損壞就會致使的數據不可用。併發

    RAID 0的特色:
    • 數據條帶式分佈
    • 沒有冗餘,性能最佳(不存儲鏡像、校驗信息)
    • 不能應用於對數據安全性要求高的場合
2.1. 建立命令
gluster volume create gv0 stripe 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0

3. 複製卷(replica volme)

複製模式,既AFR,文件級別RAID 1,即同一文件保存一份或多份副本,每一個節點上保存相同的內容和目錄結構。複製模式由於要保存副本,因此磁盤利用率較低,若是多個節點上的存儲空間不一致,那麼將按照木桶效應取最低節點的容量做爲該卷的總容量。複製卷具備冗餘性,即便一個節點損壞,也不影響數據的正常使用。分佈式

replica volme特色ide

  • 卷中全部的服務器均保存一個完整的副本。
  • 卷的副本數量可由客戶建立的時候決定。
  • 磁盤利用率低。
  • 具有冗餘性

    RADI1是鏡像存儲,沒有數據校驗,數據被同等的寫入到2個或者多個磁盤中。

    RAID 1的特色:
    • 提供數據塊冗餘
    • 寫入速度相對慢, 可是讀取速度比較快
3.1. 建立命令
gluster volume create gv0 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0

4. 糾錯卷

Dispersed Volume是基於ErasureCodes(糾錯碼)的一種新類型的Volume(3.6版本正式發佈該特性),相似於RAID5/6。經過配置Redundancy(冗餘)級別提升可靠性,在保證較高的可靠性同時,能夠提高物理存儲空間的利用率。
詳細請查看《GlusterFS Dispersed Volume(糾錯卷)總結

4.1. 建立命令
gluster volume create gv1 disperse 4 redundancy 1 10.8.4.92:/var/lib/heketi/mounts/gv1 10.8.4.93:/var/lib/heketi/mounts/gv1 10.8.4.131:/var/lib/heketi/mounts/gv1 10.8.4.132:/var/lib/heketi/mounts/gv1

2、複合卷

1. 分佈式條帶卷(distribute stripe volume)

最少須要4臺服務器才能建立。 brickserver數量是條帶數的倍數,兼具distribute和stripe卷的特色,是DHT 與 Striped 的組合型。

1.1. 建立命令
gluster volume create gv0 stripe 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0

2. 分佈式複製卷(distribute replica volume)

最少須要4臺服務器才能建立。brickserver數量是鏡像數的倍數,兼具distribute和replica卷的特色,能夠在2個或多個節點之間複製數據,是DHT 與 AFR 的組合型。

2.1. 建立命令
gluster volume create gv0  replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0

3. 條帶複製卷(stripe replica volume)

最少須要4臺服務器才能建立。相似RAID 10,是 Striped 與 AFR 的組合型。

先組成RAID1,而後組成RAID0

RAID 10(又叫RAID 1+0)特色:

  • 先按RAID 0分紅兩組,再分別對兩組按RAID 1方式鏡像
  • 兼顧冗餘(提供鏡像存儲)和性能(數據條帶形分佈)
3.1. 建立命令
gluster volume create gv0 stripe 2 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0

4. 分佈式條帶複製卷(distribute stripe volume)

至少須要8臺 服務器才能建立。三種模式的混合。

4.1. 建立命令
gluster volume create gv0 stripe 2 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0 exampleNode5:/var/lib/heketi/mounts/gv0 exampleNode6:/var/lib/heketi/mounts/gv0 exampleNode7:/var/lib/heketi/mounts/gv0 exampleNode8:/var/lib/heketi/mounts/gv0

3、結合集羣對比優缺點

1.結合《glusterfs詳解及kubernetes 搭建heketi-glusterfs》一文講解

1.1. 複製卷:volumetype: replicate:3

概述:

  • 單個節點或硬盤掛損,不影響存儲使用,數據不會丟失
  • 對於kubernetes的StatefulSet類型服務,如es這種自己具備數據同步功能的服務,雖然達到了自動建設volume目的,可是一份數據備份了node數量x複製卷的Brick1數,得不償失。

1.2. 分佈式卷:volumetype: none

概述:

  • 對於能夠同步數據的高可用服務,推薦此卷。
  • 對於普通服務(Deploy),此類型沒有容錯性和冗餘數據。
  • 方便擴展磁盤空間

1.3. 糾錯卷:volumetype: disperse:4:2

概述:

  • 對於普通服務(Deploy),此類型具有了高可用,並且提高了存儲空間利用率,推薦使用。

2. 關於手動建立volume、PV,概述

Gluster:Quick Start Guide
請按照官網搭建,很簡單,便再也不贅述。

主要步驟:

  • 建立羅磁盤
  • 磁盤分區
  • 磁盤掛載
  • glusterd peer probe server2新增gluster pool節點
  • gluster建立volume

 對於重要的數據存儲,kubernetes提供的三種存儲方式不能知足,可手動建立volume、PV。做者更趨向條帶複製卷(stripe replica volume),一般狀況用分佈式條帶複製卷(distribute stripe volume)較多。

⚠️整理分析不易,對您若是有幫助,關注做者,留下你的喜歡,後續還有技術乾料!!!

4、數據分佈

如下內容引自《GlusterFS卷類型及數據分佈分析》,能夠直接在本文閱讀或跳轉閱讀

1. Distributed volume

在該模式下,並無對文件進行分塊處理,文件直接存儲在某個server節點上。「沒有從新發明輪子」,這句話很好的歸納了這種GlusterFS的設計思路。由於使用了已有的本地文件系統進行存儲文件,因此通用的不少linux命令和工具能夠繼續正常使用。這使得GlusterFS能夠在一個比較穩定的基礎上發展起來,也更容易爲人們所接受。由於須要使用到擴展文件屬性,因此其目前支持的底層文件系統有:ext三、ext四、ZFS、XFS等。

因爲使用本地文件系統,一方面,存取效率並無什麼沒有提升,反而會由於網絡通訊的緣由而有所下降;另外一方面,支持超大型文件會有必定的難度。雖然ext4已經能夠支持最大16T的單個文件,可是本地存儲設備的容量實在有限。因此若是有大量的大文件存儲需求,能夠考慮使用Stripe模式來實現,如考慮新建專門存儲超大型文件的stripe卷。
Distributed volume
功能:
將文件存放在服務器裏,如上圖,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中,併發粒度是數據塊,大文件性能好

Stripe volume
功能:
將文件存放在不一樣服務器裏,如上圖,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記錄,解開鎖。

若是互爲鏡像的多個節點中有一個鏡像節點出現了問題,用戶的讀/寫請求均可以正常的進行,並不會受到影響。而問題節點被替換後,系統會自動在後臺進行同步數據來保證副本的一致性。可是系統並不會自動地需找另外一個節點來替代它,而是須要經過人工新增節點來進行,因此管理員必須及時地去發現這些問題,否則可靠性就很難保證。
Replicated volume
功能:
將文件存放在服務器裏,如上圖,File1同時存在server1和server2,File2也是如此,至關於server2中的文件是server1中文件的副本。

4. distribute stripe volume

分佈式的條帶卷,volume中brick所包含的存儲服務器數必須是stripe的倍數(>=2倍),兼顧分佈式和條帶式的功能。每一個文件分佈在四臺共享服務器上,一般用於大文件訪問處理,最少須要 4 臺服務器才能建立分佈條帶卷。
distribute stripe volume
功能:
將文件存到不一樣服務器裏,如上圖,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倍),兼顧分佈式和複製式的功能。
distribute replica volume
功能:
將文件備份隨機存放在服務器裏,如上圖,server1(exp1)存放File1文件,Server1(exp2)存放File2文件。server2(exp3)存放File1的備份文件,server2(exp4)存放File2的備份文件。

6. stripe replica volume

stripe replica volume
功能:
將文件分割並備份隨機存放在不一樣的服務器裏,如上圖,File被分割4段,一、3存放在server1(exp1)上,二、4存放在server2(exp4),server1上的(exp3)存放server2(exp4)的備份文件,server2上的(exp2)存放server1(exp1)的備份文件。

7. distribute stripe replica volume

分佈式條帶複製卷分佈條帶數據在複製卷集羣。爲了得到最佳效果,你應該使用分佈在高併發的條帶複製卷環境下並行訪問很是大的文件和性能是相當重要的。
distribute stripe replica volume
功能: 將文件分割並備份隨機存放在不一樣服務器裏,如上圖,File被分割成4段,一、3存放在server1(exp1)中,二、4存放在server2(exp3)中。server1(exp2)存放server1(exp1)的備份文件,server2(exp4)存放server2(exp3)的備份文件。

相關文章
相關標籤/搜索