GlusterFS系統是一個可擴展的網絡文件系統,相比其餘分佈式文件系統,GlusterFS具備高擴展性、高可用性、高性能、可橫向擴展等特色,而且其沒有元數據服務器的設計,讓整個服務沒有單點故障的隱患。當客戶端訪問GlusterFS存儲時,首先程序經過訪問掛載點的形式讀寫數據,對於用戶和程序而言,集羣文件系統是透明的,用戶和程序根本感受不到文件系統是本地仍是在遠程服務器上。讀寫操做將會被交給VFS(Virtual File System)來處理,VFS會將請求交給FUSE內核模塊,而FUSE又會經過設備/dev/fuse將數據交給GlusterFS Client。最後通過GlusterFS Client的計算,並最終通過網絡將請求或數據發送到GlusterFS Server上。node
分佈式卷也當作爲哈希卷,多個文件以文件爲單位在多個brick上,使用哈希算法隨機存儲。python
建立分佈式卷命令:linux
gluster volume create volume_name node1:/data/br1 node2:/data/br1
複製卷是將多個文件在多個brick上覆制多份,brick的數目要與須要複製的份數相等,建議brick分佈在不一樣的服務器上。nginx
建立複製卷:算法
gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1
replica:文件保存的份數vim
條帶卷是將文件分紅條帶,存放在多個brick上,默認條帶大小128ksegmentfault
gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1
分佈式條帶卷是將多個文件在多個節點哈希存儲,每一個文件再多分條帶在多個brick上存儲後端
建立分佈式條帶卷:服務器
gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1
分佈式複製卷是將多個文件在多個節點上哈希存儲,在多個brick複製多份存儲。網絡
gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1
條帶式複製卷是將一個大文件存儲的時候劃分條帶,而且保存多份
gluster volume create volume_name stripe 2 replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1
日誌存儲集羣採用的是分佈式複製卷,將多個文件在多個節點上哈希存儲,在多個brick複製多份存儲。共有五臺服務器,磁盤空間共有90T,那麼採用這種分佈式複製卷的方式,只有45T磁盤空間可用。而且須要採用分佈式複製卷方式須要要有雙數的brick,因此現採用一臺服務器上建立兩個brick,如上圖所示,10.102.23.4:/data_01/node和10.102.23.44:/data_01/node是備份關係,其餘節點均是如此,10.102.23.44做爲日誌存儲集羣的管理節點,nfs-ganesha服務只須要安裝在控制節點,客戶端則能夠經過nfs方式掛載。
# sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/sysconfig/selinux #關閉selinux # iptables -F #清除防火牆規則
安裝glusterfs(01-05)
# yum install userspace-rcu-* # yum install python2-gluster-3.13.2-2.el7.x86_64.rpm # yum install tcmu-runner-* libtcmu-* # yum install gluster* # yum install nfs-ganesha-* #這個nfs只要須要對外掛載的哪臺服務器須要安裝(10.102.23.44) # systemctl start glusterd.service #全部服務器啓動glusterd # systemctl start rpcbind # systemctl enable glusterd.service # systemctl enable rpcbind # ss -lnt #查詢端口是否有爲24007,若是有則服務正常運行
建立集羣(在10.102.23.44節點上執行一下操做,向集羣中添加節點):
[root@admin-node ~]# gluster peer probe 10.102.23.44 peer probe: success. [root@admin-node ~]# gluster peer probe 10.102.23.45 peer probe: success. [root@admin-node ~]# gluster peer probe 10.102.23.46 peer probe: success. [root@admin-node ~]# gluster peer probe 10.102.23.47 peer probe: success. [root@admin-node ~]# gluster peer probe 10.102.23.4 peer probe: success.
查看虛擬機信任狀態添加結果
[root@admin-node ~]# gluster peer status Number of Peers: 4 Hostname: 10.102.23.46 Uuid: 31b5ecd4-c49c-4fa7-8757-c01604ffcc7e State: Peer in Cluster (Connected) Hostname: 10.102.23.47 Uuid: 38a7fda9-ad4a-441a-b28f-a396b09606af State: Peer in Cluster (Connected) Hostname: 10.102.23.45 Uuid: 9e3cfb56-1ed4-4daf-9d20-ad4bf2cefb37 State: Peer in Cluster (Connected) Hostname: 10.102.23.4 Uuid: 1836ae9a-eca5-444f-bb9c-20f032247bcb State: Peer in Cluster (Connected)
在全部節點進行如下磁盤操做:
[root@admin-node ~]# fdisk /dev/sdb
建立卷組:
[root@admin-node ~]# vgcreate vg_data01 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 [root@admin-node ~]# vgcreate vg_data02 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1
查看卷組:
[root@admin-node ~]# vgdisplay
建立邏輯卷:
[root@admin-node ~]# lvcreate -n lv_data01 -L 9TB vg_data01 [root@admin-node ~]# lvcreate -n lv_data02 -L 9TB vg_data02
查看邏輯卷:
[root@admin-node ~]# lvdisplay
格式化邏輯卷:
[root@admin-node ~]# mkfs.xfs /dev/vg_data01/lv_data01 [root@admin-node ~]# mkfs.xfs /dev/vg_data02/lv_data02
掛載邏輯卷:
[root@admin-node ~]# mkdir -p /data_01/node /data_02/node [root@admin-node ~]# vim /etc/fstab /dev/vg_data01/lv_data01 /data_01 xfs defaults 0 0 /dev/vg_data02/lv_data02 /data_02 xfs defaults 0 0 [root@admin-node ~]# mount /data_01 [root@admin-node ~]# mount /data_02
分佈式複製模式(組合型), 最少須要4臺服務器才能建立。
建立卷:
[root@admin-node ~]# gluster volume create data-volume replica 2 10.102.23.4:/data_01/node 10.102.23.44:/data_01/node 10.102.23.44:/data_02/node 10.102.23.45:/data_02/node 10.102.23.45:/data_01/node 10.102.23.4:/data_02/node 10.102.23.46:/data_01/node 10.102.23.47:/data_01/node 10.102.23.46:/data_02/node 10.102.23.47:/data_02/node force
啓動建立的卷:
[root@admin-node ~]# gluster volume start data-volume volume start: data-volume: success全部機器均可以查看: [root@admin-node ~]# gluster volume info
查看分佈式卷的狀態:
[root@admin-node ~]# gluster volume status
基於以上glusterfs部署,glusterfs分佈式複製卷已經完成
glusterfs服務自己也是支持nfs掛載,因爲現有生產環境存在多個網段,而且有些網段與glusterfs存儲服務器網段是不通,因此須要經過nginx代理nfs來實現nfs掛載。Glusterfs服務只是支持nfs3版本的掛載,在經過nginx代理方面也不是那麼方便,端口繁多,因此glusterfs與NFSs-Ganesha是完美組合。NFSs-Ganesha 經過FSAL(文件系統抽象層)將一個後端存儲抽象成一個統一的API,提供給Ganesha服務端,而後經過NFS協議將其掛載到客戶端。在客戶端上對掛出來的空間進行操做。而且NFSs-Ganesha 能夠指定nfs的版本。
在管理節點10.102.23.44上安裝nfs-ganesha,在一開始部署glusterfs已在管理節點上安裝,這裏就不重複說明了,直接簡要說明配置文件
[root@admin-node ~]# vim /etc/ganesha/ganesha.conf ..................................... EXPORT { ## Export Id (mandatory, each EXPORT must have a unique Export_Id) #Export_Id = 12345; Export_Id = 10; ## Exported path (mandatory) #Path = /nonexistant; Path = /data01; ## Pseudo Path (required for NFSv4 or if mount_path_pseudo = true) #Pseudo = /nonexistant; Pseudo = /data01; #客戶端經過nfs掛載的根目錄 ## Restrict the protocols that may use this export. This cannot allow ## access that is denied in NFS_CORE_PARAM. #Protocols = 3,4; Protocols = 4; #客戶端nfs掛載的版本 ## Access type for clients. Default is None, so some access must be ## given. It can be here, in the EXPORT_DEFAULTS, or in a CLIENT block #Access_Type = RW; Access_Type = RW; #權限問題 ## Whether to squash various users. #Squash = root_squash; Squash = No_root_squash; #root降級 ## Allowed security types for this export #Sectype = sys,krb5,krb5i,krb5p; Sectype = sys; #類型 ## Exporting FSAL #FSAL { #Name = VFS; #} FSAL { Name = GLUSTER; hostname = "10.102.23.44"; #glusterfs管理節點IP volume = "data-volume"; #glusterfs卷名 } } ...................
[root@admin-node ~]# systemctl restart nfs-ganesha [root@admin-node ~]# systemctl enable nfs-ganesha [root@admin-node ~]# showmount -e 10.102.23.44 Export list for 10.102.23.44: #nfs-ganesha搭建成功
以glusterfs方式掛載:
[root@admin-node ~]# mkdir /logs [root@admin-node ~]# mount -t glusterfs 10.102.23.44:data-volume /logs/
以NFS方式進行掛載:
在客戶端(10.1.99段):
[root@moban-00 ~]#yum -y install nfs-utils rpcbind [root@moban-00 ~]# systemctl start rpcbind [root@moban-00 ~]# systemctl enable rpcbind [root@moban-00 ~]# mkdir /home/dwweiyinwen/logs/ [root@moban-00 ~]# mount -t nfs -o vers=4,proto=tcp,port=2049 10.102.23.44:/data01 /home/dwweiyinwen/logs/
原文:https://www.jianshu.com/p/4b7...