背景说明
在一次 Proxmox VE(PVE)节点初始化完成后,Web UI 中出现了 Ceph HEALTH_WARN 提示,提示内容为:
OSD count 0 < osd_pool_default_size 3
该告警并非硬件故障或系统异常,而是由于 Ceph 已被初始化,但集群中并未配置任何 OSD(Object Storage Daemon),同时 Ceph 默认要求存储池副本数为 3,从而触发健康警告。
当前环境采用 PVE 单节点 + 独立硬件 PBS(Proxmox Backup Server) 的架构,用于虚拟化运行与备份分离。在该架构下,并不存在分布式存储或在线高可用的需求,因此 Ceph 实际上并不适合该使用场景。
Ceph 的定位与适用场景
Ceph 是一套分布式存储系统,主要目标包括:
- 多节点环境下的统一存储池
- 数据多副本与自动恢复
- 节点或磁盘故障下的在线高可用
其典型使用场景包括:
- 多节点 PVE 集群的共享虚拟机存储
- 云平台(如 OpenStack、Kubernetes)后端存储
- 大规模对象存储或分布式文件系统
而在 单节点 PVE 环境中:
- 不存在节点级高可用需求
- Ceph 的副本机制无法发挥价值
- 反而会引入额外的资源消耗与运维复杂度
因此,在明确不使用 Ceph 的前提下,应当将其从系统角色中移除。
HEALTH_WARN 的根本原因
出现告警的直接原因是:
- Ceph 集群已初始化
- OSD 数量为 0
- 默认存储池副本数为 3
Ceph 在内部进行一致性校验时,判断该集群不具备存储能力,因此给出 HEALTH_WARN 提示。这属于 Ceph 的正常设计行为,而非异常。
移除 Ceph 的实际操作
在确认 Ceph 不再需要后,使用 PVE 官方提供的清理命令对集群进行销毁。
执行命令
pveceph purge
命令输出示例
Removed "/etc/systemd/system/ceph-mon.target.wants/ceph-mon@localhost.service".
Removed "/etc/systemd/system/ceph-mgr.target.wants/ceph-mgr@localhost.service".
Removing config & keyring files
该输出表明:
- Ceph Monitor(mon)服务已从 systemd 启动链路中移除
- Ceph Manager(mgr)服务已移除
- Ceph 的配置文件与密钥文件已被删除
这一步并非“停止服务”,而是销毁 Ceph 集群状态本身。
关于 systemd 中残留的 ceph 单元文件
在执行 pveceph purge 后,通过以下命令检查 systemd 单元文件:
systemctl list-unit-files | grep ceph
可以看到多个 ceph-*.service 与 ceph-*.target 仍然存在。
需要明确区分以下两点:
list-unit-files显示的是 系统中存在的服务定义文件- 并不代表这些服务正在运行
在 PVE 中:
- Ceph 软件包默认被保留
- 对应的 systemd 单元模板文件会存在
- 只有在 Ceph 集群被初始化并创建实例后,相关服务才会实际启动
因此,这种状态是完全正常且符合 PVE 设计预期的。
验证 Ceph 是否仍在运行
判断 Ceph 是否仍有守护进程运行,应使用以下命令:
systemctl --type=service | grep ceph
在 Ceph 已被正确移除的情况下:
- 不应看到
ceph-mon、ceph-mgr、ceph-osd等服务处于 active 状态 - 最多只可能存在
ceph-crash.service
ceph-crash.service 仅用于收集 Ceph 崩溃信息,在未运行 Ceph 的情况下几乎不占用资源,可选择保留或手动禁用。
移除后的系统状态
完成上述操作后,系统状态应为:
- 不存在 Ceph 集群
- 不存在 Ceph 守护进程
- 不再产生 Ceph 健康告警
- 不影响 PVE 的虚拟机、存储或备份功能
Ceph 从系统的“运行组件”退化为“仅存在工具包”,对系统资源与稳定性不再产生影响。
总结
在 PVE 单节点 + 独立 PBS 的架构下,Ceph 并非必需组件。面对 HEALTH_WARN 告警,与其尝试以单 OSD、单副本的方式“勉强使用”,不如明确其不适用性并彻底移除。
这种取舍可以带来:
- 更简洁的系统结构
- 更低的维护心智负担
- 更可控、可预测的长期运行状态
对于单节点虚拟化环境而言,这是一种理性且可持续的选择。