[toc]
概述
GlusterFS 基础使用。
扩展卷
以复制卷为例,给新创建的 gv0 添加磁盘。
挂载磁盘
挂载方式参考《GlusterFS 安装》。
并在 gfs-node-1 和 gfs-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 时,replica 是 2,所以在添加磁盘个数时需是 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
网友评论