Это дополнительный вопрос от: Как смонтировать устройство rbd из fstab Который я спросил некоторое время назад.
Как смонтировать устройства rbd с драйвером предохранителя? (Я не могу использовать драйвер ядра из докера, не открывая множество привилегий)
Насколько я могу судить, я создаю запись в файле fstab примерно так:
id=client.admin /mnt fuse.ceph 0 0
Однако я не вижу, как указать блочное устройство rbd. Если я запустил это монтирование, я увижу файл в / mnt / mariadb1 (mariadb1 - это имя моего устройства rbd, созданного с помощью rbd create --size 250000 mariadb1)
Как мне на самом деле смонтировать его как файловую систему?
Примечание: Да, я бы действительно хотел использовать драйвер ядра rbd и смонтировать его с хоста, а затем открыть его в моем контейнере докеров, но ... Я использую 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 create test # 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_images type fuse.rbd-fuse (rw,nosuid,nodev) /rbd_images/rbd_test on /mnt/rbd_test type ext4 (rw)
Будь то верный способ (для вашего использования) сделать это, хотя это другое дело. Однако он может предоставить вам доступ к изображениям RBD, которые в противном случае не поддерживались бы вашими системами. krbd
версия.
Тип файловой системы ceph.fuse (и его ручной эквивалент ceph-fuse) используется для монтирования томов cephfs. Они принципиально отличаются от блочных устройств RADOS (RBD).
С одной стороны, RBD представляет собой блочное устройство, на котором хост-система может запускать файловую систему, как это было бы с физическим блочным устройством. Ceph ничего не знает о структуре файловой системы внутри RBD. С другой стороны, cephfs - это самостоятельная файловая система, то есть ceph управляет отдельными файлами и метаданными. Одним из последствий является то, что вы обычно можете смонтировать RBD только один раз, потому что два хоста, обращающиеся к одному и тому же блочному устройству, не имеют никаких средств для синхронизации доступа к нему, тогда как вы можете смонтировать cephfs много раз, как сетевая файловая система.