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.014.2 操作服务类型 #
如果您需要操作整个 Ceph 集群中特定类型的服务,请使用以下命令:
ceph orch COMMAND SERVICE_TYPE
   将 COMMAND 替换为 start、stop 或 restart。
  
例如,以下命令会重启动集群中的所有 MON,无论它们实际是在哪个节点上运行:
cephuser@adm > ceph orch restart mon14.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.target14.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.service14.3.4 查询服务状态 #
    可以查询 systemd 来了解服务的状态。例如:
   
# systemctl status ceph-b4b30c6e-9681-11ea-ac39-525400d7702d@osd.0.service14.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
- 打开所有已配置网关的电源。 
- 打开集群客户端的电源或连接集群客户端。