CentOS-7.6 IP: 192.168.2.7[1-3] VIP: 192.168.2.80 hostname=node[1-3].local
node[1-3].localnode
cat >> /etc/hosts <<'EOF' 192.168.2.71 node1.local 192.168.2.72 node2.local 192.168.2.73 node3.local EOF hostnamectl set-hostname node1.local hostnamectl set-hostname node2.local hostnamectl set-hostname node3.local
node[1-3].locallinux
setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/conf firewall-cmd --set-default-zone=trusted firewall-cmd --complete-reload
node[1-3].local算法
rm -f /etc/yum.repos.d/*.repo curl -so /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo curl -so /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo sed -i '/aliyuncs.com/d' /etc/yum.repos.d/Centos-7.repo /etc/yum.repos.d/epel-7.repo yum install -y centos-release-gluster41
node[1-3].localcentos
yum install -y glusterfs-server
node[1-3].local缓存
systemctl start glusterd systemctl enable glusterd
node1.local服务器
配置信任池网络
gluster peer probe node2.local gluster peer probe node3.local
从信任池中删除并发
gluster peer detach node3.local force
检查信任池状态curl
gluster peer status netstat -antp | grep glusterd
node1.localtcp
存储空间为全部设备的容量之和
配置存储位置
# node[1-3].local mkdir -p /data/glusterfs/gv0
建立Gluster卷
gluster volume create gv0 transport tcp node1.local:/data/glusterfs/gv0 node2.local:/data/glusterfs/gv0 node3.local:/data/glusterfs/gv0 force
启动GlusterFS卷
gluster volume start gv0 gluster volume status gluster volume info gv0
node[1-3].local
安装
yum install -y keepalived
配置
cat > /etc/keepalived/keepalived.conf <<'EOF' ! Configuration File for keepalived global_defs { router_id 10 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 110 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 125 } virtual_ipaddress { 192.168.2.80 } } EOF
启动服务 跟随系统启动
systemctl start keepalived systemctl enable keepalived
mount -t glusterfs -o defaults,_netdev 192.168.2.80:/gv0 /mnt
Distributed:分布式卷,文件经过 hash 算法随机分布到由 bricks 组成的卷上。 Replicated: 复制式卷,相似 RAID 1,replica 数必须等于 volume 中 brick 所包含的存储服务器数,可用性高。 Striped: 条带式卷,相似 RAID 0,stripe 数必须等于 volume 中 brick 所包含的存储服务器数,文件被分红数据块,以 Round Robin 的方式存储在 bricks 中,并发粒度是数据块,大文件性能好。 Distributed Striped: 分布式的条带卷,volume中 brick 所包含的存储服务器数必须是 stripe 的倍数(>=2倍),兼顾分布式和条带式的功能。 Distributed Replicated: 分布式的复制卷,volume 中 brick 所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。 分布式复制卷的brick顺序决定了文件分布的位置,通常来讲,先是两个brick造成一个复制关系,而后两个复制关系造成分布。 企业通常用后两种,大部分会用分布式复制(可用容量为 总容量/复制份数),经过网络传输的话最好用万兆交换机,万兆网卡来作。这样就会优化一部分性能。它们的数据都是经过网络来传输的。
node1.local
存储空间为全部设备的容量之和
配置存储位置
mkdir -p /data/glusterfs/gv0
建立Gluster卷
gluster volume create gv0 transport tcp node1.local:/data/glusterfs/gv0 node2.local:/data/glusterfs/gv0 node3.local:/data/glusterfs/gv0 force
启动GlusterFS卷
gluster volume start gv0 gluster volume status gluster volume info gv0
存储空间为总容量的一半
# 注:复制模式,既AFR, 建立volume 时带 replica x 数量: 将文件复制到 replica x 个节点中 # gluster volume create gv2 replica 2 node1.local:/data/glusterfs/gv2 node2.local:/data/glusterfs/gv2 force # gluster volume start gv2 # gluster volume info gv2 # 查看gv2信息 Type
写入的时候是循环地一点一点在node01和node02的磁盘上
# gluster volume create gv3 stripe 2 node1.local:/data/brick3 node2.local:/data/brick3 force # gluster volume start gv3 # gluster volume info gv3 # 查看gv2信息 Type
最少须要4台服务器才能建立
# 将原有的复制卷gv2进行扩容,使其成为分布式复制卷 # gluster volume stop gv2 # gluster volume add-brick gv2 replica 2 node3.local:/data/glusterfs/gv2 node4.local:/data/glusterfs/gv2 force # gluster volume start gv2 # gluster volume info gv2 # 查看gv2信息 Type
注意:当你给分布式复制卷和分布式条带卷增长 bricks 时,你增长的 bricks 数目必须是复制或条带数目的倍数, 例如:你给一个分布式复制卷的 replica 为 2,你在增长 bricks 的时候数量必须为二、四、六、8等。 扩容后进行测试,发现文件都分布在扩容前的卷中。
# 将原有的复制卷gv3进行扩容,使其成为分布式条带卷 # gluster volume stop gv3 # gluster volume add-brick gv3 stripe 2 node3.local:/data/glusterfs/gv3 node4.local:/data/glusterfs/gv3 force # gluster volume start gv3 # gluster volume info gv3 # 查看gv3信息 Type
1)搭建条件
2)建立分布式复制卷
磁盘存储的平衡 平衡布局是颇有必要的,由于布局结构是静态的,当新的 bricks 加入现有卷,新建立的文件会分布到旧的 bricks 中,因此须要平衡布局结构,使新加入的 bricks 生效。布局平衡只是使新布局生效,并不会在新的布局中移动老的数据,若是你想在新布局生效后,从新平衡卷中的数据,还须要对卷中的数据进行平衡。
磁盘存储平衡
# gluster volume rebalance gv2 start
查看平衡存储状态
# gluster volume rebalance gv2 status
你可能想在线缩小卷的大小,例如:当硬件损坏或网络故障的时候,你可能想在卷中移除相关的 bricks。 注意:当你移除 bricks 的时候,你在 gluster 的挂载点将不能继续访问数据,只有配置文件中的信息移除后你才能继续访问 bricks 中的数据。当移除分布式复制卷或者分布式条带卷的时候,移除的 bricks 数目必须是 replica 或者 stripe 的倍数。 可是移除brick在生产环境中基本上不作的,若是是硬盘坏掉的话,直接换个好的硬盘便可,而后再对新的硬盘设置卷标识就能够使用了,后面会演示硬件故障或系统故障的解决办法。
# gluster volume stop gv2 # gluster volume remove-brick gv2 replica 2 node3.local:/data/glusterfs/gv2 node4.local:/data/glusterfs/gv2 force # gluster volume start gv2
若是误操做删除了后,其实文件还在 /storage/brick1 里面的,加回来就能够了
# gluster volume add-brick gv2 replica 2 node3.local:/data/glusterfs/gv2 node4.local:/data/glusterfs/gv2 force # gluster volume info gv2
gluster volume stop gv1 gluster volume delete gv1
模拟误删除卷信息故障及解决办法
rm -rf /data/glusterfs/gv3 gluster volume sync node2.local
物理故障 同时有多块硬盘故障,形成数据丢失 系统损坏不可修复 解决方法:
找一台彻底同样的机器,至少要保证硬盘数量和大小一致,安装系统,配置和故障机一样的 IP,安装 gluster 软件, 保证配置同样,在其余健康节点上执行命令 gluster peer status,查看故障服务器的 uuid 例如 node2 故障可在其余节点查看
[root@node1 ~]# gluster peer status Number of Peers: 2 Hostname: node2.local Uuid: a2d1e5a4-56ff-498b-aed1-2377b27b1ee6 State: Peer in Cluster (Connected) Hostname: node3.local Uuid: c6aae718-c73d-4585-8f02-d1fec473fd38 State: Peer in Cluster (Connected) [root@node2 ~]# sed -i 's/UUID=.*/UUID=a2d1e5a4-56ff-498b-aed1-2377b27b1ee6/' /var/lib/glusterd/glusterd.info # 在信任存储池中任意节点执行 就会自动开始同步,但在同步的时候会影响整个系统的性能 # gluster volume heal gv2 full # 查看状态 # gluster volume heal gv2 info
优化参数
Auth_allow # IP访问受权;缺省值(*.allow all);合法值:Ip地址 Cluster.min-free-disk # 剩余磁盘空间阀值;缺省值(10%);合法值:百分比 Cluster.stripe-block-size # 条带大小;缺省值(128KB);合法值:字节 Network.frame-timeout # 请求等待时间;缺省值(1800s);合法值:1-1800 Network.ping-timeout # 客户端等待时间;缺省值(42s);合法值:0-42 Nfs.disabled # 关闭NFS服务;缺省值(Off);合法值:Off|on Performance.io-thread-count # IO线程数;缺省值(16);合法值:0-65 Performance.cache-refresh-timeout # 缓存校验时间;缺省值(1s);合法值:0-61 Performance.cache-size # 读缓存大小;缺省值(32MB);合法值:字节 Performance.quick-read # 优化读取小文件的性能 Performance.read-ahead # 用预读的方式提升读取的性能,有利于应用频繁持续性的访问文件 Performance.write-behind # 先写入缓存内,在写入硬盘,以提升写入的性能。 Performance.io-cache # 缓存已经被读过的、
优化参数调整
# 命令格式: # gluster.volume set <卷><参数> # 例如: # 打开预读方式访问存储 [root@node01 ~]# gluster volume set gv2 performance.read-ahead on # 调整读取缓存的大小 [root@mystorage gv2]# gluster volume set gv2 performance.cache-size 256M
#看下节点有没有在线 gluster volume status nfsp #启动彻底修复 gluster volume heal gv2 full #查看须要修复的文件 gluster volume heal gv2 info #查看修复成功的文件 gluster volume heal gv2 info healed #查看修复失败的文件 gluster volume heal gv2 heal-failed #查看主机的状态 gluster peer status #查看脑裂的文件 gluster volume heal gv2 info split-brain #激活quota功能 gluster volume quota gv2 enable #关闭quota功能 gulster volume quota gv2 disable #目录限制(卷中文件夹的大小) gluster volume quota limit-usage /data 30MB --/gv2/data #quota信息列表 gluster volume quota gv2 list #限制目录的quota信息 gluster volume quota gv2 list /data #设置信息的超时时间 gluster volume set gv2 features.quota-timeout 5 #删除某个目录的quota设置 gluster volume quota gv2 remove /data
quota功能,主要是对挂载点下的某个目录进行空间限额。如:/mnt/gulster/data目录,而不是对组成卷组的空间进行限制。