只實驗部署。 參考他人博客得來,侵權立刪。
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等磁盤文件系統日誌)
整體架構:
-
存儲服務器主要提供基本的數據存儲功能,最終的文件數據通過統一的調度策略分佈在不同的存儲服務器上。它們上面運行着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即可
部署
- 設置五個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
- 關閉SElinux 關閉防火牆
- 關閉SELinux
setenforce 0
vi /etc/selinux/config
設置 SELINUX=permissive
重啓虛擬機即可
- 關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
- 安裝NTP服務並開啓。ntp就是一個時間同步服務。 最後一行命令是因爲ntp開機啓動可能和chronyd自啓動衝突。
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
systemctl disable chronyd
- 爲四個存儲用虛擬機添加一塊新硬盤。並掛載。四個都要添加
我新增的硬盤 名爲 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
- 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
- 配置受信任的池。 一旦建立了這個池,只有受信任的成員才能探測到新的服務器到池中。新服務器無法探測池,必須從池中探測它。
如在 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 ~]#
- 設置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
- 客戶端安裝 Gluster
yum install centos-release-gluster
yum -y install glusterfs glusterfs-fuse
- 測試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 ~]#
- 接下來在 測試在/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
感覺挺有用的。也挺神奇。。。