注意
本文档适用于 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
, syslog
或file,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_network和cluster_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-volume
zap 并销毁所有相关设备并标记相应的 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. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.