目录
一、部署流程
1. 环境部署
节点 | ip | 磁盘 | 挂载点 |
---|---|---|---|
node1 | 192.168.8.13 | sdb1、sdc1、sdd1、sde1 | /data |
node2 | 192.168.8.14 | sdb1、sdc1、sdd1、sde1 | /data |
node3 | 192.168.8.15 | sdb1、sdc1、sdd1、sde1 | /data |
node4 | 192.168.8.16 | sdb1、sdc1、sdd1、sde1 | /data |
client | 192.168.8.17 | \ | \ |
- 四台节点均需要添加四块磁盘,不需要太大(需关机状态下添加)
#四台服务器操作
hostname node1 #临时修改主机名
bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
ntpdate ntp1.aliyun.com #时间同步
1234567
2. 硬盘分区挂载
vim /opt/fdisk.sh
#!/bin/bash
echo "the disks exist list:"
##grep出系统所带磁盘
fdisk -l |grep '磁盘 /dev/sd[a-z]'
echo "=================================================="
PS3="chose which disk you want to create:"
##选择需要创建的磁盘编号
select VAR in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit
do
case $VAR in
sda)
##本地磁盘就退出case语句
fdisk -l /dev/sda
break ;;
sd[b-z])
#create partitions
echo "n ##创建磁盘
p
w" | fdisk /dev/$VAR
#make filesystem
##格式化
mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null
#mount the system
mkdir -p /data/${VAR}"1" &> /dev/null
###永久挂载
echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab
###使得挂载生效
mount -a &> /dev/null
break ;;
quit)
break;;
*)
echo "wrong disk,please check again";;
esac
done
chmod +x /opt/fdisk.sh
cd /opt/
sh -x fdisk.sh
12345678910111213141516171819202122232425262728293031323334353637383940414243
3. 配置/etc/hosts文件(所有节点上操作)
echo "192.168.8.13 node1" >> /etc/hosts
echo "192.168.8.14 node2" >> /etc/hosts
echo "192.168.8.15 node3" >> /etc/hosts
echo "192.168.8.16 node4" >> /etc/hosts
cat /etc/hosts
12345
4. 安装、启动GFS
四个节点配置相同
- 把 gfsrepo 压缩包上传至 opt 目录下
unzip gfsrepo.zip
1
- 配置 yum 本地源
cd /etc/yum.repos.d/
mkdir repo.bak
mv CentOS-* repo.bak
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma #安装gluster
systemctl start glusterd.service #开启gluster服务
systemctl enable glusterd.service
systemctl status glusterd.service
netstat -antp | grep glusterd
123456789101112131415161718
5. 添加节点并创建集群
添加节点到存储信任池中,只需在 node1 节点上操作
添加节点到存储信任池中(在node1节点上操作)
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
gluster peer status #在每个节点上查看群集状态
123456
6. 根据规划创建卷
卷名 | 卷类型 | Brick |
---|---|---|
dis-volume | 分布式卷 | node1(/data/sdb1)、node2(/data/sdb1) |
stripe-volume | 条带卷 | node1(/data/sdc1)、node2(/data/sdc1) |
rep-volume | 复制卷 | node3(/data/sdb1)、node4(/data/sdb1) |
dis-stripe | 分布式条带卷 | node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1) |
dis-rep | 分布式复制卷 | node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1) |
6.1 创建分布式卷
gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
#创建分布式卷,没有指定类型,默认创建的是分布式卷
gluster volume list
#查看类型
gluster volume start dis-volume
#开启
gluster volume info dis-volume
#查看卷信息
1234567891011
6.2 创建条带卷
gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
#指定类型为 stripe,数值为2,且后面跟了2个 Brick Server,所以创建的是条带卷
gluster volume start stripe-volume
gluster volume info stripe-volume
12345
6.3 创建复制卷
gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force#指定类型为replica,数值为2,且后面跟了2个Brick Server,所以创建的是复制卷gluster volume start rep-volumegluster volume info rep-volume
1
6.4 创建分布式条带卷
gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force#指定类型为stripe,数值为2,而且后面跟了4个Brick Server,是2的两倍,所以创建的是分布式条带卷gluster volume start dis-stripegluster volume info dis-stripe
1
6.5 创建分布式复制卷
gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force#指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷gluster volume start dis-repgluster volume info dis-repgluster volume list
1
二、Client 客户端部署与测试
1. 部署 Gluster 客户端
在 node1上创建五个卷后,在客户端上把卷挂载在指定的五个目录内,在目录内写入了五个文件,五个文件分别保存在五个目录里面
- 环境部署
systemctl stop firewalldsystemctl disable firewalldsetenforce 0ntpdate ntp1.aliyun.com#将软件包 gfsrepo.zip 传至 opt 目录下cd /optunzip gfsrepo.zip
1
- 配置本地 yum 源仓库
cd /etc/yum.repos.d/mkdir repos.bakmv CentOS-* repos.bak/vim glfs.repo[glfs]name=glfsbaseurl=file:///opt/gfsrepogpgcheck=0enabled=1yum clean all && yum makecacheyum install -y glusterfs glusterfs-fuse
1
- 创建挂载目录
mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}ls /test
1
- 配置 /etc/hosts 文件
echo "192.168.8.13 node1" >> /etc/hostsecho "192.168.8.14 node2" >> /etc/hostsecho "192.168.8.15 node3" >> /etc/hostsecho "192.168.8.16 node4" >> /etc/hosts
1
- 挂载 Gluster 文件系统
mount.glusterfs node1:dis-volume /test/dismount.glusterfs node1:stripe-volume /test/stripemount.glusterfs node1:rep-volume /test/repmount.glusterfs node1:dis-stripe /test/dis_stripemount.glusterfs node1:dis-rep /test/dis_repdf -Th
1
- 卷中写入文件
cd /optdd if=/dev/zero of=/opt/demo1.log bs=1M count=40dd if=/dev/zero of=/opt/demo2.log bs=1M count=40dd if=/dev/zero of=/opt/demo3.log bs=1M count=40dd if=/dev/zero of=/opt/demo4.log bs=1M count=40dd if=/dev/zero of=/opt/demo5.log bs=1M count=40#生成一个特定大小的文件给与/opt/demo*.log下,大小为1M,共处理40次ls -lh /optcp demo* /test/discp demo* /test/stripe/cp demo* /test/rep/cp demo* /test/dis_stripe/cp demo* /test/dis_rep/tree /test/ #查看/test/的文件夹/文件的目录树
1
2. 验证 gluster 文件系统
gluster 服务器上查看文件分布
- ① 查看分布式文件分布
ls -lh /data/sdb1 #没有被分片,文件分开节点存放
1
- ② 查看条带卷文件分布
ls -lh /data/sdc1 #查询数据被分片50% 没副本 没冗余
1
- ③ 查看复制卷分布
#复制卷放在了 node3、node4ll -h /data/sdb1 #没有被分片,有副本,有冗余
1
- ④ 查看分布式条带卷分布
ll -h /data/sdd1 #文件被分片50%,没副本,没冗余
1
- ⑤ 查看分布式复制卷分布
ll -h /data/sde1 #数据没有被分片 有副本 有冗余
1
3. 破坏性测试分布式文件系统
#关闭 glusterd 服务 node2 节点来模拟故障[root@node2]#systemctl stop glusterd ls #在客户端上查看文件是否正常#查看卷数据是否正常ls /test/dis #测试分布式是否正常ls /test/rep #测试复制带是否正常ls /test/stripe #测试条带是否正常ll /test/dis_stripe #测试分布式条带是否正常ls /test/dis_rep #测试分布复制带是否正常
1
小结:有复制数据功能的卷数据比较安全
三、GFS 文件系统的维护命令
gluster volume list #查看GlusterFS卷gluster volume info