Ceph集群部署必须严格遵循角色分离、网络隔离、高精度时间同步和OSD稳定路径规划;跳过则引发扩容失败、PG不均、心跳超时等问题。需启用EPEL/PowerTools、正确配置Ceph官方源,禁用冲突模块流,使用by-id路径或udev规则固化磁盘设备名,并以chronyd+makestep保障mon节点时间误差

Ceph集群部署不能只靠“装完就跑”,超大规模数据底座对节点角色分离、网络平面隔离、时间同步精度和OSD磁盘规划有硬性要求,跳过这些环节,后续扩容、故障自愈、PG分布不均等问题会集中爆发。
ceph-deploy 在 Rocky Linux 8 上安装失败常见原因
在 Rocky Linux 8 上执行 ceph-deploy install 报错“no package ceph available”或依赖冲突,本质是默认仓库未启用 EPEL + PowerTools,且 Ceph 官方 repo 配置缺失。
- 必须先启用基础源:
dnf install -y epel-release && dnf config-manager --set-enabled powertools - 再添加 Ceph Pacific(推荐)或 Quincy 的官方 repo:
dnf install -y centos-release-ceph-pacific(Rocky 8 兼容 CentOS Stream repo) - 禁用
dnf module enable ceph:quincy后再运行ceph-deploy install,否则会因模块流冲突导致包版本混乱 - 若仍报 Python 3.9+ 兼容问题,需临时降级:
pip3 install 'ceph-deploy==2.0.1'(新版 2.1.x 已弃用)
public network 和 cluster network 必须物理隔离
很多用户复用同一网段(如都用 192.168.10.0/24),结果 OSD 心跳超时、PG stuck inactive、recovery 流量挤占客户端 IO——这不是配置错误,是网络设计缺陷。
-
public network承载客户端读写、MON 通信、RGW 请求,建议走万兆双口 bond0 -
cluster network专用于 OSD-to-OSD 复制、回填、清理流量,必须独立网卡(如 bond1)并配置172.16.0.0/16等私有大子网 - 检查方式:
ceph report | grep -A5 network确认两个 network 字段不重叠;tcpdump -i bond1 port 6800-7300应持续捕获到 OSD 流量 - 若用虚拟机测试,至少为每个节点分配两块网卡,VMware 中禁用“混杂模式”外的其他高级选项
OSD 初始化时 /dev/sdb 类设备名不稳定怎么办
重启后 /dev/sdb 可能变成 /dev/sdc,导致 ceph-deploy osd create 失败或挂载错盘。别依赖 sdX 编号,要用稳定路径。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 优先使用
/dev/disk/by-id/ata-Samsung_SSD_870_EVO_1TB_S5YBNF0R812345-part1这类 by-id 路径(注意加-part1若已分区) - 若用裸盘,生成 udev rule 固定符号链接:
echo 'KERNEL=="sdb", SYMLINK+="ceph-data0"' >> /etc/udev/rules.d/99-ceph-disk.rules,然后 reload:udevadm control --reload-rules && udevadm trigger -
ceph-deploy osd create --data /dev/ceph-data0 node1才真正可靠;验证:ls -l /dev/ceph-data0指向当前实际盘符 - 切勿在已有文件系统的盘上直接
ceph-deploy osd prepare,会静默清空数据——加--zap-disk参数才明确意图
mon 节点时间误差超 100ms 导致 clock skew detected
clock skew detected on mon.X 不只是警告,它会让 MON 无法达成 Paxos 共识,集群状态卡在 HEALTH_WARN,新 OSD 加入失败。
- 必须用
chronyd(非 ntpd),且配置makestep 1.0 -1允许首次启动大幅校正 - 所有节点指向同一组高精度 NTP 源(如
cn.pool.ntp.org),禁用pool指令,改用明确server行 - 校验命令:
chronyc tracking(offset 应 chronyc sources -v(确保 reach > 377) - 若集群已出现 skew,先停所有
ceph-mon进程,手动chronyc makestep强制同步,再逐个启 mon
真实超大规模部署中,最易被忽略的是 CRUSH map 的初始权重设置和 PG 数预估。一块 16TB HDD 默认权重是 1.0,但若混用 NVMe WAL 盘和 SATA 数据盘,不调权会导致数据倾斜;而 osd pool default pg num = 128 这种默认值,在 PB 级集群里会让单 OSD 承载上千 PG,严重拖慢 recovery——这些必须在 ceph-deploy mon create-initial 后立刻调整,不能等集群跑起来再补。










