GlusterFS安装与维护

举报
ASR-beginer 发表于 2022/05/30 17:52:48 2022/05/30
【摘要】 GlusterFS的安装与维护

GlusterFS的删除

假设之前的机器上已经安装GlusterFS,现在需要升级,则需先将旧版彻底删除。

  • 删除glusterfs-server及其依赖
sudo apt-get purge --auto-remove glusterfs-server

GlusterFS的安装

  • 先安装ubuntu系统软件管理器
apt install software-properties-common
  • 安装GlusterFS PPA源
add-apt-repository ppa:gluster/glusterfs-7
apt-update
  • 安装glusterfs
apt install glusterfs-server

配置主机名解析

假设有三个节点:

192.168.98.160         # 客户端
192.168.98.168         # 服务端
192.168.98.164         # 服务端
vim /etc/hosts

分别在各节点添加以下内容:

192.168.98.160 192-168-98-160
192.168.98.168 192-168-98-168
192.168.98.164 192-168-98-164

分别在两个服务端启动glusterfs,并设置开机启动:

systemctl start glusterfs-server
systemctl enable glusterfs-server

检查服务端GlusterFS的状态:

systemctl status glusterfs-server (旧版)
service glusterd status (新版)

image-20200413102308476.png

配置GlusterFS存储环境

例子中以/dev/md0举例。实际中,每个服务器有6块硬盘,分别设为一个brick。其中155与160相同;162和163相同;164和165相同;168和174相同。

在服务端格式化硬盘:

mkfs.ext4 /dev/md0

为GlusterFS创建一个存储路径,并mount在/dev/md0上。

mkdir /glusterfs
mount /dev/md0 /glusterfs

创建一个持久的挂载点:

vim /etc/fstab
# 然后添加以下内容:
/dev/md0 /glusterfs ext4 defaults 0 0

配置GlusterFS存储池

通过在GlusterFS1实例上添加GlusterFS2来创建受信任的存储池。 通过在GlusterFS1服务器上运行以下命令来执行此操作:

gluster peer probe GlusterFS2

查看关联状态:

gluster peer status

image-20200413103221248.png
也可以列举出所有的存储池:

gluster pool list

image-20200413103303584.png

配置GlusterFS卷

在每个服务端上创建brick目录:

mkdir /glusterfs/gvol0

在GlusterFS1上创建名为gvol0的卷:

  • raid 1
gluster volume create gvol0 replica 2 192-168-98-168:/glusterfs/gvol0 192-168-98-164:/glusterfs/gvol0
  • 其他创建方法详见[这里](# 2.1 创建/启动/停止/删除卷)。

启动卷:

gluster volume start gvol0

检查创建的卷的状态:

gluster volume info gvol0

因为我们的服务器是既当服务端又当客户端。所以在以上步骤完成之后,在每个集群上执行:

mount -t glusterfs GlusterFSXXX:/gvol0 /mnt

GlusterFs的维护

1. 服务器节点的增删

为存储池添加/移除服务器节点, 在其中一个节点上操作即可:

gluster peer status         // 查看所有节点信息,显示时不包括本节点
gluster peer probe <SERVER>    // 添加节点
gluster peer detach <SERVER>    // 移除节点,需要提前将该节点上的brick移除

查看所有节点的基本状态:

gluster peer status

2. 卷管理

2.1 创建/启动/停止/删除卷
gluster volume create <NEW-VOLNAME>[stripe <COUNT> | replica <COUNT>] [transport [tcp | rdma | tcp,rdma]] <NEW-BRICK1> <NEW-BRICK2> <NEW-BRICK3> <NEW-BRICK4>...
gluster volume start <VOLNAME>
gluster volume stop <VOLNAME>
gluster volume delete <VOLNAME> # 注意,删除卷的前提是先停止卷。
  • 复制卷
语法:  gluster volume create NEW-VOLNAME [replica COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK
示例1:gluster volume create test-volume replica 2 transport tcp server1:/exp1/brick server2:/exp2/brick
  • 条带卷
语法:gluster volume create NEW-VOLNAME [stripe COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK...
示例:gluster volume create test-volume stripe 2 transport tcp server1:/exp1/brick server2:/exp2/brick
  • 分布式卷
语法:  gluster volume create NEW-VOLNAME [transport tcp | rdma | tcp, rdma] NEW-BRICK

示例1:gluster volume create test-volume server1:/exp1/brick server2:/exp2/brick
示例2:gluster volume create test-volume transport rdma server1:/exp1/brick server2:/exp2/brick server3:/exp3/brick server4:/exp4/brick
  • 分布式复制卷
语法: gluster volume create NEW-VOLNAME [replica COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK...
示例: gluster volume create test-volume replica 2 transport tcp server1:/exp1/brick server2:/exp2/brick server3:/exp3/brick server4:/exp4/brick
  • 分布式条带卷
语法:gluster volume create NEW-VOLNAME [stripe COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK...
示例:gluster volume create test-volume stripe 2 transport tcp server1:/exp1/brick server2:/exp2/brick server3:/exp3/brick server4:/exp4/brick
  • 条带复制卷
语法:gluster volume create NEW-VOLNAME [stripe COUNT] [replica COUNT] [transport tcp | rdma | tcp, rdma] NEW-BRICK...

示例:gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1/brick server2:/exp2/brick server3:/exp3/brick server4:/exp4/brick

各种卷类型分析:https://blog.51cto.com/linuxnote/1825665

2.2 查看卷信息
  • 列举集群中所有卷
gluster volume list
  • 查看集群中的卷信息
gluster volume info

image-20200413112614896.png

  • 查看集群中的卷状态:
gluster volume status
# gluster volume status <VOLNAME> [detail| clients | mem | inode | fd]

image-20200413112716044.png

2.3 配置卷
gluster volume set <VOLNAME> <OPTION> <PARAMETER>
2.4 扩展卷
gluster volume add-brick <VOLNAME> <NEW-BRICK>
# 注意:如果是复制卷或者条带卷,则每次添加的Brick数必须是replica或者stripe的整数倍
2.5 收缩卷
gluster volume remove-brick <VOLNAME> <BRICK> start  # 先将数据迁移到其它可用的Brick,迁移结束后才将该Brick移除
gluster volume remove-brick <VOLNAME> <BRICK> status # 在执行了start之后,可以使用status命令查看移除进度
gluster volume remove-brick <VOLNAME> <BRICK> commit # 不进行数据迁移,直接删除该Brick
# 注意,如果是复制卷或者条带卷,则每次移除的Brick数必须是replica或者stripe的整数倍。
2.6 迁移卷
  • 使用start命令开始进行迁移
gluster volume replace-brick <VOLNAME> <BRICK> <NEW-BRICK> start
  • 在数据迁移过程中,可以使用pause命令暂停迁移
gluster volume replace-brick <VOLNAME> <BRICK> <NEW-BRICK> pause
  • 在数据迁移过程中,可以使用abort命令终止迁移
gluster volume replace-brick <VOLNAME> <BRICK> <NEW-BRICK> abort
  • 在数据迁移过程中,可以使用status命令查看迁移进度
gluster volume replace-brick <VOLNAME> <BRICK> <NEW-BRICK> status
  • 在数据迁移结束后,执行commit命令来进行Brick替换
gluster volume replace-brick <VOLNAME> <BRICK> <NEW-BRICK> commit
2.7 平衡卷

当你扩展或者缩小卷之后,需要重新在服务器直接重新平衡一下数据,重新平衡的操作被分为两个步骤。即先重新修改布局然后移动现有的数据(重新平衡)

gluster volume rebalance VOLNAME fix-layout start
gluster volume rebalance VOLNAME migrate-data start

也可以将两个步骤合二为一:

gluster volume rebalance VOLNAME start
gluster volume rebalance VOLNAME status    // 你可以在在平衡过程中查看平衡信息
gluster volume rebalance VOLNAME stop      // 你也可以暂停平衡,再次启动平衡的时候会从上次暂停的地方继续开始平衡。
2.8 重新均衡卷

不迁移数据:

gluster volume rebalance <VOLNAME> lay-outstart
gluster volume rebalance <VOLNAME> start
gluster volume rebalance <VOLNAME> startforce
gluster volume rebalance <VOLNAME> status
gluster volume rebalance <VOLNAME> stop
2.9 I/O信息查看

Profile Command 提供接口查看一个卷中的每一个brick 的IO 信息

#gluster volume profile VOLNAME start      // 启动profiling,之后则可以进行IO信息查看
#gluster volume profile VOLNAME info       // 查看IO信息,可以查看到每一个Brick的IO信息
#gluster volume profile VOLNAME stop       // 查看结束之后关闭profiling功能
2.10 系统配额
  • 开启/关闭系统配额
gluster volume quota VOLNAME enable/disable
  • 设置(重置)目录配额
gluster volume quota VOLNAME limit-usage PATH limit-value
# 示例 gluster volume quota gvol0 limit-usage /quota 10GB
# 设置gvol0 卷下的quota 子目录的限额为10GB。
  • 配额查看
gluster volume quota VOLNAME list
# quota功能,主要是对挂载点下的某个目录进行空间限额,如:/mnt/glusterfs/data目录,而不是对组成卷组的空间进行限制。
2.11 地域复制
gluster volume geo-replication MASTER SLAVE start/status/stop
#  地域复制是系统提供的灾备功能,能够将系统的全部数据进行异步的增量备份到另外的磁盘中。
# 例如:gluster volume geo-replication img 192.168.10.8:/data1/brick1 start # 执行将img 卷的所有内容备份到10.8 下的/data1/brick1 中的task,需要注意的是,这个备份目标不能是系统中的Brick。
2.12 Top监控
#gluster volume top VOLNAME open [brick BRICK-NAME][list-cntcnt]     // 查看打开的fd
#gluster volume top VOLNAME read [brick BRICK-NAME][list-cntcnt]     // 查看调用次数最多的读调用
#gluster volume top VOLNAME write [brick BRICK-NAME][list-cntcnt]    // 查看调用次数最多的写调用
#gluster volume top VOLNAME opendir [brick BRICK-NAME][list-cntcnt]   // 查看次数最多的目录调用
#gluster volume top VOLNAME readdir [brick BRICK-NAME][list-cntcnt]   // 查看次数最多的目录调用
#gluster volume top VOLNAME read-perf[bsblk-size count count][brick BRICK-NAME][list-cntcnt]    // 查看每个Brick的读性能
#gluster volume top VOLNAME write-perf[bsblk-size count count][brick BRICK-NAME][list-cntcnt]    // 查看每个Brick的写性能
2.13 性能优化配置选项
#gluster volume set qvol0 cluster.min-free-disk          默认是10% 磁盘剩余告警
#gluster volume set qvol0 cluster.min-free-inodes        默认是5% inodes剩余告警
#gluster volume set qvol0 performance.read-ahead-page-count 8    默认4,预读取的数量
#gluster volume set qvol0 performance.io-thread-count 16      默认16 io操作的最大线程
#gluster volume set qvol0 network.ping-timeout 10        默认42s
#gluster volume set qvol0 performance.cache-size 2GB      默认128M或32MB,
#gluster volume set qvol0 cluster.self-heal-daemon on      开启目录索引的自动愈合进程
#gluster volume set qvol0 cluster.heal-timeout 300       自动愈合的检测间隔,默认为600s #3.4.2版本才有
#gluster volume set qvol0 performance.write-behind-window-size 256MB       #默认是1M 能提高写性能单个文件后写缓冲区的大小  

更全面的配置调优方案:http://www.taocloudx.com/index.php?a=shows&catid=4&id=102

设置前的默认配置:
image-20200417152039555.png
设置后的配置:
image-20200417154001835.png

3. brick管理

3.1 添加brick
gluster volume add-brick test-volume 192.168.1.{151,152}:/mnt/brick2
3.2 删除brick

若是副本卷,则移除的Bricks数是replica的整数倍

gluster volume remove-brick test-volume 192.168.1.{151,152}:/mnt/brick2 start #

在执行开始移除之后,可以使用status命令进行移除状态查看

gluster volume remove-brick test-volume 192.168.1.{151,152}:/mnt/brick2 status

使用commit命令执行Brick移除,则不会进行数据迁移而直接删除Brick,符合不需要数据迁移的用户需求

gluster volume remove-brick test-volume 192.168.1.{151,152}:/mnt/brick2 commit
3.3 替换brick

任务:把192.168.98.168:/mnt/brick0 替换为192.168.98.168:/mnt/brick2

  • 开始替换
gluster volume replace-brick test-volume 192-168-98-168:/mnt/brick0 192-168-98-168:/mnt/brick2 start
  • 查看是否替换完
gluster volume replace-brick test-volume 192-168-98-168:/mnt/brick0 192-168-98-168:/mnt/brick2 status
  • 在数据迁移的过程中,可以执行abort命令终止Brick替换
gluster volume replace-brick test-volume 192-168-98-168:/mnt/brick0 192-168-98-168:/mnt/brick2 abort
  • 在数据迁移结束之后,执行commit命令结束任务,则进行Brick替换。使用volume info命令可以查看到Brick已经被替换。
gluster volume replace-brick test-volume 192.168.1.151:/mnt/brick0 .152:/mnt/brick2 commit
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。