注意
本文档适用于 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
进程停止时才会放弃等级。
如果一个等级没有与任何守护进程关联,则该等级被认为是failed
。up
.
每个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
使用的地方,它可以可选地由一个前导文件系统name
或GID
限定。如果一个守护进程是一个备用(即它当前没有被分配一个rank
),那么它只能通过GID
或name
.
来引用。name
‘myhost’和GID
5446,并且被分配rank
0用于文件系统‘myfs’FSCID
3。以下任何形式都是合适的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-replay
MDS 具有更强的亲和性,它将替换备用重放 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. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.