GFS 分布式文件系统从入门到实践
文章目錄
- 一、GlusterFS 概述
- 1.1 GlusterFS簡介
- 1.2 GlusterFS的特點
- (一)擴展性和高性能
- (二)高可用性
- (三)彈性卷管理
- (四)基于標準協議
- 二、GlusterFS 術語介紹
- 2.1 Brick(存儲塊)
- 2.2 Volume(邏輯卷)
- 2.3 VFS
- 2.4 Glusterd(后臺管理進程)
- 三、理解 GlusterFS 工作流程
- 四、理解彈性 HASH 算法
- 4.1 彈性HASH算法概述
- 4.2 彈性HASH算法的優點
- 5.1 分布式卷
- 1)分布式卷的介紹
- 2)分布式卷具有如下特點:
- 5.2 條帶卷
- 1)條帶卷的介紹
- 2)條帶卷特點
- 5.3 復制卷
- 1)復制卷的介紹
- 5.4 分布式條帶卷
- 1)分布式條帶卷的介紹
- 5.5 分布式復制卷
- 1)分布式復制卷的介紹
- 5.6 條帶復制卷
- 1)條帶復制卷的介紹
- 5.7 分布式條帶復制卷
- 六、掌握 GlusterFS 部署方法
- 1.環境準備工作:
- 2.關閉所有節點服務器的防火墻和SElinux
- 3.由于節點服務器的操作都一樣,這里我僅展示node1的操作步驟
- ① 編寫腳本
- ② 執行腳本并查看磁盤掛載情況
- ③ 添加臨時DNS域名解析
- ④ 放入gfsrepo.zip安裝包解壓,然后創建glfs.repo配置文件
- ⑤ 安裝gfs相關程序,然后開啟服務。
- 4.創建集群
- 七、創建對應的卷
- 7.1 創建分布式卷
- 7.2 創建條帶卷
- 7.3 創建復制卷
- 7.4 創建分布式條帶卷
- 7.5 創建分布式復制卷
- 八、部署客戶端并創建測試文件
- 8.1 部署客戶端并創建測試文件的步驟
- 1.關閉防火墻和SElinux
- 2.放入壓縮包并解壓
- 3.備份之前的本地yum源,創建glfs源
- 4.創建目錄(用于后面掛載),添加DNF臨時域名解析
- 5.掛載之前創建的卷
- 6.使用dd命令從/dev/zero文件中復制40M的數據到測試文件中
- 7.將測試文件分別復制到各個卷中
- 8.2 部署客戶端并創建測試文件的具體操作步驟
- 1.關閉防火墻和SElinux
- 2.放入壓縮包并解壓
- 3.備份之前的本地yum源,創建glfs源,安裝相關程序
- 4.創建目錄(用于后面掛載),添加DNF臨時域名解析
- 5.掛載之前創建的卷
- 6.使用dd命令從/dev/zero文件中復制40M的數據到測試文件中
- 7.將測試文件分別復制到各個卷中
- 九、查看卷對應磁盤中的測試文件
- 1.查看分布式文件分布(node1:/dev/sdb1、node2:/dev/sdb1)
- 2.查看條帶卷文件分布(node1:/dev/sdc1、node2:/dev/sdc1)
- 3.查看復制卷文件分布(node3:/dev/sdb1、node4:/dev/sdb1)
- 4.查看分布式條帶卷分布(node1:/dev/sdd1、node2:/dev/sdd1、node3:/dev/sdd1、node4:/dev/sdd1)
- 5.查看分布式復制卷分布(node1:/dev/sde1、node2:/dev/sde1、node3:/dev/sde1、node4:/dev/sde1)
- 十、卷冗余實驗測試(客戶端)
- 1.分布式卷數據查看,缺少demo5,這是在node2上的,不具備冗余
- 2、條帶卷,數據都沒了,不具備冗余
- 3.復制卷,在node3和node4上的,關閉node4進行測試,具有冗余
- 4.分布式條帶卷,不具備冗余
- 5.分布式復制卷,具有冗余
- 常用維護命令
- 1.查看GlusterFS卷
- 2.查看所有卷的信息
- 3.查看所有卷的狀態
- 4.停止一個卷
- 5.刪除一個卷
- 6.設置卷的訪問控制
一、GlusterFS 概述
1.1 GlusterFS簡介
GlusterFS是一個開源的分布式文件系統。
由存儲服務器、客戶端以及NFS/Samba存儲網關(可選,根據需要選擇使用)組成。
沒有元數據服務器組件,這有助于提升整個系統的性能、可靠性和穩定性。
傳統的分布式文件系統大多通過元服務器來存儲元數據,元數據包含存儲節點上的目錄信息、目錄結構等。這樣的設計在瀏覽目錄時效率高,但是也存在一些缺陷,例如單點故障。一旦元數據服務器出現故障,即使節點具備再高的冗余性,整個存儲系統也將崩潰。而GlusterFS分布式文件系統是基于無元服務器的設計,數據橫向擴展能力強,具備較高的可靠性及存儲效率。
GlusterFs同時也是Scale-Out(橫向擴展)存儲解決方案Gluster的核心,在存儲數據方面具有強大的橫向擴展能力,通過擴展能夠支持數PB存儲容量和處理數千客戶端。
GlusterFS支持借助TCP/IP或InfiniBandRDMA網絡 (一種支持多并發鏈接的技術,具有高帶寬、低時延、高擴展性的特點)將物理分散分布的存儲資源匯聚在一起,統一提供存儲服務,并使用統一全局命名空間來管理數據。
1.2 GlusterFS的特點
(一)擴展性和高性能
GlusterFs利用雙重特性來提供高容量存儲解決方案。
Scale-Out架構允許通過簡單地增加存儲節點的方式來提高存儲容量和性能(磁盤、計算和I/0資源都可以獨立增加),支持10GbE和InfiniBand 等高速網絡互聯。
Gluster彈性哈希(ElasticHash) 解決了GlusterFS對元數據服務器的依賴,改善了單點故障和性能瓶頸,真正實現了并行化數據訪問。GlusterFS采用彈性哈希算法在存儲池中可以智能地定位任意數據分片(將數據分片存儲在不同節點上),不需要查看索引或者向元數據服務器查詢。
(二)高可用性
GlusterFS可以對文件進行自動復制,如鏡像或多次復制,從而確保數據總是可以訪問,甚至是在硬件故障的情況下也能正常訪問當數據出現不一致時,自我修復功能能夠把數據恢復到正確的狀態,數據的修復是以增量的方式在后臺執行,幾乎不會產生性能負載。
GlusterFS可以支持所有的存儲,因為它沒有設計自己的私有數據文件格式,而是采用操作系統中主流標準的磁盤文件系統( 如EXT3、XFS等)來存儲文件,因此數據可以使用傳統訪問磁盤的方式被訪問。
分布式存儲中,將所有節點的命名空間整合為統一命名空間,將整個系統的所有節點的存儲容量組成一個大的虛擬存儲池,供前端主機訪問這些節點完成數據讀寫操作。
(三)彈性卷管理
邏輯存儲池可以在線進行增加和移除,不會導致業務中斷。邏輯卷可以根據需求在線增長和縮減,并可以在多個節點中實現負載均衡。
文件系統配置也可以實時在線進行更改并應用,從而可以適應工作負載條件變化或在線性能調優。
(四)基于標準協議
Gluster存儲服務支持NFS、CIFS、 HTTP、 FTP、 SMB及Gluster原生協議,完全與POSIX 標準( 可移植操作系統接口)兼容。
現有應用程序不需要做任何修改就可以對Gluster中的數據進行訪問,也可以使用專用API進行訪問。
二、GlusterFS 術語介紹
2.1 Brick(存儲塊)
指可信主機池中由主機提供的用于物理存儲的專用分區,是GlusterFS中的基本存儲單元,同時也是可信存儲池中服務器上對外提存儲目錄。
2.2 Volume(邏輯卷)
一個邏輯卷是一組Brick的集合。卷是數據存儲的邏輯設備,類似于LVM 中的邏輯卷。大部分Gluster管理操作是在卷上進行的。
是一個內核模塊,允許用戶創建自己的文件系統,無須修改內核代碼。
2.3 VFS
內核空間對用戶空間提供的訪問磁盤的接口。
2.4 Glusterd(后臺管理進程)
在存儲群集中的每個節點上都要運行。
三、理解 GlusterFS 工作流程
客戶端或應用程序通過GlusterFS的掛載點訪問數據。
linux系統內核通過VFS API收到請求并處理。
GlusterFS client 收到數據后,client 根據配置文件的配置對數據進行處理。
經過GlusterFS client處理后,通過網絡將數據傳遞至遠端的GlusterFS Server,并且將數據寫入到服務器存儲設備上。
四、理解彈性 HASH 算法
4.1 彈性HASH算法概述
彈性HASH算法是Davies-Meyer 算法的具體實現,通過HASH 算法可以得到一個32位的整數范圍的hash 值,假設邏輯卷中有N個存儲單位Brick, 則32位的整數范圍將被劃分為N個連續的子空間,每個空間對應一個Brick。當用戶或應用程序訪問某一個命名空間時,通過對該命名空間計算HASH值,根據該HASH 值所對應的32位整數空間定位數據所在的Brick。
4.2 彈性HASH算法的優點
解決了對元數據服務器的依賴,進而解決了單點故障以及訪問瓶頸。
五、掌握七種類型的 GlusterFS 卷
GlusterFs支持七種卷,即分布式卷、條帶卷、復制卷、分布式條帶卷、分布式復制卷、條帶復制卷和分布式條帶復制卷。
5.1 分布式卷
1)分布式卷的介紹
文件通過HASH算法分布到所有Brick Server. 上,這種卷是GlusterFS 的默認卷;以文件為單位根據HASH算法散列到不同的Brick,其實只是擴大了磁盤空間,如果有一塊磁盤損壞,數據也將丟失,屬于文件級的RAIDO,不具有容錯能力。
在該模式下,并沒有對文件進行分塊處理,文件直接存儲在某個Server節點上。
由于直接使用本地文件系統進行文件存儲,所以存取效率并沒有提高,反而會因為網絡通信的原因而有所降低。
示例:
File1 和File2存放在Server1, 而File3存放在Server2,文件都是隨機存儲,一個文件(如File1)要么在Server1上,要么在Server2. 上,不能分塊同時存放在Server1和Server2上。
2)分布式卷具有如下特點:
文件分布在不同的服務器,不具備冗余性。
更容易和廉價地擴"展卷的大小。
單點故障會造成數據丟失。
依賴底層的數據保護。
#創建一個名為dis-volume的分布式卷,文件將根據HASH分布在server1 : /dir1、server2:/dir2 和server3:/dir3中.
gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3
5.2 條帶卷
1)條帶卷的介紹
類似RAID0,文件被分成數據塊并以輪詢的方式分布到多個BrickServer上,文件存儲以數據塊為單位,支持大文件存儲,文件越大,讀取效率越高,但是不具備冗余性。
#示例原理:
File 被分割為6段,1、3、5放在Server1, 2、4、6放在Server2。
2)條帶卷特點
數據被分割成更小塊分布到塊服務器群中的不同條帶區。
分布減少了負載且更小的文件加速了存取的速度。
沒有數據冗余。
#創建了一個名為stripe-volume的條帶卷,文件將被分塊輪詢的存儲在Server1 :/dir1和Server2:/dir2兩個Brick中
gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
5.3 復制卷
1)復制卷的介紹
將文件同步到多個Brick 上,使其具備多個文件副本,屬于文件級RAID 1,具有容錯能力。因為數據分散在多個Brick 中,所以讀性能得到很大提升,但寫性能下降。
復制卷具備冗余性,即使一個節點損壞,也不影響數據的正常使用。但因為要保存副本,所以磁盤利用率較低。
#創建名為rep-volume的復制卷,文件將同時存儲兩個副本,分別在Server1:/dir1和Server2:/dir2兩個Brick中
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
5.4 分布式條帶卷
1)分布式條帶卷的介紹
BrickServer數量是條帶數(數據塊分布的Brick數量)的倍數,兼具分布式卷和條帶卷的特點。
主要用于大文件訪問處理,創建一個分布式條帶卷最少需要4臺服務器。
#示例原理:
Filel和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倍甚至更多,那么將創建的是分布式條帶卷或分布式復制卷。
5.5 分布式復制卷
1)分布式復制卷的介紹
#示例原理:
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
5.6 條帶復制卷
1)條帶復制卷的介紹
類似RAID10,同時具有條帶卷和復制卷的特點。
5.7 分布式條帶復制卷
三種基本卷的復合卷,通常用于類Map Reduce 應用。
六、掌握 GlusterFS 部署方法
1.環境準備工作:
服務器類型 系統和IP地址 需要安裝的組件
node1服務器 CentOS7.4(64 位) 192.168.80.10 添加4塊20G硬盤
node2服務器 CentOS7.4(64 位) 192.168.80.20 添加4塊20G硬盤
node3服務器 CentOS7.4(64 位) 192.168.80.30 添加4塊20G硬盤
node4服務器 CentOS7.4(64 位) 192.168.80.40 添加4塊20G硬盤
2.關閉所有節點服務器的防火墻和SElinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
systemctl status firewalld.service
3.由于節點服務器的操作都一樣,這里我僅展示node1的操作步驟
① 編寫腳本
[root@node1 ~] # vim /opt/fdisk.sh
#!/bin/bash
NEWDEV=ls /dev/sd* | grep -o 'sd[b-z]' | uniq
do
echo -e “n\np\n\n\n\nw\n” | fdisk /dev/KaTeX parse error: Expected 'EOF', got '&' at position 5: VAR &?> /dev/null mkf…{VAR}“1” &> /dev/null
mkdir -p /data/KaTeX parse error: Expected 'EOF', got '&' at position 10: {VAR}"1" &?> /dev/null ech…{VAR}“1” /data/${VAR}“1” xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/null
② 執行腳本并查看磁盤掛載情況
cd /opt/
./fdisk.sh
mount -a
df -h
文件系統 容量 已用 可用 已用% 掛載點
… … … … …
/dev/sdb1 20G 33M 20G 1% /data/sdb1
/dev/sdc1 20G 33M 20G 1% /data/sdc1
/dev/sdd1 20G 33M 20G 1% /data/sdd1
/dev/sde1 20G 33M 20G 1% /data/sde1
③ 添加臨時DNS域名解析
echo “192.168.80.20 node2” >> /etc/hosts
echo “192.168.80.30 node3” >> /etc/hosts
echo “192.168.80.40 node4” >> /etc/hosts
cat /etc/hosts
④ 放入gfsrepo.zip安裝包解壓,然后創建glfs.repo配置文件
unzip gfsrepo.zip
cd /etc/yum.repos.d/
mv * repos.bak/
mv: 無法將目錄"repos.bak" 移動至自身的子目錄"repos.bak/repos.bak" 下
[root@node1 /etc/yum.repos.d] # ls
repos.bak
[root@node1 /etc/yum.repos.d] # vim glfs.repo #創建glfs.repo配置文件內容如下
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
⑤ 安裝gfs相關程序,然后開啟服務。
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service
4.創建集群
[root@node1 yum.repos.d]# gluster peer probe node1 #添加node1
peer probe: success. Probe on localhost not needed
[root@node1 yum.repos.d]# gluster peer probe node2 #添加node2
peer probe: success.
[root@node1 yum.repos.d]# gluster peer probe node3 #添加node3
peer probe: success.
[root@node1 yum.repos.d]# gluster peer probe node4 #添加node4
peer probe: success.
[root@node1 yum.repos.d]# gluster peer status #查看狀態
Number of Peers: 3
Hostname: node2
Uuid: ac9137b9-8ca5-43a1-8e4c-5af058fedc4e
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: 4816542a-2425-4ccb-83e5-ee08e0fd0188
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: 87dfb325-b90a-4a8c-9204-8013754ba49b
State: Peer in Cluster (Connected)
七、創建對應的卷
要求如下:
卷名稱 卷類型 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)
7.1 創建分布式卷
創建分布式卷,沒有指定類型,默認創建的是分布式卷
[root@node1 yum.repos.d]# gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
volume create: dis-volume: success: please start the volume to access data
dis-volume
[root@node1 yum.repos.d]# gluster volume start dis-volume
volume start: dis-volume: success
[root@node1 yum.repos.d]# gluster volume info dis-volume
Volume Name: dis-volume
Type: Distribute
Volume ID: 057d9ba4-800d-477b-904b-e43f136e4297
Status: Started
Snapshot Count: 0
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
7.2 創建條帶卷
指定類型為 stripe,數值為 2,且后面跟了 2 個 Brick Server,所以創建的是條帶卷
[root@node1 yum.repos.d]# gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: stripe-volume: success: please start the volume to access data
[root@node1 yum.repos.d]# gluster volume start stripe-volume
volume start: stripe-volume: success
[root@node1 yum.repos.d]# gluster volume info stripe-volume
Volume Name: stripe-volume
Type: Stripe
Volume ID: ab23d1af-941e-4310-842b-2b4c4c89e50d
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdc1
Brick2: node2:/data/sdc1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
7.3 創建復制卷
指定類型為 replica,數值為 2,且后面跟了 2 個 Brick Server,所以創建的是復制卷
[root@node1 yum.repos.d]# gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: rep-volume: success: please start the volume to access data
[root@node1 yum.repos.d]# gluster volume start rep-volume
volume start: rep-volume: success
[root@node1 yum.repos.d]# gluster volume info rep-volume
Volume Name: rep-volume
Type: Replicate
Volume ID: d511d0f1-e61f-4b43-8d59-354071846e9f
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/data/sdb1
Brick2: node4:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
7.4 創建分布式條帶卷
指定類型為 stripe,數值為 2,而且后面跟了 4 個 Brick Server,是 2 的兩倍,所以創建的是分布式條帶卷
[root@node1 yum.repos.d]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
volume create: dis-stripe: success: please start the volume to access data
[root@node1 yum.repos.d]# gluster volume start dis-stripe
volume start: dis-stripe: success
[root@node1 yum.repos.d]# gluster volume info dis-stripe
Volume Name: dis-stripe
Type: Distributed-Stripe
Volume ID: 9ac553dd-ae1a-447b-8fab-e502003adb17
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdd1
Brick2: node2:/data/sdd1
Brick3: node3:/data/sdd1
Brick4: node4:/data/sdd1
transport.address-family: inet
nfs.disable: on
7.5 創建分布式復制卷
指定類型為 replica,數值為 2,而且后面跟了 4 個 Brick Server,是 2 的兩倍,所以創建的是分布式復制卷
[root@node1 yum.repos.d]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: dis-rep: success: please start the volume to access data
[root@node1 yum.repos.d]# gluster volume start dis-rep
volume start: dis-rep: success
[root@node1 yum.repos.d]# gluster volume info dis-rep
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: c6576656-f6c6-4eb1-a96c-ad8c12daf624
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sde1
Brick2: node2:/data/sde1
Brick3: node3:/data/sde1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 yum.repos.d]# gluster volume list
dis-rep
dis-stripe
dis-volume
rep-volume
stripe-volume
八、部署客戶端并創建測試文件
8.1 部署客戶端并創建測試文件的步驟
1.關閉防火墻和SElinux
[root@client ~]# systemctl stop firewalld
[root@client ~]# systemctl disable firewalld
[root@client ~]# systemctl status firewalld.service
2.放入壓縮包并解壓
[root@client ~]# cd /opt/
[root@client opt]# ls
3.備份之前的本地yum源,創建glfs源
[root@client opt]# cd /etc/yum.repos.d/
[root@client yum.repos.d]# ls
local.repo repo.bak
[root@client yum.repos.d]# vim glfs.repo
[root@client yum.repos.d]# yum clean all && yum makecache
[root@client yum.repos.d]# yum -y install glusterfs glusterfs-fuse
4.創建目錄(用于后面掛載),添加DNF臨時域名解析
[root@client yum.repos.d]# mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
[root@client yum.repos.d]# ls /test/
dis dis_rep dis_stripe rep stripe
[root@client yum.repos.d]# echo “192.168.80.10 node1” >> /etc/hosts
[root@client yum.repos.d]# echo “192.168.80.20 node2” >> /etc/hosts
[root@client yum.repos.d]# echo “192.168.80.30 node3” >> /etc/hosts
[root@client yum.repos.d]# echo “192.168.80.40 node4” >> /etc/hosts
[root@client yum.repos.d]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.80.10 node1
192.168.80.20 node2
192.168.80.30 node3
192.168.80.40 node4
5.掛載之前創建的卷
[root@client yum.repos.d]# mount.glusterfs node1:dis-volume /test/dis
[root@client yum.repos.d]# mount.glusterfs node1:stripe-volume /test/stripe
[root@client yum.repos.d]# mount.glusterfs node1:rep-volume /test/rep
[root@client yum.repos.d]# mount.glusterfs node1:dis-stripe /test/dis_stripe
[root@client yum.repos.d]# mount.glusterfs node1:dis-rep /test/dis_rep
[root@client yum.repos.d]# df -h
文件系統 容量 已用 可用 已用% 掛載點
… … … … …
node1:dis-volume 40G 65M 40G 1% /test/dis
node1:stripe-volume 40G 65M 40G 1% /test/stripe
node1:rep-volume 20G 33M 20G 1% /test/rep
node1:dis-stripe 80G 130M 80G 1% /test/dis_stripe
node1:dis-rep 40G 65M 40G 1% /test/dis_rep
[root@client yum.repos.d]#
6.使用dd命令從/dev/zero文件中復制40M的數據到測試文件中
[root@client yum.repos.d]# dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
記錄了40+0 的讀入
記錄了40+0 的寫出
41943040字節(42 MB)已復制,0.0604672 秒,694 MB/秒
[root@client yum.repos.d]# dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
記錄了40+0 的寫出
41943040字節(42 MB)已復制,0.0578344 秒,725 MB/秒
[root@client yum.repos.d]# dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
記錄了40+0 的讀入
記錄了40+0 的寫出
41943040字節(42 MB)已復制,0.0615882 秒,681 MB/秒
[root@client yum.repos.d]# dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
記錄了40+0 的讀入
記錄了40+0 的寫出
41943040字節(42 MB)已復制,0.0554032 秒,757 MB/秒
[root@client yum.repos.d]# dd if=/dev/zero of=/opt/demo5.log bs=1M count=40
記錄了40+0 的讀入
記錄了40+0 的寫出
41943040字節(42 MB)已復制,0.0593443 秒,707 MB/秒
[root@client yum.repos.d]# ls -lh /opt/
總用量 250M
-rw-r–r--. 1 root root 40M 7月 25 00:57 demo1.log
-rw-r–r--. 1 root root 40M 7月 25 00:57 demo2.log
-rw-r–r--. 1 root root 40M 7月 25 00:57 demo3.log
-rw-r–r--. 1 root root 40M 7月 25 00:57 demo4.log
-rw-r–r--. 1 root root 40M 7月 25 00:57 demo5.log
drwxr-xr-x. 3 root root 8.0K 3月 27 2018 gfsrepo
-rw-r–r--. 1 root root 50M 7月 25 00:44 gfsrepo.zip
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
7.將測試文件分別復制到各個卷中
[root@client yum.repos.d]# cp /opt/demo* /test/dis
[root@client yum.repos.d]# cp /opt/demo* /test/stripe/
[root@client yum.repos.d]# cp /opt/demo* /test/rep/
[root@client yum.repos.d]# cp /opt/demo* /test/dis_stripe/
[root@client yum.repos.d]# cp /opt/demo* /test/dis_rep/
8.2 部署客戶端并創建測試文件的具體操作步驟
1.關閉防火墻和SElinux
2.放入壓縮包并解壓
3.備份之前的本地yum源,創建glfs源,安裝相關程序
4.創建目錄(用于后面掛載),添加DNF臨時域名解析
5.掛載之前創建的卷
6.使用dd命令從/dev/zero文件中復制40M的數據到測試文件中
7.將測試文件分別復制到各個卷中
九、查看卷對應磁盤中的測試文件
1.查看分布式文件分布(node1:/dev/sdb1、node2:/dev/sdb1)
總用量 160M
-rw-r–r--. 2 root root 40M 7月 25 00:59 demo1.log
-rw-r–r--. 2 root root 40M 7月 25 00:59 demo2.log
-rw-r–r--. 2 root root 40M 7月 25 00:59 demo3.log
[root@node2 ~]# ls -lh /data/sdb1
總用量 40M
-rw-r–r--. 2 root root 40M 7月 25 00:59 demo5.log
2.查看條帶卷文件分布(node1:/dev/sdc1、node2:/dev/sdc1)
[root@node1 ~] # ls -lh /data/sdc1
總用量 100M
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo1.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo2.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo3.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo4.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo5.log
[root@node2 ~]#ll -h /data/sdc1
總用量 100M
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo1.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo2.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo3.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo4.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo5.log
3.查看復制卷文件分布(node3:/dev/sdb1、node4:/dev/sdb1)
[root@node3 ~]#ll -h /data/sdb1
總用量 200M
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo1.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo2.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo3.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo4.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo5.log
[root@node4 ~]#ll -h /data/sdb1
總用量 200M
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo1.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo2.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo3.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo4.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo5.log
4.查看分布式條帶卷分布(node1:/dev/sdd1、node2:/dev/sdd1、node3:/dev/sdd1、node4:/dev/sdd1)
[root@node1 ~] # ll -h /data/sdd1
總用量 60M
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo1.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo2.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo3.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo4.log
[root@node2 ~]#ll -h /data/sdd1
總用量 60M
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo1.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo2.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo3.log
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo4.log
[root@node3 ~]#ll -h /data/sdd1
總用量 40M
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo5.log
[root@node4 ~]#ll -h /data/sdd1
總用量 40M
-rw-r–r--. 2 root root 20M 3月 2 22:46 demo5.log
5.查看分布式復制卷分布(node1:/dev/sde1、node2:/dev/sde1、node3:/dev/sde1、node4:/dev/sde1)
[root@node1 ~] # ll -h /data/sde1
總用量 160M
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo1.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo2.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo3.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo4.log
[root@node2 ~]#ll -h /data/sde1
總用量 160M
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo1.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo2.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo3.log
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo4.log
[root@node3 ~]#ll -h /data/sde1
總用量 40M
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo5.log
[root@node4 ~]#ll -h /data/sde1
總用量 40M
-rw-r–r--. 2 root root 40M 3月 2 22:46 demo5.log
十、卷冗余實驗測試(客戶端)
1.分布式卷數據查看,缺少demo5,這是在node2上的,不具備冗余
掛起 node2 節點或者關閉glusterd服務來模擬故障
[root@node2 ~]# init 0
[root@client ~]# ll /test/dis
總用量 163840
-rw-r–r--. 1 root root 41943040 7月 25 00:59 demo1.log
-rw-r–r--. 1 root root 41943040 7月 25 00:59 demo2.log
-rw-r–r--. 1 root root 41943040 7月 25 00:59 demo3.log
-rw-r–r--. 1 root root 41943040 7月 25 00:59 demo4.log
2、條帶卷,數據都沒了,不具備冗余
[root@client ~]# ll /test/stripe/
總用量 0
[root@client ~]#
3.復制卷,在node3和node4上的,關閉node4進行測試,具有冗余
[root@node4 ~]#init 0
客戶端所有數據仍然存在
[root@client ~]# ll /test/rep/
總用量 204800
-rw-r–r--. 1 root root 41943040 7月 25 00:59 demo1.log
-rw-r–r--. 1 root root 41943040 7月 25 00:59 demo2.log
-rw-r–r--. 1 root root 41943040 7月 25 00:59 demo3.log
-rw-r–r--. 1 root root 41943040 7月 25 00:59 demo4.log
-rw-r–r--. 1 root root 41943040 7月 25 00:59 demo5.log
4.分布式條帶卷,不具備冗余
[root@client ~]# ll /test/dis_stripe/
總用量 0
5.分布式復制卷,具有冗余
[root@client ~]# ll /test/dis_rep/
總用量 204800
-rw-r–r--. 1 root root 41943040 7月 25 01:01 demo1.log
-rw-r–r--. 1 root root 41943040 7月 25 01:01 demo2.log
-rw-r–r--. 1 root root 41943040 7月 25 01:01 demo3.log
-rw-r–r--. 1 root root 41943040 7月 25 01:01 demo4.log
-rw-r–r--. 1 root root 41943040 7月 25 01:01 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.allow 192.168.80.100
允許
gluster volume set dis-rep auth.allow 192.168.80.* #設置192.168.80.0網段的所有IP地址都能訪問dis-rep卷(分布式復制卷)
總結
以上是生活随笔為你收集整理的GFS 分布式文件系统从入门到实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rsync 远程同步——安全高效的异地备
- 下一篇: ELK 企业级日志分析系统