Glusterfs 逻辑卷配置管理

实验环境

四台主机上配置对应的主机名,并在hosts文件中添加,每台主机上添加一个10G的硬盘
192.168.137.13 linux-node3 linux-node3.example.com
192.168.137.14 linux-node4 linux-node4.example.com
192.168.137.15 linux-node5 linux-node5.example.com
192.168.137.16 linux-node6 linux-node6.example.com

四台主机上安装Glusterfs
# yum install –y centos-release-gluster37.noarch
# yum --enablerepo=centos-gluster*-test install glusterfs-server glusterfs-cli glusterfs-geo-replication

一、配置Glusterfs

1.基础管理

# glusterfs -V                  # 查看版本信息
# /etc/init.d/glusterd start  # 启动
# /etc/init.d/glusterd status  # 状态
# /etc/init.d/glusterd stop  # 停止
# chkconfig glusterd on  # 添加开机启动

2.linux-node3主机配置

# gluster peer probe linux-node4          //存储主机加入信任存储池
# gluster peer probe linux-node5
# gluster peer probe linux-node6
# gluster peer status                    //查看状态
# yum -y install xfsprogs             //centos 6为ext文件系统,需要安装xfs。 centos 7默认为xfs文件系统,不需要安装xfsprog
# mkfs.xfs -f /dev/sdb             //格式化磁盘
# mkdir -p /storage/brick1               //建立挂载块设备的目录
# mount /dev/sdb /storage/brick1          //挂载
# echo "/dev/sdb  /storage/brick1  xfs defaults 0 0"  >> /etc/fstab         //开机自动挂载

三、分布式卷管理

Distributed:分布式卷,文件通过hash算法随机的分布到由bricks组成的卷上。
Replicated:复制式卷,类似raid1,replica数必须等于volume中brick所包含的存储服务器数,可用性高。
Striped:条带式卷,类似与raid0,stripe数必须等于volume中brick所包含的存储服务器数,文件被分成数据块,以Round Robin的方式存储在bricks中,并发粒度是数据块,大文件性能好。
Distributed Striped:分布式的条带卷,volume中brick所包含的存储服务器数必须是stripe的倍数(>=2倍),兼顾分布式和条带式的功能。
Distributed Replicated:分布式的复制卷,volume中brick所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。

1.分布式巻

分布式卷:将多个主机的硬盘资源整合成一个大存储目录,如果其中一台主机的硬盘损坏,应用程序无法访问这部分数据。

linux-node3主机配置
# mkdir /gv1
# gluster volume create gv1 linux-node3:/storage/brick1 linux-node4:/storage/brick1 force         //将linux-node3和linux-node4主机的硬盘合并使用
# gluster volume start gv1            //启动卷
# gluster volume info           //查看卷信息

测试

# mount -t glusterfs 127.0.0.1:/gv1 /gv1         //linux-node3上挂载
# cd /gv1 && touch a b dfs df             //linux-node3上创建文件
# mount -o mountproto=tcp -t nfs 192.168.137.16:/gv1 /gv1                   //在192.168.137.16测试,NFS方式挂载

2.分布式复制卷

分布式复制卷:将多个主机的硬盘资源整合进行数据备份,可以将一份数据分成2份或者多份数据放在不同的主机上。可使用硬盘空间 = 总硬盘空间 / 份数
如100G硬盘,需要分成2份,实际可使用硬盘空间为50G

linux-node3主机配置
# mkdir /gv2
# gluster volume create gv2 replica 2 linux-node5:/storage/brick1 linux-node6:/storage/brick1 force        //创建复制卷,2就表示两块硬盘
# gluster volume start gv2        //启动卷
# gluster volume info              //查看卷信息
# mount -t glusterfs 127.0.0.1:/gv2 /gv2                //挂载卷到目录


gv2做了跨主机的raid 1,所以显示的硬盘空间是10G,数据存2份
测试

# cd /gv2/
# touch ewqr dsfs

linux-node5和linux-node6主机上的/storage/brick1目录中都存储2个文件

3.分布式条带卷

将四台主机再次添加10G新硬盘并格式化

# fdisk -l

# mkfs.xfs -f /dev/sdc

# mkdir -p /storage/brick2

# echo "/dev/sdc  /storage/brick2  xfs defaults 0 0"  >> /etc/fstab

# mount -a

# df -h

linux-node3主机配置

# mkdir /gv3

# gluster volume create gv3 stripe 2 linux-node3:/storage/brick2 linux-node4:/storage/brick2 force         //创建条带卷

# gluster volume start gv3          //启动卷

# gluster volume info

# mount -t glusterfs 127.0.0.1:/gv3 /gv3               //挂载卷到目录

测试

#  cd /gv3
#  dd if=/dev/zero bs=1024 count=10000 of=/gv3/10M.file




查看linux-node3和linux-node4主机/storage/brick2目录文件,从上图可以看出,一个9.8M文件在两个主机各存储4.9M

4.扩展卷

以gv2为例

# gluster volume stop gv2            //停止应用程序数据写入gv2后,再停止卷
# gluster volume add-brick gv2 replica 2 linux-node5:/storage/brick2 linux-node6:/storage/brick2 force         //添加剩余硬盘
备注:当你给分布式复制卷和分布式条带卷中增加bricks时,你增加的bricks的数目必须是复制或者条带数目的倍数,例如:你给一个分布式复制卷的replica为2,你在增加bricks的时候数量必须为2、4、6、8等。
# gluster volume info gv2          //查看卷

# gluster volume start gv2             //启动卷

在做磁盘存储的平衡前,在gv2创建新的文件,是不会加入到新扩展的卷中

dd if=/dev/zero bs=1024 count=10000 of=/gv2/10M-1.file
dd if=/dev/zero bs=1024 count=10000 of=/gv2/10M-2.file
dd if=/dev/zero bs=1024 count=10000 of=/gv2/10M-3.file
dd if=/dev/zero bs=1024 count=10000 of=/gv2/10M-4.file

执行上面命令后,新建的4个文件还是存在linux-node5和linux-node6主机的/storage/brick1目录中

# gluster volume rebalance gv2 start               //磁盘存储的平衡
# gluster volume rebalance gv2 status                 //查看


此时查看brick1和brick2目录,可以看到文件被转移到新加入的硬盘中


备注:平衡布局是很有必要的,因为布局结构是静态的,当新的bricks加入现有卷,新创建的文件会分布到旧的bricks中,所以需要平衡布局结构,使新加入的bricks生效。布局平衡只是使新布局生效,并不会在新的布局移动老的数据,如果你想在新布局生效后,重新平衡卷中的数据,还需要对卷中的数据进行平衡

5.移除brick

# gluster volume stop gv2            //停止应用程序数据写入gv2后,再停止卷
# gluster volume remove-brick gv2 replica 2 linux-node5:/storage/brick1 linux-node6:/storage/brick1 force        //移除linux-node5和linux-node6的/storage/brick1
# gluster volume info gv2              //查看gv2

# gluster volume start gv2           //启动卷


可以看到10M-2.file文件不显示在gv2目录中,但它没有丢失,还存在linux-node5和linux-node6的/storage/brick1中。
备注:你可能想在线缩小卷的大小,例如:当硬件损坏或者网络故障的时候,你可能想在卷中移除相关的bricks。注意:当你移除bricks的时候,你在 gluster的挂载点将不能继续访问数据,只有配置文件中的信息移除后你才能继续访问bricks的数据。当移除分布式复制卷或者分布式条带卷的时候, 移除的bricks数目必须是replica或者stripe的倍数。例如:一个分布式条带卷的stripe是2,当你移除bricks的时候必须是2、 4、6、8等。

6.删除卷

# umount /gv1        //移除挂载卷
# gluster volume stop gv1            //停止卷
# gluster volume delete gv1            //删除卷
# gluster volume info gv1              //查看卷

posted @ 2019-01-15 01:09  reaperhero  阅读(229)  评论(0编辑  收藏  举报