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

练习#

  1. 使用 Ceph 创建一个 RBD 镜像并映射到客户端(写出命令与预期输出)。
  2. 使用 GlusterFS 创建复制卷并测试断网后的自动恢复(记录 heal 输出)。
  3. 模拟 OSD down(停止一个 OSD),观察 ceph health detail 变化并恢复。
  4. 设计 3 节点、12 块盘的容量规划:分别给出 3 副本与纠删码(4+2)的可用容量估算。