1. 程式人生 > 其它 >GFS 分散式檔案系統

GFS 分散式檔案系統

一、GlusterFS 概述 1.GlusterFS簡介
  • GlusterFS 是一個開源的分散式檔案系統。
由儲存伺服器、客戶端以及NFS/Samba 儲存閘道器(可選,根據需要選擇使用)組成。 沒有元資料伺服器元件,這有助於提升整個系統的效能、可靠性和穩定性。
  • MFS
傳統的分散式檔案系統大多通過元伺服器來儲存元資料,元資料包含儲存節點上的目錄資訊、目錄結構等。這樣的設計在瀏覽目錄時效率高,但是也存在一些缺陷,例如單點故障。一旦元資料伺服器出現故障,即使節點具備再高的冗餘性,整個儲存系統也將崩潰。而 GlusterFS 分散式檔案系統是基於無元伺服器的設計,資料橫向擴充套件能力強,具備較高的可靠性及儲存效率。   GlusterFS同時也是Scale-Out(橫向擴充套件)儲存解決方案Gluster的核心,在儲存資料方面具有強大的橫向擴充套件能力,通過擴充套件能夠支援數PB儲存容量和處理數千客戶端。   GlusterFS支援藉助TCP/IP或InfiniBandRDMA網路(一種支援多併發連結的技術,具有高頻寬、低時延、高擴充套件性的特點)將物理分散分佈的儲存資源匯聚在一起,統一提供儲存服務,並使用統一全域性名稱空間來管理資料。 2.GlusterFS特點
  • 擴充套件性和高效能
  GlusterFS利用雙重特性來提供高容量儲存解決方案。   (1)Scale-Out架構允許通過簡單地增加儲存節點的方式來提高儲存容量和效能(磁碟、計算和I/O資源都可以獨立增加),支援10GbE和 InfiniBand等高速網路互聯。   (2)Gluster彈性雜湊(ElasticHash)解決了GlusterFS對元資料伺服器的依賴,改善了單點故障和效能瓶頸,真正實現了並行化資料訪問。GlusterFS採用彈性雜湊演算法在儲存池中可以智慧地定位任意資料分片(將資料分片儲存在不同節點上),不需要檢視索引或者向元資料伺服器查詢。
  • 高可用性
  GlusterFS可以對檔案進行自動複製,如映象或多次複製,從而確保資料總是可以訪問,甚至是在硬體故障的情況下也能正常訪問。   當資料出現不一致時,自我修復功能能夠把資料恢復到正確的狀態,資料的修復是以增量的方式在後臺執行,幾乎不會產生效能負載。   GlusterFS可以支援所有的儲存,因為它沒有設計自己的私有資料檔案格式,而是採用作業系統中主流標準的磁碟檔案系統(如EXT3、XFS等)來儲存檔案,因此資料可以使用傳統訪問磁碟的方式被訪問。
  • 全域性統一名稱空間
  分散式儲存中,將所有節點的名稱空間整合為統一名稱空間,將整個系統的所有節點的儲存容量組成一個大的虛擬儲存池,供前端主機訪問這些節點完成資料讀寫操作。
  • 彈性卷管理
  GlusterFS通過將資料儲存在邏輯卷中,邏輯卷從邏輯儲存池進行獨立邏輯劃分而得到。   邏輯儲存池可以線上進行增加和移除,不會導致業務中斷。邏輯卷可以根據需求線上增長和縮減,並可以在多個節點中實現負載均衡。   檔案系統配置也可以實時線上進行更改並應用,從而可以適應工作負載條件變化或線上效能調優。
  • 基於標準協議
  Gluster 儲存服務支援 NFS、CIFS、HTTP、FTP、SMB 及 Gluster原生協議,完全與 POSIX 標準(可移植作業系統介面)相容。   現有應用程式不需要做任何修改就可以對Gluster 中的資料進行訪問,也可以使用專用 API 進行訪問。 3.GlusterFS 術語
  • Brick(儲存塊):
  指可信主機池中由主機提供的用於物理儲存的專用分割槽,是GlusterFS中的基本儲存單元,同時也是可信儲存池中伺服器上對外提供的儲存目錄。   儲存目錄的格式由伺服器和目錄的絕對路徑構成,表示方法為 SERVER:EXPORT,如 192.168.80.10:/data/mydir/。
  • Volume(邏輯卷):
  一個邏輯卷是一組 Brick 的集合。卷是資料儲存的邏輯裝置,類似於 LVM 中的邏輯卷。大部分 Gluster 管理操作是在捲上進行的。
  • FUSE:
  是一個核心模組,允許使用者建立自己的檔案系統,無須修改核心程式碼。
  • VFS:
  核心空間對使用者空間提供的訪問磁碟的介面。
  • Glusterd(後臺管理程序):
  在儲存群集中的每個節點上都要執行。 4.模組化堆疊式架構   GlusterFS 採用模組化、堆疊式的架構。   通過對模組進行各種組合,即可實現複雜的功能。例如 Replicate 模組可實現 RAID1,Stripe 模組可實現 RAID0, 通過兩者的組合可實現 RAID10 和 RAID01,同時獲得更高的效能及可靠性。 5.GlusterFS 的工作流程   (1)客戶端或應用程式通過 GlusterFS 的掛載點訪問資料。   (2)linux系統核心通過 VFS API 收到請求並處理。   (3)VFS 將資料遞交給 FUSE 核心檔案系統,並向系統註冊一個實際的檔案系統 FUSE,而 FUSE 檔案系統則是將資料通過 /dev/fuse 裝置檔案遞交給了 GlusterFS client 端。可以將 FUSE 檔案系統理解為一個代理。   (4)GlusterFS client 收到資料後,client 根據配置檔案的配置對資料進行處理。   (5)經過 GlusterFS client 處理後,通過網路將資料傳遞至遠端的 GlusterFS Server,並且將資料寫入到伺服器儲存裝置上。 6.彈性 HASH 演算法   彈性 HASH 演算法是 Davies-Meyer 演算法的具體實現,通過 HASH 演算法可以得到一個 32 位的整數範圍的 hash 值,   假設邏輯卷中有 N 個儲存單位 Brick,則 32 位的整數範圍將被劃分為 N 個連續的子空間,每個空間對應一個 Brick。   當用戶或應用程式訪問某一個名稱空間時,通過對該名稱空間計算 HASH 值,根據該 HASH 值所對應的 32 位整數空間定位資料所在的 Brick。   #彈性 HASH 演算法的優點:     保證資料平均分佈在每一個 Brick 中。     解決了對元資料伺服器的依賴,進而解決了單點故障以及訪問瓶頸。 7.GlusterFS的卷型別   GlusterFS 支援七種卷,即分散式卷、條帶卷、複製卷、分散式條帶卷、分散式複製卷、條帶複製卷和分散式條帶複製卷。
  • 分散式卷(Distribute volume):
    檔案通過 HASH 演算法分佈到所有 Brick Server 上,這種卷是 GlusterFS 的預設卷;以檔案為單位根據 HASH 演算法雜湊到不同的 Brick,其實只是擴大了磁碟空間,如果有一塊磁碟損壞,資料也將丟失,屬於檔案級的 RAID0, 不具有容錯能力。     在該模式下,並沒有對檔案進行分塊處理,檔案直接儲存在某個 Server 節點上。 由於直接使用本地檔案系統進行檔案儲存,所以存取效率並沒有提高,反而會因為網路通訊的原因而有所降低。     #示例原理:     File1 和 File2 存放在 Server1,而 File3 存放在 Server2,檔案都是隨機儲存,一個檔案(如 File1)要麼在 Server1 上,要麼在 Server2 上,不能分塊同時存放在 Server1和 Server2 上。     #分散式卷具有如下特點:

    檔案分佈在不同的伺服器,不具備冗餘性。

    更容易和廉價地擴展卷的大小。     單點故障會造成資料丟失。     依賴底層的資料保護。     #建立一個名為dis-volume的分散式卷,檔案將根據HASH分佈在server1:/dir1、server2:/dir2和server3:/dir3中     gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3
  • 條帶卷(Stripe volume):
    類似 RAID0,檔案被分成資料塊並以輪詢的方式分佈到多個 Brick Server 上,檔案儲存以資料塊為單位,支援大檔案儲存, 檔案越大,讀取效率越高,但是不具備冗餘性。     #示例原理:     File 被分割為 6 段,1、3、5 放在 Server1,2、4、6 放在 Server2。     #條帶卷特點:     資料被分割成更小塊分佈到塊伺服器群中的不同條帶區。     分佈減少了負載且更小的檔案加速了存取的速度。     沒有資料冗餘。     #建立了一個名為stripe-volume的條帶卷,檔案將被分塊輪詢的儲存在Server1:/dir1和Server2:/dir2兩個Brick中     gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
  • 複製卷(Replica volume):
    將檔案同步到多個 Brick 上,使其具備多個檔案副本,屬於檔案級 RAID 1,具有容錯能力。因為資料分散在多個 Brick 中,所以讀效能得到很大提升,但寫效能下降。     複製卷具備冗餘性,即使一個節點損壞,也不影響資料的正常使用。但因為要儲存副本,所以磁碟利用率較低。     #示例原理:     File1 同時存在 Server1 和 Server2,File2 也是如此,相當於 Server2 中的檔案是 Server1 中檔案的副本。     #複製卷特點:     卷中所有的伺服器均儲存一個完整的副本。     卷的副本數量可由客戶建立的時候決定,但複製數必須等於卷中 Brick 所包含的儲存伺服器數。     至少由兩個塊伺服器或更多伺服器。     具備冗餘性。     #建立名為rep-volume的複製卷,檔案將同時儲存兩個副本,分別在Server1:/dir1和Server2:/dir2兩個Brick中     gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
  • 分散式條帶卷(Distribute Stripe volume):
    Brick Server 數量是條帶數(資料塊分佈的 Brick 數量)的倍數,兼具分散式卷和條帶卷的特點。 主要用於大檔案訪問處理,建立一個分散式條帶卷最少需要 4 臺伺服器。     #示例原理:     File1 和 File2 通過分散式卷的功能分別定位到Server1和 Server2。在 Server1 中,File1 被分割成 4 段,其中 1、3 在 Server1 中的 exp1 目錄中,2、4 在 Server1 中的 exp2 目錄中。在 Server2 中,File2 也被分割成 4 段,其中 1、3 在 Server2 中的 exp3 目錄中,2、4 在 Server2 中的 exp4 目錄中。     #建立一個名為dis-stripe的分散式條帶卷,配置分散式的條帶卷時,卷中Brick所包含的儲存伺服器數必須是條帶數的倍數(>=2倍)。Brick 的數量是 4(Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),條帶數為 2(stripe 2)     gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4     建立卷時,儲存伺服器的數量如果等於條帶或複製數,那麼建立的是條帶卷或者複製卷;如果儲存伺服器的數量是條帶或複製數的 2 倍甚至更多,那麼將建立的是分散式條帶卷或分散式複製卷。
  • 分散式複製卷(Distribute Replica volume):
    Brick Server 數量是映象數(資料副本數量)的倍數,兼具分散式卷和複製卷的特點。主要用於需要冗餘的情況下。     #示例原理:     File1 和 File2 通過分散式卷的功能分別定位到 Server1 和 Server2。在存放 File1 時,File1 根據複製卷的特性,將存在兩個相同的副本,分別是 Server1 中的exp1 目錄和 Server2 中的 exp2 目錄。在存放 File2 時,File2 根據複製卷的特性,也將存在兩個相同的副本,分別是 Server3 中的 exp3 目錄和 Server4 中的 exp4 目錄。     #建立一個名為dis-rep的分散式複製卷,配置分散式的複製卷時,卷中Brick所包含的儲存伺服器數必須是複製數的倍數(>=2倍)。Brick 的數量是 4(Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),複製數為 2(replica 2)     gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
  • 條帶複製卷(Stripe Replica volume):
    類似 RAID 10,同時具有條帶卷和複製卷的特點。
  • 分散式條帶複製卷(Distribute Stripe Replicavolume):
    三種基本卷的複合卷,通常用於類 Map Reduce 應用。 二、部署 GlusterFS 群集 Node1節點:node1/192.168.80.10 磁碟:/dev/sdb1 掛載點:/data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1 /dev/sde1 /data/sde1 Node2節點:node2/192.168.80.11 磁碟:/dev/sdb1 掛載點:/data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1 /dev/sde1 /data/sde1 Node3節點:node3/192.168.80.12 磁碟:/dev/sdb1 掛載點:/data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1 /dev/sde1 /data/sde1 Node4節點:node4/192.168.80.13 磁碟:/dev/sdb1 掛載點:/data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1 /dev/sde1 /data/sde1 客戶端節點:192.168.80.14 1.1 準備環境(所有node節點上操作) 1.關閉防火牆
systemctl stop firewalld
setenforce 0

2.磁碟分割槽,並掛載

vim /opt/fdisk.sh
#!/bin/bash
NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
for VAR in $NEWDEV
do
echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null
mkfs.xfs /dev/${VAR}"1" &> /dev/null
mkdir -p /data/${VAR}"1" &> /dev/null
echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/null
 
chmod +x /opt/fdisk.sh
cd /opt/
./fdisk.sh

3.修改主機名,配置/etc/hosts檔案

#以Node1節點為例:
hostnamectl set-hostname node1
su
 
echo "192.168.200.13 node1" >> /etc/hosts
echo "192.168.200.14 node2" >> /etc/hosts
echo "192.168.200.15 node3" >> /etc/hosts
echo "192.168.200.16 node4" >> /etc/hosts

3.1 安裝、啟動GlusterFS(所有node節點上操作)

#將gfsrepo 軟體上傳到/opt目錄下
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
 
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
 
yum clean all && yum makecache
 
#yum -y install centos-release-gluster #如採用官方 YUM 源安裝,可以直接指向網際網路倉庫
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
 
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service

3.2 新增節點到儲存信任池中(在 node1 節點上操作)

#只要在一臺Node節點上新增其它節點即可
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
 
#在每個Node節點上檢視群集狀態
gluster peer status

3.3 建立卷

#根據規劃建立如下卷:
卷名稱 卷型別 Brick
dis-volume 分散式卷 node1(/data/sdb1)、node2(/data/sdb1)
stripe-volume 條帶卷 node1(/data/sdc1)、node2(/data/sdc1)
rep-volume 複製卷 node3(/data/sdb1)、node4(/data/sdb1)
dis-stripe 分散式條帶卷 node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1)
dis-rep 分散式複製卷 node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1)
1.建立分散式卷
#建立分散式卷,沒有指定型別,預設建立的是分散式卷
gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
 
#檢視卷列表
gluster volume list
 
#啟動新建分散式卷
gluster volume start dis-volume
 
#檢視建立分散式卷資訊
gluster volume info dis-volume

2.建立條帶卷

#指定型別為 stripe,數值為 2,且後面跟了 2 個 Brick Server,所以建立的是條帶卷
gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
gluster volume start stripe-volume
gluster volume info stripe-volume

3.建立複製卷

#指定型別為 replica,數值為 2,且後面跟了 2 個 Brick Server,所以建立的是複製卷
gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
gluster volume start rep-volume
gluster volume info rep-volume

4.建立分散式條帶卷

#指定型別為 stripe,數值為 2,而且後面跟了 4 個 Brick Server,是 2 的兩倍,所以建立的是分散式條帶卷
gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
gluster volume start dis-stripe
gluster volume info dis-stripe

5.建立分散式複製卷

指定型別為 replica,數值為 2,而且後面跟了 4 個 Brick Server,是 2 的兩倍,所以建立的是分散式複製卷
gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
gluster volume start dis-rep
gluster volume info dis-rep
 
#檢視當前所有卷的列表
gluster volume list

----- 部署 Gluster 客戶端 -----

1.安裝客戶端軟體
#將gfsrepo 軟體上傳到/opt目下
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
 
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
 
yum clean all && yum makecache
 
yum -y install glusterfs glusterfs-fuse

2.建立掛載目錄

mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
ls /test

3.配置 /etc/hosts 檔案

echo "192.168.200.13 node1" >> /etc/hosts
echo "192.168.200.14 node2" >> /etc/hosts
echo "192.168.200.15 node3" >> /etc/hosts
echo "192.168.200.16 node4" >> /etc/hosts

4.掛載 Gluster 檔案系統

#臨時掛載
mount.glusterfs node1:dis-volume /test/dis
mount.glusterfs node1:stripe-volume /test/stripe
mount.glusterfs node1:rep-volume /test/rep
mount.glusterfs node1:dis-stripe /test/dis_stripe
mount.glusterfs node1:dis-rep /test/dis_rep
 
df -Th
 
#永久掛載
vim /etc/fstab
node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0
node1:stripe-volume /test/stripe glusterfs defaults,_netdev 0 0
node1:rep-volume /test/rep glusterfs defaults,_netdev 0 0
node1:dis-stripe /test/dis_stripe glusterfs defaults,_netdev 0 0
node1:dis-rep /test/dis_rep glusterfs defaults,_netdev 0 0

----- 測試 Gluster 檔案系統 -----

1.卷中寫入檔案,客戶端操作
cd /opt
dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
dd if=/dev/zero of=/opt/demo5.log bs=1M count=40

ls -lh /opt
 cp /opt/demo* /test/dis  cp /opt/demo* /test/stripe/  cp /opt/demo* /test/rep/  cp /opt/demo* /test/dis_stripe/  cp /opt/demo* /test/dis_rep/

2.檢視檔案分佈

#檢視分散式檔案分佈
[root@node1 ~]# ls -lh /data/sdb1 #資料沒有被分片
總用量 160M
-rw-r--r-- 2 root root 40M 12月 18 14:50 demo1.log
-rw-r--r-- 2 root root 40M 12月 18 14:50 demo2.log
-rw-r--r-- 2 root root 40M 12月 18 14:50 demo3.log
-rw-r--r-- 2 root root 40M 12月 18 14:50 demo4.log
[root@node2 ~]# ll -h /data/sdb1
總用量 40M
-rw-r--r-- 2 root root 40M 12月 18 14:50 demo5.log
 
#檢視條帶卷檔案分佈
[root@node1 ~]# ls -lh /data/sdc1 #資料被分片50% 沒副本 沒冗餘
總用量 101M
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo1.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo2.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo3.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo4.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo5.log
 
[root@node2 ~]# ll -h /data/sdc1 #資料被分片50% 沒副本 沒冗餘
總用量 101M
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo1.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo2.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo3.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo4.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo5.log
 
#檢視複製卷分佈
[root@node3 ~]# ll -h /data/sdb1 #資料沒有被分片 有副本 有冗餘
總用量 201M
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo1.log
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo2.log
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo3.log
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo4.log
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo5.log
 
[root@node4 ~]# ll -h /data/sdb1 #資料沒有被分片 有副本 有冗餘
總用量 201M
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo1.log
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo2.log
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo3.log
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo4.log
-rw-r--r-- 2 root root 40M 12月 18 14:51 demo5.log
 
#檢視分散式條帶卷分佈
[root@node1 ~]# ll -h /data/sdd1 #資料被分片50% 沒副本 沒冗餘
總用量 81M
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo1.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo2.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo3.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo4.log
 
[root@node2 ~]# ll -h /data/sdd1
總用量 81M
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo1.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo2.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo3.log
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo4.log
 
[root@node3 ~]# ll -h /data/sdd1
總用量 21M
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo5.log
 
[root@node4 ~]# ll -h /data/sdd1
總用量 21M
-rw-r--r-- 2 root root 20M 12月 18 14:51 demo5.log
 
#檢視分散式複製卷分佈 #資料沒有被分片 有副本 有冗餘
[root@node1 ~]# ll -h /data/sde1
總用量 161M
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo1.log
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo2.log
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo3.log
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo4.log
 
[root@node2 ~]# ll -h /data/sde1
總用量 161M
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo1.log
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo2.log
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo3.log
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo4.log
 
[root@node3 ~]# ll -h /data/sde1
總用量 41M
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo5.log
[root@node3 ~]#
 
[root@node4 ~]# ll -h /data/sde1
總用量 41M
-rw-r--r-- 2 root root 40M 12月 18 14:52 demo5.log

----- 破壞性測試 -----

#掛起 node2 節點或者關閉glusterd服務來模擬故障
[root@node2 ~]# systemctl stop glusterd.service
 
#在客戶端上檢視檔案是否正常
#分散式卷資料檢視
[root@localhost test]# ll /test/dis/ #在客戶機上發現少了demo5.log檔案,這個是在node2上的
總用量 163840
-rw-r--r-- 1 root root 41943040 12月 18 14:50 demo1.log
-rw-r--r-- 1 root root 41943040 12月 18 14:50 demo2.log
-rw-r--r-- 1 root root 41943040 12月 18 14:50 demo3.log
-rw-r--r-- 1 root root 41943040 12月 18 14:50 demo4.log
 
#條帶卷
[root@localhost test]# cd /test/stripe/ #無法訪問,條帶卷不具備冗餘性
[root@localhost stripe]# ll
總用量 0
 
#分散式條帶卷
[root@localhost test]# ll /test/dis_stripe/ #無法訪問,分佈條帶卷不具備冗餘性
總用量 40960
-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo5.log
 
#分散式複製卷
[root@localhost test]# ll /test/dis_rep/ #可以訪問,分散式複製卷具備冗餘性
總用量 204800
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo1.log
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo2.log
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo3.log
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo4.log
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo5.log
 
 
#掛起 node2 和 node4 節點,在客戶端上檢視檔案是否正常
#測試複製卷是否正常
[root@localhost rep]# ls -l /test/rep/ #在客戶機上測試正常 資料有
總用量 204800
-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo1.log
-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo2.log
-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo3.log
-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo4.log
-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo5.log
 
#測試分散式條卷是否正常
[root@localhost dis_stripe]# ll /test/dis_stripe/ #在客戶機上測試沒有資料
總用量 0
 
#測試分散式複製卷是否正常
[root@localhost dis_rep]# ll /test/dis_rep/ #在客戶機上測試正常 有資料
總用量 204800
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo1.log
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo2.log
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo3.log
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo4.log
-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo5.log

##### 上述實驗測試,凡是帶複製資料,相比而言,資料比較安全 #####

#其他的維護命令:

1.檢視GlusterFS卷 gluster volume list 2.檢視所有卷的資訊 gluster volume info 3.檢視所有卷的狀態 gluster volume status 4.停止一個卷 gluster volume stop dis-stripe 5.刪除一個卷,注意:刪除卷時,需要先停止卷,且信任池中不能有主機處於宕機狀態,否則刪除不成功 gluster volume delete dis-stripe 6.設定卷的訪問控制 #僅拒絕 gluster volume set dis-rep auth.deny 192.168.80.100 #僅允許 gluster volume set dis-rep auth.allow 192.168.80.* #設定192.168.80.0網段的所有IP地址都能訪問dis-rep卷(分散式複製卷)