ceph私有云部署需完成环境准备、工具安装、mon/osd部署、存储池创建及块存储验证。具体包括:统一os(centos stream 9或ubuntu 22.04)、禁selinux/防火墙、配置主机名与hosts、ntp时间同步误差<100ms;用ceph-deploy(仅限测试)初始化集群、配置public/cluster网络、安装软件、启动mon并验证quorum;清空磁盘、prepare并activate osd;创建rbd池、设置crush rule、创建映射rbd镜像,格式化挂载后写入文件验证数据持久性。

自建私有云Ceph分布式云存储部署详细实操步骤,需在物理或虚拟节点上完成监控、存储、管理服务的协同安装与校验,确保集群能对外提供块、对象、文件系统三类存储能力,且具备基础高可用和状态可观测性。
环境准备与基础配置
所有节点统一使用 CentOS Stream 9 或 Ubuntu 22.04 LTS,禁用 SELinux 并关闭防火墙(生产环境请按端口白名单放行)。
执行 hostnamectl set-hostname ceph-mon01 设置主机名,三节点分别设为 ceph-mon01、ceph-osd01、ceph-osd02;然后编辑 /etc/hosts,写入三行对应 IP 与主机名映射,例如:192.168.50.10 ceph-mon01、192.168.50.11 ceph-osd01、192.168.50.12 ceph-osd02。
所有节点必须启用 NTP 时间同步,误差超过 100ms 将导致 MON 仲裁失败;运行 timedatectl set-ntp true 并验证 chronyc sources -v 输出中无 ^* 标记异常源。
每个 OSD 节点至少挂载 2 块空闲磁盘(如 /dev/sdb、/dev/sdc),不参与系统引导,且未创建任何分区或文件系统——【若已格式化或挂载,ceph-deploy osd prepare 会报错退出】。
部署工具安装与集群初始化
在管理节点(即 ceph-mon01)执行:pip3 install ceph-deploy;注意 ceph-deploy 已停止维护,仅适用于 Nautilus~Pacific 版本测试部署,【生产环境请改用 cephadm】。
创建集群工作目录:mkdir ~/ceph-cluster && cd ~/ceph-cluster。
生成初始配置与密钥:ceph-deploy new ceph-mon01 ceph-osd01 ceph-osd02;该命令会创建 ceph.conf 和 ceph.mon.keyring,其中 fsid 字段必须是真实 UUID,不可留空或用占位符。
修改 ceph.conf,在 [global] 段落追加以下内容:
public network = 192.168.50.0/24cluster network = 192.168.51.0/24osd pool default size = 2osd pool default min size = 1
这两条网络配置必须与实际物理网卡地址匹配,否则 MON 无法发现 OSD,OSD 间心跳超时断连。
软件安装与监控服务启动
在管理节点执行:ceph-deploy install ceph-mon01 ceph-osd01 ceph-osd02;该命令通过 SSH 分发 RPM/DEB 包并调用 yum/apt 自动解决依赖。
安装完成后,在管理节点运行:ceph-deploy mon create-initial;此操作将把 ceph.mon.keyring 复制到各 MON 节点,并启动 ceph-mon@ceph-mon01 systemd 服务。
验证 MON 是否就绪:ceph -s 应返回 cluster: health HEALTH_ERR(因尚未部署 OSD),但 monmap 显示 1/1,且 mon 状态为 quorum;若显示 no mons active,说明 /var/lib/ceph/mon/ceph-ceph-mon01 目录缺失或权限错误。
OSD节点部署与激活
第一步:清空目标磁盘数据(不可逆!):ceph-deploy disk zap ceph-osd01:/dev/sdb ceph-osd02:/dev/sdb;此命令等效于 dd if=/dev/zero of=/dev/sdb bs=1M count=100,会抹除 MBR 和分区表。
第二步:准备 OSD 数据目录结构:ceph-deploy osd prepare ceph-osd01:/dev/sdb ceph-osd02:/dev/sdb;该命令创建 /var/lib/ceph/osd/ceph-0 目录,写入 magic 文件并格式化为 XFS。
第三步:激活 OSD 守护进程:ceph-deploy osd activate ceph-osd01:/dev/sdb ceph-osd02:/dev/sdb;激活后,systemctl start ceph-osd@0 会被自动启用,日志输出可查 journalctl -u ceph-osd@0 -f。
等待约 90 秒,再次执行 ceph -s,应看到 osds: 2 osds: 2 up, 2 in,且 health 变为 HEALTH_WARN(因未创建 pool),此时底层 RADOS 层已就绪。
创建存储池与验证基础读写
执行:ceph osd pool create rbd 32 32 创建名为 rbd 的存储池,PG 数设为 32(单节点测试可设 8,多节点建议 ≥128);PG 数过小会导致数据分布不均,过大则增加 CPU 开销。
设置该 pool 默认 crush rule:ceph osd pool set rbd crush_rule replicated_ruleset;若跳过此步,后续 rbd map 将失败并提示 pool 'rbd' does not exist or does not have required ruleset。
创建一个 1GB 镜像:rbd create testimg --size 1G --pool rbd;再将其映射为本地块设备:rbd map testimg --pool rbd。
格式化并挂载:mkfs.xfs /dev/rbd0 && mount /dev/rbd0 /mnt;写入测试文件:echo "ceph-test-$(date)" > /mnt/hello.txt;卸载后重新映射,确认内容未丢失——至此,块存储功能验证完成。











