Skip to content

第 8 章 3 副本复制卷创建与管理

8.1 复制卷工作原理

复制卷(Replicated Volume)是 GlusterFS 通过 AFR(Automatic File Replicator)translator 实现的。每个文件会同时写入多个 brick,副本数量由 replica 参数指定。

3 副本写入流程

客户端写入 file.txt

        ├──► Node1:/data/brick1/gv0/file.txt
        ├──► Node2:/data/brick1/gv0/file.txt
        └──► Node3:/data/brick1/gv0/file.txt

仲裁机制

3 副本卷中:

  • 写入操作需要至少 2 个 brick 成功才算成功
  • 读取操作可以从任意一个健康副本读取
  • 单节点故障时,剩余 2 个节点仍可正常工作

8.2 创建 replica 3 卷

在 node1 执行:

bash
gluster volume create gv0 replica 3 \
    node1:/data/brick1/gv0 \
    node2:/data/brick1/gv0 \
    node3:/data/brick1/gv0 force

参数说明

参数说明
gv0卷名
replica 33 副本
node1:/data/brick1/gv0brick 路径
force强制创建(当 brick 已存在或路径非空时使用)

启动卷

bash
gluster volume start gv0

查看卷信息

bash
gluster volume info gv0

预期输出:

Volume Name: gv0
Type: Replicate
Volume ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: node1:/data/brick1/gv0
Brick2: node2:/data/brick1/gv0
Brick3: node3:/data/brick1/gv0

8.3 启动、停止、删除卷

停止卷

bash
gluster volume stop gv0

启动卷

bash
gluster volume start gv0

删除卷

bash
gluster volume stop gv0
gluster volume delete gv0

删除卷会保留 brick 中的数据,如需彻底清理需手动删除 /data/brick1/gv0 目录。

8.4 卷扩容与缩容

扩容:增加 brick

复制卷扩容需要成组增加(每组 3 个 brick):

bash
gluster volume add-brick gv0 replica 3 \
    node1:/data/brick1/gv0-2 \
    node2:/data/brick1/gv0-2 \
    node3:/data/brick1/gv0-2

缩容

bash
gluster volume remove-brick gv0 replica 3 \
    node1:/data/brick1/gv0-2 \
    node2:/data/brick1/gv0-2 \
    node3:/data/brick1/gv0-2 start

# 迁移完成后提交
gluster volume remove-brick gv0 replica 3 \
    node1:/data/brick1/gv0-2 \
    node2:/data/brick1/gv0-2 \
    node3:/data/brick1/gv0-2 commit

8.5 卷参数调优

常用性能参数

bash
# 启用快速校验和
gluster volume set gv0 storage.fips-mode-rchecksum on

# 设置缓存大小
gluster volume set gv0 performance.cache-size 256MB

# IO 线程数
gluster volume set gv0 performance.io-thread-count 16

# 网络 ping 超时时间
gluster volume set gv0 network.ping-timeout 5

# 启用快速失败检测
gluster volume set gv0 cluster.server-quorum-type server

查看所有可配置参数

bash
gluster volume set gv0 help

8.6 挂载 GlusterFS Native Client

安装 native client

bash
# Ubuntu
apt install -y glusterfs-client

# Rocky
dnf install -y glusterfs-fuse

挂载

bash
mkdir -p /mnt/gv0
mount -t glusterfs node1:/gv0 /mnt/gv0

持久化

bash
echo 'node1:/gv0 /mnt/gv0 glusterfs defaults,_netdev,backup-volfile-servers=node2:node3 0 0' >> /etc/fstab

8.7 本章小结

  • 复制卷通过 AFR 实现多副本冗余
  • 3 副本卷可容忍任意 1 个节点故障
  • 创建卷使用 gluster volume create 命令
  • 卷可以启动、停止、删除、扩容、缩容
  • 通过 volume set 可以调整性能和一致性参数

练习题

  1. 3 副本复制卷最多可以容忍几个节点故障?
  2. 创建 replica 3 卷时,brick 数量必须是 3 的倍数吗?
  3. 扩容复制卷时需要注意什么?
  4. performance.cache-size 参数有什么作用?