如何使用 fuse 驅動程序掛載 rbd 設備?
這是來自的後續問題:How do I mount an rbd device from fstab我問過一段時間。
如何使用 fuse 驅動程序掛載 rbd 設備?(如果不打開很多權限,我就無法使用 docker 的核心驅動程序)
據我所知,我在 fstab 文件中創建了一個條目,如下所示:
id=client.admin /mnt fuse.ceph 0 0
但是我看不到如何指定 rbd 塊設備。如果我執行這個掛載,我會在 /mnt/mariadb1 中看到一個文件(mariadb1 是我使用 rbd create –size 250000 mariadb1 創建的 rbd 設備的名稱)
我如何實際將其掛載為文件系統?
注意:是的,我真的很想使用核心 rbd 驅動程序並從主機掛載它,然後將它公開給我的 docker 容器,但是….我正在使用 CoreOS。
如果可以在主機掛載命名空間中掛載文件系統,我會接受,但還沒有看到前進的方向。我管理的最好的方法是從具有很多特權的容器中安裝它。但我不能與 –volumes-from 共享該容器。我真的不喜歡讓這個特定的容器完全訪問主機。
我不得不假設您在談論這個時指的是 RBD-fuse,因為 ceph-fuse 是一個 cephfs 實用程序,與 RBD 無關。
但是,您的問題的前提被進一步打破,因為您對實際操作的理解
rbd-fuse
是不完整的。
librbd
為您提供儲存在 Ceph 中的圖像文件。大多數人(通過rbd map
)使用該映像以 /dev/rbd* 的形式提供偽塊設備。唯一的區別
rbd-fuse
是它公開了自己的偽文件系統,並將圖像作為普通的 POSIX 兼容文件提供,而不是塊設備。因此
rbd-fuse
,對圖像文件的實際內容沒有更多的了解rbd map
。當呼叫
rbd-fuse mountpoint
池內的任何 RBD 圖像時,將在mountpoint
. 它需要命令選項,特別是-p
如果您在 ceph 中使用不同的池rbd
而-c
不是/etc/ceph/ceph
. 您還可以使用-r
.您如何處理這些文件取決於您自己。他們可以將文件系統寫入它們(注意 Linux 會抱怨,因為它們不是專業的塊設備)。如果存在文件系統,您可以將它們掛載為循環設備。
$ rbd 創建測試 # mkdir -p /rbd_images # rbd-fuse /rbd_images # mkfs /rbd_images/test # mkdir -p /mnt/rbd_test # 掛載 /rbd_images/test /mnt/rbd_test
應該呈現如下內容:
$掛載 rbd-fuse on /rbd_images type fuse.rbd-fuse (rw,nosuid,nodev) /rbd_images/rbd_test on /mnt/rbd_test type ext4 (rw)
不過,這是否是正確的方法(供您使用)是另一回事。
krbd
但是,它可以讓您訪問您的系統版本不支持的 RBD 映像。