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...