从错误日志来看,核心问题是 ceph --version 命令执行失败,具体原因是在目标节点上找不到 ceph 可执行文件(OSError: [Errno 2] No such file or directory)。这通常意味着以下几种情况:

1. 错误本质

ceph-deploy 工具在部署过程中,需要在目标节点上执行 ceph --version 命令来验证 Ceph 是否正确安装,但发现目标节点上根本没有安装 ceph 相关程序,或 ceph 命令不在系统的环境变量 PATH 中,导致无法找到该命令。

2. 可能的原因

  • Ceph 未正确安装:目标节点上的 Ceph 软件包(如 ceph-common)未安装成功,或安装过程被中断。
  • 安装路径问题:即使 Ceph 已安装,但可执行文件所在路径(通常是 /usr/bin/usr/local/bin)未被添加到 PATH 环境变量中,导致系统无法识别 ceph 命令。
  • 节点连接/权限问题ceph-deploy 可能没有正确登录到目标节点,或执行权限不足,导致无法访问已安装的 ceph 命令(较少见,但需排查)。
  • 软件源问题:目标节点的 Ceph 软件源配置错误,导致 ceph 相关包未被正确拉取和安装。

3. 解决步骤

步骤 1:手动登录目标节点验证

先通过 SSH 登录到报错的目标节点(例如 ssh root@目标节点IP),手动执行以下命令检查:

# 检查 ceph 是否安装
which ceph  # 正常应输出 /usr/bin/ceph 或类似路径
ceph --version  # 正常应输出 Ceph 版本信息
  • 如果 which ceph 无输出,或 ceph --version 提示“command not found”,则确认 Ceph 未安装或安装不完整。

步骤 2:重新安装 Ceph 基础组件

在目标节点上手动安装 Ceph 基础工具包(以 CentOS/RHEL 为例):

# 确保已添加 Ceph 软件源(根据你的 Ceph 版本,例如 Quincy、Pacific 等)
# 示例:添加 Quincy 版本源(需替换为你的版本)
sudo rpm --import 'https://download.ceph.com/keys/release.asc'
sudo tee /etc/yum.repos.d/ceph.repo << EOF
[ceph]
name=Ceph packages for \$basearch
baseurl=https://download.ceph.com/rpm-quincy/el7/\$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
EOF# 安装 ceph-common(包含 ceph 命令)
sudo yum install -y ceph-common

安装完成后,再次执行 ceph --version 确认是否可用。

步骤 3:检查环境变量 PATH

如果 Ceph 已安装但 which ceph 无输出,需检查 PATH 变量是否包含 ceph 可执行文件的路径:

# 查找 ceph 可执行文件的位置
sudo find / -name ceph -type f -executable# 假设找到路径为 /usr/local/bin/ceph,将其添加到 PATH
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc

步骤 4:重新执行 ceph-deploy 部署

解决目标节点的 ceph 命令问题后,清理之前的部署缓存并重新执行部署:

# 在部署节点上执行
ceph-deploy purge 目标节点IP  # 清理目标节点的旧安装
ceph-deploy purgedata 目标节点IP  # 清理数据
ceph-deploy install 目标节点IP  # 重新安装 Ceph 组件

总结

这个错误的核心是 目标节点上缺少 ceph 可执行文件,解决的关键是确保目标节点正确安装了 ceph-common 等基础包,并能通过 ceph --version 验证。重点排查软件源配置和安装过程是否有异常。