注意

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

使用内核驱动程序挂载 CephFS

CephFS 内核驱动程序是 Linux 内核的一部分。它使得将 CephFS 挂载为常规文件系统成为可能,并具有原生的内核性能。它是大多数用例的首选客户端。

注意

CephFS 挂载设备字符串现在使用新的语法(“v2”)。挂载助手向后兼容旧语法。内核向后兼容旧语法。这意味着旧语法仍然可以用于使用较新的挂载助手和内核进行挂载。

先决条件

完成一般先决条件

按照 挂载 CephFS:先决条件 页面上所述,完成内核和 FUSE 挂载所需的先决条件。

挂载助手是否存在?

mount.ceph 助手由 Ceph 软件包安装。该助手传递监视器地址和 CephX 用户密钥环,使 Ceph 管理员无需在挂载 CephFS 时显式传递这些详细信息。如果客户端计算机上不存在该助手,仍然可以使用内核驱动程序挂载 CephFS,但只能通过将这些详细信息显式传递给 mount 命令。要检查您的系统上是否存在 mount.ceph,请运行以下命令

stat /sbin/mount.ceph

哪个内核版本?

由于内核客户端是作为 Linux 内核的一部分(而不是作为打包的 Ceph 版本的一部分)分发的,因此您需要考虑在客户端节点上使用哪个内核版本。已知旧内核包含有缺陷的 Ceph 客户端,并且可能不支持较新的 Ceph 集群支持的功能。

请记住,稳定 Linux 发行版中的“最新”内核可能落后于 Ceph 开发(包括错误修复)发生的最新上游 Linux 内核数年。

作为一个粗略的指南,截至 Ceph 10.x(Jewel),您应该至少使用 4.x 内核。如果您绝对必须使用旧内核,则应使用 FUSE 客户端而不是内核客户端。

如果您使用的是包含 CephFS 支持的 Linux 发行版,则此建议不适用。在这种情况下,发行版负责将其修复程序向后移植到其稳定内核。请咨询您的供应商。

概要

这是通过内核驱动程序挂载 CephFS 的命令的一般形式

mount -t ceph {device-string}={path-to-mounted} {mount-point} -o {key-value-args} {other-args}

挂载 CephFS

CephX 身份验证在 Ceph 集群中默认启用。使用 mount 命令使用内核驱动程序挂载 CephFS

mkdir /mnt/mycephfs
mount -t ceph <name>@<fsid>.<fs_name>=/ /mnt/mycephfs
  1. name 是我们用于挂载 CephFS 的 CephX 用户的用户名。

  2. fsid 是 Ceph 集群的 FSID,可以使用 ceph fsid 命令找到。fs_name 是要挂载的文件系统。内核驱动程序需要 Ceph 监视器的地址和 CephX 用户的密钥。例如

    mount -t ceph cephuser@b3acfc0d-575f-41d3-9c91-0e7ed3dbb3fa.cephfs=/ /mnt/mycephfs -o mon_addr=192.168.0.1:6789,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
    

使用挂载助手时,监视器主机和 FSID 是可选的。 mount.ceph 助手通过查找和读取 ceph conf 文件来发现这些详细信息。例如

mount -t ceph cephuser@.cephfs=/ -o secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==

注意

请注意,点(字符串 cephuser@.cephfs 中的 .)必须是设备字符串的一部分。

此方法的一个缺点是它会将密钥留在 shell 的命令历史记录中。为避免这种情况,请将密钥复制到文件中,并使用选项 secretfile 而不是 secret 来传递文件。例如

mount -t ceph cephuser@.cephfs=/ /mnt/mycephfs -o secretfile=/etc/ceph/cephuser.secret

确保密钥文件上的权限适当(最好是 600)。

可以通过用 / 分隔地址来传递多个监视器主机

mount -t ceph cephuser@.cephfs=/ /mnt/mycephfs -o mon_addr=192.168.0.1:6789/192.168.0.2:6789,secretfile=/etc/ceph/cephuser.secret

如果 CephX 被禁用,请省略任何与凭证相关的选项。例如

mount -t ceph cephuser@.cephfs=/ /mnt/mycephfs

注意

Ceph 用户名必须作为设备字符串的一部分传递。

要挂载 CephFS 根的子树,请将路径附加到设备字符串

mount -t ceph cephuser@.cephfs=/subvolume/dir1/dir2 /mnt/mycephfs -o secretfile=/etc/ceph/cephuser.secret

向后兼容性

支持旧语法以实现向后兼容性。

要使用内核驱动程序挂载 CephFS,请运行以下命令

mkdir /mnt/mycephfs
mount -t ceph :/ /mnt/mycephfs -o name=admin

选项 -o 后面的键值参数是 CephX 凭证。name 是挂载 CephFS 的 CephX 用户的用户名。

要挂载非默认 FS(在本例中为 cephfs2),请运行以下形式的命令。这些命令用于集群具有多个文件系统的情况

mount -t ceph :/ /mnt/mycephfs -o name=admin,fs=cephfs2

mount -t ceph :/ /mnt/mycephfs -o name=admin,mds_namespace=cephfs2

注意

选项 mds_namespace 已弃用。使用旧语法进行挂载时,请改用 fs=

卸载 CephFS

要卸载 Ceph 文件系统,请使用 umount 命令,如下例所示

umount /mnt/mycephfs

提示

执行此命令之前,请确保您不在文件系统目录内。

持久化挂载

要将 CephFS 作为内核驱动程序挂载到文件系统表中,请将以下内容添加到 /etc/fstab

{name}@.{fs_name}=/ {mount}/{mountpoint} ceph [mon_addr={ipaddress},secret=secretkey|secretfile=/path/to/secretfile],[{mount.options}]  {fs_freq}  {fs_passno}

例如

cephuser@.cephfs=/     /mnt/ceph    ceph    mon_addr=192.168.0.1:6789,noatime,_netdev    0       0

如果未指定 secretsecretfile 选项,挂载助手将尝试在其中一个已配置的密钥环中查找给定 name 的密钥。

有关 CephX 用户管理的详细信息,请参阅 用户管理,有关它识别的选项列表,请参阅 mount.ceph 手册。有关故障排除,请参阅 内核挂载调试

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入