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 (新版)
配置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
也可以列举出所有的存储池:
gluster pool list
配置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
- 查看集群中的卷状态:
gluster volume status
# gluster volume status <VOLNAME> [detail| clients | mem | inode | fd]
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
设置前的默认配置:
设置后的配置:
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
- 点赞
- 收藏
- 关注作者
评论(0)