ceph集群组件管理 ceph orch 和ceph config命令

Ceph 集群组件管理

ceph orch 命令

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

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

host:物理节点

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

Service:逻辑服务

Daemon:进程

禁用服务自动扩展

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

用 ceph 服务自动扩展功能。

bash 复制代码
# 查看 mon 服务
[root@ceph1 ~]# ceph orch ls mon
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
mon 3/3 90s ago 8m label:_admin
# 禁用 mon 服务自动扩展
[root@ceph1 ~]# ceph orch apply mon --unmanaged=true
[root@ceph1 ~]# ceph orch ls mon
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
mon 3/5 118s ago 4s <unmanaged>
# 启用 mon 服务自动扩展
[root@ceph1 ~]# ceph orch apply mon --unmanaged=false
[root@ceph1 ~]# ceph orch ls mon
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
mon 3/5 2m ago 4s count: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 3m ago 15s label:_admin

删除服务

以 crash 服务为例。

bash 复制代码
# 禁用服务自动扩展
[root@ceph1 ~ 17:26:56]# ceph orch apply crash --unmanaged=true
Scheduled crash update...
[root@ceph1 ~ 17:27:25]# ceph orch ls crash
NAME   PORTS  RUNNING  REFRESHED  AGE  PLACEMENT    
crash             3/3  9m ago     12s  <unmanaged>  
# 查看服务中实例
[root@ceph1 ~ 17:27:38]# ceph orch ps | grep crash
crash.ceph1                 ceph1.zhu.cloud               running (71m)    10m ago   2h    6639k        -  16.2.15  3c4eff6082ae  6088c7c8b160  
crash.ceph2                 ceph2.zhu.cloud               running (71m)    10m ago   2h    6639k        -  16.2.15  3c4eff6082ae  1124ac1d0649  
crash.ceph3                 ceph3.zhu.cloud               running (71m)    10m ago   2h    6647k        -  16.2.15  3c4eff6082ae  b473b16d73bd  
# 删除特定实例
[root@ceph1 ~ 17:27:53]# ceph orch daemon rm crash.ceph1
Removed crash.ceph1 from host 'ceph1.zhu.cloud'
[root@ceph1 ~ 17:28:22]# ceph orch ps | grep crash
crash.ceph2                 ceph2.zhu.cloud               running (71m)    21s ago   2h    6639k        -  16.2.15  3c4eff6082ae  1124ac1d0649  
crash.ceph3                 ceph3.zhu.cloud               running (71m)    21s ago   2h    6647k        -  16.2.15  3c4eff6082ae  b473b16d73bd  
# 删除服务
[root@ceph1 ~ 17:28:45]# ceph orch rm crash
Removed service crash
[root@ceph1 ~ 17:28:55]# ceph orch ls crash
No services reported

删除 OSD

确定 OSD 和设备关系
bash 复制代码
[root@ceph1 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.17537 root default
-3 0.05846 host ceph1 #主机
ceph1下的硬盘
0 hdd 0.01949 osd.0 up 1.00000 1.00000 #看不出来
osd.0对应哪块磁盘
3 hdd 0.01949 osd.3 up 1.00000 1.00000
6 hdd 0.01949 osd.6 up 1.00000 1.00000
-5 0.05846 host ceph2
2 hdd 0.01949 osd.2 up 1.00000 1.00000
4 hdd 0.01949 osd.4 up 1.00000 1.00000
7 hdd 0.01949 osd.7 up 1.00000 1.00000
-7 0.05846 host ceph3
1 hdd 0.01949 osd.1 up 1.00000 1.00000
5 hdd 0.01949 osd.5 up 1.00000 1.00000
8 hdd 0.01949 osd.8 up 1.00000 1.00000
# 获取集群id
[root@ceph1 ~]# ceph -s | grep id
id: 2faf683a-7cbf-11f0-b5ba-000c29e0ad0e
# 登录到ceph1上确认osd.0使用的块设备
[root@ceph1 ~]# ls -l /var/lib/ceph/2faf683a-7cbf-11f0-b5ba000c29e0ad0e/osd.0/block
lrwxrwxrwx 1 ceph ceph 93 Aug 19 14:01 /var/lib/ceph/2faf683a-7cbf-11f0-b5ba000c29e0ad0e/osd.0/block -> /dev/ceph-c92942fb-f959-4255-b8e6-751fab70fa79/osdblock-2ed79b2f-d825-4829-b4b0-59879d2ad99c
# 59879d2ad99c是块设备名称最后一串字符
[root@ceph1 ~]# lsblk 
sdb
8:16 0 20G 0 disk
└─ceph--c92942fb--f959--4255--b8e6--751fab70fa79-osd--block--2ed79b2f--d825-
-4829--b4b0--59879d2ad99c 253:4 0 20G 0 lvm
# 确认osd.0对应sdb
# 用下面命令也可以
[root@ceph1 ~]# ceph osd metadata 0 #0是osd编号
[root@ceph1 ~]# ceph osd metadata 0
{
"id": 0,
"arch": "x86_64",
"back_addr": "
[v2:192.168.108.11:6802/914648970,v1:192.168.108.11:6803/914648970]",
"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-2",
"bluestore_bdev_devices": "sdb"  看这里`
"bluestore_bdev_driver": "KernelDevice",
"bluestore_bdev_partition_path": "/dev/dm-2",
"bluestore_bdev_rotational": "1",
"bluestore_bdev_size": "21470642176",
"bluestore_bdev_support_discard": "0",
.....

脚本实现

bash 复制代码
[root@ceph1 ~]# 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 ~]# show-osd-device
osd.0 : /dev/sdb
osd.3 : /dev/sdc
osd.6 : /dev/sdd
编排删除

删除 osd.0

bash 复制代码
# 禁用 osd 服务自动扩展
[root@ceph1 ~]# ceph orch apply osd --all-available-devices --unmanaged=true
[root@ceph1 ~]# ceph orch ls osd
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
osd.all-available-devices 9 7m ago 6s <unmanaged>
# 第一种(先标记out,再删除)
[root@ceph1 ~]# ceph osd out osd.0
[root@ceph1 ~]# ceph orch osd rm 0

# 删除device上数据
# 删除前lsblk看下sdb
[root@ceph1 ~]# ceph orch device zap ceph1.zhu.cloud /dev/sdb --force #看osd0管理的是/dev/sdb还是啥
zap successful for /dev/sdb on ceph1.zhu.cloud
# 确认结果
[root@ceph1 ~]# ceph orch device ls
[root@ceph1 ~]# ceph orch device ls | grep ceph1.*sdb
ceph1.zhu.cloud /dev/sdb hdd 20.0G
Yes 72s ago
[root@ceph1 ~]# lsblk
[root@ceph1 ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk

# 第二种 直接删除加格式化磁盘
[root@ceph1 ~]# ceph osd out osd.3
[root@ceph1 ~]# ceph orch osd rm 3 --force --zap
# 添加回来
[root@ceph1 ~]# ceph orch apply osd --all-available-devices
#RUNNING重新变为9
[root@ceph1 ~]# ceph orch ls osd
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
osd.all-available-devices 9 6m ago 29s *

删除主机

从集群中删除主机流程:

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

删除 ceph2

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

bash 复制代码
[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
[root@ceph1 ~]# ceph orch apply osd --all-available-devices --unmanaged=true

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

bash 复制代码
# 查看ceph2上运行的daemon
[root@ceph1 ~]# ceph orch ps |grep ceph2 |awk '{print $1}'
crash.ceph2
mgr.ceph2.oetbal
mon.ceph2
node-exporter.ceph2
osd.2
osd.4
osd.7
# 删除相应 daemon
[root@ceph1 ~]# for daemon in $(ceph orch ps |grep ceph2 |awk '{print $1}');do
ceph orch daemon rm $daemon --force;done
# 手动清理crush信息
[root@ceph1 ~]# ceph osd crush rm osd.2
[root@ceph1 ~]# ceph osd crush rm osd.4
[root@ceph1 ~]# ceph osd crush rm osd.7
[root@ceph1 ~]# ceph osd crush rm ceph2
[root@ceph1 ~]# ceph osd rm 2 4 7
# 清理磁盘数据
[root@ceph1 ~]# ceph orch device zap ceph2.laogao.cloud /dev/sdb --force
[root@ceph1 ~]# ceph orch device zap ceph2.laogao.cloud /dev/sdc --force
[root@ceph1 ~]# ceph orch device zap ceph2.laogao.cloud /dev/sdd --force

然后,删除主机。

bash 复制代码
[root@ceph1 ~]# ceph orch host rm ceph2
[root@ceph1 ~]# ceph orch host ls #查看现象ceph2被移除
HOST ADDR LABELS STATUS
ceph1.zhu.cloud 192.168.108.11 _admin
ceph3.zhu.cloud 192.168.108.13 _admin
2 hosts in cluster

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

bash 复制代码
[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 节点都会存储一个本地配置文件,默认位置是

/etc/ceph/ceph.conf 。

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

置数据库中。

global 部分,存储所有守护进程(包括客户端)共有的一般配置,可为单个守护进程或客户端创建调用部分来覆盖 global 参数。

mon 部分,存储监控器 (MON) 的配置。

osd 部分,存储 OSD 守护进程的配置。

mgr 部分,存储管理器 (MGR) 的配置。

mds 部分,存储元数据服务器 (MDS) 的配置。

client 部分,存储应用到所有 Ceph 客户客户端的配置。

良好的示例文件参见 /usr/share/doc/ceph/sample.ceph.conf

元变量

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

$cluster,Ceph 存储 5 集群的名称。默认集群名称为 ceph。

$type,守护进程类型,如监控器的值为 mon。OSD 使用 osd,元数据服务器使用 mds,管理器

使用 mgr,客户端软件使用 client。

id,守护进程实例 ID。对于此变量,ceph1 上监控器的值为 ceph1。osd.1 的 id 值为 1 ,客户

端应用的值为用户名。

$name,守护进程名称和实例 ID。此变量是 type.type.type.id 的简写。

$host,运行守护进程的主机的名称。

使用集群配置数据库

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

在守护进程启动之前,暂时更改设置。

在守护进程运行时,更改大部分设置。

将永久设置存储在数据库中。

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

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

ceph config ls

列出集群数据库中所有配置条目。

bash 复制代码
[root@ceph1 ~]# ceph config ls
host
fsid
public_addr
public_addrv
public_bind_addr
cluster_addr
public_network
public_network_interface
cluster_network
cluster_network_interface
......

ceph config help

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

bash 复制代码
[root@ceph1 ~]# ceph config help host
host - local hostname
(str, basic)
Default:
Can update at runtime: false
Services: [common]
Tags: [network]
if blank, ceph assumes the short hostname (hostname -s)
[root@ceph1 ~]# ceph config help fsid
fsid - cluster fsid (uuid)
(uuid, basic)
Default: 00000000-0000-0000-0000-000000000000
Can update at runtime: false
Services: [common]
Tags: [service]

ceph config dump

显示集群配置数据库设置。显示的是当前所有生效的配置项(包括默认值和已被修改的值)

bash 复制代码
[root@ceph1 ~ 17:50:56]# ceph config dump
WHO                      MASK  LEVEL     OPTION                                 VALUE                                                                                                         RO
global                         basic     container_image                        quay.io/ceph/ceph@sha256:6ba107eb55617994a9e6ed                   49fb938828c2ed3121aa19ceeffbf8e28608535d94  *
  mon                          advanced  auth_allow_insecure_global_id_reclaim  false                                                             
  mon                          advanced  public_network                         192.168.108.0/24                                                                                              *
    mon.ceph1.zhu.cloud        advanced  mon_allow_pool_delete                  false                                                             
  mgr                          advanced  mgr/cephadm/container_init             True                                                                                                          *
  mgr                          advanced  mgr/cephadm/migration_current          5                                                                                                             *
  mgr                          advanced  mgr/dashboard/ALERTMANAGER_API_HOST    http://ceph1.zhu.cloud:9093                                                                                   *
  mgr                          advanced  mgr/dashboard/GRAFANA_API_SSL_VERIFY   false                                                                                                         *
  mgr                          advanced  mgr/dashboard/GRAFANA_API_URL          https://ceph1.zhu.cloud:3000                                                                                  *
  mgr                          advanced  mgr/dashboard/PROMETHEUS_API_HOST      http://ceph1.zhu.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 \[\]

仅显示被显式设置过的配置项(即非默认值)

ceph config show-with-defaults type.type.type.id

显示所有配置项 + 当前值(包括默认值还有修改值)

ceph config get type.type.type.id \[\]

获得集群数据库中特定配置设置。精准点查

bash 复制代码
[root@ceph1 ~]# ceph config get mon.ceph1.zhu.cloud
WHO     
MASK  LEVEL     
mon           
OPTION                                 
VALUE             
advanced  auth_allow_insecure_global_id_reclaim  false
global        
basic     
advanced  public_network                         
container_image                        
quay.io/ceph/ceph@sha256:6ba107eb55617994a9e6ed49fb938828c2ed3121aa19ceeffbf8e286
08535d94  *
mon           
RO
192.168.108.0/24   
[root@ceph1 ~]# ceph config get mon.ceph1.zhu.cloud public_network
192.168.108.0/24

ceph config set type.type.type.id

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

bash 复制代码
# 设置特定类型所有实例
[root@ceph1 ~]# ceph config set mon mon_allow_pool_delete false
# 设置特定类型特定实例
[root@ceph1 ~]# ceph config set mon.ceph1.laogao.cloud mon_allow_pool_delete true
[root@ceph1 ~]# ceph config get mon.ceph1.laogao.cloud mon_allow_pool_delete
true

ceph config rm type.type.type.id \[\]

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

bash 复制代码
[root@ceph1 ~]# ceph config rm mon.ceph1.zhu.cloud mon_allow_pool_delete
[root@ceph1 ~]# ceph config get mon.ceph1.zhu.cloud mon_allow_pool_delete
false

ceph config log num:int

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

bash 复制代码
[root@ceph1 ~]# ceph config log--- 16 --- 2025-08-19T08:08:00.450868+0000 ---- mon.ceph1.laogao.cloud/mon_allow_pool_delete = true--- 15 --- 2025-08-19T08:07:01.547157+0000 --
+ mon.ceph1.laogao.cloud/mon_allow_pool_delete = true--- 14 --- 2025-08-19T08:05:20.097053+0000 --
+ mon/mon_allow_pool_delete = false
......
# 只显示最近更改的两条记录
[root@ceph1 ~]# ceph config log 2--- 16 --- 2025-08-19T08:08:00.450868+0000 ---- mon.ceph1.laogao.cloud/mon_allow_pool_delete = true--- 15 --- 2025-08-19T08:07:01.547157+0000 --
+ mon.ceph1.laogao.cloud/mon_allow_pool_delete = true

ceph config reset num:int

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

bash 复制代码
[root@ceph1 ~]# ceph config set mon.ceph1.zhu.cloud mon_allow_pool_delete true 
#产生log 20记录
[root@ceph1 ~]# ceph config set mon.ceph1.zhu.cloud mon_allow_pool_delete 
false   
#产生log 21记录
[root@ceph1 ~]# ceph config get mon.ceph1.zhu.cloud mon_allow_pool_delete
false               
#此刻为false
[root@ceph1 ~]# ceph config log 2--- 21 --- 2025-08-19T08:23:11.722223+0000 ---- mon.ceph1.zhu.cloud/mon_allow_pool_delete = true
+ mon.ceph1.zhu.cloud/mon_allow_pool_delete = false--- 20 --- 2025-08-19T08:23:07.709101+0000 ---- mon.ceph1.zhu.cloud/mon_allow_pool_delete = false
+ mon.ceph1.zhu.cloud/mon_allow_pool_delete = true


[root@ceph1 ~]# ceph config reset 20        
[root@ceph1 ~]# ceph config get mon.ceph1.zhu.cloud mon_allow_pool_delete   
#验证回到log 20的true
true
[root@ceph1 ~]# ceph config log 1--- 22 --- 2025-08-19T08:25:27.045753+0000 --- reset to 20 ---      
#从22回滚到20- mon.ceph1.zhu.cloud/mon_allow_pool_delete = false
+ mon.ceph1.zhu.cloud/mon_allow_pool_delete = true

ceph tell 命令

Ceph支持在守护进程运行时,临时更改大部分配置选项。

bash 复制代码
[root@ceph1 ~]# ceph tell mon.ceph1.zhu.cloud config get mon_allow_pool_delete
{
"mon_allow_pool_delete": "true"
}
[root@ceph1 ~]# ceph tell mon.ceph1.zhu.cloud config set mon_allow_pool_delete 
false
{
"success": "mon_allow_pool_delete = 'false' "
}
# 临时更改的值已生效
[root@ceph1 ~]# ceph tell mon.ceph1.zhu.cloud config get mon_allow_pool_delete
{
"mon_allow_pool_delete": "false"
}
# 集群数据库中值仍然为true
[root@ceph1 ~]# ceph config get mon.ceph1.zhu.cloud mon_allow_pool_delete
true
# 重启守护进程,生效的值恢复为数据库中设置的值
[root@ceph1 ~]# ceph orch daemon restart mon.ceph1.zhu.cloud
Scheduled to restart mon.ceph1.laogao.cloud on host 'ceph1.laogao.cloud'
[root@ceph1 ~]# ceph tell mon.ceph1.zhu.cloud config get mon_allow_pool_delete
{
"mon_allow_pool_delete": "true"
}
使用此命令更改的设置在守护进程重启后会恢复为原始设置
相关推荐
查士丁尼·绵8 天前
centos stream 9离线分层部署cloudstack 4.22高可用集群
ceph·cloudstack
2301_7736436210 天前
ceph镜像
前端·javascript·ceph
2301_7736436211 天前
ceph池
开发语言·ceph·python
2301_7736436211 天前
ceph实践
ceph
2301_7736436214 天前
ceph分布式存储
分布式·ceph
m0_7360348517 天前
ceph分布式存储
分布式·ceph
三十..17 天前
Ceph 三大存储接口深度实践与数据保护指南
运维·ceph
AOwhisky17 天前
Ceph系列第六期:Ceph 文件系统(CephFS)精讲
linux·运维·网络·笔记·ceph
潮起鲸落入海17 天前
Ceph 分布式存储 对象存储管理
ceph