如何使用保险丝驱动程序安装rbd设备?

这是一个后续问题: 我如何从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。