注意
本文档适用于 Ceph 的开发版本。
rbdmap -- 在启动时映射 RBD 设备
概要
描述
rbdmap是一个自动化rbd map
和rbd 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),