部署GlusterFS分布式文件系统

GlusterFS是一个可伸缩的网络文件系统,使用常见的现成的硬件,您可以创建大型分布式存储流媒体解决方案、数据分析、和其他数据相关的任务。GlusterFS是自由和开源软件。

部署环境

    CentOS操作系统(xfs文件系统)

    主机名分别命名为server1和server2

    一块网卡

    每台主机至少两块硬盘,一块用于安装OS,其他用于Gluster storage

    GlusterFS默认地把动态生成的配置数据存放于/var/lib/glusterd目录下,日志数据存放于/var/log下,请确保它们所在的分区空间足够多,避免因磁盘满而导致GlusterFS运行故障而服务宕机

    服务端:(绑定hosts)

        server1: 192.168.88.1

        server2: 192.168.88.2

    客户端:

       192.168.88.3

 

服务端部署

1、格式化并挂载存储块(bricks)

我们假定每个主机的/dev/sdb1分区,是用于GlusterFS使用的存储块brick

# fdisk /dev/sdb    
	...
# mkfs.xfs -i size=512 /dev/sdb1
# mkdir -p /data/brick1
# mount /dev/sdb1 /data/brick1
# echo '/dev/sdb1 /data/brick1 xfs defaults 1 2' >> /etc/fstab

2、安装GlusterFS

# yum install centos-release-gluster38
# yum install glusterfs-server
# systemctl start glusterd
# systemctl enable glusterd

注:

centos-release-gluster38 (provides centos-release-gluster = 3.8)
centos-release-gluster37 (provides centos-release-gluster = 3.7)
centos-release-gluster36
centos-release-storage-common (base dependency for all Storage SIG release packages)

3、设置可信任的存储池

在主机server1上:
# gluster peer probe server2

在主机server2上
# gluster peer probe server1

以上只需要在一个节点执行即可

注:

请为两台主机基于/etc/hosts做好相互之间的主机名和IP的解析映射
一旦设置了可信的存储池,就会仅允许存储池中的节点主动发现其他的新节点。并将其加入到池中。而一个独立的新节点,是不被允许自行加入可信存储池中的

查看存储池状态
# gluster peer status

从存储池中移除指定的服务器
# gluster peer detach server2

 

建立一个GlusterFS卷

GlusterFS卷共有三种基本类型,分别是Distributed(分布式存储)、Striped(将一个文件分成多个固定长度的数据,分布存放在所有存储块,相当于RAID0)、Replicated(镜像存储,相当于RAID1).
基于striped和replicated,结合使用distributed后,又可以扩展出分布式分片存储卷和分布式镜像存储卷两种新的类型。而后两种扩展类型并没有新的命令格式仅是通过设置数据冗余分数和添加
进逻辑卷的bricks数量动态定义的

4、创建一个GlusterFS Replicated卷

在两台主机上
# mkdir /data/brick1/gv0
在两台主机中的任一个上面执行以下命令 # gluster volume create gv0 replica 2 server1:/data/brick1/gv0 server2:/data/brick1/gv0
启动卷 # gluster volume start gv0

其他运维命令

停止卷
# gluster volume stop gv0

查看卷信息
# gluster volume info

删除卷
# gluster volume delete gv0

在gv0卷中增加一个存储块server3:/data
# gluster volume add-brick gv0 server3:/data
# gluster rebalance gv0 start

在gv0卷中删除一个存储块server3:/data
# gluster volume remove-brick gv0 server3:/data
# gluster rebalance gv0 start

如果以上操作票遇到报错,请查看/var/log/gluster下的日志,以定位排错

 

客户端操作

1、安装挂载

# yum install centos-release-gluster38
# yum install -y glusterfs glusterfs-fuse
# mkdir /heboan_data
# mount -t glusterfs server1:/gv0 /heboan_data/   (挂载任一节点即可)

2、测试文件

客户端执行
# echo "this is a test file" >/heboan_data/test.txt

在sever1、server2可以查看到test文件
# cat /data/brick1/gv0/test.txt

3、宕机测试

将其中一个节点停止存储服务
# systemctl stop glusterd
# systemctl stop glusterfsd

在客户端删除test.txt,新建test2.txt
# rm -f /heboan_data/test.txt 
# echo "this is a test2 file" >/heboan_data/test2.txt

此时查看服务被停止的节点上的文件还是test.txt,另一个节点则变成test2.txt

此时启动服务
# systemctl start glusterd

文件恢复同步

 

创建Distributed逻辑卷

# gluster volume create gv1 server1:/data server2:/data
# gluster volume info
# gluster volume start gv1

 

创建Striped逻辑卷

创建一个名字为gv2,包含两个存储块,使用TCP协议的Striped逻辑卷:
# gluster volume create gv2 stripe 2 transport tcp server1:/data server2:/data
# gluster volume info
# gluster volume start gv2

 

迁移卷

将server2的数据迁移到server3
	先将server3加入集群
	# gluster peer probe server3
	迁移
	# gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 start
	查看迁移状态
	# gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 status
	数据迁移完毕后提交
	# gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 commit
	如果机器server1出现故障已经不能运行,执行强制提交然后要求gluster马上执行一次同步
	# gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 commit -force
	# gluster volume heal gv0 full

  

posted @ 2016-11-10 16:11  sellsa  阅读(1103)  评论(0)    收藏  举报