Назад | Перейти на главную страницу

Как смонтировать одну из нескольких файловых систем в кластере ceph?

Ceph теперь включает (экспериментальную) поддержку нескольких файловых систем в одном кластере хранения; но параметры монтирования, похоже, не позволяют указать, какую файловую систему монтировать.

Я настроил две тестовые файловые системы, каждая со своими mds и резервными пулами; но не могу заставить клиентский узел смонтировать их обоих; поскольку параметры монтирования указывают только монитор, что одинаково для обоих.

root@ws:~# ceph status
cluster 92ed87a5-559c-4b79-90c7-6b381374d431
 health HEALTH_OK
 monmap e7: 1 mons at {mon-jacopo=10.0.1.22:6789/0}
        election epoch 17, quorum 0 mon-jacopo
  fsmap e59: burninatorfs-1/1/1 up mediafs-1/1/1 up {[burninatorfs:0]=mds-jacopo=up:active,[mediafs:0]=mds-media=up:active}
 osdmap e404: 2 osds: 2 up, 2 in
        flags sortbitwise
  pgmap v36088: 288 pgs, 5 pools, 48411 bytes data, 40 objects
        10315 MB used, 5540 GB / 5554 GB avail
             288 active+clean

Я не могу найти никаких вариантов для fstab, которые позволили бы мне смонтировать один ceph fs или другой. Результатом любой комбинации путей монтирования и опций, которые я пробовал, был неизвестный выбор двух файловых систем, монтируемых в обеих точках.

root@jacopo:/media# cat /etc/fstab | grep ceph
mon-jacopo.burninator.net:/ /media/burninator   ceph        noshare,noatime,_netdev,name=burninator,secret=XXXX==   0 0
mon-jacopo.burninator.net:/ /media/media    ceph        noshare,noatime,_netdev,name=media,secret=YYYY==    0 0

Как ни странно, даже когда я изолирую разрешения для обеих файловых систем по разным идентификаторам и секретам, они монтируются так, как будто они одинаковы.

client.burninator
    key: XXXX==
    caps: [mds] allow rw
    caps: [mon] allow r
    caps: [osd] allow rw pool=burninatorfs-data,allow rw pool=burninatorfs-metadata
client.media
    key: YYYY==
    caps: [mds] allow rw
    caps: [mon] allow r
    caps: [osd] allow rw pool=mediafs-data,allow rw pool=mediafs-metadata

Изменения разрешены для любой файловой системы, которая фактически смонтирована (не нашел способа определить это) - и обе точки монтирования отражают результат, как если бы это было монтирование с привязкой. Я почти уверен, что последняя часть - это ошибка, поскольку клиентское соединение не должно использоваться совместно (noshare параметр mount), а учетным данным монтирования должно быть разрешено изменять самое большее монтирование, которое указывает на «правильную» файловую систему.

root@jacopo:~# mount | grep ceph
mon-jacopo.burninator.net:/ on /media/burninator type ceph (rw,noatime,name=burninator,secret=<hidden>,noshare,acl,_netdev)
mon-jacopo.burninator.net:/ on /media/media type ceph (rw,noatime,name=media,secret=<hidden>,noshare,acl,_netdev)
root@jacopo:~# cd /media
root@jacopo:/media# find burninator/
burninator/
burninator/foo
root@jacopo:/media# find media/
media/
media/foo
root@jacopo:/media# mkdir media/newdir
root@jacopo:/media# touch media/newdir/1
root@jacopo:/media# touch media/newdir/2
root@jacopo:/media# rm burninator/newdir/1
root@jacopo:/media# find burninator/
burninator/
burninator/newdir
burninator/newdir/2
burninator/foo
root@jacopo:/media# find media/
media/
media/newdir
media/newdir/2
media/foo
root@jacopo:/media# 

Все узлы работают под управлением Ubuntu 16.04 LTS с ядром 4.4.0-45-generic или рядом с ним, версия ceph 10.2.2 (45107e21c568dd033c2f0a3107dec8f0b0e58374), установленная ceph-deploy 1.5.32.

Читая это совершить, вы можете использовать опцию монтирования mds_namespace.

# mount -t ceph -o mds_namespace=burninatorfs 10.0.0.1:/ /mnt/burninatorfs
# mount -t ceph -o mds_namespace=mediafs 10.0.0.1:/ /mnt/mediafs