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"
}
使用此命令更改的设置在守护进程重启后会恢复为原始设置
相关推荐
bukeyiwanshui1 小时前
20260529 Ceph 分布式存储 认证和授权管理
ceph
bukeyiwanshui2 小时前
20260528 Ceph 分布式存储 池管理
ceph
一个行走的民2 小时前
CephX 认证机制深度解析
ceph
马立杰4 小时前
Ceph 集群手动部署
ceph·分布式存储
bukeyiwanshui4 小时前
20260528 Ceph 分布式存储 集群配置
分布式·ceph
qq_356408665 小时前
Kubernetes Rook-Ceph 高可用存储部署文档
ceph·容器·kubernetes
潮起鲸落入海5 小时前
ceph集群mon 以及池管理
ceph
一个行走的民5 小时前
Ceph OSD CPU 占用高排查:BlueFS Buffered IO 与 NUMA 亲和性深度分析
ceph
一个行走的民6 小时前
Ceph Monitor 管理职责全景解析
ceph