主题
第 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 3 | 3 副本 |
node1:/data/brick1/gv0 | brick 路径 |
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/gv08.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 commit8.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 help8.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/fstab8.7 本章小结
- 复制卷通过 AFR 实现多副本冗余
- 3 副本卷可容忍任意 1 个节点故障
- 创建卷使用
gluster volume create命令 - 卷可以启动、停止、删除、扩容、缩容
- 通过 volume set 可以调整性能和一致性参数
练习题
- 3 副本复制卷最多可以容忍几个节点故障?
- 创建 replica 3 卷时,brick 数量必须是 3 的倍数吗?
- 扩容复制卷时需要注意什么?
performance.cache-size参数有什么作用?