这是一个后续问题: 我如何从fstab挂载一个rbd设备 ?
如何使用保险丝驱动程序安装rbd设备? (我不能使用docker的内核驱动程序,而没有打开许多权限)
据我可以告诉我创build一个入口到fstab文件中,如下所示:
id=client.admin /mnt fuse.ceph 0 0
但是我看不到如何指定rbd块设备。 如果我运行这个挂载,我在/ mnt / mariadb1中看到一个文件(mariadb1是用rbd创build的rbd设备的名称–size 250000 mariadb1)
我如何真正将其挂载为文件系统?
注意:是的,我真的想使用内核rbd驱动程序,并从主机上安装它,然后将其暴露给我的docker容器,但….我使用的是CoreOS。
如果可以在主机挂载命名空间中挂载文件系统,我可以解决这个问题,但是还没有看到前进的方向。 我已经pipe理的最好的方法是从一个有很多权限的容器中挂载它。 但是我不能用–volumes-from来分享那个容器。 我真的不喜欢有这个特定的容器与主机的完全访问权限。
我不得不假设,在谈到这个问题时你指的是RBD-fuse,因为ceph-fuse是一个cephfs工具,与RBD无关。
然而,你的问题的前提进一步被破坏,因为你对rbd-fuse
实际所做的理解是不完整的。
librbd
为您提供一个存储在Ceph中的图像文件。 大多数人(通过rbd map
)使用该映像以/ dev / rbd *的forms提供伪块设备。
与rbd-fuse
唯一的不同之处在于它暴露了自己的伪文件系统,并提供图像作为普通的POSIX兼容文件而不是块设备。
因此, rbd-fuse
对于图像文件的实际内容没有比rbd map
更多的知识。
调用rbd-fuse mountpoint
,池中的任何RBD映像都将在mountpoint
可见。 它采用命令选项,特别是-p
如果在除了rbd
其他池中使用另一个池,并且如果使用/etc/ceph/ceph
rbd
的其他configuration文件,则使用-c
。 您还可以使用-r
来显示个别图像。
你对这些文件做什么取决于你。 他们可以写一个文件系统(注意Linux会发牢骚,因为它们不是专门的块设备)。 如果存在文件系统,则可以将它们挂载为循环设备。
$ rbd创buildtesting #mkdir -p / rbd_images #rbd-fuse / rbd_images #mkfs / rbd_images / test #mkdir -p / mnt / rbd_test #mount / rbd_images / test / mnt / rbd_test
应该按照如下方式提出一些事情:
$ mount rbd-fuse on / rbd_imagestypesfuse.rbd-fuse(rw,nosuid,nodev) / rbd_images / rbd_test on / mnt / rbd_testtypesext4(rw)
这是否是正确的方式(为了您的使用)来做这件事是另一回事。 但是,它可以让您访问RBD图像,否则系统krbd
版本将不支持RBD图像。
ceph.fuse文件系统types(及其手动等效的ceph-fuse)用于挂载cephfs卷。 这些与RADOS块设备(RBD)有根本的不同。
一方面,RBD代表主机系统可以在其上运行文件系统的块设备,就像物理块设备一样。 Ceph不知道RBD内部文件系统的结构。 另一方面,cephfs本身就是一个文件系统,即cephpipe理单个文件和元数据。 其中一个后果就是你一般只能安装一次RBD,因为访问同一块设备的两台主机没有任何规定来同步对它的访问,而你可以像一个networking文件系统一样多次挂载一个cephfs。