14 Ceph 服务的操作 #
您可以在守护进程、节点或集群级别操作 Ceph 服务。根据您需要的方法,使用 cephadm 或 systemctl
命令。
14.1 操作单个服务 #
如果您需要操作单个服务,请先标识该服务:
cephuser@adm >
ceph orch ps
NAME HOST STATUS REFRESHED [...]
mds.my_cephfs.ses-min1.oterul ses-min1 running (5d) 8m ago
mgr.ses-min1.gpijpm ses-min1 running (5d) 8m ago
mgr.ses-min2.oopvyh ses-min2 running (5d) 8m ago
mon.ses-min1 ses-min1 running (5d) 8m ago
mon.ses-min2 ses-min2 running (5d) 8m ago
mon.ses-min4 ses-min4 running (5d) 7m ago
osd.0 ses-min2 running (61m) 8m ago
osd.1 ses-min3 running (61m) 7m ago
osd.2 ses-min4 running (61m) 7m ago
rgw.myrealm.myzone.ses-min1.kwwazo ses-min1 running (5d) 8m ago
rgw.myrealm.myzone.ses-min2.jngabw ses-min2 error 8m ago
要标识特定节点上的服务,请运行:
ceph orch ps NODE_HOST_NAME
例如:
cephuser@adm >
ceph orch ps ses-min2
NAME HOST STATUS REFRESHED
mgr.ses-min2.oopvyh ses-min2 running (5d) 3m ago
mon.ses-min2 ses-min2 running (5d) 3m ago
osd.0 ses-min2 running (67m) 3m ago
ceph orch ps
命令支持多种输出格式。要更改格式,请追加 --format FORMAT
选项,其中 FORMAT 是 json
、json-pretty
或 yaml
其中之一。例如:
cephuser@adm >
ceph orch ps --format yaml
知道服务名称后,您就可以启动、重启动或停止该服务:
ceph orch daemon COMMAND SERVICE_NAME
例如,要重启动 ID 为 0 的 OSD 服务,请运行:
cephuser@adm >
ceph orch daemon restart osd.0
14.2 操作服务类型 #
如果您需要操作整个 Ceph 集群中特定类型的服务,请使用以下命令:
ceph orch COMMAND SERVICE_TYPE
将 COMMAND 替换为 start
、stop
或 restart
。
例如,以下命令会重启动集群中的所有 MON,无论它们实际是在哪个节点上运行:
cephuser@adm >
ceph orch restart mon
14.3 操作单个节点上的服务 #
通过使用 systemctl
命令,您可以操作单个节点上与 Ceph 有关的 systemd
服务和目标。
14.3.1 标识服务和目标 #
在操作与 Ceph 有关的 systemd
服务和目标之前,您需要标识其单元文件的文件名。服务的文件名具有以下格式:
ceph-FSID@SERVICE_TYPE.ID.service
例如:
ceph-b4b30c6e-9681-11ea-ac39-525400d7702d@mon.doc-ses-min1.service
ceph-b4b30c6e-9681-11ea-ac39-525400d7702d@rgw.myrealm.myzone.doc-ses-min1.kwwazo.service
- FSID
Ceph 集群的唯一 ID。您可以在
ceph fsid
命令的输出中找到该 ID。- SERVICE_TYPE
服务的类型,例如
osd
、mon
或rgw
。- ID
服务的标识字符串。对于 OSD,它是服务的 ID 号。对于其他服务,它可以是节点的主机名,也可以是与服务类型相关的其他字符串。
SERVICE_TYPE.ID 部分与 ceph orch ps
命令输出中的 NAME
列的内容相同。
14.3.2 操作一个节点上所有服务 #
通过使用 Ceph 的 systemd
目标,您可以同时操作某个节点上的所有服务,或者同时操作属于由其 FSID 标识的集群的所有服务。
例如,要停止某个节点上的所有 Ceph 服务,而不考虑服务所属的集群,请运行:
root@minion >
systemctl stop ceph.target
要重启动属于 ID 为 b4b30c6e-9681-11ea-ac39-525400d7702d
的 Ceph 集群的所有服务,请运行:
root@minion >
systemctl restart ceph-b4b30c6e-9681-11ea-ac39-525400d7702d.target
14.3.3 操作一个节点上的单个服务 #
标识特定服务的名称后,请如下所示操作该服务:
systemctl COMMAND SERVICE_NAME
例如,要重启动 ID 为 b4b30c6e-9681-11ea-ac39-525400d7702d
的集群上 ID 为 1 的单个 OSD 服务,请运行:
#
systemctl restart ceph-b4b30c6e-9681-11ea-ac39-525400d7702d@osd.1.service
14.3.4 查询服务状态 #
可以查询 systemd
来了解服务的状态。例如:
#
systemctl status ceph-b4b30c6e-9681-11ea-ac39-525400d7702d@osd.0.service
14.4 关闭并重启动整个 Ceph 集群 #
如果发生计划停电,可能需要关闭并重启动集群。要停止与 Ceph 有关的所有服务然后再重启动而不会出现问题,请按照以下步骤进行操作。
关闭或断开访问集群的任何客户端。
要阻止 CRUSH 自动重新平衡集群,请将集群设置为
noout
:cephuser@adm >
ceph osd set noout停止所有集群节点上的所有 Ceph 服务:
root@master #
ceph-salt stop关闭所有集群节点的电源:
root@master #
salt -G 'ceph-salt:member' cmd.run "shutdown -h"
打开管理节点的电源。
打开 Ceph Monitor 节点的电源。
打开 Ceph OSD 节点的电源。
取消设置之前设置的
noout
标志:root@master #
ceph osd unset noout打开所有已配置网关的电源。
打开集群客户端的电源或连接集群客户端。