当前位置: 首页 > news >正文

Ceph 分布式存储学习笔记(一):介绍、部署与集群配置(上)

ceph分布式存储

Ceph 分布式存储 介绍

存储中用户角色

在规模较大的云存储场景里,为了保障存储系统稳定高效运行、满足不同业务需求,会划分出职责各有侧重的用户角色,不同组织因自身特点,角色的实施与人员配置也存在差异。同时,Ceph 作为一款优秀的开源存储系统,在云存储领域有着广泛应用,其技术特性也值得深入了解。

云存储环境中的核心用户角色

云存储系统的顺畅运转,依赖于不同角色的协同配合,从集群搭建维护到日常操作响应,再到与其他业务角色的联动,每个角色都承担着关键职责。

存储管理员:系统运维的核心主导者

存储管理员是云存储集群运维的核心角色,需要具备全面的技术能力,承担着从集群搭建到后续保障服务的一系列重要任务,具体包括:

  1. 负责 Ceph 存储集群的全生命周期管理,从初始的安装部署,到后续根据业务需求进行的配置调整,再到长期的系统维护,确保集群始终处于稳定运行状态。
  2. 作为技术传递者,需向基础架构架构师分享 Ceph 系统的功能特性,帮助其更好地理解系统能力,以便在架构设计中充分利用 Ceph 的优势。
  3. 面向用户提供专业支持,讲解 Ceph 的数据存储方式与相关技术方法,为用户选择适配自身数据应用的方案提供参考,助力用户高效使用存储资源。
  4. 保障数据安全与业务连续性,通过设计并实施复本策略、备份方案以及灾难恢复机制,为数据提供多维度的安全保障,降低数据丢失风险。
  5. 推动运维效率提升,借助基础设施即代码(IaC)的理念与工具,实现存储集群运维任务的自动化,同时促进 Ceph 与其他系统的集成,减少人工操作成本。
  6. 支撑数据价值挖掘,为数据分析工作以及高级海量数据挖掘需求提供存储层面的支持,确保相关工作能高效访问所需数据,助力业务从数据中提取价值。
存储操作员:日常运维的协助执行者

存储操作员作为存储管理员的重要协助者,通常在经验积累上稍逊于存储管理员,主要聚焦于集群的日常操作与基础响应工作,核心职责如下:

  • 辅助存储管理员完成集群的日常运营维护,是日常运维工作的主要执行者之一。
  • 以 Ceph Dashboard 图形用户界面(GUI)为主要操作工具,实时监控集群的运行状态,及时查看各类警报信息与性能统计数据,并根据预警或故障提示做出相应处理,保障集群稳定。
  • 承担基础的硬件管理任务,比如当存储设备出现故障时,负责及时更换,确保存储硬件层的正常运转,减少硬件故障对集群的影响。
其他关联存储角色:跨领域协同的关键参与者

除了存储管理员与操作员,还有多个角色会直接与 Ceph 存储系统产生交互,存储管理员需频繁与这些角色沟通协作。明确这些角色的职责与协作关系,不仅能更清晰地界定存储管理员的工作范围,也能保障整个存储生态的顺畅运转,主要角色包括:

  • 云操作员:专注于管理组织内部的云资源,像 OpenStack、OpenShift 这类云基础设施的运维都由其负责。在 Ceph 集群维护工作中,云操作员与存储管理员需要紧密配合,确保存储资源与云基础设施的协同适配。
  • 自动化工程师:核心工作是针对日常运维中重复出现的任务,设计并编写自动化脚本(剧本),通过自动化手段减少人工操作,提升运维效率,其工作成果能为存储管理员的自动化运维工作提供有力支持。
  • 应用程序开发人员(DevOps 开发人员):涵盖原始代码开发、应用维护以及保障应用在云环境中正确部署与运行等职责。存储管理员需与这类开发人员协同,提前规划并确保应用所需的存储资源充足,合理设置存储配额,同时采取安全措施保护应用数据的存储安全。
  • 服务管理员:主要管理面向最终用户的服务(区别于操作系统层面的服务),职责与项目经理有相似之处,但更聚焦于已上线的生产服务产品,需与存储管理员沟通,确保服务运行所需的存储资源稳定供应。
  • 部署工程师(DevOps 工程师):在规模较大的云环境中,这类工程师会专门与存储管理员、应用程序开发人员协作,负责应用部署的执行、后期管理以及根据运行情况进行调整优化,保障应用与存储系统的高效适配。
  • 应用架构师:具备将 Ceph 基础设施布局与资源可用性、系统扩展性、数据延迟等关键指标关联分析的能力。凭借专业的架构知识,能为存储管理员设计复杂应用的部署方案提供指导,而存储管理员也需理解这些关键指标,才能更好地支撑云用户及其应用的需求。
  • 基础架构架构师:是存储管理员获取 Ceph 集群部署与维护关键信息的主要来源,其可能来自云服务提供商、供应商解决方案团队或外部顾问。存储管理员需掌握集群的架构布局,才能有效管理资源位置、控制存储容量、优化数据延迟,这离不开与基础架构架构师的紧密沟通。
  • 数据中心操作员:处于 Ceph 存储基础设施的底层,负责数据资源的供应工作。通常受雇于公共云服务提供商,或企业私有数据中心的内部 IT 团队,为上层存储系统的运行提供基础资源支持。
不同组织中的角色实施差异

由于各组织在人员配置、团队技能水平、安全需求以及业务规模等方面存在显著不同,云存储相关角色的实施方式也各不相同。在实际工作中,一个用户往往不会只承担单一角色,而是会根据自身工作职责,同时兼顾多个角色的任务。

  1. 电信与云服务提供商:这类组织的业务核心围绕云服务展开,常见的角色包括云操作员、存储操作员、基础架构架构师以及云服务开发人员。在存储使用上,他们更多是作为存储资源的 “消费者”,聚焦于利用存储资源支撑自身服务,而非直接承担存储系统的维护工作。
  2. 金融与银行机构:这类组织对数据安全、系统私密性以及基础设施专用性要求极高,因此所有与存储相关的角色均由内部人员担任。其中,存储管理员、云操作员以及基础架构架构师扮演着 “服务提供者” 的角色,为组织内部其他业务角色提供稳定、安全的存储支撑服务。
  3. 高校与小型部署场景:受限于人员规模与资源条件,通常不会划分过细的角色。技术支持人员往往需要一人多岗,同时承担起存储管理员、基础架构架构师以及云操作员等多个角色的职责,全面负责存储系统的搭建、维护与日常运营。

Ceph 存储系统核心解析

Ceph 系统简介

Ceph 是一款基于开源理念开发的分布式软件定义存储(SDS)系统,凭借其独特的设计,在海量数据存储场景中展现出显著优势:

  • 高可用性:通过分布式架构与数据冗余机制,有效避免单点故障,确保存储服务持续稳定,即使部分节点出现问题,也能保障数据可访问与业务不中断。
  • 强扩展性:支持在现有集群基础上灵活添加节点,无论是存储容量还是处理性能,都能随着节点增加实现线性扩展,轻松应对数据量增长带来的存储压力。
  • 高易用性:提供了简洁的管理工具与友好的操作界面(如 Ceph Dashboard),降低了运维门槛,同时支持多种部署方式,适配不同的 IT 环境。
  • 硬件兼容性:可部署在通用服务器上,对服务器 CPU 架构兼容性强,不仅支持 x86 架构,也能适配 ARM 架构,甚至允许在同一集群中同时存在 x86 与 ARM 架构的主机,极大提升了硬件选择的灵活性。
Ceph 的核心技术优势

Ceph 之所以能在众多存储系统中脱颖而出,关键在于其独特的技术架构,核心优势体现在以下几个方面:

  1. RADOS 系统的对象存储模式:采用 RADOS(可靠的自主分布式对象存储)作为底层存储架构,将所有数据以对象的形式存储在预设的存储池中。这种模式不仅简化了数据管理,还能更好地利用存储资源,提升数据访问效率。
  2. 去中心化的读写机制:摒弃了传统存储系统中的中心节点,客户端无需通过中心服务器转发请求,而是借助 CRUSH(可控的、可扩展的、分布式的复制算法)算法,自行计算出数据对象的存储位置,直接与存储节点进行数据读写交互,大幅降低了中心节点带来的性能瓶颈与单点故障风险。
  3. 自动化的集群管理能力:集群具备高度的自主性,能够根据节点增减、负载变化等情况,自动完成存储容量扩展、数据在不同节点间的再平衡,以及当节点或设备故障时的数据恢复工作,减少了人工干预,提升了集群的稳定性与运维效率。

Ceph 分布式存储 部署

Ceph 集群安装介绍

Ceph 集群安装方式

官方推荐部署方式

  • Cephadm:基于容器部署,支持 Octopus 及以后版本,部署完成后可通过命令行和图形界面进行ceph集群的管理。
  • Rook:基于 kubernetes 部署,支持 Nautilus 及以后版本,部署完成后可通过命令行和图形界面进行ceph集群的管理,同时可通过 kubernetes 对组件所在 pod 进行管理。

其他部署方式

  • ceph-ansible,通过ansible进行ceph部署
  • ceph-deploy,已经不再维护,不建议使用该方式部署
  • DeepSea,通过salt进行ceph部署
  • 手动部署
Cephadm 简介
  • Cephadm 是一个ceph全生命周期管理工具, 通过“引导( bootstrapping ) ” 可创建一个包含一个MON和一个MGR的单节点集群, 后续可通过自带的编排接口进行集群的扩容、 主机添加、 服务部署。

  • Cephadm 使用容器部署 Ceph,大大降低了部署 Ceph 集群的复杂性和包依赖性。

  • cephadm 软件包安装在集群第一个节点中,该节点充当引导节点。Cephadm 是部署新集群时启动的第一个守护程序,同时也是管理器守护程序 (MGR) 中的一个模块。

Ceph 集群安装过程

Ceph 集群环境

部署方法:cephadm

操作系统:Centos Stream 8(最小化安装)

硬件配置:2 cpu、4G memory、1个系统盘+3个20G数据盘

本教材共使用7台虚拟机:

  • 客户端:client
  • 主集群:ceph1、ceph2、ceph3
  • 备集群:ceph4、ceph5、ceph6
主机名IP 地址角色
client.yuxb.cloud192.168.108.10客户端节点
ceph1.yuxb.cloud192.168.108.11主集群-ceph 节点
ceph2.yuxb.cloud192.168.108.12主集群-ceph 节点
ceph3.yuxb.cloud192.168.108.13主集群-ceph 节点
ceph4.yuxb.cloud192.168.108.14备集群-ceph 节点
ceph5.yuxb.cloud192.168.108.15备集群-ceph 节点
ceph6.yuxb.cloud192.168.108.16备集群-ceph 节点

在这里插入图片描述

准备虚拟机模板
# 配置主机名解析
[root@localhost ~]# cat >> /etc/hosts << EOF###### ceph ######
192.168.108.10 client.yuxb.cloud client
192.168.108.11 ceph1.yuxb.cloud ceph1
192.168.108.12 ceph2.yuxb.cloud ceph2
192.168.108.13 ceph3.yuxb.cloud ceph3
192.168.108.14 ceph4.yuxb.cloud ceph4
192.168.108.15 ceph5.yuxb.cloud ceph5
192.168.108.16 ceph6.yuxb.cloud ceph6
EOF# 关闭 SELinux
[root@localhost ~]# sed -ri 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# getenforce
Disabled# 关闭防火墙
[root@localhost ~]# systemctl disable firewalld --now
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.# 配置yum仓库
[root@localhost ~]# cat << 'EOF' > /etc/yum.repos.d/ceph.repo
> [Ceph]
> name=Ceph
> baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific
> enabled=1
> gpgcheck=0
> EOF
[root@localhost ~]# cat /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific
enabled=1
gpgcheck=0# 安装基础软件包
[root@localhost ~]# dnf install -y bash-completion vim lrzsz unzip rsync sshpass tar# 配置时间同步
[root@localhost ~]# dnf install -y chrony
[root@localhost ~]# systemctl enable chronyd --now# 安装 cephadm
[root@localhost ~]# dnf install -y cephadm# 安装 cephadm 的时候,会自动安装官方推荐的容器引擎 podman
[root@localhost ~]# rpm -q podman
podman-4.9.4-0.1.module_el8+971+3d3df00d.x86_64# 下载镜像
[root@localhost ~]# podman pull quay.io/ceph/ceph-grafana:8.3.5
Trying to pull quay.io/ceph/ceph-grafana:8.3.5...
Getting image source signatures
Copying blob b29fa70dd594 done   |
Copying config dad864ee21 done   |
Writing manifest to image destination
dad864ee21e98e69f4029d1e417aa085001566be0d322fbc75bc6f29b0050c01
[root@localhost ~]# podman pull quay.io/prometheus/node-exporter:v1.3.1
Trying to pull quay.io/prometheus/node-exporter:v1.3.1...
Getting image source signatures
Copying blob b5db1e299295 done   |
Copying blob aa2a8d90b84c done   |
Copying blob b45d31ee2d7f done   |
Copying config 1dbe0e9319 done   |
Writing manifest to image destination
1dbe0e931976487e20e5cfb272087e08a9779c88fd5e9617ed7042dd9751ec26
[root@localhost ~]# podman pull quay.io/prometheus/alertmanager:v0.23.0
Trying to pull quay.io/prometheus/alertmanager:v0.23.0...
Getting image source signatures
Copying blob aa2a8d90b84c skipped: already exists
Copying blob aa42aae1183b done   |
Copying blob b45d31ee2d7f skipped: already exists
Copying blob e64c3c57ffe7 done   |
Copying blob 7665a4a59238 done   |
Copying blob 9a345be9cdfe done   |
Copying config ba2b418f42 done   |
Writing manifest to image destination
ba2b418f427c0636d654de8757e830c80168e76482bcc46bb2138e569d6c91d4
[root@localhost ~]# podman pull quay.io/prometheus/prometheus:v2.33.4
Trying to pull quay.io/prometheus/prometheus:v2.33.4...
Getting image source signatures
Copying blob 604ad6adddc4 done   |
Copying blob 009932687766 done   |
Copying blob 1ad6d9643fdd done   |
Copying blob ff9264fbb6f4 done   |
Copying blob e6f7fea04459 done   |
Copying blob 63fc05a36a59 done   |
Copying blob 54b552d4bfbc done   |
Copying blob a23b2328402c done   |
Copying blob 9ec38b0764ed done   |
Copying blob cf8aa72409ac done   |
Copying blob 7104c0fa6750 done   |
Copying blob b782297611dd done   |
Copying config 514e6a882f done   |
Writing manifest to image destination
514e6a882f6e74806a5856468489eeff8d7106095557578da96935e4d0ba4d9d
[root@localhost ~]# podman pull quay.io/ceph/ceph:v16
Trying to pull quay.io/ceph/ceph:v16...
Getting image source signatures
Copying blob 5f3bf99f2b6d done   |
Copying blob 6ac36e7c57f2 done   |
Copying config 3c4eff6082 done   |
Writing manifest to image destination
3c4eff6082ae7530e7eda038765ce400beb1bc1b8df67dffb45910eb45b06b2c# 配置主机脚本
[root@localhost ~]# cat > /usr/local/bin/sethost <<'EOF'
#/bin/bash
hostnamectl set-hostname ceph$1.yuxb.cloud
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.108.1$1/24 ipv4.gateway 192.168.108.2 ipv4.dns 192.168.108.2
init 0
EOF[root@localhost ~]# chmod +x /usr/local/bin/sethost
准备集群节点

使用完全克隆方式,克隆出其他虚拟机,并配置主机名和IP地址。

Ceph 集群初始化
[root@ceph1 ~]# cephadm bootstrap --mon-ip 192.168.108.11 --allow-fqdn-hostname --initial-dashboard-user admin --initial-dashboard-password 123 --dashboard-password-noupdate
Dashboard 登录信息
Ceph Dashboard is now available at:URL: https://ceph1.yuxb.cloud:8443/User: adminPassword: 123
客户端访问方法
Enabling client.admin keyring and conf on hosts with "admin" label
Enabling autotune for osd_memory_target
You can access the Ceph CLI as following in case of multi-cluster or non-default config:sudo /usr/sbin/cephadm shell --fsid b40700ee-9c26-11f0-8c1f-000c29463e75 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyringOr, if you are only running a single cluster on this host:sudo /usr/sbin/cephadm shell
访问 dashboard

https://192.168.108.11:8443/或https://ceph1.yuxb.cloud:8443/

在这里插入图片描述
在这里插入图片描述

添加节点

添加节点过程

  1. Ceph采用共享秘钥进行身份验证, 使用命令“ceph cephadm get-pub-key” 获取到主机接入集群时所需的ssh 公钥。
  2. 获取到公钥后, 使用该公钥实现对节点的免密ssh管理。
  3. 使用命令“ceph orch host add” 添加主机。
# 在ceph1上安装ceph客户端工具 ceph-common
[root@ceph1 ~]# dnf install -y ceph-common# 获取集群公钥
[root@ceph1 ~]# ceph cephadm get-pub-key > ~/ceph.pub# 推送公钥到其他节点
[root@ceph1 ~]# ssh-copy-id -f -i ~/ceph.pub root@ceph2.yuxb.cloud
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/ceph.pub"
The authenticity of host 'ceph2.yuxb.cloud (192.168.108.12)' can't be established.
ECDSA key fingerprint is SHA256:FPYe2LYas2LxQYQs/Uy7j6s8oD02rVjtJYf/BS/95Go.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
root@ceph2.yuxb.cloud's password:Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@ceph2.yuxb.cloud'"
and check to make sure that only the key(s) you wanted were added.[root@ceph1 ~]# ssh-copy-id -f -i ~/ceph.pub root@ceph3.yuxb.cloud
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/ceph.pub"
The authenticity of host 'ceph3.yuxb.cloud (192.168.108.13)' can't be established.
ECDSA key fingerprint is SHA256:FPYe2LYas2LxQYQs/Uy7j6s8oD02rVjtJYf/BS/95Go.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
root@ceph3.yuxb.cloud's password:Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@ceph3.yuxb.cloud'"
and check to make sure that only the key(s) you wanted were added.# 添加节点
[root@ceph1 ~]# ceph orch host add ceph2.yuxb.cloud
Added host 'ceph2.yuxb.cloud' with addr '192.168.108.12'
[root@ceph1 ~]# ceph orch host add ceph3.yuxb.cloud
Added host 'ceph3.yuxb.cloud' with addr '192.168.108.13'[root@ceph1 ~]# ceph orch host ls
HOST              ADDR            LABELS  STATUS
ceph1.yuxb.cloud  192.168.108.11  _admin
ceph2.yuxb.cloud  192.168.108.12
ceph3.yuxb.cloud  192.168.108.13
3 hosts in cluster[root@ceph1 ~]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT
alertmanager   ?:9093,9094      1/1  8s ago     94m  count:1
crash                           3/3  9s ago     94m  *
grafana        ?:3000           1/1  8s ago     94m  count:1
mgr                             2/2  9s ago     94m  count:2
mon                             3/5  9s ago     94m  count:5
node-exporter  ?:9100           3/3  9s ago     94m  *
prometheus     ?:9095           1/1  8s ago     94m  count:1
部署 mon 和 mgr
# 禁用 mon 和 mgr 服务的自动扩展功能
[root@ceph1 ~]# ceph orch apply mon --unmanaged=true
Scheduled mon update...
[root@ceph1 ~]# ceph orch apply mgr --unmanaged=true
Scheduled mgr update...
[root@ceph1 ~]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT
alertmanager   ?:9093,9094      1/1  7s ago     95m  count:1
crash                           3/3  8s ago     95m  *
grafana        ?:3000           1/1  7s ago     95m  count:1
mgr                             2/2  8s ago     4s   <unmanaged>
mon                             3/5  8s ago     10s  <unmanaged>
node-exporter  ?:9100           3/3  8s ago     95m  *
prometheus     ?:9095           1/1  7s ago     95m  count:1# 配置主机标签,ceph2 和 ceph3 添加标签“ _admin”
[root@ceph1 ~]# ceph orch host label add ceph2.yuxb.cloud _admin
Added label _admin to host ceph2.yuxb.cloud
[root@ceph1 ~]# ceph orch host label add ceph3.yuxb.cloud _admin
Added label _admin to host ceph3.yuxb.cloud
[root@ceph1 ~]# ceph orch host ls
HOST              ADDR            LABELS  STATUS
ceph1.yuxb.cloud  192.168.108.11  _admin
ceph2.yuxb.cloud  192.168.108.12  _admin
ceph3.yuxb.cloud  192.168.108.13  _admin
3 hosts in cluster# 将 mon 和 mgr 组件部署到具有_admin标签的节点上
[root@ceph1 ~]# ceph orch apply mon --placement="label:_admin"
Scheduled mon update...
[root@ceph1 ~]# ceph orch apply mgr --placement="label:_admin"
Scheduled mgr update...
[root@ceph1 ~]# ceph orch ls | egrep 'mon|mgr'
mgr                             3/3  85s ago    4s   label:_admin
mon                             3/3  85s ago    9s   label:_admin[root@ceph1 ~]# ceph orch ps | egrep 'mon|mgr'

在这里插入图片描述

部署 OSD
# 将所有主机上闲置的硬盘添加为 OSD
[root@ceph1 ~]# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...
验证
查看集群中部署的服务
[root@ceph1 ~]# ceph orch ls
NAME                       PORTS        RUNNING  REFRESHED  AGE  PLACEMENT
alertmanager               ?:9093,9094      1/1  28s ago    97m  count:1
crash                                       3/3  2m ago     97m  *
grafana                    ?:3000           1/1  28s ago    97m  count:1
mgr                                         3/3  2m ago     81s  label:_admin
mon                                         3/3  2m ago     85s  label:_admin
node-exporter              ?:9100           3/3  2m ago     97m  *
osd.all-available-devices                     0  -          30s  *
prometheus                 ?:9095           1/1  28s ago    97m  count:1
查看集群状态
[root@ceph1 ~]# ceph -scluster:id:     b40700ee-9c26-11f0-8c1f-000c29463e75health: HEALTH_OKservices:mon: 3 daemons, quorum ceph1.yuxb.cloud,ceph2,ceph3 (age 3m)mgr: ceph1.yuxb.cloud.znbwet(active, since 97m), standbys: ceph2.azsvel, ceph3.zfnffbosd: 9 osds: 9 up (since 10s), 9 in (since 33s)data:pools:   1 pools, 1 pgsobjects: 0 objects, 0 Busage:   2.6 GiB used, 177 GiB / 180 GiB availpgs:     1 active+clean
查看集群 osd 结构
[root@ceph1 ~]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
-1         0.17537  root default
-5         0.05846      host ceph10    hdd  0.01949          osd.0       up   1.00000  1.000003    hdd  0.01949          osd.3       up   1.00000  1.000006    hdd  0.01949          osd.6       up   1.00000  1.00000
-7         0.05846      host ceph21    hdd  0.01949          osd.1       up   1.00000  1.000004    hdd  0.01949          osd.4       up   1.00000  1.000008    hdd  0.01949          osd.8       up   1.00000  1.00000
-3         0.05846      host ceph32    hdd  0.01949          osd.2       up   1.00000  1.000005    hdd  0.01949          osd.5       up   1.00000  1.000007    hdd  0.01949          osd.7       up   1.00000  1.00000
查看集群组件

在这里插入图片描述

集群中运行的主要组件:

  • mgr,ceph 管理程序
  • monitor,ceph 监视器
  • osd,ceph 对象存储进程
  • rgw,ceph 对象存储网关

其他组件:

  • crash,崩溃数据收集模块
  • prometheus,监控组件
  • grafana,监控数据展示dashboard
  • alertmanager,prometheus告警组件
  • node_exporter,prometheus节点数据收集组件

关闭所有ceph存储节点,并打快照。

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 ~]# ceph orch ls mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              3/3  2m ago     23m  label:_admin# 禁用 mon 服务自动扩展
# 切换为 “非托管模式”
[root@ceph1 ~]# ceph orch apply mon --unmanaged=true
Scheduled mon update...
[root@ceph1 ~]# ceph orch ls mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              3/5  3m ago     2s   <unmanaged>
#非托管模式下,Orchestrator 不再自动维护 Mon 实例(如启停、扩容),需手动管理。
#此时状态变为 3/5(3 个运行,期望 5 个,但因非托管未自动创建),部署位置标记为 <unmanaged>。# 启用 mon 服务自动扩展
# 恢复 “托管模式” 
[root@ceph1 ~]# ceph orch apply mon --unmanaged=false
Scheduled mon update...
[root@ceph1 ~]# ceph orch ls mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              3/5  3m ago     2s   count:5
#ceph orch apply mon --unmanaged=false:恢复 Orchestrator 托管,但误设为 “期望 5 个实例”(3/5)。# 通过标签部署 mon 服务
# 修正部署位置
[root@ceph1 ~]# ceph orch apply mon --placement="label:_admin"
Scheduled mon update...
[root@ceph1 ~]# ceph orch ls mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              3/3  4m ago     1s   label:_admin
#ceph orch apply mon --placement="label:_admin":指定 Mon 仅部署在 _admin 标签节点(与初始一致),最终恢复 3/3 正常状态。
删除服务
# 禁用服务自动扩展
[root@ceph1 ~]# ceph orch apply crash --unmanaged=true
Scheduled crash update...
[root@ceph1 ~]# ceph orch ls crash
NAME   PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
crash             3/3  6m ago     16s  <unmanaged># 查看服务中实例
[root@ceph1 ~]# ceph orch ps | grep crash
crash.ceph1                  ceph1.yuxb.cloud               running (7m)     6m ago   2h    6639k        -  16.2.15  3c4eff6082ae  efa610c6b136
crash.ceph2                  ceph2.yuxb.cloud               running (7m)     6m ago  31m    6639k        -  16.2.15  3c4eff6082ae  00239c22c3e1
crash.ceph3                  ceph3.yuxb.cloud               running (7m)     6m ago  30m    6643k        -  16.2.15  3c4eff6082ae  d29ac68f187b
#查看运行状态:ceph orch ps | grep crash 显示 3 个节点(ceph1/2/3)的 Crash 实例均正常运行。# 删除特定实例
[root@ceph1 ~]# ceph orch daemon rm crash.ceph1
Removed crash.ceph1 from host 'ceph1.yuxb.cloud'
[root@ceph1 ~]# ceph orch ps | grep crash
crash.ceph2                  ceph2.yuxb.cloud               running (7m)     7m ago  31m    6639k        -  16.2.15  3c4eff6082ae  00239c22c3e1
crash.ceph3                  ceph3.yuxb.cloud               running (7m)     7m ago  31m    6643k        -  16.2.15  3c4eff6082ae  d29ac68f187b
#删除单个节点的 Crash 实例:ceph orch daemon rm crash.ceph1
#移除 ceph1 节点上的 Crash 实例,后续 ps 仅显示 ceph2/3 的实例(2/3 运行)。# 删除服务
[root@ceph1 ~]# ceph orch rm crash
Removed service crash
[root@ceph1 ~]# ceph orch ls crash
NAME   PORTS  RUNNING  REFRESHED   AGE   PLACEMENT
crash             1/3  <deleting>  100s  <unmanaged>
[root@ceph1 ~]# ceph orch ls crash
No services reported
#彻底删除 Crash 服务:ceph orch rm crash
#从集群中移除整个 Crash 服务,最终 ceph orch ls crash 显示 “No services reported”(服务已删除)。
部署服务

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

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

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

    例如:ceph orch apply crashceph orch apply mon --placement="label:_admin"

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

    语法:ceph orch daemon add <daemon_type> <placement>

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

删除 OSD

OSD 是 Ceph 存储的 “存储单元”,负责存储数据、处理数据复制与恢复

确定 OSD 和设备关系
[root@ceph1 ~]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
-1         0.17537  root default
-5         0.05846      host ceph10    hdd  0.01949          osd.0       up   1.00000  1.000003    hdd  0.01949          osd.3       up   1.00000  1.000006    hdd  0.01949          osd.6       up   1.00000  1.00000
-7         0.05846      host ceph21    hdd  0.01949          osd.1       up   1.00000  1.000004    hdd  0.01949          osd.4       up   1.00000  1.000008    hdd  0.01949          osd.8       up   1.00000  1.00000
-3         0.05846      host ceph32    hdd  0.01949          osd.2       up   1.00000  1.000005    hdd  0.01949          osd.5       up   1.00000  1.000007    hdd  0.01949          osd.7       up   1.00000  1.00000# 获取集群id
[root@ceph1 ~]# ceph -s | grep idid:     b40700ee-9c26-11f0-8c1f-000c29463e75# 登录到ceph1上确认osd.0使用的块设备
[root@ceph1 ~]# ls -l /var/lib/ceph/b40700ee-9c26-11f0-8c1f-000c29463e75/osd.0/block
lrwxrwxrwx 1 ceph ceph 93 Sep 28 14:48 /var/lib/ceph/b40700ee-9c26-11f0-8c1f-000c29463e75/osd.0/block -> /dev/ceph-85be568d-487f-4cd3-8a11-062ea51a75b3/osd-block-c32d161a-4622-4c1e-9b38-8d9bf984f91c
#进入 OSD 数据目录(/var/lib/ceph/<集群ID>/osd.*),通过 block 软链接获取设备 ID(LVM 卷的唯一标识);# 9b38-8d9bf984f91c是块设备名称最后一串字符
[root@ceph1 ~]# lsblk | grep -B1 8d9bf984f91c
sdb                                                                                                     8:16   0    20G  0 disk
└─ceph--85be568d--487f--4cd3--8a11--062ea51a75b3-osd--block--c32d161a--4622--4c1e--9b38--8d9bf984f91c 253:4    0    20G  0 lvm
#用 lsblk 匹配设备 ID,找到对应的物理磁盘(如 /dev/sdb)。# 确认osd.0对应sdb# 脚本实现
[root@ceph1 ~]# cat /usr/local/bin/show-osd-device
#!/bin/bash
# author yuxb
# date 2025-09-28
# 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 ~]# show-osd-device
osd.0 : /dev/sdb
osd.3 : /dev/sdc
osd.6 : /dev/sdd
使用编排删除

删除 osd.0,并清理其对应的 /dev/sdb 设备,以便重新利用

# 禁用 osd 服务自动扩展
[root@ceph1 ~]# ceph orch apply osd --all-available-devices --unmanaged=true
Scheduled osd.all-available-devices update...
[root@ceph1 ~]# ceph orch ls osd
NAME                       PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
osd.all-available-devices               9  2m ago     10s  <unmanaged>
#将 OSD 服务设为非托管:ceph orch apply osd --all-available-devices --unmanaged=true
#避免 Orchestrator 在删除 OSD 时自动重建,确保操作可控。# 删除 osd.0
[root@ceph1 ~]# ceph orch osd rm 0
Scheduled OSD(s) for removal
#标记 OSD 为 “待删除” 并清理数据:ceph orch osd rm 0
#触发 OSD 数据迁移(将 osd.0 上的数据复制到其他 OSD),完成后标记为待删除。# 删除device上数据
[root@ceph1 ~]# ceph orch device zap ceph1.yuxb.cloud /dev/sdb --force
zap successful for /dev/sdb on ceph1.yuxb.cloud
#擦除设备数据:ceph orch device zap ceph1.yuxb.cloud /dev/sdb --force
#“Zap”(擦除)/dev/sdb 上的所有分区、文件系统和 Ceph 元数据,使其恢复为 “可用状态”(后续 ceph orch device ls 显示 /dev/sdb 的 AVAILABLE 为 Yes)。# [root@ceph1 ~]# ceph orch device ls
HOST              PATH      TYPE  DEVICE ID                               SIZE  AVAILABLE  REFRESHED  REJECT REASONS
ceph1.yuxb.cloud  /dev/sdb  hdd   VMware_Virtual_I_00000000000000000001  20.0G  Yes        4s ago
ceph1.yuxb.cloud  /dev/sdc  hdd   VMware_Virtual_I_01000000000000000001  20.0G             4s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph1.yuxb.cloud  /dev/sdd  hdd   VMware_Virtual_I_11000000000000000001  20.0G             4s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph1.yuxb.cloud  /dev/sr0  hdd   VMware_IDE_CDR10_10000000000000000001  12.8G             4s ago     Has a FileSystem
ceph2.yuxb.cloud  /dev/sdb  hdd   VMware_Virtual_I_00000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph2.yuxb.cloud  /dev/sdc  hdd   VMware_Virtual_I_01000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph2.yuxb.cloud  /dev/sdd  hdd   VMware_Virtual_I_11000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph2.yuxb.cloud  /dev/sr0  hdd   VMware_IDE_CDR10_10000000000000000001  12.8G             22m ago    Has a FileSystem
ceph3.yuxb.cloud  /dev/sda  hdd   VMware_Virtual_I_00000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph3.yuxb.cloud  /dev/sdb  hdd   VMware_Virtual_I_01000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph3.yuxb.cloud  /dev/sdd  hdd   VMware_Virtual_I_11000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph3.yuxb.cloud  /dev/sr0  hdd   VMware_IDE_CDR10_10000000000000000001  12.8G             22m ago    Has a FileSystem
[root@ceph1 ~]# ceph orch device ls | grep ceph1.*sdb
ceph1.yuxb.cloud  /dev/sdb  hdd   VMware_Virtual_I_00000000000000000001  20.0G  Yes        35s ago
确认结果
[root@ceph1 ~]# ceph orch device ls
HOST              PATH      TYPE  DEVICE ID                               SIZE  AVAILABLE  REFRESHED  REJECT REASONS
ceph1.yuxb.cloud  /dev/sdb  hdd   VMware_Virtual_I_00000000000000000001  20.0G  Yes        4s ago
ceph1.yuxb.cloud  /dev/sdc  hdd   VMware_Virtual_I_01000000000000000001  20.0G             4s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph1.yuxb.cloud  /dev/sdd  hdd   VMware_Virtual_I_11000000000000000001  20.0G             4s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph1.yuxb.cloud  /dev/sr0  hdd   VMware_IDE_CDR10_10000000000000000001  12.8G             4s ago     Has a FileSystem
ceph2.yuxb.cloud  /dev/sdb  hdd   VMware_Virtual_I_00000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph2.yuxb.cloud  /dev/sdc  hdd   VMware_Virtual_I_01000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph2.yuxb.cloud  /dev/sdd  hdd   VMware_Virtual_I_11000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph2.yuxb.cloud  /dev/sr0  hdd   VMware_IDE_CDR10_10000000000000000001  12.8G             22m ago    Has a FileSystem
ceph3.yuxb.cloud  /dev/sda  hdd   VMware_Virtual_I_00000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph3.yuxb.cloud  /dev/sdb  hdd   VMware_Virtual_I_01000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph3.yuxb.cloud  /dev/sdd  hdd   VMware_Virtual_I_11000000000000000001  20.0G             22m ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph3.yuxb.cloud  /dev/sr0  hdd   VMware_IDE_CDR10_10000000000000000001  12.8G             22m ago    Has a FileSystem
[root@ceph1 ~]# ceph orch device ls | grep ceph1.*sdb
ceph1.yuxb.cloud  /dev/sdb  hdd   VMware_Virtual_I_00000000000000000001  20.0G  Yes        35s ago[root@ceph1 ~]# lsblk
NAME                                                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                                                    8:0    0   200G  0 disk
├─sda1                                                 8:1    0     1G  0 part /boot
└─sda2                                                 8:2    0   199G  0 part├─cs-root                                          253:0    0    70G  0 lvm  /├─cs-swap                                          253:1    0   3.9G  0 lvm  [SWAP]└─cs-home                                          253:3    0 125.1G  0 lvm  /home
sdb                                                    8:16   0    20G  0 disk
sdc                                                    8:32   0    20G  0 disk
└─ceph--d717ffa0--1ce6--4e2a--9814--298f396028fb-osd--block--e7b82ab2--37f9--4e18--beb0--6042ada9d58e253:2    0    20G  0 lvm
sdd                                                    8:48   0    20G  0 disk
└─ceph--f406a598--8268--4c04--b78b--908e6e09ef6c-osd--block--b6ebecf3--dae9--489f--8caa--86966d2e6ba9253:5    0    20G  0 lvm
sr0                                                   11:0    1  12.8G  0 rom
[root@ceph1 ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb    8:16   0  20G  0 disk# 添加回来
[root@ceph1 ~]# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...
[root@ceph1 ~]# ceph orch ls osd
NAME                       PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
osd.all-available-devices               8  4m ago     7s   *
#恢复 OSD 托管模式:ceph orch apply osd --all-available-devices
#Orchestrator 自动扫描集群中 “可用” 的设备(如刚擦除的 /dev/sdb),重新创建 OSD 实例。
手动删除过程
# 停止 ceph1 中的 osd
[root@ceph1 ~]# ceph orch daemon stop osd.0
Scheduled to stop osd.0 on host 'ceph1.yuxb.cloud'[root@ceph1 ~]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
-1         0.17537  root default
-5         0.05846      host ceph10    hdd  0.01949          osd.0     down   1.00000  1.000003    hdd  0.01949          osd.3       up   1.00000  1.000006    hdd  0.01949          osd.6       up   1.00000  1.00000
-7         0.05846      host ceph21    hdd  0.01949          osd.1       up   1.00000  1.000004    hdd  0.01949          osd.4       up   1.00000  1.000008    hdd  0.01949          osd.8       up   1.00000  1.00000
-3         0.05846      host ceph32    hdd  0.01949          osd.2       up   1.00000  1.000005    hdd  0.01949          osd.5       up   1.00000  1.000007    hdd  0.01949          osd.7       up   1.00000  1.00000# 待 osd 停止后,删除 osd 进程
[root@ceph1 ~]# ceph orch daemon rm osd.0 --force
Removed osd.0 from host 'ceph1.yuxb.cloud'
[root@ceph1 ~]# ps aux|grep osd.0
root       22375  0.0  0.0  12216  1176 pts/0    S+   15:25   0:00 grep --color=auto osd.0# 从 crush map 中剔除 osd 
[root@ceph1 ~]# ceph osd out 0
marked out osd.0.# 从 crush map 中删除 osd
[root@ceph1 ~]# ceph osd crush rm osd.0
removed item id 0 name 'osd.0' from crush map# 执行下面的命令将会自动标记为out,并且从crush map中删除,最后删除osd相关文件。
[root@ceph1 ~]# ceph osd rm 0
removed osd.0# 删除device上数据
[root@ceph1 ~]# ceph orch device zap ceph1.yuxb.cloud /dev/sdb --force
zap successful for /dev/sdb on ceph1.yuxb.cloud# 确认结果
[root@ceph1 ~]# ceph orch device ls|grep 'ceph1.*sdb'
ceph1.yuxb.cloud  /dev/sdb  hdd   VMware_Virtual_I_00000000000000000001  20.0G  Yes        6s ago# 添加回来
[root@ceph1 ~]# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...
删除主机

从集群中删除主机流程:

  1. 禁用集群所有服务自动扩展
  2. 查看待删除主机上当前运行的服务
  3. 停止待删除主机上的所有服务
  4. 删除主机上的所有服务
  5. 删除osd在CRUSH中的映射
  6. 擦除osd盘中的数据
  7. 从集群中删除主机

示例:删除 ceph2

首先,禁用集群中所有ceph服务自动扩展,进制自动部署osd。

[root@ceph1 ~]# for service in $(ceph orch ls |grep -v -e NAME -e osd| awk '{print $1}');do ceph orch apply $service --unmanaged=true;done
Scheduled alertmanager update...
Scheduled grafana update...
Scheduled mgr update...
Scheduled mon update...
Scheduled node-exporter update...
Scheduled prometheus update...
[root@ceph1 ~]# ceph orch ls
NAME                       PORTS        RUNNING  REFRESHED  AGE  PLACEMENT
alertmanager               ?:9093,9094      1/1  9m ago     5s   <unmanaged>
grafana                    ?:3000           1/1  9m ago     4s   <unmanaged>
mgr                                         3/2  9m ago     4s   <unmanaged>
mon                                         3/5  9m ago     3s   <unmanaged>
node-exporter              ?:9100           3/3  9m ago     2s   <unmanaged>
osd.all-available-devices                     9  9m ago     9m   *
prometheus                 ?:9095           1/1  9m ago     2s   <unmanaged>[root@ceph1 ~]# ceph orch apply osd --all-available-devices --unmanaged=true
Scheduled osd.all-available-devices update...
[root@ceph1 ~]# ceph orch ls
NAME                       PORTS        RUNNING  REFRESHED  AGE  PLACEMENT
alertmanager               ?:9093,9094      1/1  0s ago     27s  <unmanaged>
grafana                    ?:3000           1/1  0s ago     26s  <unmanaged>
mgr                                         3/2  9m ago     26s  <unmanaged>
mon                                         3/5  9m ago     25s  <unmanaged>
node-exporter              ?:9100           3/3  9m ago     24s  <unmanaged>
osd.all-available-devices                     9  9m ago     2s   <unmanaged>
prometheus                 ?:9095           1/1  0s ago     24s  <unmanaged>

其次,删除主机上运行的服务。

[root@ceph1 ~]# ceph orch ps |grep ceph2 |awk '{print $1}'
mgr.ceph2.azsvel
mon.ceph2
node-exporter.ceph2
osd.1
osd.4
osd.8# 删除相应 daemon
[root@ceph1 ~]# for daemon in $(ceph orch ps |grep ceph2 |awk '{print $1}');do ceph orch daemon rm $daemon --force;done
Error EINVAL: cephadm exited with an error code: 1, stderr:ERROR: Daemon not found: mgr.ceph2.azsvel. See `cephadm ls`
2025-09-28T15:40:30.847+0800 7f986dd9b700  0 --2- 192.168.108.11:0/1935751956 >> [v2:192.168.108.13:3300/0,v1:192.168.108.13:6789/0] conn(0x7f98700699d0 0x7f9858069d70 unknown :-1 s=AUTH_CONNECTING pgs=0 cs=0 l=1 rev1=1 rx=0 tx=0).send_auth_request get_initial_auth_request returned -2Removed mon.ceph2 from host 'ceph2.yuxb.cloud'
Removed node-exporter.ceph2 from host 'ceph2.yuxb.cloud'
Removed osd.1 from host 'ceph2.yuxb.cloud'
Removed osd.4 from host 'ceph2.yuxb.cloud'
Removed osd.8 from host 'ceph2.yuxb.cloud'# 手动清理crush信息
[root@ceph1 ~]# ceph osd crush rm osd.1
removed item id 1 name 'osd.1' from crush map
[root@ceph1 ~]# ceph osd crush rm osd.4
removed item id 4 name 'osd.4' from crush map
[root@ceph1 ~]# ceph osd crush rm osd.8
removed item id 8 name 'osd.8' from crush map
[root@ceph1 ~]# ceph osd rm 1 4 8
removed osd.1, osd.4, osd.8# 清理磁盘数据
[root@ceph1 ~]# ceph orch device zap ceph2.yuxb.cloud /dev/sdb --force
zap successful for /dev/sdb on ceph2.yuxb.cloud
[root@ceph1 ~]# ceph orch device zap ceph2.yuxb.cloud /dev/sdc --force
zap successful for /dev/sdc on ceph2.yuxb.cloud
[root@ceph1 ~]# ceph orch device zap ceph2.yuxb.cloud /dev/sdd --force
zap successful for /dev/sdd on ceph2.yuxb.cloud

然后,删除主机。

[root@ceph1 ~]# ceph orch host rm ceph2
Removed  host 'ceph2'[root@ceph1 ~]# ceph orch host ls
HOST              ADDR            LABELS  STATUS
ceph1.yuxb.cloud  192.168.108.11  _admin
ceph3.yuxb.cloud  192.168.108.13  _admin
2 hosts in cluster

最后,删除ceph2中相应ceph遗留文件。

[root@ceph2 ~]# rm -rf /var/lib/ceph
[root@ceph2 ~]# rm -rf /etc/ceph /etc/systemd/system/ceph*
[root@ceph2 ~]# rm -rf /var/log/ceph

实验完成后,恢复环境。

Ceph 分布式存储 集群配置

管理集群配置

Ceph 集群配置概述

Ceph 配置选项具有唯一名称,该名称由下划线连接的小写字符组成。有些配置选项会包含短划线(中横杠)或空格字符。推荐做法:使用下划线。

Ceph 守护进程会从以下某个来源访问其配置:

  • 编译中的默认值
  • 集中配置数据库
  • 存储在本地主机上的配置文件
  • 环境变量
  • 命令行参数
  • 运行时覆盖

当存在多个设置源时,配置生效原则:

  • 较新设置将覆盖较早设置源中的设置。
  • 配置文件会在启动时配置守护进程。
  • 配置文件设置会覆盖存储在中央数据库中的设置。
  • 监控器 (MON) 节点管理集中配置数据库。

生效过程:

  1. 启动时,Ceph 守护进程解析命令行选项、环境变量和本地集群配置文件提供的配置选项。
  2. 然后,守护进程会联系 MON 集群来检索存储在集中配置数据库中的配置选项。

注意:Ceph 存储优先使用集中配置数据库中配置,弃用 ceph.conf 集群配置文件。

修改集群配置文件

Ceph会去以下目录中查找集群相关配置文件:

  • CEPH_CONF 环境变量中包含的路径
  • -c path/path:由命令行参数“-c”指定的路径
  • ./$cluster.conf
  • ~/.ceph/$cluster.conf
  • /etc/ceph/$cluster.conf,默认位置。

每个 Ceph 节点都会存储一个本地配置文件,默认位置是 /etc/ceph/ceph.conf。cephadm 工具会使用最小选项集创建初始 Ceph 配置文件。

配置文件采用 INI 文件格式,其中内容涵盖 Ceph 守护进程和客户端配置。每个部分都使用 [name] 标头定义的名称,以及一个或多个键值对参数。

配置部分

Ceph 使用所应用的守护进程或客户端的部分,将配置选项分组,确定是存储在配置文件中还是存储在配置数据库中。

  • [global] 部分,存储所有守护进程(包括客户端)共有的一般配置,可为单个守护进程或客户端创建调用部分来覆盖 [global] 参数。
  • [mon] 部分,存储监控器 (MON) 的配置。
  • [osd] 部分,存储 OSD 守护进程的配置。
  • [mgr] 部分,存储管理器 (MGR) 的配置。
  • [mds] 部分,存储元数据服务器 (MDS) 的配置。
  • [client] 部分,存储应用到所有 Ceph 客户客户端的配置。
实例设置

实例设置适用于特定守护进程,名称格式为:[daemon-type.instance-ID]

[mon]
# Settings for all mon daemons[mon.ceph1]
# Settings that apply to the specific MON daemon running on ceph1

同样的名称还适用于 [osd]、[mgr]、[mds] 和 [client] 部分。

  • OSD 守护进程的实例 ID 始终为数字,例如 [osd.0]。
  • 客户端的实例 ID 是有效的用户名,例如 [client.operator3]。
元变量

元变量是由 Ceph 定义的变量。用户可使用它们来简化配置。

  • $cluster,Ceph 存储 5 集群的名称。默认集群名称为 ceph
  • $type,守护进程类型,如监控器的值为 mon。OSD 使用 osd,元数据服务器使用 mds,管理器使用 mgr,客户端软件使用 client
  • id∗∗,守护进程实例ID。对于此变量,∗∗ceph1∗∗上监控器的值为∗∗ceph1∗∗。∗∗osd.1∗∗的∗∗id**,守护进程实例 ID。对于此变量,**ceph1** 上监控器的值为 **ceph1**。**osd.1** 的 **id,守护进程实例ID。对于此变量,ceph1上监控器的值为ceph1osd.1id 值为 1 ,客户端应用的值为用户名。
  • name∗∗,守护进程名称和实例ID。此变量是∗∗name**,守护进程名称和实例 ID。此变量是 **name,守护进程名称和实例ID。此变量是type.$id 的简写。
  • $host,运行守护进程的主机的名称。
使用集群配置数据库

集群配置数据库由 MON 节点集中管理:

  • 在守护进程启动之前,暂时更改设置。
  • 在守护进程运行时,更改大部分设置。
  • 将永久设置存储在数据库中。

Ceph集中配置数据库默认存放在 MON 节点 /var/lib/ceph/fsid/mon.fsid/mon.fsid/mon.host/store.db中。

使用 ceph config 命令,查询和配置集中配置数据库。

ceph config ls
[root@ceph1 ~]# ceph config ls
host
fsid
public_addr
public_addrv
public_bind_addr
cluster_addr
......[root@ceph1 ~]# ceph config ls | wc -l
2077
ceph config help <key>

查看集群数据库中特定配置帮助信息。ceph config ls 命令列出的条目。

[root@ceph1 ~]# ceph config help mgr/zabbix/zabbix_sender
mgr/zabbix/zabbix_sender -(str, advanced)Default: /usr/bin/zabbix_senderCan update at runtime: false[root@ceph1 ~]# ceph config help host
host - local hostname(str, basic)Default:Can update at runtime: falseServices: [common]Tags: [network]if blank, ceph assumes the short hostname (hostname -s)
ceph config dump

显示集群配置数据库设置。

[root@ceph1 ~]#  ceph config dump
WHO     MASK  LEVEL     OPTION                                 VALUE                                                                                      RO
global        basic     container_image                        quay.io/ceph/ceph@sha256:6ba107eb55617994a9e6ed49fb938828c2ed3121aa19ceeffbf8e28608535d94  *mon         advanced  auth_allow_insecure_global_id_reclaim  false                     mon         advanced  public_network                         192.168.108.0/24                                                                           *mgr         advanced  mgr/cephadm/container_init             True                                                                                       *mgr         advanced  mgr/cephadm/migration_current          5                                                                                          *mgr         advanced  mgr/dashboard/ALERTMANAGER_API_HOST    http://ceph1.yuxb.cloud:9093                                                               *mgr         advanced  mgr/dashboard/GRAFANA_API_SSL_VERIFY   false                                                                                      *mgr         advanced  mgr/dashboard/GRAFANA_API_URL          https://ceph1.yuxb.cloud:3000                                                              *mgr         advanced  mgr/dashboard/PROMETHEUS_API_HOST      http://ceph1.yuxb.cloud:9095                                                               *mgr         advanced  mgr/dashboard/ssl_server_port          8443                                                                                       *mgr         advanced  mgr/orchestrator/orchestrator          cephadm                   osd         advanced  osd_memory_target_autotune             true                      
ceph config show type.type.type.id [<key>]

显示特定守护进程当前生效的设置,包含部分默认设置。

[root@ceph1 ~]# ceph config show mon.ceph1.yuxb.cloud
NAME                                   VALUE                                                                                                                                                        SOURCE    OVERRIDES                IGNORES
auth_allow_insecure_global_id_reclaim  false                                                                                                                                                        mon
container_image                        quay.io/ceph/ceph@sha256:6ba107eb55617994a9e6ed49fb938828c2ed3121aa19ceeffbf8e28608535d94                                                                    mon
daemonize                              false                                                                                                                                                        override
keyring                                $mon_data/keyring                                                                                                                                            default
leveldb_block_size                     65536                                                                                                                                                        default
leveldb_cache_size                     536870912                                                                                                                                                    default
leveldb_compression                    false                                                                                                                                                        default
leveldb_log                                                                                                                                                                                         default
leveldb_write_buffer_size              33554432                                                                                                                                                     default
log_stderr_prefix                      debug                                                                                                                                                        default
log_to_file                            false                                                                                                                                                        default
log_to_stderr                          true                                                                                                                                                         default
mon_cluster_log_to_file                false                                                                                                                                                        default
mon_cluster_log_to_stderr              true                                                                                                                                                         default
mon_host                               [v2:192.168.108.11:3300/0,v1:192.168.108.11:6789/0] [v2:192.168.108.12:3300/0,v1:192.168.108.12:6789/0] [v2:192.168.108.13:3300/0,v1:192.168.108.13:6789/0]  file
no_config_file                         false                                                                                                                                                        override
public_network                         192.168.108.0/24                                                                                                                                             file      (mon[192.168.108.0/24])
rbd_default_features                   61                                                                                                                                                           default
setgroup                               ceph                                                                                                                                                         cmdline
setuser                                ceph                                                                                                                                                         cmdline[root@ceph1 ~]# ceph config show mon.ceph1.yuxb.cloud public_network
192.168.108.0/24
ceph config show-with-defaults type.type.type.id

显示特定守护进程当前生效的设置,包含默认设置。

[root@ceph1 ~]# ceph config show-with-defaults mon.ceph1.yuxb.cloud
ceph config get type.type.type.id [<key>]

获得集群数据库中特定配置设置。

[root@ceph1 ~]# ceph config get mon.ceph1.yuxb.cloud
WHO     MASK  LEVEL     OPTION                                 VALUE                                                                                      RO
mon           advanced  auth_allow_insecure_global_id_reclaim  false                     
global        basic     container_image                        quay.io/ceph/ceph@sha256:6ba107eb55617994a9e6ed49fb938828c2ed3121aa19ceeffbf8e28608535d94  *
mon           advanced  public_network                         192.168.108.0/24                                                                           *[root@ceph1 ~]# ceph config get mon.ceph1.yuxb.cloud public_network
192.168.108.0/24
ceph config set type.type.type.id <key> <value>

设置集群数据库中特定配置选项。

# 设置特定类型所有实例
[root@ceph1 ~]# ceph config set mon mon_allow_pool_delete false
[root@ceph1 ~]# ceph config get mon mon_allow_pool_delete
false# 设置特定类型特定实例
[root@ceph1 ~]# ceph config set mon.ceph1.yuxb.cloud mon_allow_pool_delete true
[root@ceph1 ~]# ceph config get mon.ceph1.yuxb.cloud mon_allow_pool_delete
true
ceph config rm type.type.type.id [<key>]

清除集群数据库中特定配置选项。–删除该参数还原默认配置的意思

[root@ceph1 ~]# ceph config rm mon.ceph1.yuxb.cloud mon_allow_pool_delete
[root@ceph1 ~]# ceph config get mon.ceph1.yuxb.cloud mon_allow_pool_delete
false
ceph config log [<num:int>]

显示集群最近配置历史记录,默认显示10条,类似于linux中history命令。

[root@ceph1 ~]# ceph config log
--- 16 --- 2025-09-28T08:28:41.692005+0000 ---
- mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true
--- 15 --- 2025-09-28T08:27:11.803864+0000 ---
+ mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true
--- 14 --- 2025-09-28T08:26:44.671484+0000 ---
+ mon/mon_allow_pool_delete = false
--- 13 --- 2025-09-28T04:52:39.631837+0000 ---
+ mgr/mgr/dashboard/PROMETHEUS_API_HOST = http://ceph1.yuxb.cloud:9095
--- 12 --- 2025-09-28T04:52:39.587800+0000 ---
+ mgr/mgr/dashboard/GRAFANA_API_URL = https://ceph1.yuxb.cloud:3000
--- 11 --- 2025-09-28T04:52:39.532819+0000 ---
+ mgr/mgr/dashboard/ALERTMANAGER_API_HOST = http://ceph1.yuxb.cloud:9093
--- 10 --- 2025-09-28T04:52:08.487766+0000 ---
+ mgr/mgr/dashboard/GRAFANA_API_SSL_VERIFY = false
--- 9 --- 2025-09-28T04:51:58.512082+0000 ---
+ osd/osd_memory_target_autotune = true
--- 8 --- 2025-09-28T04:51:43.326435+0000 ---
+ mgr/mgr/dashboard/ssl_server_port = 8443
--- 7 --- 2025-09-28T04:51:42.278304+0000 ---
+ mgr/mgr/cephadm/container_init = True# 只显示最近更改的两条记录
[root@ceph1 ~]# ceph config log 2
--- 16 --- 2025-09-28T08:28:41.692005+0000 ---
- mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true
--- 15 --- 2025-09-28T08:27:11.803864+0000 ---
+ mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true
ceph config reset [<num:int>]

回滚集群数据中特定配置为 num 指定的历史版本。

[root@ceph1 ~]# ceph config set mon.ceph1.yuxb.cloud mon_allow_pool_delete true
[root@ceph1 ~]# ceph config set mon.ceph1.yuxb.cloud mon_allow_pool_delete false
[root@ceph1 ~]# ceph config get mon.ceph1.yuxb.cloud mon_allow_pool_delete
false[root@ceph1 ~]# ceph config log 2
--- 18 --- 2025-09-28T08:31:01.639684+0000 ---
- mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true
+ mon.ceph1.yuxb.cloud/mon_allow_pool_delete = false
--- 17 --- 2025-09-28T08:30:53.643143+0000 ---
+ mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true# 回滚配置到log 17的版本
[root@ceph1 ~]# ceph config reset 17
[root@ceph1 ~]# ceph config get mon.ceph1.yuxb.cloud mon_allow_pool_delete
true
[root@ceph1 ~]# ceph config log 1
--- 19 --- 2025-09-28T08:32:49.550372+0000 --- reset to 17 ---
- mon.ceph1.yuxb.cloud/mon_allow_pool_delete = false
+ mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true

25-09-28T04:51:42.278304+0000 —

  • mgr/mgr/cephadm/container_init = True

只显示最近更改的两条记录

[root@ceph1 ~]# ceph config log 2
— 16 — 2025-09-28T08:28:41.692005+0000 —

  • mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true
    — 15 — 2025-09-28T08:27:11.803864+0000 —
  • mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true
##### ceph config reset `[<num:int>] `回滚集群数据中特定配置为 `num` 指定的历史版本。```bash
[root@ceph1 ~]# ceph config set mon.ceph1.yuxb.cloud mon_allow_pool_delete true
[root@ceph1 ~]# ceph config set mon.ceph1.yuxb.cloud mon_allow_pool_delete false
[root@ceph1 ~]# ceph config get mon.ceph1.yuxb.cloud mon_allow_pool_delete
false[root@ceph1 ~]# ceph config log 2
--- 18 --- 2025-09-28T08:31:01.639684+0000 ---
- mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true
+ mon.ceph1.yuxb.cloud/mon_allow_pool_delete = false
--- 17 --- 2025-09-28T08:30:53.643143+0000 ---
+ mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true# 回滚配置到log 17的版本
[root@ceph1 ~]# ceph config reset 17
[root@ceph1 ~]# ceph config get mon.ceph1.yuxb.cloud mon_allow_pool_delete
true
[root@ceph1 ~]# ceph config log 1
--- 19 --- 2025-09-28T08:32:49.550372+0000 --- reset to 17 ---
- mon.ceph1.yuxb.cloud/mon_allow_pool_delete = false
+ mon.ceph1.yuxb.cloud/mon_allow_pool_delete = true
http://www.dtcms.com/a/418977.html

相关文章:

  • 先做他个天猫网站产品外观设计图片
  • Accelerate 与 torchrun 分布式训练LLM对比
  • 建设部网站哪里可以报名考监理员优化优化
  • 农家乐怎么做网站上海app开发网站建设
  • 海口建站价格网站建设的物流
  • Leetcode 26. 删除有序数组中的重复项
  • Linux 的文本编辑器vim食用指南
  • 开发实战:从0到1实现Chrome元素截图插件的完整过程
  • ue编辑器视口鼠标消失的问题
  • 【数据结构】多项式的基本运算
  • 在ubuntu下载企业微信
  • 基于Chrome140的FB账号自动化——需求分析环境搭建(一)
  • MCP:cursor、claude code接入chrome-devtools-mcp。
  • 台风“桦加沙”袭击大,盈电智控物联网漏水检测系统为关键场所筑牢“隐形堤坝”!
  • 北京比较好的互联网公司晋中seo排名
  • 高通平台WiFi学习---深入了解 WLAN host crash调试
  • 在 Ubuntu 上可以用几个常用命令查看系统运行情况(内存、CPU、硬盘占用等
  • 子路由器如何设置 路由器LAN-WAN级联的设置方法
  • 【Ubuntu】请问,『kill -9』跟『kill -15』有区别吗?
  • 科网站建设免费查公司的网站
  • SCDN-保护网站安全的有效方案
  • Go 的跨平台编译详解
  • docker命令总结
  • 2、user-service 企业级代码目录结构规范
  • 网站开发的自适应wordpress 万能搜索页
  • Linux设置定时作业执行node.js脚本
  • XXE - 实体注入(xml外部实体注入)
  • MySQL查询性能优化核心知识点总结
  • 自然语言处理(03)
  • 哈尔滨速成网站建设公司装修费用会计分录