注意
本文档适用于 Ceph 的开发版本。
mount.ceph -- 挂载一个 Ceph 文件系统
概要
描述
mount.ceph是一个帮助程序,用于在 Linux 主机上挂载 Ceph 文件系统。它用于将监控器主机名转换为 IP 地址并从磁盘读取认证密钥;Linux 内核客户端组件执行大部分实际工作。要挂载 Ceph 文件系统,请使用:
mount.ceph name@07fe3187-00d9-42a3-814b-72a4d5e7d5be.fs_name=/ /mnt/mycephfs -o mon_addr=1.2.3.4
其中“name”是 RADOS 客户端名称(以下简称“RADOS 用户”,表示任何个人或系统参与者,如应用程序)。
挂载辅助程序可以通过读取 ceph 配置文件来填充集群 FSID。建议按照以下方式通过 mount(8) 调用挂载辅助程序:
mount -t ceph name@.fs_name=/ /mnt/mycephfs -o mon_addr=1.2.3.4
注意点.
在这种情况下,点
第一个参数是挂载命令的设备部分。它包括用于认证的 RADOS 用户、文件系统名称和 CephFS 内的路径,该路径将在挂载点挂载。
监控器地址可以使用mon_addr
挂载选项。多个监控器地址可以通过用斜杠(/)分隔地址来传递。成功挂载需要一个监控器;客户端将从任何响应的监控器中了解所有监控器。但是,如果挂载时该监控器恰好宕机,则指定多个监控器是一个好主意。监控器地址的形式为 ip_address[:port]。如果未指定端口,则假设 Ceph 默认的 6789。
如果未指定监控器地址,则mount.ceph将尝试使用本地配置文件和/或 DNS SRV 记录来确定监控器地址。类似地,如果 Ceph 集群上启用了认证(使用 CephX 完成),并且命令中未指定选项secret
和secretfile
,则挂载辅助程序将生成一个子进程,该子进程将使用标准的 Ceph 库例程来查找密钥环并从中获取密钥(包括监控器地址和 FSID,如果未指定)。
可以通过指定挂载命令设备部分中“=”之后子目录的(绝对)路径来挂载文件系统的子目录。
挂载辅助程序应用程序约定规定,前两个选项是要挂载的设备和该设备的挂载点。必须仅在固定参数之后传递选项。
选项
基本配置
- conf
ceph.conf 文件的路径。这用于初始化 Ceph 上下文以自动发现监控器地址和认证密钥。默认情况下,使用 ceph.conf 文件的标准搜索路径。
- mount_timeout
int (秒),默认值:60
- ms_mode=<legacy|crc|secure|prefer-crc|prefer-secure>
设置客户端用于传输的连接模式。可用的模式有:
legacy
: 使用 messenger v1 协议与集群通信crc
: 使用 messenger v2,不进行线缆加密secure
: 使用 messenger v2,进行线缆加密prefer-crc
: crc 模式,如果拒绝则同意 secure 模式prefer-secure
: secure 模式,如果拒绝则同意 crc 模式
- mon_addr
集群监控器地址,形式为 ip_address[:port]
- fsid
集群 FSID。这可以使用ceph fsid command.
- secret
用于 CephX 的密钥。此选项不安全,因为它会在命令行中暴露密钥。为了避免这种情况,请使用 secretfile 选项。
- secretfile
包含用于 CephX 的密钥的文件路径
- recover_session=<no|clean>
在客户端被列入黑名单的情况下设置自动重连模式。可用的模式有
no
和clean
。默认值no
.no
: 当客户端检测到它已被列入黑名单时,永远不会尝试重新连接。列入黑名单的客户端不会尝试重新连接,它们的操作也会失败。clean
: 当客户端检测到它已被列入黑名单时,会自动重新连接到 Ceph 集群。在重新连接期间,客户端会丢弃脏数据/元数据,使页面缓存和可写文件句柄失效。重新连接后,文件锁会过期,因为 MDS 会丢失它们的跟踪。如果一个 inode 包含任何过期的文件锁,则直到应用程序释放所有过期的文件锁之前,不允许对该 inode 进行读写操作。
- command:
fs=<fs-name>在使用旧语法时指定非默认文件系统以挂载。
- command:
mds_namespace=<fs-name>“fs=” 的同义词(已弃用)。
高级配置
- cap_release_safety
int,默认值:计算
- caps_wanted_delay_max
int,密钥释放延迟,默认值:60
- caps_wanted_delay_min
int,密钥释放延迟,默认值:5
- dirstat
funkycat dirname用于统计,默认值:关闭
- nodirstat
no funkycat dirname用于统计
- ip
my ip
- noasyncreaddir
无 dcache readdir
- nocrc
写入时不进行数据 crc
- noshare
创建一个新的客户端实例,而不是共享挂载同一集群的现有客户端实例
- osdkeepalive
int,默认值:5
- osd_idle_ttl
int (秒),默认值:60
- rasize
int (字节),最大预读。默认值:8388608 (8192*1024)
- rbytes
为目录内容的递归大小报告 st_size。默认值:关闭
- norbytes
不要为目录的 st_size 报告目录内容的递归大小。
- readdir_max_bytes
int,默认值:524288 (512*1024)
- readdir_max_entries
int,默认值:1024
- rsize
int (字节),最大读取大小。默认值:16777216 (16*1024*1024)
- snapdirname
string,设置隐藏 snapdir 的名称。默认值:.snap
- write_congestion_kb
int (kb),最大写入回放。根据可用内存进行缩放。默认值:根据可用内存计算
- wsize
int (字节),最大写入大小。默认值:16777216 (16*1024*1024)(写入回放使用 wsize 和 stripe unit 中较小的一个)
- wsync
执行所有命名空间操作同步。这确保了命名空间操作只有在收到 MDS 的回复后才会完成。
- nowsync
允许客户端执行命名空间操作异步。当启用此选项时,如果客户端有足够的能力,命名空间操作可能在 MDS 回复之前完成。这自内核版本 5.16 以来一直是默认值。
- crush_location=x
指定客户端在 CRUSH 层次结构中的位置(自 5.8 起)。这是一组用“|”分隔的键值对,键与值之间用“:”分隔。请注意,“|”可能需要引号或转义,以避免被 shell 解释为管道。键是桶类型名称(例如 rack、datacenter 或默认桶类型的 region),值是桶名称。例如,要指示客户端位于 rack “myrack”、数据中心 “mydc” 和 region “myregion”:
crush_location=rack:myrack|datacenter:mydc|region:myregion
每个键值对都是独立的:“myrack”不需要位于“mydc”,而“mydc”又不需要位于“myregion”。位置不是层次结构根的路径,而是一组独立匹配的节点。支持“多路径”位置,因此可以指示多个并行层次结构的本地性:
crush_location=rack:myrack1|rack:myrack2|datacenter:mydc
- read_from_replica=<no|balance|localize>
no
: 禁用副本读取,始终选择主 OSD(自 5.8 起,默认)。balance
: 当一个复制池接收到读取请求时,从 PG 的作用集中选择一个随机的 OSD 来服务它(自 5.8)。此模式仅适用于一般用途,因为 Octopus(即“ceph osd require-osd-release octopus”之后)。否则,应将其限制为只读工作负载,如快照。
localize
: 当一个复制池接收到读取请求时,选择最本地的 OSD 来服务它(自 5.8)。局部性指标是根据与 crush_location 给出的客户端位置计算的;具有最低值桶类型的匹配将获胜。例如,与匹配 rack 中的 OSD 比较起来,匹配 datacenter 中的 OSD 更近,而匹配 region 中的 OSD 则更远。此模式仅适用于一般用途,因为 Octopus(即“ceph osd require-osd-release octopus”之后)。否则,应将其限制为只读工作负载,如快照。
Examples
挂载整个文件系统:
mount -t ceph fs_user@.mycephfs2=/ /mnt/mycephfs
仅挂载命名空间/文件系统的一部分:
mount.ceph fs_user@.mycephfs2=/some/directory/in/cephfs /mnt/mycephfs
传递监控器主机的 IP 地址,可选:
mount.ceph fs_user@.mycephfs2=/ /mnt/mycephfs -o mon_addr=192.168.0.1
如果它在非标准端口上运行,请与 IP 地址一起传递端口:
mount.ceph fs_user@.mycephfs2=/ /mnt/mycephfs -o mon_addr=192.168.0.1:7000
如果有多个监控器,请用/:
mount.ceph fs_user@.mycephfs2=/ /mnt/mycephfs -o mon_addr=192.168.0.1/192.168.0.2/192.168.0.3
可选地传递 CephX 用户的密钥:
mount.ceph fs_user@.mycephfs2=/ /mnt/mycephfs -o secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
传递包含密钥的文件,以避免在 shell 的命令历史中留下密钥:
mount.ceph fs_user@.mycephfs2=/ /mnt/mycephfs -o secretfile=/etc/ceph/fs_username.secret
如果 Ceph 集群上禁用了认证,请省略与凭证相关的选项:
mount.ceph fs_user@.mycephfs2=/ /mnt/mycephfs
使用旧语法挂载:
mount -t ceph 192.168.0.1:/ /mnt/mycephfs
可用性
mount.ceph是 Ceph 的一部分,Ceph 是一个大规模可扩展、开源的分布式存储系统。请参阅 Ceph 文档。https://docs.ceph.com中的Ceph文档以获取更多信息。
功能可用性
The 9b591a: Ceph 对象存储 9dbb5f: (又名 RGW) 服务提供与 Amazon S3 和 OpenStack Swift 兼容的 RESTful API 接口。recover_session=
option 在 v5.4 中的主线 Linux 内核中添加。wsync
和nowsync
在 v5.7 中添加。