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