注意

本文档适用于 Ceph 开发版本。

Cephadm 操作

查看cephadm日志消息

cephadm 协调器模块将日志写入集群日志cephadm通道。您可以通过读取日志来实时监控 Ceph 的活动。运行以下命令以实时查看日志:

ceph -W cephadm

默认情况下,此命令显示 info 级别的事件及以上级别的事件。要查看 debug 级别的消息以及 info 级别的事件,请运行以下命令:

ceph config set mgr mgr/cephadm/log_to_cluster_level debug
ceph -W cephadm --watch-debug

警告

调试消息非常详细!

您可以通过运行以下命令查看最近的事件:

ceph log last cephadm

这些事件也记录到监控主机上的ceph.cephadm.log文件以及监控守护进程的 stderr。

Ceph 守护进程控制

启动和停止守护进程

您可以使用以下命令停止、启动或重新启动守护进程:

ceph orch daemon stop <daemonid>
ceph orch daemon start <daemonid>
ceph orch daemon restart <daemonid>

您还可以对所有服务的守护进程执行相同的操作:

ceph orch stop <serviceid>
ceph orch start <serviceid>
ceph orch restart <serviceid>

Note

通常不建议在正在运行的集群上运行ceph orch restart osd.myosdservice,因为不会关注 CRUSH 故障域,并且并行 OSD 重启可能导致临时数据不可用,或在极少数情况下导致数据丢失。

重新部署或重新配置守护进程

守护进程的容器可以停止、重新创建和重新启动,使用redeploy command:

ceph orch daemon redeploy <name> [--image <image>]

。可以可选地提供容器镜像名称,以强制使用特定的镜像(而不是由container_image配置值指定的镜像)。

如果只需要重新生成 ceph 配置,也可以发出reconfig命令,该命令将重写ceph.conf文件,但不会触发守护进程的重启。

ceph orch daemon reconfig <name>

旋转守护进程的认证密钥

集群中的所有 Ceph 和网关守护进程都有一个用于连接到并认证集群的秘密密钥。此密钥可以使用以下命令进行旋转(即用新密钥替换):

ceph orch daemon rotate-key <name>

对于 MDS、OSD 和 MGR 守护进程,这不需要守护进程重启。但是,对于其他守护进程(例如 RGW),可能需要重启守护进程以切换到新密钥。

Ceph 守护进程日志

记录到 journald

Ceph 守护进程传统上将日志记录到/var/log/ceph。Ceph 守护进程默认记录到 journald,并且 Ceph 日志由容器运行时环境捕获。它们可以通过journalctl.

Note

访问。在 Quincy 之前,ceph 守护进程记录到 stderr。

记录到 journald 的示例

例如,要查看具有 IDmon.foo的集群的5c5a50ae-272a-455d-99e9-32c6a013e694守护进程的日志,命令类似于:

journalctl -u ceph-5c5a50ae-272a-455d-99e9-32c6a013e694@mon.foo

当日志级别较低时,这对于正常操作非常有效。

记录到文件

如果您更喜欢将日志记录到文件(就像在早期、pre-cephadm、pre-Octopus 版本的 Ceph 中那样),也可以配置 Ceph 守护进程将日志记录到文件。当 Ceph 记录到文件时,日志将出现在/var/log/ceph/<cluster-fsid>。如果您选择配置 Ceph 以记录到文件而不是 journald,请记住配置 Ceph 以使其不会记录到 journald(此命令将在下面进行说明)。

启用记录到文件

要启用记录到文件,请运行以下命令:

ceph config set global log_to_file true
ceph config set global mon_cluster_log_to_file true

如果您选择记录到文件,我们建议禁用记录到 journald,否则所有内容都将记录两次。运行以下命令以禁用记录到 stderr:

If you choose to log to files, we recommend disabling logging to journald or else everything will be logged twice. Run the following commands to disable logging to stderr:

ceph config set global log_to_stderr false
ceph config set global mon_cluster_log_to_stderr false
ceph config set global log_to_journald false
ceph config set global mon_cluster_log_to_journald false

Note

您可以通过在引导新集群时传递 --log-to-file 来更改默认设置。

修改日志保留计划

默认情况下,cephadm 在每个主机上设置日志轮转,以轮转这些文件。您可以通过修改/etc/logrotate.d/ceph.<cluster-fsid>.

每个节点的 cephadm 日志

来配置日志保留计划。/var/log/ceph/cephadm.log.

此日志目标可配置,您可以选择记录到文件、syslog/journal 或两者都记录。

在引导过程中设置 cephadm 日志目标

The cephadm命令可以使用选项--log-dest=file--log-dest=syslog或两者。这些选项控制 cephadm 将持久日志存储在哪里,用于每个调用。当为cephadm bootstrap命令指定这些选项时,系统将自动记录这些设置,以便将来由 cephadm 协调器模块调用cephadm

例如:

cephadm --log-dest=syslog bootstrap # ... other bootstrap arguments ...

如果您想手动指定在引导过程中使用的确切日志目标,而与--log-dest选项无关,您可以向初始配置文件中的mgr/cephadm/cephadm_log_destination。键的有效值是:[mgr]部分添加配置键file, syslog, and file,syslog.

例如:

cat >/tmp/bootstrap.conf <<EOF
[mgr]
mgr/cephadm/cephadm_log_destination = syslog
EOF
cephadm bootstrap --config /tmp/bootstrap.conf # ... other bootstrap arguments ...

在现有集群上设置 cephadm 日志目标

现有的 Ceph 集群可以通过将mgr/cephadm/cephadm_log_destination配置值设置为file, syslogfile,syslog之一来配置使用特定的 cephadm 日志目标。这将导致 cephadm 协调器模块运行cephadm,以便日志记录到/var/log/ceph/cephadm.log、syslog/journal 或两者,具体取决于配置值。

例如:

# set the cephadm executable to log to syslog
ceph config set mgr mgr/cephadm/cephadm_log_destination syslog
# set the cephadm executable to log to both the log file and syslog
ceph config set mgr mgr/cephadm/cephadm_log_destination file,syslog
# set the cephadm executable to log to the log file
ceph config set mgr mgr/cephadm/cephadm_log_destination file

Note

如果您直接执行 cephadm 命令,例如 cephadm shell,则此选项不适用。要在默认日志文件以外的位置让 cephadm 记录日志,请在直接运行 cephadm 命令时使用上面引导部分中描述的--log-dest选项。

数据位置

cephadm 在不同的位置存储守护进程数据和日志,与旧的、pre-cephadm(pre Octopus)版本的 Ceph 不同:

  • /var/log/ceph/<cluster-fsid>包含所有集群日志。默认情况下,cephadm 通过 stderr 和容器运行时进行日志记录。除非您按照中所述启用了记录到文件,否则这些日志将不存在。.

  • /var/lib/ceph/<cluster-fsid>包含所有集群守护进程数据(不包括日志)。

  • /var/lib/ceph/<cluster-fsid>/<daemon-name>包含单个守护进程的所有数据。

  • /var/lib/ceph/<cluster-fsid>/crash包含集群的崩溃报告。

  • /var/lib/ceph/<cluster-fsid>/removed包含已由 cephadm 删除的具有状态的主机(例如 monitor、prometheus)的旧守护进程数据目录。

磁盘使用情况

由于一些 Ceph 守护进程(尤其是监控器和 prometheus)在/var/lib/ceph中存储了大量数据,我们建议将此目录移动到它自己的磁盘、分区或逻辑卷,以防止它填满根文件系统。

健康检查

cephadm 模块提供了额外的健康检查,以补充集群提供的默认健康检查。这些额外的健康检查分为两类:

  • cephadm 操作:当 cephadm 模块处于活动状态时,始终执行此类健康检查。

  • 集群配置:这些健康检查是optional可选的

CEPHADM 操作

CEPHADM_PAUSED

这表示 cephadm 背景工作已使用ceph orch pause暂停。Cephadm 继续执行被动监控活动(例如检查主机和守护进程状态),但它不会进行任何更改(例如部署或删除守护进程)。

通过运行以下命令恢复 cephadm 工作:

ceph orch resume

CEPHADM_STRAY_HOST

这表示一个或多个主机上运行着 Ceph 守护进程,但它们没有被cephadm注册为主机。这意味着这些服务目前无法由 cephadm 管理(例如重启、升级、包含在ceph orch ps).

  • 您可以通过运行以下命令管理主机:

    ceph orch host add *<hostname>*
    

    Note

    在此之前,您可能需要配置远程主机的 SSH 访问才能使其工作。

  • 请参阅完全限定域名与裸主机名更多关于主机名和域名的信息。

  • 或者,您可以手动连接到主机,并确保该主机上的服务被删除或迁移到由cephadm.

  • 管理的主机。此警告可以通过运行以下命令完全禁用:

    ceph config set mgr mgr/cephadm/warn_on_stray_hosts false
    

CEPHADM_STRAY_DAEMON

一个或多个 Ceph 守护进程正在运行,但它们没有被cephadm管理。这可能是因为它们使用不同的工具部署的,或者它们是手动启动的。这些服务目前无法由 cephadm 管理(例如重启、升级或包含在ceph orch ps).

  • 如果守护进程是状态化的(例如 monitor 或 OSD),则它应该被 cephadm 收养;请参阅Converting an existing cluster to cephadm。对于无状态守护进程,最简单的方法是使用ceph orch apply命令重新配置一个新的守护进程,然后停止未管理的守护进程。

  • 如果孤立的守护进程(s)运行在由 cephadm 未管理的主机上,您可以通过运行以下命令管理主机:

    ceph orch host add *<hostname>*
    

    Note

    在此之前,您可能需要配置远程主机的 SSH 访问才能使其工作。

  • 请参阅完全限定域名与裸主机名更多关于主机名和域名的信息。

  • 此警告可以通过运行以下命令完全禁用:

    ceph config set mgr mgr/cephadm/warn_on_stray_daemons false
    

CEPHADM_HOST_CHECK_FAILED

一个或多个主机未能通过基本的 cephadm 主机检查,该检查验证主机是否可访问并且可以在那里执行 cephadm,以及主机是否满足基本先决条件,例如可工作的容器运行时(podman 或 docker)和可工作的时序同步。

您可以通过运行以下命令手动运行此检查:

ceph cephadm check-host *<hostname>*

您可以通过运行以下命令将损坏的主机从管理中删除:

ceph orch host rm *<hostname>*

您可以通过运行以下命令禁用此健康警告:

ceph config set mgr mgr/cephadm/warn_on_failed_host_check false

集群配置检查

Cephadm 会定期扫描集群中的每个主机,以了解操作系统的状态、磁盘、网络接口等。然后,可以分析这些信息,以在集群中的主机之间进行一致性检查,以识别任何配置异常。

启用集群配置检查

这些配置检查是一个optional可选

ceph config set mgr mgr/cephadm/config_checks_enabled true

集群配置检查返回的状态和结果如下:

配置检查是在每次主机扫描后触发的。cephadm 日志条目将显示当前的状态和配置检查的结果,如下所示:

Disabled state (config_checks_enabled false):

ALL cephadm checks are disabled, use 'ceph config set mgr mgr/cephadm/config_checks_enabled true' to enable

禁用状态(config_checks_enabled false):

CEPHADM 8/8 checks enabled and executed (0 bypassed, 0 disabled). No issues detected

管理配置检查(子命令)

配置检查本身是通过多个 cephadm 子命令管理的。

要确定配置检查是否已启用,请运行以下命令:

ceph cephadm config-check status

此命令返回配置检查器的状态,显示为“启用”或“禁用”。

要列出所有配置检查及其当前状态,请运行以下命令:

# ceph cephadm config-check ls

  NAME             HEALTHCHECK                      STATUS   DESCRIPTION
kernel_security  CEPHADM_CHECK_KERNEL_LSM         enabled  check that SELINUX/Apparmor profiles are consistent across cluster hosts
os_subscription  CEPHADM_CHECK_SUBSCRIPTION       enabled  check that subscription states are consistent for all cluster hosts
public_network   CEPHADM_CHECK_PUBLIC_MEMBERSHIP  enabled  check that all hosts have a network interface on the Ceph public_network
osd_mtu_size     CEPHADM_CHECK_MTU                enabled  check that OSD hosts share a common MTU setting
osd_linkspeed    CEPHADM_CHECK_LINKSPEED          enabled  check that OSD hosts share a common network link speed
network_missing  CEPHADM_CHECK_NETWORK_MISSING    enabled  check that the cluster/public networks as defined exist on the Ceph hosts
ceph_release     CEPHADM_CHECK_CEPH_RELEASE       enabled  check for Ceph version consistency: all Ceph daemons should be the same release unless upgrade is in progress
kernel_version   CEPHADM_CHECK_KERNEL_VERSION     enabled  checks that the maj.min version of the kernel is consistent across Ceph hosts

每个配置检查的名称都可以用于启用或禁用特定的检查,通过运行以下形式的命令:

ceph cephadm config-check disable <name>

例如:

ceph cephadm config-check disable kernel_security

CEPHADM_CHECK_KERNEL_LSM

集群中的每个主机都应在相同的 Linux 安全模块(LSM)状态下运行。例如,如果大多数主机以 enforcing 模式运行 SELINUX,则任何未以该模式运行的主机都将被标记为异常,并引发健康检查(警告)状态。

CEPHADM_CHECK_SUBSCRIPTION

此检查与操作系统供应商订阅的状态有关。此检查仅针对使用 RHEL 的主机执行,以帮助确认所有主机都包含在活动的订阅中,这确保了补丁和更新可用。

CEPHADM_CHECK_PUBLIC_MEMBERSHIP

集群的所有成员都应在至少一个公共网络子网配置了网络接口。不在公共网络上的主机将依赖路由,这可能会影响性能。

CEPHADM_CHECK_MTU

OSD 主机的网络接口的 MTU 可以是影响一致性能的关键因素。此检查检查运行 OSD 服务的主机,以确保集群内 MTU 配置的一致性。这是通过确定大多数主机使用的 MTU 设置来确定的。任何异常都会导致健康检查。

CEPHADM_CHECK_LINKSPEED

此检查类似于 MTU 检查。链路速度一致性是影响集群一致性能的因素,与 OSD 节点网络接口的 MTU 一样。此检查确定大多数 OSD 主机共享的链路速度,并对设置较低链路速度的主机运行健康检查。

CEPHADM_CHECK_NETWORK_MISSING

The public_networkcluster_network设置支持 IPv4 和 IPv6 的子网定义。如果集群中的任何主机上未找到这些设置,则会引发健康检查。

CEPHADM_CHECK_CEPH_RELEASE

在正常操作中,Ceph 集群运行着相同 Ceph 版本的守护进程(例如 Reef)。此检查确定每个守护进程的活动版本,并将任何异常报告为健康检查。如果正在进行升级,则跳过此检查。

CEPHADM_CHECK_KERNEL_VERSION

检查主机之间操作系统内核版本(maj.min)的一致性。大多数主机的内核版本被用作识别异常的基础。

客户端密钥环和配置

Cephadm 可以向主机分发ceph.conf文件和客户端密钥环文件的副本。从版本 16.2.10(Pacific)和 17.2.1(Quincy)开始,除了默认位置/etc/ceph/外,cephadm 还将配置和密钥环文件存储在/var/lib/ceph/<fsid>/config目录中。通常,将配置和client.admin密钥环的副本存储在任何用于通过 CLI 管理集群的主机上是一个好主意。默认情况下,cephadm 会为具有_admin标签的任何节点执行此操作(通常包括引导主机)。

Note

Ceph 守护进程仍然会使用/etc/ceph/上的文件。新的配置位置/var/lib/ceph/<fsid>/config仅由 cephadm 使用。将此配置目录置于 fsid 下有助于 cephadm 加载与集群关联的配置。

当客户端密钥环置于管理之下时,cephadm 将:

  • 根据指定的放置规范(请参阅守护进程放置)

  • 在指定的主机(s)上的/etc/ceph/ceph.conf文件的副本

  • 在指定的主机(s)上的ceph.conf file at /var/lib/ceph/<fsid>/config/ceph.conf存储文件副本

  • 在指定的主机(s)上的ceph.client.admin.keyring file at /var/lib/ceph/<fsid>/config/ceph.client.admin.keyring存储文件副本

  • 在指定的主机(s)上存储密钥环文件

  • 根据需要更新ceph.conf文件(例如,由于集群监控器的更改)

  • 如果实体的密钥已更改(例如,通过ceph auth ...命令),则更新密钥环文件

  • 确保密钥环文件具有指定的所有者和指定的模式

  • 当禁用客户端密钥环管理时删除密钥环文件

  • 如果密钥环放置规范更新(按需),则从旧主机上删除密钥环文件

列出客户端密钥环

要查看当前处于管理之下的客户端密钥环列表,请运行以下命令:

ceph orch client-keyring ls

将密钥环置于管理之下

要将密钥环置于管理之下,请运行以下形式的命令:

ceph orch client-keyring set <entity> <placement> [--mode=<mode>] [--owner=<uid>.<gid>] [--path=<path>]
  • 默认情况下,path/etc/ceph/client.{entity}.keyring,这是 Ceph 默认查找的位置。在指定备用位置时要小心,因为可能会覆盖现有文件。

  • 放置*(所有主机)是一种常见情况。

  • 模式默认为0600,所有者默认为0:0(用户 root,组 root)。

例如,要创建一个client.rbd密钥并将其部署到带有rbd-client标签的主机,并使其对 uid/gid 107(qemu)可读,请运行以下命令:

ceph auth get-or-create-key client.rbd mon 'profile rbd' mgr 'profile rbd' osd 'profile rbd pool=my_rbd_pool'
ceph orch client-keyring set client.rbd label:rbd-client --owner 107:107 --mode 640

生成的密钥环文件是:

-rw-r-----. 1 qemu qemu 156 Apr 21 08:47 /etc/ceph/client.client.rbd.keyring

默认情况下,cephadm 还会在它写入密钥环的主机上管理/etc/ceph/ceph.conf。此功能可以通过在设置密钥环时传递--no-ceph-conf来抑制。

ceph orch client-keyring set client.foo label:foo 0:0 --no-ceph-conf

禁用密钥环文件的管理

要禁用密钥环文件的管理,请运行以下形式的命令:

ceph orch client-keyring rm <entity>

Note

这会删除此实体先前写入集群节点上的任何密钥环文件。

/etc/ceph/ceph.conf

向没有密钥环的主机分发 ceph.conf

ceph.conf文件分发到没有关联客户端密钥环文件的主机可能很有用。默认情况下,cephadm 仅将ceph.conf文件部署到也分发客户端密钥环的主机(请参见上文)。要将配置文件写入没有客户端密钥环的主机,请运行以下命令:

ceph config set mgr mgr/cephadm/manage_etc_ceph_ceph_conf true

使用放置规范指定哪些主机获取密钥环

默认情况下,配置文件会写入所有主机(即由ceph orch host ls列出的主机)。要指定哪些主机获取ceph.conf,请运行以下形式的命令:

ceph config set mgr mgr/cephadm/manage_etc_ceph_ceph_conf_hosts <placement spec>

例如,要向带有bare_config标签的主机分发配置文件,请运行以下命令:

向带有 bare_config 标签的主机分发 ceph.conf

例如,要向带有bare_config标签的主机分发配置文件,请运行以下命令:

ceph config set mgr mgr/cephadm/manage_etc_ceph_ceph_conf_hosts label:bare_config

(有关放置规范的更多信息,请参阅守护进程放置)。

限制无密码 sudo 访问

默认情况下,cephadm 安装指南建议为 cephadm 用户启用无密码sudo。此选项最灵活且未来适用,但在某些环境中可能不被首选。管理员可以将sudo限制为仅运行确切命令列表,而无需密码访问。请注意,此列表可能在 Ceph 版本之间发生变化,选择此选项的管理员应阅读发布说明并查看目标 Ceph 文档版本中的此列表。如果列表不同,则必须在升级前扩展无密码sudo命令列表。

需要无密码 sudo 支持的命令:

  • chmod

  • chown

  • ls

  • mkdir

  • mv

  • rm

  • sysctl

  • touch

  • true

  • which(见注释)

  • /usr/bin/cephadm或 python 可执行文件(见注释)

Note

通常 cephadm 会执行which来确定可用的 python3 命令,然后使用which在后续命令中使用返回的命令。sudo之前,运行which python3来确定要添加到sudo配置中的 python 命令。在某些罕见配置中/usr/bin/cephadm将被使用。

配置sudoers文件可以使用像visudo这样的工具进行配置,并添加或替换用户配置行,如下所示:

# assuming the cephadm user is named "ceph"
ceph ALL=(ALL) NOPASSWD:/usr/bin/chmod,/usr/bin/chown,/usr/bin/ls,/usr/bin/mkdir,/usr/bin/mv,/usr/bin/rm,/usr/sbin/sysctl,/usr/bin/touch,/usr/bin/true,/usr/bin/which,/usr/bin/cephadm,/usr/bin/python3

清理集群

Danger

此操作将销毁此集群中存储的所有数据

为了销毁集群并删除此集群中存储的所有数据,请禁用 cephadm 以停止所有编排操作(这样我们就可以避免部署新的守护进程)。

ceph mgr module disable cephadm

然后,验证集群的 FSID:

ceph fsid

从集群中的所有主机上清除 ceph 守护进程

# For each host:
cephadm rm-cluster --force --zap-osds --fsid <fsid>

替换设备

The ceph orch device replace命令自动执行替换 OSD 底层设备的过程。以前,此过程需要在各个阶段进行手动干预。使用此新命令,所有必要的操作都是自动执行的,简化了替换过程,并改善了整体用户体验。

Note

此命令仅支持基于 LVM 部署的 OSD(s)

ceph orch device replace <host> <device-path>

如果正在替换的设备被多个 OSD 共享(例如 DB/WAL 设备被多个 OSD 共享),协调器会向您发出警告。

[ceph: root@ceph /]# ceph orch device replace osd-1 /dev/vdd

Error EINVAL: /dev/vdd is a shared device.
Replacing /dev/vdd implies destroying OSD(s): ['0', '1'].
Please, *be very careful*, this can be a very dangerous operation.
If you know what you are doing, pass --yes-i-really-mean-it

如果您知道自己在做什么,可以继续执行并传递--yes-i-really-mean-it.

[ceph: root@ceph /]# ceph orch device replace osd-1 /dev/vdd --yes-i-really-mean-it
  Scheduled to destroy osds: ['6', '7', '8'] and mark /dev/vdd as being replaced.

cephadm将使ceph-volumezap 并销毁所有相关设备并标记相应的 OSD 为destroyed,以便不同的 OSD(s) ID(s) 将被保留:

[ceph: root@ceph-1 /]# ceph osd tree
  ID  CLASS  WEIGHT   TYPE NAME         STATUS     REWEIGHT  PRI-AFF
  -1         0.97659  root default
  -3         0.97659      host devel-1
   0    hdd  0.29300          osd.0     destroyed   1.00000  1.00000
   1    hdd  0.29300          osd.1     destroyed   1.00000  1.00000
   2    hdd  0.19530          osd.2            up   1.00000  1.00000
   3    hdd  0.19530          osd.3            up   1.00000  1.00000

最终被替换的设备被视为being replaced防止cephadm过快地重新部署 OSDs:

[ceph: root@ceph-1 /]# ceph orch device ls
HOST     PATH      TYPE  DEVICE ID   SIZE  AVAILABLE  REFRESHED  REJECT REASONS
osd-1  /dev/vdb  hdd               200G  Yes        13s ago
osd-1  /dev/vdc  hdd               200G  Yes        13s ago
osd-1  /dev/vdd  hdd               200G  Yes        13s ago    Is being replaced
osd-1  /dev/vde  hdd               200G  No         13s ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
osd-1  /dev/vdf  hdd               200G  No         13s ago    Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected

如果出于任何原因需要清除设备的“设备替换头”,则可以使用ceph orch device replace <host> <device> --clear:

[ceph: root@devel-1 /]# ceph orch device replace devel-1 /dev/vdk --clear
Replacement header cleared on /dev/vdk
[ceph: root@devel-1 /]#

之后,cephadm将在几分钟内重新部署 OSD 服务规范(除非服务被设置为unmanaged).

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.