您可以使用 systemd
或通过 DeepSea 来操作 Ceph 服务。
systemd
操作与 Ceph Cluster 相关的服务 #
使用 systemctl
命令操作所有与 Ceph 相关的服务。操作在您当前登录的节点上进行。您需要具备 root
特权才能操作 Ceph 服务。
为了简化启动、停止和重启动节点上特定类型的所有服务(例如所有 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.targetroot #
systemctl stop ceph.targetroot #
systemctl restart ceph.target
要启动/停止/重启动节点上的所有 OSD,请运行以下命令:
root #
systemctl start ceph-osd.targetroot #
systemctl stop ceph-osd.targetroot #
systemctl restart ceph-osd.target
针对其他目标的命令与此类似。
可以使用以下参数化 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.serviceroot #
systemctl stop ceph-osd@1.serviceroot #
systemctl restart ceph-osd@1.service
针对其他服务类型的命令与此类似。
您可以通过以下几种方式获得某种服务类型的名称/编号。以下命令提供 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*'
可以查询 systemd
来了解服务的状态。例如:
root #
systemctl status ceph-osd@1.serviceroot #
systemctl status ceph-mon@HOSTNAME.service
请将 HOSTNAME 替换为运行守护进程的主机名。
如果您不知道服务的确切名称/编号,请参见第 5.1.3 节 “识别个别服务”。
将更新应用到集群节点后,需要重启动与 Ceph 相关的受影响服务。通常情况下,DeepSea 会自动执行重启动操作。本节介绍如何手动重启动服务。
重启动集群的过程可能需要一段时间。可通过运行以下命令来使用 Salt 事件总线检查事件:
root@master #
salt-run state.event pretty=True
另一个用于监视活跃作业的命令为:
root@master #
salt-run jobs.active
如果与 Ceph 相关的服务(特别是 iSCSI 或 NFS Ganesha)配置为单点访问,并且未设置高可用性,重启动这些服务将导致从客户端进行查看时会出现暂时中断现象。
由于 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。为了保持较短的停机时间并尽早发现潜在问题,请按顺序重启动各节点。例如,一次只重启动一个监视节点。
如果集群处于降级、非健康状况,该命令会等待集群恢复。
要重启动集群上的特定服务,请运行以下命令:
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
在某些情况下,您需要按建议的顺序停止集群中所有与 Ceph 相关的服务,然后才能再次按任意顺序将其启动。例如,发生计划停电的情况时。
要关闭整个 Ceph 集群,请禁用安全措施并运行 ceph.shutdown
运行程序:
root@master #
salt-run disengage.safetyroot@master #
salt-run state.orch ceph.shutdown
要启动整个 Ceph 集群,请运行 ceph.startup
运行程序:
root@master #
salt-run state.orch ceph.startup