注意

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

术语

一个 Ceph 集群可以有零个或多个 CephFS文件系统。每个 CephFS 都有一个fs new) and an integer ID. The ID is called the file system cluster ID, or FSCID.

每个 CephFS 文件系统都有一个数量的等级,编号从零开始。配置多个活跃的MDS守护进程 .

中描述。ceph-mds守护进程在没有等级的情况下启动。它可能被集群的监视器分配一个等级。一个守护进程一次只能持有一个等级,并且只有在ceph-mds进程停止时才会放弃等级。

如果一个等级没有与任何守护进程关联,则该等级被认为是failedup.

每个ceph-mds守护进程有一个name,该等级由管理员在守护进程首次配置时静态分配。每个守护进程的name通常是守护进程运行的主机名。

A ceph-mds守护进程可以被分配到一个特定的文件系统,方法是将其mds_join_fs配置选项设置为文件系统的name.

当一个ceph-mds守护进程启动时,它也会被分配一个整数GID,该数字是当前守护进程进程独有的。换句话说,当一个ceph-mds守护进程重新启动时,它作为一个新的进程运行,并且被分配一个new GID,该数字与之前进程的数字不同。

指向 MDS 守护进程

大多数引用一个ceph-mds守护进程(MDS)的管理命令都接受灵活的参数格式,该格式可以指定一个rank,执行使用GID or a name.

。在一个rank使用的地方,它可以可选地由一个前导文件系统nameGID限定。如果一个守护进程是一个备用(即它当前没有被分配一个rank),那么它只能通过GIDname.

来引用。name‘myhost’和GID5446,并且被分配rank0用于文件系统‘myfs’FSCID3。以下任何形式都是合适的fail command:

ceph mds fail 5446     # GID
ceph mds fail myhost   # Daemon name
ceph mds fail 0        # Unqualified rank
ceph mds fail 3:0      # FSCID and rank
ceph mds fail myfs:0   # File System name and rank

管理故障转移

。如果一个 MDS 守护进程停止与集群的监视器通信,监视器将在等待mds_beacon_grace秒(默认 15)后将其标记为慢的。如果有一个备用 MDS,监视器将立即替换慢的守护进程。

每个文件系统可以指定一个备用守护进程的最小数量,以便被认为是健康的。这个数字包括处于standby-replay状态等待一个rank失败的守护进程。(注意,监视器不会将一个standby-replay守护进程分配给另一个rank或不同 CephFS 文件系统中的失败)。不在replay状态的备用守护进程池计入任何文件系统计数。每个文件系统可以通过以下方式设置所需的备用守护进程数量:

ceph fs set <fs name> standby_count_wanted <count>

设置count设置为 0 将禁用健康检查。

配置备用重播

每个 CephFS 文件系统可以配置为添加standby-replay守护进程。standby-replay守护进程跟随它。

在文件系统上配置standby-replay使用以下方式完成:

ceph fs set <fs name> allow_standby_replay <bool>

设置后,监视器将分配可用的备用守护进程来跟随该文件系统中的活动 MDS。

一旦 MDS 进入standby-replay状态,它将仅用作它正在跟随的rank的备用。如果另一个rank失败,这个standby-replay守护进程不会用作替代,即使没有其他备用可用。因此,建议如果standby-replay使用,则每个活动MDS都应该有一个standby-replay守护进程。

配置 MDS 文件系统亲和性

您可以选择将 MDS 专门分配给特定的文件系统。或者,您可能有一些在更好硬件上运行的 MDS,这些 MDS 应该优先于在普通或过度配置系统上的最后手段备用。要配置这种偏好,CephFS 为 MDS 提供了一个配置选项mds_join_fs,该选项强制执行这种亲和性。

在故障转移 MDS 守护进程时,集群的监视器将优先选择备用守护进程,其mds_join_fs等于文件系统name。如果没有任何备用具有rank. If no standby exists with mds_join_fs等于文件系统name,它将选择一个无条件的备用(没有mds_join_fs设置)作为替代。作为最后的手段,将选择另一个文件系统的备用,尽管这种行为可以被禁用:

ceph fs set <fs name> refuse_standby_for_another_fs true

注意,配置 MDS 文件系统亲和性不会改变standby-replay守护进程总是被选中而不是其他备用的行为。

甚至进一步,即使文件系统稳定,监视器也会定期检查 CephFS 文件系统,以检查是否有更强的亲和性的备用可以替换具有较低亲和性的 MDS。此过程也适用于standby-replay守护进程:如果常规备用比standby-replayMDS 具有更强的亲和性,它将替换备用重放 MDS。

例如,考虑到这个稳定且健康的文件系统:

$ ceph fs dump
dumped fsmap epoch 399
...
Filesystem 'cephfs' (27)
...
e399
max_mds 1
in      0
up      {0=20384}
failed
damaged
stopped
...
[mds.a{0:20384} state up:active seq 239 addr [v2:127.0.0.1:6854/966242805,v1:127.0.0.1:6855/966242805]]

Standby daemons:

[mds.b{-1:10420} state up:standby seq 2 addr [v2:127.0.0.1:6856/2745199145,v1:127.0.0.1:6857/2745199145]]

您可以在备用上设置mds_join_fs以强制执行您的偏好:

$ ceph config set mds.b mds_join_fs cephfs

自动故障转移后:

$ ceph fs dump
dumped fsmap epoch 405
e405
...
Filesystem 'cephfs' (27)
...
max_mds 1
in      0
up      {0=10420}
failed
damaged
stopped
...
[mds.b{0:10420} state up:active seq 274 join_fscid=27 addr [v2:127.0.0.1:6856/2745199145,v1:127.0.0.1:6857/2745199145]]

Standby daemons:

[mds.a{-1:10720} state up:standby seq 2 addr [v2:127.0.0.1:6854/1340357658,v1:127.0.0.1:6855/1340357658]]

注意在上面的示例中mds.b现在具有join_fscid=27。在此输出中,来自mds_join_fs的文件系统名称已更改为文件系统标识符(27)。如果使用相同的名称重新创建文件系统,备用将按预期跟随新的文件系统。

最后,如果文件系统退化或容量不足,将不会发生故障转移到强制mds_join_fs.

由 Ceph 基金会带给您

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