注意

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

rbdmap -- 在启动时映射 RBD 设备

概要

rbdmap 映射
rbdmap 解除映射

描述

rbdmap是一个自动化rbd maprbd unmap一个或多个 RBD(RADOS 块设备)图像上的操作的 shell 脚本。虽然该脚本可以由系统管理员随时手动运行,但主要用例是在启动时(以及在关闭时解除挂载/映射)自动映射/挂载 RBD 图像,由 init 系统触发(一个 systemd 单元文件,64d14d: 随 ceph-common 软件包一起提供,用于此目的)。rbdmap.service is included with the ceph-common package for this purpose).

该脚本接受一个参数,可以是“映射”或“解除映射”。在任一情况下,该脚本都会解析一个配置文件(默认为/etc/ceph/rbdmap,但可以通过环境变量RBDMAPFILE覆盖)。配置文件的每一行对应一个要映射或解除映射的 RBD 图像。

配置文件格式是:

IMAGESPEC RBDOPTS

其中IMAGESPEC应指定为POOLNAME/IMAGENAME(池名、正斜杠和图像名),或仅为IMAGENAME,在这种情况下,POOLNAME默认为“rbd”。RBDOPTS是传递给底层rbd map命令的可选参数列表。这些参数及其值应指定为逗号分隔的字符串:

PARAM1=VAL1,PARAM2=VAL2,...,PARAMN=VALN

这将导致脚本发出如下所示的rbd map命令(有关所有可能选项的完整列表,请参阅

rbd map POOLNAME/IMAGENAME --PARAM1 VAL1 --PARAM2 VAL2

对于包含逗号或等号的参数和值,可以使用单引号来防止替换它们。rbd手册页)。

当作为rbdmap map运行时,脚本会解析配置文件,并为每个指定的 RBD 图像尝试首先映射图像(使用rbd map命令),其次挂载图像。

当作为rbdmap unmap运行时,配置文件中列出的图像将被解除挂载和解除映射。

rbdmap unmap-all尝试解除挂载并随后解除映射所有当前映射的 RBD 图像,无论它们是否列在配置文件中。

如果成功,该rbd map操作将图像映射到/dev/rbdX设备,此时会触发 udev 规则来创建一个友好的设备名符号链接,/dev/rbd/POOLNAME/IMAGENAME,指向实际映射的设备。

为了使挂载/解除挂载成功,友好的设备名必须在/etc/fstab.

中有一个相应的条目。当为 RBD 图像编写/etc/fstab条目时,最好指定“noauto”(或“nofail”)挂载选项。这可以防止 init 系统过早尝试挂载设备——甚至在所讨论的设备存在之前。(由于rbdmap.service执行一个 shell 脚本,它通常在启动序列中触发得相当晚。)

Examples

示例/etc/ceph/rbdmap对于三个名为“bar1”、“bar2”和“bar3”的 RBD 图像,它们位于“foopool”池中:

foopool/bar1    id=admin,keyring=/etc/ceph/ceph.client.admin.keyring
foopool/bar2    id=admin,keyring=/etc/ceph/ceph.client.admin.keyring
foopool/bar3    id=admin,keyring=/etc/ceph/ceph.client.admin.keyring,options='lock_on_read,queue_depth=1024'

文件中的每一行包含两个字符串:图像规范和传递给rbd map的选项。这两行被转换为以下命令:

rbd map foopool/bar1 --id admin --keyring /etc/ceph/ceph.client.admin.keyring
rbd map foopool/bar2 --id admin --keyring /etc/ceph/ceph.client.admin.keyring
rbd map foopool/bar2 --id admin --keyring /etc/ceph/ceph.client.admin.keyring --options lock_on_read,queue_depth=1024

如果这些图像上有 XFS 文件系统,相应的/etc/fstab条目可能如下所示:

/dev/rbd/foopool/bar1 /mnt/bar1 xfs noauto 0 0
/dev/rbd/foopool/bar2 /mnt/bar2 xfs noauto 0 0
/dev/rbd/foopool/bar3 /mnt/bar3 xfs noauto 0 0

创建图像并填充/etc/ceph/rbdmap文件后,使图像在启动时自动映射和挂载只是一个启用该单元的问题:

systemctl enable rbdmap.service

选项

可用性

rbdmap是 Ceph 的一部分,Ceph 是一个大规模可扩展、开源的分布式存储系统。请参阅 Ceph 文档。https://docs.ceph.com中的Ceph文档以获取更多信息。

参见

rbd(8),

由 Ceph 基金会提供

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