Fuse

如何使用 fuse 驅動程序掛載 rbd 設備?

  • November 1, 2016

這是來自的後續問題: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 映像。

引用自:https://serverfault.com/questions/704504