GlusterFS部署 CentOS7環境下以及基本使用

只實驗部署。 參考他人博客得來,侵權立刪。
https://blog.csdn.net/zonelan/article/details/8468383
https://blog.csdn.net/JackLiu16/article/details/80648157
https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/
https://cloud.tencent.com/developer/article/1460283
https://www.cnblogs.com/hjc4025/p/9956673.html
https://blog.51cto.com/13447608/2386830?source=dra

GlusterFS 定義

GlusterFS
可擴展的開源分佈式文件系統。能夠輕鬆地爲用戶提供全局命名空間,分佈式前端以及高達數百PB的可擴展性。

優點:
- 彈性存儲 Gluster羣集可根據業務需求靈活的增加或縮減數據存儲以及增刪存儲池中的資源,而不會終端系統的運行。
- 橫向擴展 Gluster羣集可通過增加存儲節點的方式來提升整個系統的容量或性能。
- 高可靠性 Gluster羣集通過自動複製與自動修復來保證數據的可靠性(利用EXT3/ZFS等磁盤文件系統日誌)

整體架構:
Gluster架構

  • 存儲服務器主要提供基本的數據存儲功能,最終的文件數據通過統一的調度策略分佈在不同的存儲服務器上。它們上面運行着Glusterfsd進行,負責處理來自其他組件的數據服務請求。

  • 由於沒有了元數據服務器,客戶端承擔了更多的功能,包括數據卷管理、I/O調度、文件定位、數據緩存等功能。

  • GlusterFS存儲網關提供彈性卷管理和NFS/CIFS訪問代理功能

GlusterFS創建術語

  • Brick: 最基本的存儲單元,表示爲trusted storage pool中輸出的目錄,供客戶端掛載用。
  • Volume: 一個卷。在邏輯上由N個bricks組成.
  • FUSE: Unix-like OS上的可動態加載的模塊,允許用戶不用修改內核即可創建自己的文件系統。
  • Glusterd: Gluster management daemon,要在trusted storage pool中所有的服務器上運行。
  • POSIX: 一個標準,GlusterFS兼容。

GlusterFS卷類型
爲了滿足不同應用對高性能、高可用的需求,GlusterFS 支持 7 種卷,即 distribute卷、stripe卷、replica卷、distribute stripe卷、distribute replica 卷、stripe Replica卷、distribute stripe replica 卷。其實不難看出,GlusterFS 卷類型實際上可以分爲 3 種基本卷和 4 種複合卷,每種類型的卷都有其自身的特點和適用場景。

實驗環境準備

VMware Workstation軟件下, CentOS7虛擬機。 準備五臺CentOS7虛擬機,4臺做存儲服務器,一臺做客戶端。

虛擬機設置 內存1G 硬盤大小10G即可

部署

  1. 設置五個CentOS的 /etc/hosts文件。
192.168.199.61	server-1
192.168.199.62	server-2
192.168.199.63	server-3
192.168.199.64	server-4
192.168.199.60	client
  1. 關閉SElinux 關閉防火牆
  • 關閉SELinux
setenforce 0
vi /etc/selinux/config

設置 SELINUX=permissive
重啓虛擬機即可

  • 關閉防火牆
	systemctl stop firewalld
	systemctl disable firewalld
  1. 安裝NTP服務並開啓。ntp就是一個時間同步服務。 最後一行命令是因爲ntp開機啓動可能和chronyd自啓動衝突。
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd

systemctl disable chronyd
  1. 爲四個存儲用虛擬機添加一塊新硬盤。並掛載。四個都要添加

我新增的硬盤 名爲 sdb ,因不同機器可能有不同。掛載點是/data/brick1

fdisk -l
mkfs.xfs /dev/sdb
mkdir -p /data/brick1
echo '/dev/sdb /data/brick1 xfs defaults 1 2' >> /etc/fstab 
mount -a

查看 當前磁盤狀態 df -h

[root@server03 ~]# df -h
文件系統                                容量  已用  可用 已用% 掛載點
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.7M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sdb                                 10G   82M   10G    1% /data/brick1
/dev/sda1                              1014M  136M  878M   14% /boot
tmpfs                                    98M     0   98M    0% /run/user/0

  1. 4臺存儲節點安裝glusterfs並啓動服務
yum install centos-release-gluster
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

#啓動gluster服務
systemctl start glusterd.service
systemctl enable glusterd.service
  1. 配置受信任的池。 一旦建立了這個池,只有受信任的成員才能探測到新的服務器到池中。新服務器無法探測池,必須從池中探測它。
    如在 server-1節點操作
    server-2 等都是節點的IP。
gluster peer probe server-2
gluster peer probe server-3
gluster peer probe server-4

添加完成可以查看當前受信任池的狀態,可在server-1 server-2 server-3 server-4節點任一個中查看。如server-2

[root@server02 ~]# gluster peer status
Number of Peers: 3

Hostname: server-1
Uuid: 37bf921e-15b9-4685-a6a7-551818d43066
State: Peer in Cluster (Connected)

Hostname: server-3
Uuid: 789acb33-1ee5-432a-a1f6-d612b222dec2
State: Peer in Cluster (Connected)

Hostname: server-4
Uuid: eec5b569-7494-480e-8c19-cf74b25e9c28
State: Peer in Cluster (Connected)
[root@server02 ~]# 

  1. 設置GlusterFS卷。 可以先設置一個簡單的分佈式卷。可設置distribute, stripe, replica及複合卷
  • 在四個服務器上設置

mkdir -p /data/brick1/gv0

  • 在任一個服務器上設置
gluster volume create gv0 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

設置卷名爲gv0, 使用的brick包括server-1:/data/brick1/gv0…
啓動卷

gluster volume start gv0

查看卷信息狀態

gluster volume info
gluster volume status

狀態信息如下。

[root@server01 ~]# gluster volume start gv0
volume start: gv0: success
[root@server01 ~]# gluster volume info
 
Volume Name: gv0
Type: Distribute
Volume ID: 16c2bc7d-e1ff-4a8a-887a-f6f4f5e632a4
Status: Started
Snapshot Count: 0
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server-1:/data/brick1/gv0
Brick2: server-2:/data/brick1/gv0
Brick3: server-3:/data/brick1/gv0
Brick4: server-4:/data/brick1/gv0
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
[root@server01 ~]# gluster volume status
Status of volume: gv0
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick server-1:/data/brick1/gv0             49152     0          Y       2025 
Brick server-2:/data/brick1/gv0             49152     0          Y       11641
Brick server-3:/data/brick1/gv0             49153     0          Y       1807 
Brick server-4:/data/brick1/gv0             49152     0          Y       11655
 
Task Status of Volume gv0
------------------------------------------------------------------------------
There are no active volume tasks

  1. 客戶端安裝 Gluster
yum install centos-release-gluster
yum -y install glusterfs glusterfs-fuse
  1. 測試GlusterFS卷。可以將其掛載到客戶端的 /mnt 目錄進行測試,也可以自己新建一個掛載目錄。
    注 這裏 server-1可以是任一存儲節點,ruserver-2,server-3效果一樣
mount -t glusterfs server-1:/gv0 /mnt

可以看到掛載成功。。。

[root@gluster-client ~]# df -h
文件系統                                容量  已用  可用 已用% 掛載點
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.6M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sda1                              1014M  136M  878M   14% /boot
/dev/sdb                                 10G   33M   10G    1% /data/brick1
tmpfs                                    98M     0   98M    0% /run/user/0
[root@gluster-client ~]# mount -t glusterfs server-1:gv0 /mnt
[root@gluster-client ~]# df -h
文件系統                                容量  已用  可用 已用% 掛載點
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.6M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sda1                              1014M  136M  878M   14% /boot
/dev/sdb                                 10G   33M   10G    1% /data/brick1
tmpfs                                    98M     0   98M    0% /run/user/0
server-1:gv0                             40G  539M   40G    2% /mnt
[root@gluster-client ~]# 

  1. 接下來在 測試在/mnt 添加一些文件。客戶端執行
for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done

查看 掛載點 /mnt 發現有100 新文件。

[root@gluster-client ~]# for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done
[root@gluster-client ~]# ls /mnt/
copy-test-001  copy-test-016  copy-test-031  copy-test-046  copy-test-061  copy-test-076  copy-test-091
copy-test-002  copy-test-017  copy-test-032  copy-test-047  copy-test-062  copy-test-077  copy-test-092
copy-test-003  copy-test-018  copy-test-033  copy-test-048  copy-test-063  copy-test-078  copy-test-093
copy-test-004  copy-test-019  copy-test-034  copy-test-049  copy-test-064  copy-test-079  copy-test-094
copy-test-005  copy-test-020  copy-test-035  copy-test-050  copy-test-065  copy-test-080  copy-test-095
copy-test-006  copy-test-021  copy-test-036  copy-test-051  copy-test-066  copy-test-081  copy-test-096
copy-test-007  copy-test-022  copy-test-037  copy-test-052  copy-test-067  copy-test-082  copy-test-097
copy-test-008  copy-test-023  copy-test-038  copy-test-053  copy-test-068  copy-test-083  copy-test-098
copy-test-009  copy-test-024  copy-test-039  copy-test-054  copy-test-069  copy-test-084  copy-test-099
copy-test-010  copy-test-025  copy-test-040  copy-test-055  copy-test-070  copy-test-085  copy-test-100
copy-test-011  copy-test-026  copy-test-041  copy-test-056  copy-test-071  copy-test-086
copy-test-012  copy-test-027  copy-test-042  copy-test-057  copy-test-072  copy-test-087
copy-test-013  copy-test-028  copy-test-043  copy-test-058  copy-test-073  copy-test-088
copy-test-014  copy-test-029  copy-test-044  copy-test-059  copy-test-074  copy-test-089
copy-test-015  copy-test-030  copy-test-045  copy-test-060  copy-test-075  copy-test-090
[root@gluster-client ~]# 

接下來查看每個服務器的 Gluster brick 掛載點。可能會發現每個點上大約有25個文件。因爲默認是分佈式存儲,文件會經統一策略調度策略分發到不同的存儲服務器。

[root@server01 ~]# cd /data/brick1/gv0/
[root@server01 gv0]# ls
copy-test-004  copy-test-017  copy-test-033  copy-test-065  copy-test-086  copy-test-095
copy-test-006  copy-test-023  copy-test-046  copy-test-078  copy-test-087  copy-test-099
copy-test-015  copy-test-024  copy-test-048  copy-test-079  copy-test-088
copy-test-016  copy-test-029  copy-test-052  copy-test-082  copy-test-093
[root@server01 gv0]# 

測試分佈式複製卷。

部署已經成功,創建的卷是最基礎的分佈式卷。一般應用商最常用的應該是分佈式複製卷, 是混合卷。可以將以上卷停掉刪除。重新創建一個卷。

GlusterFS客戶端常用命令
命令 功能
gluster peer probe 添加節點
gluster peer detach 移除節點
gluster volume create 創建卷
gluster volume start $VOLUME_NAME 啓動卷
gluster volume stop $VOLUME_NAME 停止卷
gluster volume delete $VOlUME_NAME 刪除卷
gluster volume quota enable 開啓卷配額
gluster volume quota disable 關閉卷配額
gluster volume quota limitusage 設定卷配額

  • 客戶端先終止掛載
umount -l /mnt
  • 服務器端停止卷並刪除
gluster volume stop gv0
gluster volume delete gv0

查看

[root@server01 gv0]# gluster volume stop gv0
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
volume stop: gv0: success
[root@server01 gv0]# gluster volume delete gv0
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: gv0: success
[root@server01 gv0]# gluster volume info
No volumes present
[root@server01 gv0]# 

  • 四個服務器端將 /data/brick1/gv0文件夾刪除後新建,不然重新創建卷的時候可能會報錯volume create: gv0: failed: /data/brick1/gv0 is already part of a volume
  • 創建分佈式複製卷 分佈式的複製卷,volume 中 brick 所包含的存儲服務器數必須是 replica 的倍數(>=2倍),兼顧分佈式和複製式的功能 一般來說建議複製卷的存儲服務器大於等於3 因爲2份容易導致腦裂,數據恢復時不知哪一份是正確的。。。
gluster volume create gv0 replica 2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

鏡像數是2 一份數據會保存在兩個地方。

  • 啓動卷並在客戶端掛載 測試
gluster volume start gv0
gluster volume info

狀態如下

[root@server01 brick1]# gluster volume start gv0
volume start: gv0: success
[root@server01 brick1]# gluster volume info
 
Volume Name: gv0
Type: Distributed-Replicate
Volume ID: 7ebb9c84-d0c4-42cb-a6e5-e0d1240f90d4
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: server-1:/data/brick1/gv0
Brick2: server-2:/data/brick1/gv0
Brick3: server-3:/data/brick1/gv0
Brick4: server-4:/data/brick1/gv0
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
performance.client-io-threads: off
[root@server01 brick1]# 

類型 Type變成了 Distributed-Replicate

客戶端掛載測試

mount -t glusterfs server-1:gv0 /mnt
for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done
[root@gluster-client ~]# df -h
文件系統                                容量  已用  可用 已用% 掛載點
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.6M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sda1                              1014M  136M  878M   14% /boot
/dev/sdb                                 10G   33M   10G    1% /data/brick1
tmpfs                                    98M     0   98M    0% /run/user/0
server-1:gv0                             20G  270M   20G    2% /mnt

掛載點容量變爲了20G

  • 查看服務節點掛載點的數據。。。server-1和server-2數據是相同的互爲複製點,server-3和server-4的數據也是相同的。server-1和server-3各自大約保存了50份數據。

注:不一定是這樣描述的,但是有必要提醒自己一下。

存儲服務器不等於節點 一個節點上可以有多個存儲服務器。或者應該說 一個存儲服務器上可以有多個brick點。 如果有多個磁盤的話

或者說即時沒有多餘的真實硬盤,一個硬盤下可以放許多個Brick。。。也就是說,這些個組成gluster 的 volume的brick可以在一個真實的硬盤上共存。。。而且掛載 gluster volume時,互相不會影響,但是受真實的空間容量影響。。。如果真的在一塊真實的硬盤上設置了多個brick,有可能掛載gluster volume時,顯示磁盤大小是10G 已用 9G 可用1G而實際上你還沒向掛載點添加任何內容。。產生這樣情況的原因當然是真是的硬盤上有其他內容存在。。。。

測試 將現有的volume再次刪除,然後爲server-1和server-2新增一塊硬盤。將其掛載到/data/brick2中

fdisk -l
mkfs.xfs /dev/sdc
mkdir -p /data/brick2
echo '/dev/sdc /data/brick2 xfs defaults 1 2' >> /etc/fstab
mount -a 

查看磁盤使用情況

[root@server01 gv0]# df -h
文件系統                                容量  已用  可用 已用% 掛載點
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.6M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sda1                              1014M  136M  878M   14% /boot
/dev/sdb                                 10G   82M   10G    1% /data/brick1
tmpfs                                    98M     0   98M    0% /run/user/0
/dev/sdc                                 10G   33M   10G    1% /data/brick2

創建一個分佈式複製卷,複製份數爲2 用上/data/brick2/gv0

gluster volume create gv0 replica 2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0 server-1:/data/brick2/gv0 server-2:/data/brick2/gv0

詳情如下

[root@server01 ~]# gluster volume info
 
Volume Name: gv0
Type: Distributed-Replicate
Volume ID: e13710ef-936e-41f4-8f27-4f39d1817f74
Status: Created
Snapshot Count: 0
Number of Bricks: 3 x 2 = 6
Transport-type: tcp
Bricks:
Brick1: server-1:/data/brick1/gv0
Brick2: server-2:/data/brick1/gv0
Brick3: server-3:/data/brick1/gv0
Brick4: server-4:/data/brick1/gv0
Brick5: server-1:/data/brick2/gv0
Brick6: server-2:/data/brick2/gv0
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
performance.client-io-threads: off

創建不同類型卷命令實例

基本卷就是分佈式卷

gluster volume create gv0 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

複製卷 就要設置replicate count 如果複製的數量等於Brick的數量,就是一個複製卷,如果小於Brick(但是使用的Brick數一定要是副本數量的倍數) 如下就是分佈式複製卷。。。副本數量爲2

gluster volume create gv0  replica 2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

條帶卷 要設置 stripe count 條帶卷適用於解決大文件高併發下帶來的高負載和低性能問題。count表示一個文件會被切割成幾條放在不同的服務器中。如果count等於Brick數,那就是條帶卷,如果小於Brick數(但是使用Brick數一定要是count數量的倍數) 如下就是分佈式條帶卷。。。切割數爲2 似乎6.1之後條帶卷已經廢除了。這個。廢除就廢除吧。

gluster volume create gv0  stripe  2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

三種結合的話同時設置 replicate count1 stripe count2。。。如果Brick數大於count1Xcount2那就是分佈式條帶複製卷,前提同樣是Brick數是count1 X count2 的倍數。。。那就是至少八個存儲服務器。。。如下

gluster volume create gv0  stripe  2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0 server-5:/data/brick1/gv0 server-6:/data/brick1/gv0 server-7:/data/brick1/gv0 server-8:/data/brick1/gv0

6.1廢除striped後似乎多了一個disperse []。 分散卷,這個還不是太清楚如何使用,是什麼意思。。。和條帶卷有點類似。。。

採用副本複製卷時 手動恢復誤刪的文件命令

gluster volume heal VOLNAME full

感覺挺有用的。也挺神奇。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章