cephadm是ceph官方主推的部署工具,适合新集群;ceph-deploy已进入维护模式,不建议用于新生产环境;手动部署仅适用于调试或特殊定制。

cephadm 是当前官方主推的部署方式,适合大多数新集群场景;ceph-deploy 仍可用但已进入维护模式,不建议用于新生产环境。手动部署复杂度高、易出错,仅限调试或特殊定制需求。
选对工具:为什么优先用 cephadm 而不是 ceph-deploy
从 Ceph Octopus(15.x)起,cephadm 成为默认推荐工具,它基于容器运行所有组件(Podman/Docker),规避了系统依赖冲突、版本混杂、权限混乱等问题。而 ceph-deploy 直接在宿主机安装二进制和配置,容易因 Python 版本、pkg_resources 缺失、SELinux 策略等失败——你遇到的 ImportError: No module named pkg_resources 就是典型症状。
关键区别:
-
cephadm自带完整运行时环境,升级只需拉新镜像,无需重装系统包 -
ceph-deploy要求所有节点 Python 2/3 兼容、pip可用、ssh免密通,任意一环断掉就卡住 -
cephadm bootstrap一步生成 monitor + mgr + crash + dashboard,ceph-deploy new后还要手动 add mon、osd、mgr
最小可行部署:三节点 cephadm 集群实操
以三台 CentOS/RHEL 8+ 或 Ubuntu 22.04 节点为例(IP 分别为 192.168.1.101、192.168.1.102、192.168.1.103),执行以下步骤:
- 所有节点安装基础依赖:
sudo apt update && sudo apt install -y python3-pip podman curl gnupg lvm2(Ubuntu)或sudo dnf install -y python3-pip podman curl gnupg2 lvm2(RHEL/CentOS) - 在
192.168.1.101下载并启用cephadm:curl --silent --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm | sudo bash,再sudo ln -sf /usr/bin/cephadm /usr/local/bin/cephadm - 引导集群:
sudo cephadm bootstrap --mon-ip 192.168.1.101。这会自动部署 monitor、mgr,并监听 8443 端口提供 dashboard - 添加其余节点:
sudo cephadm adopt --fsid <your-fsid> --image quay.io/ceph/ceph:v17</your-fsid>(先cephadm shell -- ceph fsid查 fsid),再用ceph orch host add加入192.168.1.102和192.168.1.103
注意:bootstrap 默认不开启 dashboard,如需访问 Web 界面,进 shell 后执行:ceph mgr module enable dashboard,再 ceph dashboard set-login-credentials admin password123。
OSD 准备与挂载:别直接用 /dev/sdb,先确认磁盘状态
添加 OSD 前必须清理目标磁盘——残留的 LVM 元数据、旧文件系统、RAID 标签都会导致 ceph orch daemon add osd 失败并报错 Device is in use 或 failed to identify device。
- 在目标节点上,用
lsblk -f和sudo sgdisk -p /dev/sdb检查是否干净;若有ceph相关分区或LVM2_member,用sudo wipefs -a /dev/sdb清除 - 确保磁盘未被 udev 规则占用(常见于云平台虚拟盘),检查
/etc/udev/rules.d/下是否有绑定该设备的规则 - 执行
ceph orch apply osd --all-available-devices让 cephadm 自动发现并部署;若只想用某块盘,改用ceph orch daemon add osd node2:/dev/sdb - OSD 创建后,状态可能卡在
creating,此时看日志:cephadm logs --name osd.<id></id>,常见原因是/var/lib/ceph所在分区空间不足(至少预留 5GB)
客户端挂载 RBD 或 CephFS:配置文件和密钥环缺一不可
客户端无法仅靠 ceph.conf 连接集群,client.admin.keyring 必须存在且权限为 600,否则会报 error connecting to the cluster 或 Permission denied。
- 从 monitor 节点复制两个文件:
scp root@192.168.1.101:/etc/ceph/ceph.conf /etc/ceph/和scp root@192.168.1.101:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ - 验证连接:
ceph -s应返回集群状态;若提示connection timed out,检查 client 节点能否 telnet 通 monitor 的 6789 端口 - RBD 映射:
rbd map rbd/image1 --id admin(注意--id指定用户,非 keyring 文件名);CephFS 挂载:mount -t ceph 192.168.1.101:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/ceph.client.admin.keyring - 避免硬编码 IP:在
ceph.conf的[global]段加mon_host = [v2:192.168.1.101:3300,v1:192.168.1.101:6789],[v2:192.168.1.102:3300,v1:192.168.1.102:6789],支持多 monitor 自动故障转移
真正容易被忽略的是时间同步——哪怕只有 0.5 秒偏差,ceph -s 就可能显示 clock skew detected on mon 并拒绝认证。务必在所有节点启用 chronyd 并指向同一 NTP 源。











