Featured image of post GlusterFS使用

GlusterFS使用

安装GlusterFS

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 添加GlusterFS repository 到所有服务器
$ dnf install centos-release-gluster9 -y
# 确定repo已经被添加
$ dnf repolist | grep gluster
# 服务端每个机器安装glusterfs server必要组件 
$ dnf install glusterfs glusterfs-libs glusterfs-server -y
# 启动glusterfsd 和配置自启动
$ systemctl enable glusterfsd.service --now
# 确定glusterfsd 这个service的运行状态
$ systemctl status glusterfsd.service

配置防火墙

直接节点间都放开就行

1
$ iptables -I INPUT -p all -s [ip-address] -j ACCEPT

配置

数据盘

1
2
3
4
5
6
7
# 假设数据盘是/dev/sdb1,格式化
$ mkfs.xfs -i size=512 /dev/sdb1
# 新建挂载点
$ mkdir -p /data/brick1
# 挂载
$ echo '/dev/sdb1 /data/brick1 xfs defaults 1 2' >> /etc/fstab
$ mount -a && mount

集群部署

随便选一个节点,依次把节点都加进来

1
$ cluster peer probe node{1...n}

确认下状态

1
$ gluster peer status

正常状态是,加进去的节点都是连接状态

State: Peer in Cluster (Connected)

创建一个卷

在所有服务器上:

1
mkdir -p /data/brick1/gv0

从任何单个服务器:

1
$ gluster volume create gv0 replica 3 server1:/data/brick1/gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0

成功操作后,应该会看到类似这样的信息:

volume create: gv0: success: please start the volume to access data

然后启动新创建的卷:

1
$ gluster volume start gv0

应该会看到类似这样的信息:

volume start: gv0: success

确认卷显示为"已启动":

1
$ gluster volume info

您应该会看到类似这样的信息(卷ID将有所不同):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Volume Name: gv0 
Type: Replicate  
Volume ID: f25cc3d8-631f-41bd-96e1-3e22a4c6f71f 
Status: Started 
Snapshot Count: 0 
Number of Bricks: 1 x 3 = 3 
Transport-type: tcp 
Bricks: 
Brick1: server1:/data/brick1/gv0 
Brick2: server2:/data/brick1/gv0  
Brick3: server3:/data/brick1/gv0 
Options Reconfigured: 
transport.address-family: inet

注意:如果卷未显示为"已启动",请检查/var/log/glusterfs/glusterd.log文件中的日志,以便调试和诊断问题。这些日志可以在配置的一台或所有服务器上查看。

测试GlusterFS卷

对于这一步,我们将使用一台服务器来挂载卷。通常在一台外部机器(称为"客户端")上执行此操作。由于使用这种方法需要在客户端机器上安装其他软件包,我们将使用一台服务器作为简单的测试场所,就好像它是那个"客户端"一样。客户端需要安装

1
$ dnf install -y glusterfs glusterfs-fuse

挂载

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

首先,检查客户端挂载点:

1
$ ls -lA /mnt/gluster-test/copy* | wc -l

应该看到返回100个文件。接下来,检查每台服务器上的GlusterFS brick挂载点,应该在每台服务器上看到100个文件。如果没有复制,在仅分布式卷(这里未详细介绍)中,应该在每台服务器上看到大约33个文件。

常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
gluster peer probe      #添加节点
gluster peer detach     #移除节点
gluster volume create   #创建卷

gluster volume start $VOLUME_NAME  #启动卷
gluster volume stop $VOLUME_NAME   #停止卷
gluster volume delete $VOlUME_NAME #删除卷

gluster volume quota enable      #开启卷配额
gluster volume quota disable     #关闭卷配额
gluster volume quota limitusage  #设定卷配额

gluster volume list         #列出集群中的所有卷
gluster volume info [all]   #查看集群中的卷信息
gluster volume status [all] #查看集群中的卷状态

gluster volume profile [name] start #开启性能采集
gluster volume profile [name] info  #查看性能信息
gluster volume profile [name] stop  #关闭性能采集

# 数据平衡
gluster volume rebalance [name] start  #开始平衡
gluster volume rebalance [name] status #平衡状态
gluster volume rebalance [name] stop   #停止平衡

# 文件修复
gluster volume heal [name] full #启动文件修复
gluster volume heal [name] info #文件修复状态