GlusterFs是一個開源分佈式文件系統
GlusterFs主要由存儲服務器,客戶端及NFS/samba存儲網關組成,
GlusterFs特色:擴展性和高性能,高可用性,全局統一命名空間,彈性卷管理,基於標準協議
GlusterFs術語:Brick(存儲塊),Vlume(邏輯卷),FUSE(內核模塊),VFS,Glusterd(後臺管理進程)
GlusterFs的工做原理:
彈性HASH算法的優勢:1)保證數據平均分佈在每一個Brick中。
(2)解決了對元數據服務器的依賴,進而解決了單點故障及訪問瓶頸。
GlusterFS七種卷:分佈式卷,條帶卷,複製卷,分佈式條帶卷,分佈式複製卷,條帶複製卷,分佈式條帶複製卷
GlusterFS七種卷中,具有冗餘性的:複製卷,分佈式複製卷,條帶複製卷,分佈式條帶複製卷。
實驗步驟以下:四臺服務器,一臺客戶機
四臺服務器的信息以下:
在全部節點上執行如下操做
開啓4臺虛擬機,根據上述表添加磁盤,經過fdisk分區,mkfs格式化,建立相應的掛載目錄,並將格式化的磁盤掛載到相應的目錄中,最後修改/etc/fstab配置文件,使其永久生效。
附上命令,以node1爲例
(1)建立掛載目錄:mkidr -p /b3 /c4 /d5 /e6
(2)分區全部硬盤以sdb爲例:fdisk /dev/sdb
(3)格式化:#mkfs.ext4 /dev/sdb1
(4)掛載:#mount /dev/sdb1 /b3
(5)永久掛載
#vim /etc/fstab
/dev/sdb1 /b3 ext4 defaults 0 0
/dev/sdc1 /c4 ext4 defaults 0 0
/dev/sdd1 /d5 ext4 defaults 0 0
/dev/sde1 /e6 ext4 defaults 0 0
二,
1.關閉全部防火牆和SElinux
#systemctl stop firewalld
#systemctl disable firewalld
#setenforce 0
2.配置hosts文件(全部主機上都要配置)
vim /etc/hosts
192.168.1.1 node1
192.168.1.2 node2
192.168.1.3 node3
192.168.1.4 node4
3.安裝軟件,在全部的服務器上都要安裝(GlusterFS)
#yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
4.啓動glusterfs(在全部節點上)
#systemctl start glusterd
#systemctl enable glusterd
5.添加節點(在node1上執行),添加node1—node4節點
[root@node1 ~]# gluster peer probe node1
peer probe: success. Probe on localhost not needed
[root@node1 ~]# gluster peer probe node2
peer probe: success.
[root@node1 ~]# gluster peer probe node3
peer probe: success.
[root@node1 ~]# gluster peer probe node4
peer probe: success.
6.建立卷(在node1上建立卷)(加粗的爲命令)
(1)建立分佈式卷:
[root@node1 ~]# gluster volume create dis-volume node1:/e6 node2:/e6 force
volume create: dis-volume: success: please start the volume to access data
啓動卷:
[root@node1 ~]# gluster volume start dis-volume
volume start: dis-volume: success
沒有指定類型默認建立的是分佈式卷
(2)建立條帶卷
[root@node1 ~]# gluster volume create stripe-volume stripe 2 node1:/d5 node2:/d5 force
volume create: stripe-volume: success: please start the volume to access data
啓動卷:
[root@node1 ~]# gluster volume start stripe-volume
volume start: stripe-volume: success
(3)建立複製卷
[root@node1 ~]# gluster volume create rep-volume replica 2 node3:/d5 node4:/d5 force
volume create: rep-volume: success: please start the volume to access data
啓動卷:
[root@node1 ~]# gluster volume start rep-volume
volume start: rep-volume: success
(4)建立分佈式條帶卷
[root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/b3 node2:/b3 node3:/b3 node4:/b3 force
volume create: dis-stripe: success: please start the volume to access data
啓動:
[root@node1 ~]# gluster volume start dis-stripe
volume start: dis-stripe: success
(5)建立分佈式複製卷
[root@node1 ~]# gluster volume create dis-rep replica 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force
volume create: dis-rep: success: please start the volume to access data
啓動卷:
[root@node1 ~]# gluster volume start dis-rep
volume start: dis-rep: success
三,客戶端配置以下:
1.安裝客戶端軟件
[root@node5 yum.repos.d]# yum -y install glusterfs glusterfs-fuse
2建立掛載目錄
[root@node5 ~]# mkdir -p /test /{dis,stripe,rep,dis_and_stripe,dis_and_rep}
3.修改hosts文件
[root@node5 ~]# vim /etc/hosts
192.168.1.1 node1
192.168.1.2 node2
192.168.1.3 node3
192.168.1.6 node6
192.168.1.4 node4
192.168.1.5 node5
4.掛載gluster文件系統
[root@node5 test]# mount -t glusterfs node1:dis-volume /test/dis
[root@node5 test]# mount -t glusterfs node1:stripe-volume /test/stripe
[root@node5 test]# mount -t glusterfs node1:rep-volume /test/rep
[root@node5 test]# mount -t glusterfs node1:dis-volume /test/dis_and_stripe
[root@node5 test]# mount -t glusterfs node1:dis-rep /test/dis_and_rep
4、測試gluster文件系統
1.卷中寫入文件(前5條生成一個43M的文件,後5條石複製文件到卷中)
[root@node5 ~]# dd if=/dev/zero of=demo1.log bs=43M count=1
[root@node5 ~]# dd if=/dev/zero of=demo2.log bs=43M count=1
[root@node5 ~]# dd if=/dev/zero of=demo3.log bs=43M count=1
[root@node5 ~]# dd if=/dev/zero of=demo4.log bs=43M count=1
[root@node5 ~]# dd if=/dev/zero of=demo5.log bs=43M count=1
[root@node5 ~]#cp demo /test/dis
[root@node5 ~]#cp demo /test/stripe
[root@node5 ~]#cp demo /test/rep
[root@node5 ~]#cp demo /test/dis_and_stripe
[root@node5 ~]#*cp demo /test/dis_and_rep
.查看文件分佈
(1)查看分佈式卷文件分佈
[root@node1 ~]# ll -h /e6
總用量 130M
-rw-r--r-- 2 root root 43M 10月 25 19:35 demo1.log
-rw-r--r-- 2 root root 43M 10月 25 19:35 demo2.log
-rw-r--r-- 2 root root 43M 10月 25 19:35 demo3.log
drwx------ 2 root root 16K 9月 23 09:07 lost+found
[root@node2 ~]# ll -h /e6
總用量 86M
-rw-r--r-- 2 root root 43M 10月 25 19:35 demo4.log
-rw-r--r-- 2 root root 43M 10月 25 19:36 demo5.log
[root@node2 ~]#
(2)查看條帶卷文件分佈
[root@node1 ~]# ll -h /d5
總用量 108M
-rw-r--r-- 2 root root 22M 10月 25 19:34 demo1.log
-rw-r--r-- 2 root root 22M 10月 25 19:34 demo2.log
-rw-r--r-- 2 root root 22M 10月 25 19:34 demo3.log
-rw-r--r-- 2 root root 22M 10月 25 19:34 demo4.log
-rw-r--r-- 2 root root 22M 10月 25 19:36 demo5.log
drwx------ 2 root root 16K 9月 23 09:06 lost+found
[root@node2 ~]# ll -h /d5
總用量 108M
-rw-r--r-- 2 root root 22M 10月 25 19:34 demo1.log
-rw-r--r-- 2 root root 22M 10月 25 19:34 demo2.log
-rw-r--r-- 2 root root 22M 10月 25 19:34 demo3.log
-rw-r--r-- 2 root root 22M 10月 25 19:34 demo4.log
-rw-r--r-- 2 root root 22M 10月 25 19:36 demo5.log
drwx------ 2 root root 16K 9月 23 09:14 lost+found
(3)查看複製卷文件分佈
[root@node3 ~]# ll -h /d5
總用量 216M
-rw-r--r-- 2 root root 43M 10月 25 19:34 demo1.log
-rw-r--r-- 2 root root 43M 10月 25 19:34 demo2.log
-rw-r--r-- 2 root root 43M 10月 25 19:34 demo3.log
-rw-r--r-- 2 root root 43M 10月 25 19:34 demo4.log
-rw-r--r-- 2 root root 43M 10月 25 19:36 demo5.log
drwx------ 2 root root 16K 9月 23 09:59 lost+found
[root@node4 ~]# ll -h /d5**
總用量 216M
-rw-r--r-- 2 root root 43M 10月 25 19:34 demo1.log
-rw-r--r-- 2 root root 43M 10月 25 19:34 demo2.log
-rw-r--r-- 2 root root 43M 10月 25 19:34 demo3.log
-rw-r--r-- 2 root root 43M 10月 25 19:34 demo4.log
-rw-r--r-- 2 root root 43M 10月 25 19:36 demo5.log
drwx------ 2 root root 16K 9月 23 10:08 lost+foundnode
實驗到此結束linux
其它的維護命令
(1)查看glusterfs卷
[root@node1 ~]# gluster volume list
dis-rep
dis-stripe
dis-volume
rep-volume
stripe-volume
(2)查看全部卷的狀態
[root@node1 ~]# gluster volume status
(3)查看全部卷的信息
[root@node1 ~]# gluster volume info算法
(4)設置卷的訪問控制
[root@node1 ~]# gluster volume set dis-rep auth.allow 192.168.1.*
volume set: successvim