分布式glusterfs文件式存储管理之一:glusterfs安装
GlusterFS 是一个可扩展的网络文件系统,适用于云存储和媒体流等数据密集型任务。GlusterFS 是免费的开源软件
gluster三种基本类型 1 distributed分布式卷、2 replicated复制卷、striped条带卷
1.分布卷:在分布式卷中,文件随机扩展到卷中的砖块中。使用分布式卷,需要扩展存储和冗余不是很重要,或由其他硬件/软件层提供。可以在线扩容,在多个brick中随机存储
创建语法:gluster volume create NEW-VOLNAME [transport [tcp | rdma | tcp,rdma]] NEW-BRICK...
例子: 使用 TCP 创建具有四个存储服务器的分布式卷。
# gluster volume create test-volume server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
2.复制卷:复制卷创建卷中多个砖块的文件副本。 可以在高可用性和高可靠性至关重要的环境中使用复制卷。类似raid1,数据镜像,可以指定多个副本(HA)
创建语法:gluster volume create NEW-VOLNAME [replica COUNT] [transport [tcp |rdma | tcp,rdma]] NEW-BRICK...
例子:要创建具有三个存储服务器的复制卷:
# gluster volume create test-volume replica 3 transport tcp server1:/exp1 server2:/exp2 server3:/exp3
3. 条带卷:条带卷在卷中的砖块之间进行条带化。 为获得最佳效果,只能在访问非常大的文件的高并发环境中使用条带卷。类似raid0,提升IO性能(LB)。6.0以后已经取消
创建语法:gluster volume create [stripe ] [transport tcp | rdma | tcp,rdma]
例子: gluster volume create test stripe 2 transport tcp server1:/exp1 server2:/exp2
其他类型:1 distributed replicated分布式复制、2 dispersed分散卷、3 distributed dispersed分布式分散卷、4.分布式条带卷Distribute Stripe volume、5 条带复制卷Stripe Replica volume、6 分布式条带复制卷Distribute Stripe Replicated volume
1 分布式复制卷:在卷中的复制卷上分发文件。可以在需要扩展存储和高可靠性至关重要的环境中使用分布式复制卷。分布式复制卷还可在大多数环境中提供改进的读取性能。结合distributed和replica的优点,HA+可扩容。
创建语法:gluster volume create [replica ] [transport tcp | rdma | tcp,rdma]
例子:gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
2 dispersed分散卷:是基于ErasureCodes(纠错码)的一种新类型的Volume(3.6版本正式发布该特性),类似于RAID5/6。通过配置Redundancy(冗余)级别提高可靠性,在保证较高的可靠性同时,可以提升物理存储空间的利用率。redundancy 必须大于0,并且bricks的总数必须大于2 *redundancy 。 这意味着dispersed卷必须至少包含3个bricks。类似raid5/raid6,防止单点故障(HA),提升IO性能(LB)。
创建语法:# gluster volume create test-volume [disperse [
例子:冗余级别为 1,(2 + 1) 的三节点分散卷:
# gluster volume create test-volume disperse 3 redundancy 1 server1:/exp1 server2:/exp2 server3:/exp3
3、distributed dispersed分布式分散卷: 分布式分散卷在分散的子卷上分发文件。这与分发复制卷具有相同的优点,但使用分散将数据存储到块中,分布式分散卷等效于分布式复制卷,但是使用分散子卷而不是复制子卷。结合distibuted和dispersed的优点,HA+LB+可扩容,HA+LB+可扩容。
创建语法:# gluster volume create [disperse [
例子:六节点分布式分散卷,冗余级别为 1, 2 x (2 + 1) = 6:
# gluster volume create test-volume disperse 3 redundancy 1 server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6
---------------------------------------------------------下面的glusterfs 6.0以后已经取消--------------------------------------------------
4.分布式条带卷(Distribute Stripe volume):分布式条带卷在集群中的两个或多个节点之间进行条带化。为了获得最佳效果,应该使用分布式条带卷,其中要求是扩展存储,并且访问大型文件的高并发环境至关重要。至少最少需要4台服务器,结合distibuted和stripe的优点,LB+可扩容
创建语法: gluster volume create [stripe ] [transport tcp | rdma | tcp,rdma]
例子:gluster volume create test-volume stripe 4 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7 server8:/exp8
5 条带复制卷(Stripe Replica volume):类似RAID 10,将文件分割并备份随机存放在不同的服务器里,File被分割4段,1、3存放在server1(exp1)上,2、4存放在server2(exp4),server1上的(exp3)存放server2(exp4)的备份文件,server2上的(exp2)存放server1(exp1)的备份文件。结合stripe和replica的优点,HA+LB
例子:gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
6 分布式条带复制卷(Distribute Stripe Replicated volume):三种基本卷的复合卷。结合三种卷的优点,HA+LB+可扩容
创建语法: gluster volume create [disperse [
例子:gluster volume create test1 disperse 3 server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 force
安装glusterfs服务端
操作系统初始化脚本 # vim init_script.sh#!/bin/bash systemctl stop firewalld systemctl disable firewalld sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config setenforce 0 yum -y install vim net-tools wget pcre pcre-devel zlib zlib-devel ntp gcc gcc-c++ lrzsz ntpdate wget cd /etc/yum.repos.d if [ ! -d /etc/yum.repos.d/bak ];then mkdir bak fi mv ./* ./bak &>>/dev/null wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache echo "set nu" >> /root/.vimrc sed -i "8calias grep='grep --color'" /root/.bashrc yum install -y ntp yum update -y rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml -yglusterfs安装yum源 # vim /etc/yum.repos.d/glusterfs.repo
[glusterfs] name=glusterfs baseurl=https://buildlogs.centos.org/centos/7/storage/x86_64/gluster-4.1/ enabled=1 gpgcheck=0
glusterfs安装脚本
# vim init_glusterfs.sh
#!/bin/bash hostnamectl set-hostname gfs01 echo "192.168.10.111 gfs01" >> /etc/hosts echo "192.168.10.112 gfs02" >> /etc/hosts echo "192.168.10.113 gfs03" >> /etc/hosts echo "192.168.10.114 gfs04" >> /etc/hosts echo "192.168.10.115 gfs05" >> /etc/hosts echo "192.168.10.116 gfs06" >> /etc/hosts echo "192.168.10.117 gfs07" >> /etc/hosts echo "192.168.10.118 gfs08" >> /etc/hosts systemctl stop firewalld systemctl disable firewalld setenforce 0 &>>/dev/null sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config yum install -y epel-release yum install centos-release-gluster6 -y yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma systemctl start glusterd.service systemctl enable glusterd.service df -h秘钥互信:
# vim sshkey.sh
#!/bin/bash # 定义变量 Ip_arr="111 112 113 114 115 116 117 118" Ip_up=192.168.10. Pass_c=centos Pub_file=/root/.ssh/id_rsa.pub # 创建秘钥 echo "============== 开始安装需要软件 ==============" yum install -y sshpass &>/dev/null rm -fr /root/.ssh/id_rsa* ssh-keygen -t rsa -f /root/.ssh/id_rsa -P "" -q # 分发秘钥 for ip in $Ip_arr do echo "----------开始分发秘钥$Ip_up$ip-----------" sshpass -p $Pass_c ssh-copy-id -i $Pub_file -o StrictHostKeyChecking=no $Ip_up$ip &>/dev/null echo -e "============== 分 发 秘 钥 结 束 ==============\n" done
# sh sshkey.sh
对磁盘进行分区和挂载# fdisk /dev/sdb
# mkfs.xfs /dev/sdb1
# echo "/dev/sdb1 /export/sdb1 xfs defaults 0 0" >> /etc/fstab
# mkdir -p /export/sdb1 && mount -a && mkdir -p /export/sdb1/brick
生产环境需要开启防火墙,则执行 # iptables -I INPUT -p all -s# gluster peer probe gfs02
# gluster peer probe gfs03
# gluster peer probe gfs04
# gluster peer probe gfs05
# gluster peer probe gfs06
# gluster peer probe gfs07
# gluster peer probe gfs08
查看存储集群状态
# gluster volume info
# gluster peer status
断开集群连接# gluster peer detach gfs02
# gluster peer detach gfs03
# gluster peer detach gfs04
# gluster peer detach gfs05
# gluster peer detach gfs06
# gluster peer detach gfs07
# gluster peer detach gfs08