3.9.5 分布式存储入门:Ceph与GlusterFS
分布式存储用于在多节点上提供可扩展、高可用的数据存储能力,常见实现包括 Ceph 与 GlusterFS。它们通过副本或纠删码提升可靠性,通过数据分片与节点扩展获得容量与性能增长,适用于对象存储、块存储与共享文件系统等场景。运维关注点主要是架构角色、数据一致性、故障恢复与容量规划。
原理草图(逻辑架构示意):
Ceph 入门实践(示例为测试环境)#
准备:3 台节点(ceph01/02/03),双网卡或单网卡测试;时间同步;放行 3300/6789/6800-7300。
安装与初始化(cephadm)
# 1) 安装依赖与cephadm(以Ubuntu为例)
sudo apt update
sudo apt install -y curl chrony lvm2
curl -fsSL https://download.ceph.com/keys/release.asc | sudo apt-key add -
sudo apt install -y cephadm
# 2) 引导集群(在 ceph01)
sudo cephadm bootstrap --mon-ip 10.0.0.11 --cluster-network 10.0.1.0/24 \
--initial-dashboard-user admin --initial-dashboard-password 'Admin@123'
# 3) 添加主机
sudo cephadm shell -- ceph orch host add ceph02 10.0.0.12
sudo cephadm shell -- ceph orch host add ceph03 10.0.0.13
# 4) 部署OSD(将空盘 /dev/sdb 加入)
sudo cephadm shell -- ceph orch daemon add osd ceph01:/dev/sdb
sudo cephadm shell -- ceph orch daemon add osd ceph02:/dev/sdb
sudo cephadm shell -- ceph orch daemon add osd ceph03:/dev/sdb
关键命令与解释
# 查看集群健康状态
ceph -s
# 预期:HEALTH_OK 或 HEALTH_WARN(需查看原因)
# 查看OSD与PG状态
ceph osd tree
ceph pg stat
# 查看容量与副本策略
ceph df
ceph osd pool ls detail
# 创建RBD池与镜像(块存储示例)
ceph osd pool create rbd 64
rbd create -p rbd testimg --size 10G
rbd ls -p rbd
故障排查示例
# 1) 健康告警定位
ceph health detail
# 2) OSD down 排查
ceph osd tree
ceph osd in <osd_id>
systemctl status ceph-osd@<osd_id>
# 3) PG卡住排查
ceph pg dump_stuck inactive
ceph pg dump_stuck unclean
GlusterFS 入门实践(示例为测试环境)#
准备:3 台节点(gfs01/02/03),各有目录 /data/brick1。
安装与部署
# 1) 安装(以CentOS为例)
sudo yum install -y centos-release-gluster
sudo yum install -y glusterfs-server
sudo systemctl enable --now glusterd
# 2) 组建集群(在 gfs01 执行)
gluster peer probe gfs02
gluster peer probe gfs03
gluster peer status
创建复制卷与挂载
# 3) 创建复制卷(3副本)
gluster volume create gv0 replica 3 \
gfs01:/data/brick1 gfs02:/data/brick1 gfs03:/data/brick1 force
# 4) 启动并查看
gluster volume start gv0
gluster volume info gv0
gluster volume status gv0
# 5) 客户端挂载
mkdir -p /mnt/gv0
mount -t glusterfs gfs01:/gv0 /mnt/gv0
df -h | grep gv0
关键命令与解释
# 查看卷与Brick状态
gluster volume status
gluster volume heal gv0 info
# 启用配额(对目录限额)
gluster volume quota gv0 enable
gluster volume quota gv0 limit-usage / 100GB
常见排错
# 1) 发现节点未加入
gluster peer status
# 2) Brick 断开
gluster volume status gv0
# 修复流程:检查网络/磁盘/权限 -> 重启 glusterd -> volume heal
systemctl restart glusterd
gluster volume heal gv0 full
# 3) 脑裂风险检查
gluster volume heal gv0 info split-brain
选型与运维要点(含命令示例)#
- 选型依据:对象存储/块存储优先 Ceph;共享文件与快速交付可考虑 GlusterFS。
- 容量规划:预留副本/纠删码开销与节点失效缓冲;关注集群写放大与 IOPS 需求。
- 网络与硬件:至少万兆网络与低延迟交换;磁盘健康监控与 SMART 定期检测。
- 运维流程:建立集群健康检查、故障演练、扩容步骤、升级回滚预案与数据一致性校验。
健康巡检脚本示例
#!/usr/bin/env bash
# ceph_gluster_check.sh
set -e
echo "== Ceph =="
ceph -s || true
ceph osd df || true
echo "== GlusterFS =="
gluster volume status || true
gluster volume heal gv0 info || true
练习#
- 使用 Ceph 创建一个 RBD 镜像并映射到客户端(写出命令与预期输出)。
- 使用 GlusterFS 创建复制卷并测试断网后的自动恢复(记录 heal 输出)。
- 模拟 OSD down(停止一个 OSD),观察
ceph health detail变化并恢复。 - 设计 3 节点、12 块盘的容量规划:分别给出 3 副本与纠删码(4+2)的可用容量估算。