适用于 SUSE Enterprise Storage 6

5 操作 Ceph 服务

您可以使用 systemd 或通过 DeepSea 来操作 Ceph 服务。

5.1 使用 systemd 操作与 Ceph Cluster 相关的服务

使用 systemctl 命令操作所有与 Ceph 相关的服务。操作在您当前登录的节点上进行。您需要具备 root 特权才能操作 Ceph 服务。

5.1.1 使用目标启动、停止和重启动服务

为了简化启动、停止和重启动节点上特定类型的所有服务(例如所有 Ceph 服务、所有 MON 或所有 OSD)的操作,Ceph 提供了以下 systemd 单元文件:

cephadm@adm > ls /usr/lib/systemd/system/ceph*.target
ceph.target
ceph-osd.target
ceph-mon.target
ceph-mgr.target
ceph-mds.target
ceph-radosgw.target
ceph-rbd-mirror.target

要启动/停止/重启动节点上的所有 Ceph 服务,请运行以下命令:

root # systemctl start ceph.target
root # systemctl stop ceph.target
root # systemctl restart ceph.target

要启动/停止/重启动节点上的所有 OSD,请运行以下命令:

root # systemctl start ceph-osd.target
root # systemctl stop ceph-osd.target
root # systemctl restart ceph-osd.target

针对其他目标的命令与此类似。

5.1.2 启动、停止和重启动个别服务

可以使用以下参数化 systemd 单元文件操作个别服务:

ceph-osd@.service
ceph-mon@.service
ceph-mds@.service
ceph-mgr@.service
ceph-radosgw@.service
ceph-rbd-mirror@.service

要使用这些命令,首先需要确定要操作的服务的名称。请参见第 5.1.3 节 “识别个别服务”了解有关如何识别服务的更多信息。

要启动/停止/重启动 osd.1 服务,请运行以下命令:

root # systemctl start ceph-osd@1.service
root # systemctl stop ceph-osd@1.service
root # systemctl restart ceph-osd@1.service

针对其他服务类型的命令与此类似。

5.1.3 识别个别服务

您可以通过以下几种方式获得某种服务类型的名称/编号。以下命令提供 ceph* 服务的结果。您可以在 Ceph 集群的任何节点上运行这些命令。

要列出 ceph* 类型的所有(甚至是非活跃)服务,请运行以下命令:

root # systemctl list-units --all --type=service ceph*

如果只想列出非活跃服务,请运行以下命令:

root # systemctl list-units --all --state=inactive --type=service ceph*

您也可以使用 salt 查询多个节点上的服务:

root@master # salt TARGET cmd.shell \
 "systemctl list-units --all --type=service ceph* | sed -e '/^$/,$ d'"

仅查询存储节点:

root@master # salt -I 'roles:storage' cmd.shell \
 'systemctl list-units --all --type=service ceph*'

5.1.4 服务状态

可以查询 systemd 来了解服务的状态。例如:

root # systemctl status ceph-osd@1.service
root # systemctl status ceph-mon@HOSTNAME.service

请将 HOSTNAME 替换为运行守护进程的主机名。

如果您不知道服务的确切名称/编号,请参见第 5.1.3 节 “识别个别服务”

5.2 使用 DeepSea 重启动 Ceph 服务

将更新应用到集群节点后,需要重启动与 Ceph 相关的受影响服务。通常情况下,DeepSea 会自动执行重启动操作。本节介绍如何手动重启动服务。

提示
提示:检查重启动

重启动集群的过程可能需要一段时间。可通过运行以下命令来使用 Salt 事件总线检查事件:

root@master # salt-run state.event pretty=True

另一个用于监视活跃作业的命令为:

root@master # salt-run jobs.active

5.2.1 重启动所有服务

警告
警告:服务中断

如果与 Ceph 相关的服务(特别是 iSCSI 或 NFS Ganesha)配置为单点访问,并且未设置高可用性,重启动这些服务将导致从客户端进行查看时会出现暂时中断现象。

提示
提示:Samba 不受 DeepSea 管理

由于 DeepSea 和 Ceph Dashboard 当前不支持 Samba 部署,您需要手动管理与 Samba 相关的服务。有关细节,请参见第 20 章 “通过 Samba 导出 Ceph 数据

要重启动集群上的所有服务,请运行以下命令:

root@master # salt-run state.orch ceph.restart
  • 如果 DeepSea 版本低于 0.8.4,则元数据服务器、iSCSI 网关、对象网关和 NFS Ganesha 服务将并行重启动。

  • 如果 DeepSea 为 0.8.4 或更高版本,您已配置的所有角色将按以下顺序重启动:Ceph Monitor、Ceph Manager、Ceph OSD、元数据服务器、对象网关、iSCSI 网关、NFS Ganesha。为了保持较短的停机时间并尽早发现潜在问题,请按顺序重启动各节点。例如,一次只重启动一个监视节点。

如果集群处于降级、非健康状况,该命令会等待集群恢复。

5.2.2 重启动特定服务

要重启动集群上的特定服务,请运行以下命令:

root@master # salt-run state.orch ceph.restart.service_name

例如,要重启动所有对象网关,请运行以下命令:

root@master # salt-run state.orch ceph.restart.rgw

您可以使用以下目标:

root@master # salt-run state.orch ceph.restart.mon
root@master # salt-run state.orch ceph.restart.mgr
root@master # salt-run state.orch ceph.restart.osd
root@master # salt-run state.orch ceph.restart.mds
root@master # salt-run state.orch ceph.restart.rgw
root@master # salt-run state.orch ceph.restart.igw
root@master # salt-run state.orch ceph.restart.ganesha

5.3 正常关闭整个 Ceph 集群

在某些情况下,您需要按建议的顺序停止集群中所有与 Ceph 相关的服务,然后才能再次按任意顺序将其启动。例如,发生计划停电的情况时。

要关闭整个 Ceph 集群,请禁用安全措施并运行 ceph.shutdown 运行程序:

root@master # salt-run disengage.safety
root@master # salt-run state.orch ceph.shutdown

要启动整个 Ceph 集群,请运行 ceph.startup 运行程序:

root@master # salt-run state.orch ceph.startup
打印此页