美文网首页GlusterFS
GlusterFS 使用

GlusterFS 使用

作者: 四冶读史 | 来源:发表于2019-03-23 18:24 被阅读0次

[toc]

概述

GlusterFS 基础使用。

扩展卷

以复制卷为例,给新创建的 gv0 添加磁盘。

挂载磁盘

挂载方式参考《GlusterFS 安装》。
并在 gfs-node-1gfs-node-2 上分别执行创建目录命令。

$ mkdir -p /bricks/brick-2/gv0

添加磁盘

$ gluster volume stop gv0
$ gluster volume add-brick gv0 replica 2 gfs-node-1:/bricks/brick-2/gv0 gfs-node-2:/bricks/brick-2/gv0

$ gluster volume start gv0
$ gluster volume info
Volume Name: gv0
Type: Distributed-Replicate
Volume ID: 77331c60-c200-4cec-b16c-33365dc2d2d5
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: gfs-node-1:/bricks/brick-1/gv0
Brick2: gfs-node-2:/bricks/brick-1/gv0
Brick3: gfs-node-1:/bricks/brick-2/gv0
Brick4: gfs-node-2:/bricks/brick-2/gv0
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

因为创建 gv0 时,replica2,所以在添加磁盘个数时需是 2 的整数倍。

测试

挂载 gv0,并添加文件。

$ mount -t glusterfs gfs-node-1:/gv0 /mnt
$ for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done

检查文件。
gfs-node-1

$ ls -lA /mnt|wc -l
101
ls -lA /bricks/brick-1/gv0/ |wc -l
101

gfs-node-2

$ ls -lA /bricks/brick-1/gv0/|wc -l
101

发现创建的文件存储了 2 个副本,一个存储在 gfs-node-1,一个存储在 gfs-node-2
继续创建文件。

$ for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/test-2-$i; done

检查文件分布。
nfs-node-1

$ ls -lA /mnt|wc -l
202
ls -lA /bricks/brick-1/gv0/ |wc -l
202
ls -lA /bricks/brick-2/gv0/ |wc -l
0

gfs-node-2

ls -lA /bricks/brick-1/gv0/ |wc -l
202
ls -lA /bricks/brick-2/gv0/ |wc -l
0

发现文件并没有分布到 brick-2 上。

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

平衡磁盘

$ gluster volume rebalance gv0 start
volume rebalance: gv0: success: Rebalance on gv0 has been started successfully. Use rebalance status command to check status of the rebalance process.
ID: fd8935e8-58b0-472a-9017-21879a9a1662

$ gluster volume rebalance gv0 status
                                    Node Rebalanced-files size scanned failures skipped status run time in h:m:s
                               --------- ----------- ----------- ----------- ----------- ----------- ------------ --------------
                               localhost 47 727.0KB 200 0 0 completed 0:00:01
                              gfs-node-2 48 742.5KB 204 0 0 completed 0:00:02
volume rebalance: gv0: success

再创查看文件。
gfs-node-1

$ ls -lA /bricks/brick-1/gv0/|wc -l
107
$ ls -lA /bricks/brick-2/gv0/|wc -l
97

gfs-node-2

$ ls -lA /bricks/brick-1/gv0/|wc -l
107
$ ls -lA /bricks/brick-2/gv0/|wc -l
97

发现文件已被平衡地分配到各个磁盘。

收缩卷

以复制卷为例,给新创建的 gv0 缩减磁盘。
先将数据迁移到其它可用的 Brick,迁移结束后才将该 Brick 移除:

$ gluster volume remove-brick gv0 replica 2 gfs-node-1:/bricks/brick-2/gv0 gfs-node-2:/bricks/brick-2/gv0 start

在执行了 start 之后,可以使用 status 命令查看移除进度。

$ gluster volume remove-brick gv0 replica 2 gfs-node-1:/bricks/brick-2/gv0 gfs-node-2:/bricks/brick-2/gv0 status

不进行数据迁移,直接删除该 brick

$ gluster volume remove-brick gv0 replica 2 gfs-node-1:/bricks/brick-2/gv0 gfs-node-2:/bricks/brick-2/gv0 commit

注:如果是复制卷或者条带卷,则每次移除的 brick 数必须是 replica 或者 stripe 的整数倍。
查看卷信息。

$ gluster volume info gv0
Volume Name: gv0
Type: Replicate
Volume ID: 77331c60-c200-4cec-b16c-33365dc2d2d5
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gfs-node-1:/bricks/brick-1/gv0
Brick2: gfs-node-2:/bricks/brick-1/gv0
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

配置卷

配置格式如下:

$ gluster volume set volumename value

优化参数及其作用。

参数 描述
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),合法值:061。
Performance.cache-size 读缓存大小,缺省值(32MB),合法值:字节。
Performance.quick-read 优化读取小文件的性能。
Performance.read-ahead 用预读的方式提高读取的性能,有利于应用频繁持续性的访问文件,当应用完成当前数据块读取的时候,下一个数据块就已经准备好了。
Performance.write-behind 先写入缓存内,再写入硬盘,以提高写入的性能。
Performance.io-cache 缓存已经被读过的。

迁移卷

使用 start 命令开始进行迁移。

$ gluster volume replace-brick start

在数据迁移过程中,可以使用 pause 命令暂停迁移。

$ gluster volume replace-brick pause

在数据迁移过程中,可以使用 abort 命令终止迁移。

$ gluster volume replace-brick abort

在数据迁移过程中,可以使用 status 命令查看迁移进度。

$ gluster volume replace-brick status

在数据迁移结束后,执行 commit 命令来进行 brick 替换。

$ gluster volume replace-brick commit

重新均衡卷

不迁移数据。

$ gluster volume rebalance lay-outstart
$ gluster volume rebalance start
$ gluster volume rebalance startforce
$ gluster volume rebalance status
$ gluster volume rebalance stop

删除卷

$ glusterfs volume gv0 stop
$ glusterfs volume remove gv0

日常维护

使用 zabbix 自带的模板即可,CPU、内存、磁盘空间、主机运行时间、系统 load。日常情况要查看服务器监控值,遇到报警要及时处理。

看下节点有没有在线

$ 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

参考地址:
https://blog.csdn.net/youngstonep/article/details/50196283
https://www.cnblogs.com/huangyanqi/p/8406534.html

相关文章

网友评论

    本文标题:GlusterFS 使用

    本文链接:https://www.haomeiwen.com/subject/lzosvqtx.html