注意

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

CephFS管理命令

文件系统

Note

文件系统、元数据存储池和数据存储池的名称只能包含集合[a-zA-Z0-9_-.]中的字符。

这些命令作用于您Ceph集群中的CephFS文件系统。ceph fs flag set enable_multiple true.

ceph fs new <file system name> <metadata pool name> <data pool name>

此命令创建一个新的文件系统。文件系统名称和元数据池名称是自解释的。指定的数据池是默认数据池,一旦设置就不能更改。每个文件系统都有自己的一组分配给级别的MDS守护进程,请确保您有足够的备用守护进程来容纳新的文件系统。

ceph fs ls

按名称列出所有文件系统。

ceph fs lsflags <file system name>

列出文件系统上设置的标志。

ceph fs dump [epoch]

这会在给定的时期(默认:当前)转储FSMap,其中包括所有文件系统设置、MDS守护进程及其持有的级别,以及备用MDS守护进程的列表。

ceph fs rm <file system name> [--yes-i-really-mean-it]

销毁一个CephFS文件系统。这将擦除FSMap中关于文件系统状态的信息。元数据池和数据池保持不变,必须分别销毁。

ceph fs get <file system name>

获取命名文件系统的信息,包括设置和级别。这是来自ceph fs dump command.

ceph fs set <file system name> <var> <val> [--yes-i-really-mean-it]

的相同信息的子集。max_mds更改文件系统上的设置。这些设置是针对命名文件系统的,不会影响其他文件系统。确认标志仅在更改

Note

时需要,当集群不健康时。max_mdsmax_mds可能不会有所帮助。相反,它可能会进一步 destabilize 集群。

ceph fs add_data_pool <file system name> <pool name/id>

将数据池添加到文件系统。此池可以用作文件布局的备用位置来存储文件数据。

ceph fs rm_data_pool <file system name> <pool name/id>

此命令从文件系统的数据池列表中删除指定的池。如果任何文件有针对已删除数据池的布局,文件数据将变得不可用。默认数据池(在创建文件系统时)不能被删除。

ceph fs rename <file system name> <new file system name> [--yes-i-really-mean-it]

重命名Ceph文件系统。这也更改了文件系统的数据池和元数据池上的应用程序标签为新的文件系统名称。

fs swap <fs1-name> <fs1_id> <fs2-name> <fs2_id> [--swap-fscids=yes|no] [--yes-i-really-mean-it]

交换两个Ceph文件系统的名称,并相应地更新两个FS的所有池的应用程序标签。跟踪文件系统FSCIDs的工具(除了文件系统名称之外)可能会因为此操作而感到困惑。为此,提供了强制选项--swap-fscids必须使用它来指示是否需要交换FSCIDs。

Note

FSCID代表“文件系统集群ID”。

在交换之前,应该在两个CephFS上禁用镜像(因为cephfs-mirror守护进程在内部使用fscid,而在守护进程运行时更改它可能会导致未定义的行为),两个CephFS都应该离线,并且文件系统标志refuse_client_sessions必须为两个CephFS设置。

此API的功能是促进灾难恢复,其中从上一个文件系统重建的新文件系统准备好接管可能受损的文件系统。而不是两个fs rename操作,管理员可以使用交换,因此没有FSMap时期,主要的(或生产的)命名文件系统不存在。当Ceph被自动存储管理员(如Rook)监控时,这是很重要的,这些管理员会不断尝试协调存储系统。该管理员可能会在看到文件系统不存在时立即尝试重新创建文件系统。

交换后,如果现有的挂载应该“跟随”旧的文件系统到其新名称,则可能需要重新授权CephX凭证。通常,对于灾难恢复,希望现有的挂载继续使用相同的文件系统名称。任何活动的CephFS挂载都必须重新挂载。现有的未刷新操作将丢失。当判断其中一个交换的文件系统准备好供客户端使用时,请运行:

ceph fs set <fs> joinable true
ceph fs set <fs> refuse_client_sessions false

请记住,在执行灾难恢复交换时,其中一个交换的文件系统可能会留离线以供将来分析。

设置

ceph fs set <fs name> max_file_size <size in bytes>

CephFS有一个可配置的最大文件大小,默认为1TB。如果您预计要在CephFS中存储大文件,则可能希望将此限制设置得更高。这是一个64位字段。

设置max_file_size设置为0不会禁用此限制。它只会限制客户端只能创建空文件。

最大文件大小和性能

CephFS在追加到文件或设置其大小时强制执行最大文件大小限制。它不会影响存储方式。

当用户创建一个巨大的文件(而不一定写入任何数据到它)时,某些操作(如删除)会导致MDS必须执行大量操作来检查在文件大小范围内可能存在的任何RADOS对象是否真的存在。

The max_file_size此设置防止用户创建看起来像是例如艾字节大小的文件,导致MDS在尝试在统计或删除等操作期间负载增加。

关闭集群

关闭CephFS集群是通过设置降级标志完成的:

ceph fs set <fs_name> down true

要将集群恢复在线:

ceph fs set <fs_name> down false

这也将恢复max_mds的先前值。MDS守护进程以将日志刷新到元数据池并停止所有客户端I/O的方式关闭。

快速关闭集群以进行删除或灾难恢复

要允许快速删除文件系统(用于测试)或快速将文件系统和MDS守护进程关闭,请使用ceph fs fail command:

ceph fs fail <fs_name> {--yes-i-really-mean-it}

Note

注意:确认标志是可选的,因为它仅在MDS处于活动状态并且有健康警告MDS_TRIM或

此命令将文件系统标志设置为防止备用守护进程在文件系统上激活(即joinable标志)。

此过程也可以通过执行以下操作手动完成:

ceph fs set <fs_name> joinable false

然后,管理员可以失败所有级别,这会导致MDS守护进程作为备用守护进程重新启动。文件系统将处于降级状态。

# For all ranks, 0-N:
ceph mds fail <fs_name>:<n> {--yes-i-really-mean-it}

Note

注意:确认标志是可选的,因为它仅在MDS处于活动状态并且有健康警告MDS_TRIM或

一旦所有级别都处于非活动状态,文件系统也可以被删除或保留在此状态下以供其他用途(可能是灾难恢复)。

要将集群恢复上线,只需设置可加入标志:

ceph fs set <fs_name> joinable true

守护进程

大多数操作MDS的命令都接受<role>参数,该参数可以取三种形式之一:

<fs_name>:<rank>
<fs_id>:<rank>
<rank>

操作MDS守护进程的命令:

ceph mds fail <gid/name/role>

将MDS守护进程标记为失败。这与集群在MDS守护进程未能向mon发送消息mds_beacon_grace后会做的事情等效。如果守护进程处于活动状态并且有合适的备用守护进程可用,使用ceph mds fail将强制切换到备用守护进程。

如果MDS守护进程实际上仍在运行,则使用ceph mds fail将导致守护进程重新启动。如果它处于活动状态并且有备用守护进程可用,则“失败的”守护进程将作为一个备用守护进程返回。

ceph tell mds.<daemon name> command ...

向MDS守护进程(们)发送命令。使用mds.*向所有守护进程发送命令。使用ceph tell mds.* help来学习可用命令。

ceph mds metadata <gid/name/role>

获取Monitors知道的给定MDS的元数据。

ceph mds repaired <role>

将文件系统级别标记为已修复。与名称所示相反,此命令不会更改MDS;它操作已被标记为损坏的文件系统级别。

ceph mds last-seen <name>

学习MDS名称name最后一次在FSMap中出现的时期。JSON输出包括MDS上次看到时的时期。历史信息受以下mon配置完成的:

mon_fsmap_prune_threshold

监控器将历史fsmaps保存在内存中,以优化询问MDS守护进程上次在FSMap中看到的时间。此选项控制监控器将回溯多长时间。

type:

secs

default:

300

必要的客户端功能

有时希望设置客户端必须支持的功能以与CephFS交谈。没有这些功能的客户端可能会破坏其他客户端或以出乎意料的方式行为。或者,您可能希望要求较新的功能以防止较旧且可能有错误的客户端连接。

操作文件系统所需客户端功能的命令:

ceph fs required_client_features <fs name> add reply_encoding
ceph fs required_client_features <fs name> rm reply_encoding

列出所有CephFS功能

ceph fs feature ls

缺少新添加功能的客户端将自动被驱逐。

这里是当前的CephFS功能和它们首次发布的Ceph版本:

功能

Ceph版本

上游内核

jewel

jewel

4.5

kraken

kraken

4.13

luminous

luminous

4.13

mimic

mimic

4.19

reply_encoding

nautilus

5.1

reclaim_client

nautilus

N/A

lazy_caps_wanted

nautilus

5.1

multi_reconnect

nautilus

5.1

deleg_ino

octopus

5.6

metric_collect

pacific

N/A

alternate_name

pacific

6.5

notify_session_state

quincy

5.19

op_getvxattr

quincy

6.0

32bits_retry_fwd

reef

6.6

new_snaprealm_info

reef

UNKNOWN

has_owner_uidgid

reef

6.6

client_mds_auth_caps

squid+bp

PLANNED

CephFS功能描述

reply_encoding

如果客户端支持此功能,MDS将请求回复编码为可扩展格式。

reclaim_client

MDS允许新客户端收回另一个(已死亡的)客户端的状态。此功能由NFS-Ganesha使用。

lazy_caps_wanted

当陈旧的客户端恢复时,如果客户端支持此功能,mds只需要重新发布明确想要的caps。

multi_reconnect

当mds故障转移时,客户端向mds发送重连消息以重新建立缓存状态。如果MDS支持此功能,客户端可以将大的重连消息分成多个消息。

deleg_ino

如果客户端支持此功能,MDS将委托inode编号给客户端。拥有委托的inode编号是客户端执行异步文件创建的先决条件。

metric_collect

如果MDS支持此功能,客户端可以向MDS发送性能指标。

alternate_name

客户端可以设置和理解目录条目的“备用名称”。这是用于加密文件名支持。

client_mds_auth_caps

为了在客户端的root_squash,客户端必须理解它正在执行mdscaps中有效实施root_squash和其他cap元数据。没有此功能的客户端有丢失文件更新危险的。建议设置此功能位。

全局设置

ceph fs flag set <flag name> <flag val> [<confirmation string>]

设置全局CephFS标志(即特定于某个文件系统)。

一些标志需要您用“--yes-i-really-mean-it”或类似的字符串来确认您的意图。在继续之前仔细考虑这些操作;它们位于特别危险的活动上。

高级

这些命令在正常操作中不是必需的,并且存在于异常情况下使用。不正确使用这些命令可能会导致严重问题,例如无法访问的文件系统。

ceph mds rmfailed

此命令从失败集中删除一个级别。

ceph fs reset <file system name>

此命令将文件系统状态重置为默认值,除了名称和池。非零级别保存在停止集中。

ceph fs new <file system name> <metadata pool name> <data pool name> --fscid <fscid> --force

此命令创建一个具有特定fscid(文件系统集群ID)的文件系统。

由 Ceph 基金会带给您

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