Я использую autofs для монтирования некоторых файлов iso в папке / mnt / iso:
Fedora-13-x86_64-DVD.iso
Fedora-14-x86_64-DVD.iso
Fedora-15-x86_64-DVD.iso
Autofs работает нормально, и я могу видеть содержимое файлов iso:
# ls /mnt/iso/fedora.13/
# ls /mnt/iso/fedora.14/
# ls /mnt/iso/fedora.15/
После завершения тестирования autofs. Я принудительно размонтирую все папки iso:
# umount -l /mnt/iso/*
Затем я экспортирую / mnt / iso в / etc / exports:
/mnt/iso 192.168.0.0/24(ro,insecure,crossmnt,all_squash)
Служба NFS тоже работает нормально. Я могу смонтировать / mnt / iso с другой машины через клиент nfs:
# mount -t nfs4 <nfs-server>:/mnt/iso /mnt
Я вижу все смонтированные iso в папке / mnt /:
# ls /mnt
dr-xr-xr-x 15 nobody nobody 4096 2011-06-11 10:23 .
drwxr-xr-x 24 root root 4096 2011-02-08 08:45 ..
drwxr-sr-x 7 nobody nobody 4096 2010-05-13 09:06 fedora.13
drwxr-sr-x 7 nobody nobody 4096 2010-10-22 02:32 fedora.14
drwxrwsr-x 7 nobody nobody 4096 2011-05-14 03:50 fedora.15
Однако, когда я пытаюсь перечислить содержимое каждой папки:
# ls /mnt/fedora.13
На экране ничего не отображается. Используя такую команду
# ls /mnt/fedora.13/*
Подсказка
ls: cannot access /mnt/fedora.13/*: No such file or directory
Единственный случай, когда мне удается перечислить содержимое папок iso на клиентской машине nfs, - это следующие шаги:
Размонтируйте общий ресурс nfs с клиентской машины:
# umount /mnt
использование ls для отображения всех поддеревьев / mnt / iso на сервере nfs:
# ls /mnt/iso/*
Autofs автоматически смонтирует все файлы iso.
Смонтируйте папку nfs на клиентской машине:
# mount -t nfs4 <nfs-server>:/mnt/iso /mnt
Перечислите поддеревья / mnt:
# ls /mnt/*
После этого вы можете увидеть все содержимое на клиентской машине nfs.
Однако это противоречит цели autofs, поскольку мне нужно сначала показать содержимое на машине autofs.
Есть у кого-нибудь идеи? Я использую следующее:
Я думаю, что у вас есть проблема с тележкой до коня в том, что когда вы экспортируете файловую систему с помощью NFS, она фиксируется на директории источника. Вы пытаетесь даже не иметь доступного исходного каталога в то время и помещать что-то туда только позже.
Это не сработает, потому что как только вы дадите NFS дескриптор для чего-то, что вы хотите поделиться, он всегда будет делиться этим, даже если он окажется под слоем монтировок.
Допустим, вы создали каталог с файлом 'frog' и экспортируете его с помощью nfs:
[server] $ mkdir /mnt/test && touch /mnt/test/frog
[server] $ echo '/mnt/test *(ro)' >> /etc/exports
[server] $ exportfs -a
Затем вы монтируете его где-нибудь на клиенте, как и ожидалось, вы увидите файловую лягушку:
[client] $ mkdir /mnt/test
[client] $ mount -t nfs server:/mnt/test /mnt/test
[client] $ ls $/mnt/test
frog
Теперь предположим, что вы монтируете что-то еще поверх этой папки на сервере:
[server] $ mkdir /mnt/test2 && touch /mnt/test2/fish
[server] $ mount -o bind /mnt/test2 /mnt/test
[server] $ ls /mnt/test
fish
Стильный. Но что обслуживает nfs?
[client] $ ls /mnt/test
frog
Вы даже не можете добраться до этой файловой лягушки на сервере, потому что поверх нее смонтирована другая вещь, но NFS обслуживает этот нижний уровень!
Короче говоря, если вы хотите экспортировать файловые системы через NFS, вам нужно будет правильно их смонтировать во время запуска и экспорта NFS, и им нужно будет остаться. Экспорт файловых систем, которые монтируются с помощью autofs, никогда не будет работать должным образом. Вам нужно будет постоянно смонтировать эти ISO, чтобы экспортировать их через NFS.