Ceph 分布式存储 结构化笔记

第 1 章 Ceph 分布式存储 介绍

1.1 存储中用户角色

1.1.1 云存储用户角色
存储管理员
  • 核心职责:安装、配置、维护 Ceph 集群;对内开展技术培训,对外提供数据方案选型;搭建副本、备份、容灾等数据保障体系;基于代码实现运维自动化与系统集成;开放接口支撑数据分析、海量数据挖掘。
  • 关键特点:集群技术与业务需求的连接点,对集群架构、数据策略、容灾方案拥有最终决策权。
存储操作员
  • 核心职责:依托 Ceph Dashboard 图形界面 查看集群告警、运行统计;执行日常运维操作,如故障硬盘更换、基础集群巡检、告警响应。
  • 关键特点:聚焦日常操作,无需深入底层原理,侧重集群稳定运行的基础保障。
其他存储相关的角色
  • 云操作员:管理 OpenStack/OpenShift 等云基础设施,与存储管理员协同维护集群资源对接。
  • 自动化工程师:编写脚本、Ansible 剧本,实现集群部署、监控、故障处理等重复运维任务自动化。
  • 应用 / DevOps 开发:对接存储资源,配置存储配额、权限策略,保障应用存储服务的安全、可用、高效。
  • 服务管理员:负责线上生产服务运维,协调存储资源的分配与使用,处理业务侧存储相关问题。
  • 部署 / DevOps 工程师:配合完成应用部署、集群扩缩容、性能调优,保障应用与存储的适配性。
  • 应用架构师:结合 Ceph 资源、扩展性、延迟特性,设计应用存储架构,平衡性能、成本与可靠性。
  • 基础架构架构师:规划集群整体架构(硬件选型、网络拓扑、故障域设计),是存储管理员的核心技术支撑。
  • 数据中心操作员:负责底层硬件上架、下线、巡检,保障集群物理基础设施稳定。
组织中用户角色
  • 云 / 电信服务商:角色拆分细致,专人专岗,部分人员仅使用存储服务、不负责运维。
  • 银行 / 金融机构:安全要求高,所有角色由内部人员担任,存储团队对内提供服务,数据隔离与权限管控严格。
  • 高校 / 小型环境:一人多岗,技术人员兼任管理员、架构师、云运维等全部角色,侧重快速上手与基础运维。

1.2 Ceph 介绍

1.2.1 Ceph 简介
  • 开源软件定义存储(SDS),纯分布式架构,面向海量数据场景。
  • 核心优势:高可用、高扩展、易运维,支持 x86 / ARM 混合架构服务器部署。
  • 底层基础:基于 RADOS(可靠自主分布式对象存储),统一提供对象、块、文件三种存储服务。
1.2.2 Ceph 技术优势
  1. 数据统一以对象形式存入存储池,与上层访问方式无关,底层由 RADOS 统一管理。
  2. 去中心化架构:客户端通过 CRUSH 算法 自行计算数据位置,无中心节点瓶颈,避免单点故障。
  3. 集群自治能力:自动扩容、数据重平衡、故障恢复、数据修复,降低人工运维成本。
  4. 高扩展性:可横向扩展至数千节点、EB 级容量,性能随节点数量线性提升。
  5. 统一存储:同一集群同时提供对象、块、文件三种服务,满足不同业务场景需求。
1.2.3 Ceph 使用场景
  • 云平台存储:对接 OpenStack、OpenShift 等云平台,提供块存储(RBD)、对象存储(RGW)服务。
  • 大数据 / AI 存储:支持海量非结构化数据存储,适配 Hadoop、Spark 等大数据框架。
  • 企业级文件共享:通过 CephFS 提供标准 POSIX 接口,满足文件共享、数据归档需求。
  • 备份与容灾:利用多副本、快照、异地复制能力,实现数据备份与灾难恢复。
1.2.4 Ceph 历史
  • 2003 年:加州大学学者 Sage Weil 研发,作为博士课题项目启动。
  • 2006 年:基于 LGPL 协议开源,无企业专属闭源功能,社区驱动发展。
  • 2003-2007 年:核心组件逐步成型,社区贡献开始壮大。
  • 2012 年:成立 Inktank 公司,提供商业化技术支持与企业版服务。
  • 2014 年:Inktank 被红帽收购,推出红帽企业版 Ceph,社区与企业版同步发展。
  • 后续发展:深度对接 Linux 内核、OpenStack、CloudStack 等主流项目,成为 SDS 领域标杆。
1.2.5 上游 Ceph 版本
  • 版本命名:早期使用代号(Argonaut、Firefly、Jewel 等),Infernalis 后改为纯数字版本。
  • LTS 长期支持版:生产环境首选,生命周期更长,稳定性与安全性保障更完善。
  • 版本格式 x.y.z
    • x:大版本(发行系列,如 16 对应 Pacific)
    • y:版本类型:0 = 开发版、1 = 候选版、2 = 稳定正式版
    • z:补丁迭代号,用于修复 bug 与安全问题
  • 发布节奏:Nautilus (14.2) 起,每年 3 月发布一个稳定版,单版本支持约 2 年。

1.3 企业版 Ceph 存储

1.3.1 Ceph 存储
  • 与社区 Ceph 的关系:类似 RHEL 与 Fedora,红帽整合社区版本并提供商业支持,企业改进功能会回馈开源社区。
  • 核心特点:企业级支持、更长的生命周期(36 个月,比社区 LTS 多 1 年)、稳定性与兼容性保障、专业技术支持服务。
  • 适用场景:金融、政务、大型企业等对稳定性、合规性、技术支持有高要求的生产环境。

1.4 Ceph 架构介绍

1.4.1 Ceph 集群架构简介
  • 核心底层:RADOS(可靠自主分布式对象存储),Ceph 一切功能的基础,数据以对象形式存储,具备自我管理、自我修复能力。
  • 上层访问接口:基于 librados 封装,提供对象、块、文件三种存储服务,适配不同业务场景。
  • 核心守护进程:MON(监视器)、OSD(对象存储设备)、MGR(管理器)、MDS(元数据服务器),各司其职保障集群运行。
1.4.2 Ceph 访问方式 - 简介
  • 原生 API(librados):底层基础库,性能最优,多语言适配,二次开发首选。
  • 块存储(RBD/librbd):虚拟磁盘,支持快照 / 克隆,适配 KVM、OpenStack Cinder。
  • 对象存储(RGW/librgw):兼容 S3/Swift 协议,对外提供对象存储服务。
  • 文件存储(CephFS/libcephfs):标准 POSIX 并行文件系统,依赖 MDS,支持快照。
1.4.3 Ceph 存储后端组件 - 简介
  • MON(监视器):集群仲裁节点,维护集群映射,保障集群状态一致性。
  • OSD(对象存储设备):对接物理磁盘,负责数据读写、副本同步、故障恢复、数据重平衡。
  • MGR(管理器):采集集群运行指标,提供 Dashboard、Prometheus 等监控与管理接口。
  • MDS(元数据服务器):仅为 CephFS 服务,管理文件元数据,保障文件系统高效访问。

1.5 Ceph 访问方式 - 详细

1.5.1 Ceph 原生 API (librados)
  • 定义:Ceph 底层基础库,Ceph 块设备、对象网关等其他接口的基础。
  • 特点:原生 C 语言库,多语言适配(C++、Java、Python 等),直接与 RADOS 交互,性能最优。
  • 适用场景:二次开发、性能敏感型应用,直接操作对象存储。
1.5.2 Ceph 块设备 (RBD、librbd)
  • 定义:RADOS 块设备,在 Ceph 集群内提供块存储服务。
  • 核心功能:虚拟磁盘存储、Linux 内核挂载支持、QEMU/KVM/OpenStack Cinder 启动支持、精简配置、快照 / 克隆。
  • 适用场景:云主机系统盘、数据库存储、虚拟机镜像存储。
1.5.3 Ceph 对象网关 (RADOS 网关、librgw)
  • 定义:使用 librados 构建的对象存储接口,直接写入 OSD 进程。
  • 核心特点:兼容 Amazon S3 和 OpenStack Swift 协议,支持标准 HTTP 负载均衡器,可部署多个网关实现高可用。
  • 适用场景:镜像存储、备份服务、文件存储与共享、静态资源存储。
1.5.4 Ceph 文件系统 (CephFS、libcephfs)
  • 定义:并行文件系统,提供可扩展的、单层级结构共享磁盘,红帽企业版提供生产环境支持。
  • 核心特点:标准 POSIX 接口、支持快照、依赖 MDS 管理元数据,客户端访问文件时先请求 MDS 获取元数据,再直连 OSD 读取数据。
  • 适用场景:文件共享、数据归档、大数据分析平台文件存储。
1.5.5 存储访问方式选择
  • 追求极致性能、二次开发:优先选择 librados 原生 API。
  • 云主机、虚拟机存储:选择 RBD 块设备。
  • 海量非结构化数据存储、兼容 S3/Swift:选择 RGW 对象网关。
  • 标准 POSIX 文件共享场景:选择 CephFS。

1.6 Ceph 后端存储组件 - 详细

1.6.1 Ceph 监视器 (MON)
  • 核心作用:集群仲裁节点,推荐奇数个部署(满足法定人数,防止脑裂);统一维护集群映射,同步集群所有节点状态、配置信息。
  • 集群映射:包含 Monitor Map、OSD Map、PG Map、CRUSH Map、MDS Map 等,记录集群拓扑、状态与配置。
  • 端口:6789(集群通信)、3300(客户端通信)。
  • 关键要求:超过一半的 MON 节点正常工作,集群才能对外提供服务。
1.6.2 Ceph 对象存储设备 (OSD)
  • 核心作用:对接物理磁盘,一磁盘建议对应一个 OSD 进程;负责数据读写、副本同步、故障恢复、数据重平衡、数据一致性校验。
  • 主 / 从 OSD:
    • 主 OSD:处理所有客户端 IO、数据校验、恢复、重平衡,是客户端 IO 的直接响应者。
    • 从 OSD:同步副本数据,主节点故障时可升级为主 OSD,保障数据高可用。
  • OSD 日志:独立日志分区(推荐 SSD),先写日志再落盘,提升随机写性能;故障时可通过日志恢复数据。
  • 注意事项:运行 OSD 的主机不建议本地挂载 RBD/CephFS,易引发内存死锁、IO 阻塞。
  • 端口范围:6800-7300(数据、心跳通信)。
1.6.3 Ceph 管理器 (MGR)
  • 核心作用:采集集群运行指标、状态数据;内置 Dashboard、Prometheus 等模块,提供 Web 界面与监控对接;处理集群管理请求,如扩缩容、配置修改。
  • 部署要求:单集群建议部署至少 2 个,避免单点故障,实现主备切换。
  • 关键端口:Dashboard 默认 8443(HTTPS)、Prometheus 指标端口 9283。
1.6.4 Ceph 元数据服务器 (MDS)
  • 核心作用:仅为 CephFS 服务,管理文件元数据(权限、时间戳、目录结构、inode 映射等);保障客户端高效访问文件系统,避免元数据瓶颈。
  • 部署特点:可多节点部署,实现主备切换,提升元数据服务可用性;元数据存储在 RADOS 中,由 OSD 保障数据可靠性。
1.6.5 CRUSH 算法 & PG 归置组
  • CRUSH 算法:可扩展哈希算法,无中央查询表,根据集群拓扑自动计算对象存放位置,支持故障域隔离、数据分布策略配置。
  • PG(归置组):对象与 OSD 之间的抽象层,对象先映射到 PG,PG 再通过 CRUSH 规则映射到多个 OSD;节点 / 磁盘故障时,PG 自动重新映射,保证数据副本规则生效,降低数据迁移量。

第 2 章 Ceph 分布式存储 部署

2.1 Ceph 集群安装介绍

2.1.1 Ceph 集群安装方式
  • cephadm(官方主推):容器化部署,Octopus 及以上版本,支持 CLI+Dashboard 全生命周期管理,降低依赖复杂度。
  • Rook:基于 Kubernetes 编排,云原生场景首选,适配 K8s 生态,实现集群的声明式管理。
  • ceph-ansible / DeepSea:基于 Ansible/SaltStack 的批量自动化部署,适合大规模集群统一配置。
  • ceph-deploy已停止维护,禁止生产使用,早期部署工具,社区不再更新。
  • 手动部署:仅用于学习、排障,了解集群组件部署细节。
2.1.2 Ceph 集群 最小硬件规格
  • OSD 单进程:最低 1 核 CPU;带宽每 200-500MB/s 加 1 核,IOPS 每 1000-3000 加 1 核。
  • OSD 内存:基础 2G~4G,高负载场景建议扩容至 8G 以上,避免 OSD 进程 OOM。
  • MON/MGR:单节点至少 2 核 CPU、4G 内存,高可用场景部署 3 个 MON、2 个 MGR。
  • 存储:系统盘 50G 以上,数据盘建议使用 SSD/NVMe 提升性能,OSD 数据盘建议单独分区。
2.1.3 Ceph 服务端口
  • MON:6789、3300(TCP,集群与客户端通信)
  • OSD/MDS:6800-7300(TCP,数据读写、副本同步、心跳通信)
  • MGR-Dashboard:8443(HTTPS,Web 图形界面管理)
  • RGW:80/443(HTTP/HTTPS,对象网关服务)
  • Grafana:3000(HTTP/HTTPS,监控大屏展示)
  • Prometheus:9283、9095(HTTP,监控指标采集、告警管理)

实验环境建议关闭 firewalldSELinux 简化部署,生产环境需按需开放端口并配置防火墙策略。

2.1.4 Cephadm 简介
  • 定义:基于 Podman 容器化管理工具,Ceph 官方推荐的集群全生命周期管理工具。
  • 核心功能:集群初始化、节点添加 / 删除、服务部署 / 扩缩容、组件升级、故障恢复、配置管理。
  • 优势:一键引导集群,降低包依赖复杂度;容器化部署,环境一致性强;支持 CLI 和 Dashboard 双管理入口。
2.1.5 Cephadm 与其他服务交互
  • 容器引擎:依赖 Podman(默认)或 Docker,拉取 Ceph 镜像并部署守护进程。
  • SSH 服务:通过 SSH 连接集群节点,实现节点添加、配置推送、服务部署。
  • 监控服务:对接 Prometheus、Grafana,实现集群指标采集与可视化;通过 Alertmanager 实现告警通知。
2.1.6 Cephadm 管理接口
2.1.6.1 Ceph CLI 接口
  • cephadm shell:进入容器化 Ceph 环境执行命令,无需在物理机安装 Ceph 客户端。
  • 物理机安装 ceph-common 后,可直接执行 ceph 系列命令,如 ceph statusceph osd tree 等。
  • 常用命令:ceph orch 系列(集群编排)、ceph mon/mgr/osd 系列(组件管理)、ceph config(配置管理)。
2.1.6.2 Ceph Dashboard 接口
  • 定义:基于 Web 的可视化管理界面,由 ceph-mgr 守护进程的模块提供。
  • 核心功能:用户与角色管理、单点登录、审计日志、集群健康监控、主机与服务管理、OSD / 池管理、监控大屏展示。
  • 访问方式:默认端口 8443,HTTPS 协议,初始化时配置管理员账号密码。

2.2 Ceph 集群安装过程

Ceph 集群环境说明
  • 部署方法:cephadm(容器化)
  • 操作系统:CentOS Stream 8(最小化安装)
  • 主机规划:
    • client.cyh.cloud 192.168.108.10 客户端节点
    • ceph1.cyh.cloud 192.168.108.11 主集群引导节点
    • ceph2.cyh.cloud 192.168.108.12 主集群节点
    • ceph3.cyh.cloud 192.168.108.13 主集群节点
    • ceph4~ceph6 192.168.108.14~16 备用集群节点
  • 单节点配置:2 核 CPU、8G 内存、1 个系统盘 + 3 个 20G 数据盘。
准备虚拟机模板(所有节点执行)
  1. 配置主机名解析
cat >> /etc/hosts << EOF
192.168.108.10 client.cyh.cloud client
192.168.108.11 ceph1.cyh.cloud ceph1
192.168.108.12 ceph2.cyh.cloud ceph2
192.168.108.13 ceph3.cyh.cloud ceph3
192.168.108.14 ceph4.cyh.cloud ceph4
192.168.108.15 ceph5.cyh.cloud ceph5
192.168.108.16 ceph6.cyh.cloud ceph6
EOF
  1. 关闭 SELinux
sed -ri 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
  1. 关闭防火墙
systemctl disable firewalld --now
  1. 配置 Ceph YUM 源
cat > /etc/yum.repos.d/ceph.repo << EOF
[Ceph]
name=Ceph
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific
enabled=1
gpgcheck=0
EOF
  1. 安装基础工具
dnf install -y bash-completion vim lrzsz unzip rsync sshpass tar
  1. 时间同步(必须)
dnf install -y chrony
systemctl enable chronyd --now
  1. 安装 cephadm(自动依赖 Podman)
dnf install -y cephadm
准备集群节点
  • 使用完全克隆方式,基于模板虚拟机克隆出 ceph1~ceph6、client 节点。
  • 配置主机名与 IP 地址,确保各节点网络互通、主机名解析正常。
Ceph 集群初始化(引导节点 ceph1)
  1. 提前拉取镜像(加速部署)
podman pull quay.io/ceph/ceph:v16
podman pull quay.io/ceph/ceph-grafana:8.3.5
podman pull quay.io/prometheus/node-exporter:v1.3.1
podman pull quay.io/prometheus/alertmanager:v0.23.0
podman pull quay.io/prometheus/prometheus:v2.33.4
  1. Bootstrap 初始化集群
cephadm bootstrap --mon-ip 192.168.108.11 \
--allow-fqdn-hostname \
--initial-dashboard-user admin \
--initial-dashboard-password cyh@123 \
--dashboard-password-noupdate

参数说明:

  • --mon-ip:指定 MON 节点 IP,作为集群初始化的入口。
  • --allow-fqdn-hostname:支持长主机名,适配 ceph1.cyh.cloud 格式。
  • 后三项:配置 Dashboard 账号、密码,禁止强制修改初始密码,方便实验环境使用。
  1. 初始化完成后关键信息
  • Dashboard 地址:https://ceph1.cyh.cloud:8443
  • 默认账号密码:admin / cyh@123
  • 集群配置文件:/etc/ceph/ceph.conf,密钥环文件:/etc/ceph/ceph.client.admin.keyring
  1. 安装客户端工具(物理机直接执行 ceph 命令)
dnf install -y ceph-common
# 验证集群状态
ceph status
添加集群节点
  1. 导出集群公钥,推送至所有待加入节点(免密认证)
# ceph1 执行
ceph cephadm get-pub-key > ~/ceph.pub
ssh-copy-id -f -i ~/ceph.pub root@ceph2.cyh.cloud
ssh-copy-id -f -i ~/ceph.pub root@ceph3.cyh.cloud
  1. 添加主机到集群
ceph orch host add ceph2.cyh.cloud
ceph orch host add ceph3.cyh.cloud
# 查看主机列表
ceph orch host ls
  1. 关闭 MON、MGR 自动扩缩容
ceph orch apply mon --unmanaged=true
ceph orch apply mgr --unmanaged=true
  1. 给节点添加 _admin 标签,指定组件部署位置
ceph orch host label add ceph2.cyh.cloud _admin
ceph orch host label add ceph3.cyh.cloud _admin
# 绑定MON、MGR到带_admin标签节点
ceph orch apply mon --placement="label:_admin"
ceph orch apply mgr --placement="label:_admin"
批量部署 OSD(空闲磁盘自动接管)
# 把所有空闲磁盘自动创建为OSD
ceph orch apply osd --all-available-devices

# 查看集群整体状态
ceph -s
# 查看OSD层级结构
ceph osd tree
# 查看集群服务列表
ceph orch ls
# 查看进程详情
ceph orch ps
常用状态说明
  1. 集群健康状态
    • HEALTH_OK:集群正常
    • HEALTH_WARN:存在告警,需排查
    • HEALTH_ERR:严重故障,立即处理
  2. 服务 RUNNING 字段当前运行数 / 规划部署数
  3. PLACEMENT:服务部署策略(指定主机 / 标签 / 数量 / 不托管)
服务运维基础命令
# 启停/重启服务
ceph orch daemon start|stop|restart|redeploy <服务名>
# 删除服务
ceph orch daemon rm <服务名> --force

实验建议:部署完成后关机打快照,方便后续还原环境。

Ceph 集群组件管理

ceph orch 命令

ceph orch 命令与编排器模块交互,编排器模块是ceph-mgr的插件,与外部编排服务交互。

ceph orch 命令支持多个外部编排器:

  • host:物理节点

  • service type:服务类型,如nfs, mds, osd, mon, rgw, mgr, iscsi

  • Service:逻辑服务

Daemon:进程

cephadm使用的特殊标签:

  • _no_schedule:不在此类标签的节点上部署或调度任何服务。

  • _no_autotune_memory:不对此类标签的节点进行内存调优。

  • _admin:自动将ceph.conf和ceph.client.admin.keyring发送到此类标签的节点上。

禁用服务自动扩展

Ceph 集群服务自动扩展功能,会自动部署ceph组件到存储节点。如果想手动管理 ceph 服务,则需要禁用 ceph 服务自动扩展功能。

# 查看 mon 服务
[root@ceph1 ~ 15:05:01]# ceph orch ls mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              3/3  95s ago    4m   label:_admin

# 禁用 mon 服务自动扩展
[root@ceph1 ~ 15:06:42]# ceph orch apply mon --unmanaged=true
Scheduled mon update...

[root@ceph1 ~ 15:07:22]# ceph orch ls mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              3/5  13s ago    18s  <unmanaged>

# 启用 mon 服务自动扩展
[root@ceph1 ~ 15:07:29]# ceph orch apply mon --unmanaged=false
Scheduled mon update...
[root@ceph1 ~ 15:07:51]# ceph orch ls mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              3/5  40s ago    4s   count:5

# 通过标签部署 mon 服务
[root@ceph1 ~ 15:07:29]# ceph orch apply mon --unmanaged=false
Scheduled mon update...
[root@ceph1 ~ 15:07:51]# ceph orch ls mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              3/5  40s ago    4s   count:5

删除服务

以 crash 服务为例。

# 禁用服务自动扩展
[root@ceph1 ~ 15:08:35]# ceph orch apply crash --unmanaged=true
Scheduled crash update...
[root@ceph1 ~ 15:09:18]# ceph orch ls crash
NAME   PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
crash             3/3  2m ago     12s  <unmanaged>

# 查看服务中实例
[root@ceph1 ~ 15:09:31]# ceph orch ps | grep crash
crash.ceph1                 ceph1.cyh.cloud               running (23m)   108s ago  23m    6643k        -  16.2.15  3c4eff6082ae  547b0648deac
crash.ceph2                 ceph2.cyh.cloud               running (8m)      2m ago   8m    6639k        -  16.2.15  3c4eff6082ae  fda7aebbf805
crash.ceph3                 ceph3.cyh.cloud               running (7m)      2m ago   7m    6639k        -  16.2.15  3c4eff6082ae  0de1e1b52c3e

# 删除特定实例
[root@ceph1 ~ 15:09:49]# ceph orch daemon rm crash.ceph1
Removed crash.ceph1 from host 'ceph1.cyh.cloud'
[root@ceph1 ~ 15:10:21]# ceph orch ps | grep crash
crash.ceph2                 ceph2.cyh.cloud               running (9m)      3m ago   9m    6639k        -  16.2.15  3c4eff6082ae  fda7aebbf805
crash.ceph3                 ceph3.cyh.cloud               running (8m)      3m ago   8m    6639k        -  16.2.15  3c4eff6082ae  0de1e1b52c3e

# 删除服务
[root@ceph1 ~ 15:10:26]# ceph orch rm crash
Removed service crash
[root@ceph1 ~ 15:10:29]# ceph orch ls crash #这里需要快点查看
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
crash 1/3 <deleting> 50s <unmanaged>
[root@ceph1 ~ 15:10:45]# ceph orch ls crash
No services reported

部署服务

使用 ceph 的编排器部署服务, 有两种方式:

  • apply 方式:定义了服务状态,由编排器根据参数自动寻找合适的节点进行服务部署。

语法: ceph orch apply <service_type> [–placement=<placement_string>] [–unmanaged]

例如: ceph orch apply crash 和 ceph orch apply mon --placement=“label:_admin” 。

  • daemon add 方式:根据命令中的参数,直接进行服务部署。

语法: ceph orch daemon add <daemon_type>

命令 orch apply osd [–all-available-devices] 将节点上的所有可用设备配置为OSD。

删除 OSD

确定 OSD 和设备关系

[root@ceph1 ~ 15:11:15]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
-1         0.17537  root default
-7         0.05846      host ceph1
ceph1下的硬盘
0    ssd  0.01949          osd.0       up   1.00000  1.00000
osd.0对应哪块磁盘
3    ssd  0.01949          osd.3       up   1.00000  1.00000
 7    ssd  0.01949          osd.7       up   1.00000  1.00000
-5         0.05846      host ceph2
 1    ssd  0.01949          osd.1       up   1.00000  1.00000
 4    ssd  0.01949          osd.4       up   1.00000  1.00000
 6    ssd  0.01949          osd.6       up   1.00000  1.00000
-3         0.05846      host ceph3
 2    ssd  0.01949          osd.2       up   1.00000  1.00000
 5    ssd  0.01949          osd.5       up   1.00000  1.00000
 8    ssd  0.01949          osd.8       up   1.00000  1.00000
# 获取集群id
[root@ceph1 ~ 15:11:32]# ceph -s | grep id
    id:     3c184f82-5997-11f1-a83a-000c2977f8c8
    
# 登录到ceph1上确认osd.0使用的块设备
[root@ceph1 ~ 15:16:27]# ls -l /var/lib/ceph/3c184f82-5997-11f1-a83a-000c2977f8c8/osd.0/block
lrwxrwxrwx 1 ceph ceph 93 May 27 15:04 /var/lib/ceph/3c184f82-5997-11f1-a83a-000c2977f8c8/osd.0/block -> /dev/ceph-b080289a-64d6-4491-8431-fb1236657e9f/osd-block-44b4e476-6421-49cf-81f4-8e7799c538c3

[root@ceph1 ~ 15:17:01]# lsblk | grep -B1 8e7799c538c3
nvme0n2                                                                                               259:3    0    20G  0 disk
└─ceph--b080289a--64d6--4491--8431--fb1236657e9f-osd--block--44b4e476--6421--49cf--81f4--8e7799c538c3 253:3    0    20G  0 lvm

# 用下面命令也可以
[root@ceph1 ~ 15:17:37]# ceph osd metadata 0
{
    "id": 0,
    "arch": "x86_64",
    "back_addr": "[v2:192.168.108.11:6804/948271221,v1:192.168.108.11:6805/948271221]",
    "back_iface": "",
    "bluefs": "1",
    "bluefs_dedicated_db": "0",
    "bluefs_dedicated_wal": "0",
    "bluefs_single_shared_device": "1",
    "bluestore_bdev_access_mode": "blk",
    "bluestore_bdev_block_size": "4096",
    "bluestore_bdev_dev_node": "/dev/dm-3",
    "bluestore_bdev_devices": "nvme0n2",
    "bluestore_bdev_driver": "KernelDevice",
    "bluestore_bdev_partition_path": "/dev/dm-3",
    "bluestore_bdev_rotational": "0",
    "bluestore_bdev_size": "21470642176",
    "bluestore_bdev_support_discard": "0",
    "bluestore_bdev_type": "ssd",
    "bluestore_min_alloc_size": "4096",
    "ceph_release": "pacific",
    "ceph_version": "ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)",
    "ceph_version_short": "16.2.15",
    "ceph_version_when_created": "ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)",
    "container_hostname": "ceph1.cyh.cloud",
    "container_image": "quay.io/ceph/ceph@sha256:6ba107eb55617994a9e6ed49fb938828c2ed3121aa19ceeffbf8e28608535d94",
    "cpu": "13th Gen Intel(R) Core(TM) i7-13650HX",
    "created_at": "2026-05-27T07:04:01.272424Z",
    "default_device_class": "ssd",
    "device_ids": "nvme0n2=VMware_Virtual_NVMe_Disk_VMware_NVME_0000",
    "device_paths": "nvme0n2=/dev/disk/by-path/pci-0000:0b:00.0-nvme-2",
    "devices": "nvme0n2",
    "distro": "centos",
    "distro_description": "CentOS Stream 8",
    "distro_version": "8",
    "front_addr": "[v2:192.168.108.11:6802/948271221,v1:192.168.108.11:6803/948271221]",
    "front_iface": "",
    "hb_back_addr": "[v2:192.168.108.11:6808/948271221,v1:192.168.108.11:6809/948271221]",
    "hb_front_addr": "[v2:192.168.108.11:6806/948271221,v1:192.168.108.11:6807/948271221]",
    "hostname": "ceph1.cyh.cloud",
    "journal_rotational": "0",
    "kernel_description": "#1 SMP Thu May 30 04:13:58 UTC 2024",
    "kernel_version": "4.18.0-553.6.1.el8.x86_64",
    "mem_swap_kb": "2170876",
    "mem_total_kb": "3716756",
    "network_numa_unknown_ifaces": "back_iface,front_iface",
    "objectstore_numa_node": "0",
    "objectstore_numa_nodes": "0",
    "os": "Linux",
    "osd_data": "/var/lib/ceph/osd/ceph-0",
    "osd_objectstore": "bluestore",
    "osdspec_affinity": "all-available-devices",
    "rotational": "0"
}

脚本实现

[root@ceph1 ~ 15:38:40]# vim /usr/local/bin/show-osd-device

#!/bin/bash
# author laogao
# date 2025-08-19
# Description 确认 osd 和 device 之间对应关系
# usage 在ceph node 上执行

cluster_id=$(ceph -s|grep id |awk '{print $2}')

cd /var/lib/ceph/${cluster_id}
for osd in osd.*
do
device_id=$(ls -l $osd/block | awk -F '-' '{print $NF}')
    device=/dev/$(lsblk |grep -B1 ${device_id} |grep -v ${device_id} | awk '{print $1}')
    echo $osd : $device
done

[root@ceph1 ~]# chmod +x /usr/local/bin/show-osd-device

执行效果

[root@ceph1 ~ 15:43:11]# show-osd-device
osd.0 : /dev/nvme0n2
osd.3 : /dev/nvme0n3
osd.7 : /dev/nvme0n4

编排删除

编排删除做了什么?

  1. 自动 drain 数据(如果未提前 out,某些版本会拒绝)
  2. 通过 cephadm 在目标主机上停止 OSD 容器
  3. 自动执行:

ceph osd crush remove

ceph auth del

ceph osd rm

  1. (可选)自动 zap 磁盘**/LVM**(加 --zap 参数)
  2. 更新 orchestrator 内部状态,避免 reconcile 时重

示例:删除 osd.0

# 禁用 osd 服务自动扩展
[root@ceph1 ~ 15:43:20]# ceph orch apply osd --all-available-devices --unmanage                                                                       d=true
Scheduled osd.all-available-devices update...
[root@ceph1 ~ 15:43:34]# ceph orch ls osd
NAME                       PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
osd.all-available-devices               9  85s ago    9s   <unmanaged>
# 第一种(先标记out,再删除)
[root@ceph1 ~ 15:43:44]# ceph osd out osd.0
marked out osd.0.
[root@ceph1 ~ 15:44:11]# ceph orch osd rm 0
Scheduled OSD(s) for removal
# 删除device上数据
# 删除前lsblk看下
[root@ceph1 ~ 15:47:56]# lsblk
NAME                                                                                                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0                                                                                                    11:0    1  12.8G  0 rom
nvme0n1                                                                                               259:0    0   200G  0 disk
├─nvme0n1p1                                                                                           259:1    0     1G  0 part /boot
└─nvme0n1p2                                                                                           259:2    0   199G  0 part
  ├─cs-root                                                                                           253:0    0    70G  0 lvm  /
  ├─cs-swap                                                                                           253:1    0   2.1G  0 lvm  [SWAP]
  └─cs-home                                                                                           253:2    0 126.9G  0 lvm  /home
nvme0n2                                                                                               259:3    0    20G  0 disk
└─ceph--b080289a--64d6--4491--8431--fb1236657e9f-osd--block--44b4e476--6421--49cf--81f4--8e7799c538c3 253:3    0    20G  0 lvm
nvme0n3                                                                                               259:4    0    20G  0 disk
└─ceph--693a7e37--fa03--4c82--83a6--7ff8cf304624-osd--block--a3539039--cd21--4bbd--829c--8732aec1804b 253:4    0    20G  0 lvm
nvme0n4                                                                                               259:5    0    20G  0 disk
└─ceph--77c5eca8--4cab--4b0b--80cb--b4b583194282-osd--block--dbb8eb7d--eca2--4e29--a72b--8dcf4b82ce1b 253:5    0    20G  0 lvm
[root@ceph1 ~ 15:50:16]# ll /var/lib/ceph/3c184f82-5997-11f1-a83a-000c2977f8c8/osd.3/block
lrwxrwxrwx 1 ceph ceph 93 May 27 15:04 /var/lib/ceph/3c184f82-5997-11f1-a83a-000c2977f8c8/osd.3/block -> /dev/ceph-693a7e37-fa03-4c82-83a6-7ff8cf304624/osd-block-a3539039-cd21-4bbd-829c-8732aec1804b

[root@ceph1 ~ 15:51:14]# ceph orch device zap ceph1.cyh.cloud /dev/nvme0n2  --force
zap successful for /dev/nvme0n2 on ceph1.cyh.cloud
[root@ceph1 ~ 15:51:49]# lsblk
NAME                                                                                                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0                                                                                                    11:0    1  12.8G  0 rom
nvme0n1                                                                                               259:0    0   200G  0 disk
├─nvme0n1p1                                                                                           259:1    0     1G  0 part /boot
└─nvme0n1p2                                                                                           259:2    0   199G  0 part
  ├─cs-root                                                                                           253:0    0    70G  0 lvm  /
  ├─cs-swap                                                                                           253:1    0   2.1G  0 lvm  [SWAP]
  └─cs-home                                                                                           253:2    0 126.9G  0 lvm  /home
nvme0n2                                                                                               259:3    0    20G  0 disk
nvme0n3                                                                                               259:4    0    20G  0 disk
└─ceph--693a7e37--fa03--4c82--83a6--7ff8cf304624-osd--block--a3539039--cd21--4bbd--829c--8732aec1804b 253:4    0    20G  0 lvm
nvme0n4                                                                                               259:5    0    20G  0 disk
└─ceph--77c5eca8--4cab--4b0b--80cb--b4b583194282-osd--block--dbb8eb7d--eca2--4e29--a72b--8dcf4b82ce1b 253:5    0    20G  0 lvm


# 第二种 直接删除加格式化磁盘
[root@ceph1 ~ 15:52:05]# ceph osd out osd.3
marked out osd.3.
[root@ceph1 ~ 15:52:48]# ceph orch osd rm 3 --force --zap
Scheduled OSD(s) for removal
[root@ceph1 ~ 15:53:22]# lsblk
NAME                                                                                                  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0                                                                                                    11:0    1  12.8G  0 rom
nvme0n1                                                                                               259:0    0   200G  0 disk
├─nvme0n1p1                                                                                           259:1    0     1G  0 part /boot
└─nvme0n1p2                                                                                           259:2    0   199G  0 part
  ├─cs-root                                                                                           253:0    0    70G  0 lvm  /
  ├─cs-swap                                                                                           253:1    0   2.1G  0 lvm  [SWAP]
  └─cs-home                                                                                           253:2    0 126.9G  0 lvm  /home
nvme0n2                                                                                               259:3    0    20G  0 disk
nvme0n3                                                                                               259:4    0    20G  0 disk
nvme0n4                                                                                               259:5    0    20G  0 disk
└─ceph--77c5eca8--4cab--4b0b--80cb--b4b583194282-osd--block--dbb8eb7d--eca2--4e29--a72b--8dcf4b82ce1b 253:5    0    20G  0 lvm
# 添加回来
[root@ceph1 ~ 15:53:31]# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...
[root@ceph1 ~ 15:54:42]# ceph orch ls
NAME                       PORTS        RUNNING  REFRESHED  AGE  PLACEMENT
alertmanager               ?:9093,9094      1/1  87s ago    71m  count:1
grafana                    ?:3000           1/1  87s ago    71m  count:1
mgr                                         3/3  3m ago     53m  label:_admin
mon                                         3/3  3m ago     48m  label:_admin
node-exporter              ?:9100           3/3  3m ago     71m  *
osd.all-available-devices                     9  3m ago     2m   *
prometheus                 ?:9095           1/1  87s ago    71m  count:1
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐