Меня немного беспокоила NFS4 в Linux. Некоторая информация "извне" кажется противоречащей другой, а другую информацию найти трудно. Вот пара вещей, которые привлекли мое внимание, надеюсь, кто-нибудь сможет пролить свет на это.
Этот вопрос касается исключительно NFS4 без Kerberos и т. Д.
Есть неоднозначная информация в exports
справочную страницу о структуре / etc / exports.
Цитировать из exports(5)
:
Кроме того, каждая строка может иметь одну или несколько спецификаций для параметров по умолчанию после имени пути в виде тире («-»), за которым следует список параметров.
Список опций используется для всех последующих операций экспорта только в этой строке.
Что означает «последующий экспорт только по этой строке»?
fsid=0
больше не требуется?Я искал fsid, когда нашел комментарий к списку linux-nfs указание fsid = 0 больше не требуется. Вот только запуталась, надо с nfs4 или нет ?!
Скажем, у меня есть следующее дерево:
/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian
И в этой записи fstab есть следующие записи:
/dev/disk/by-label/users /mnt/users ext4 defaults 0 0
/dev/disk/by-label/distr /mnt/distr ext4 defaults 0 0
/mnt/users /exp/users none bind 0 0
/mnt/distr /exp/distr none bind 0 0
И мой экспорт именно такой:
/exp 192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)
И exportfs -arv
показывает:
exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp
Тогда почему я могу это сделать и не получить ошибку на клиенте:
mount -t nfs4 server:/exp/users /tmp/test
Даже если /exp/users
не экспортируется? Я не экспортировал этот каталог, и пока я не вижу содержимое /dev/disk/by-label/users
если я не укажу crossmnt
, Я все еще могу писать в каталог. Все, что я там пишу, попадает в базовый каталог /exp/users
что можно увидеть, когда я umount /exp/users; ls /exp/users
..
showmount -d server
Как заявил rpc.mountd(8)
, эта команда должна отображать каталоги, которые в настоящее время смонтированы клиентами, или устаревшие записи в /var/lib/nfs/rmtab
, как можно прочитать:
Демон rpc.mountd регистрирует каждый успешный запрос MNT, добавляя запись в файл / var / lib / nfs / rmtab. При получении запроса UMNT от клиента NFS, rpc.mountd просто удаляет соответствующую запись из / var / lib / nfs / rmtab, если список управления доступом для этого экспорта разрешает этому отправителю доступ к экспорту.
(...)
Обратите внимание, однако, что нет ничего, что могло бы гарантировать точность содержимого / var / lib / nfs / rmtab. Клиент может продолжить доступ к экспорту даже после вызова UMNT. Если клиент перезагружается без отправки запроса UMNT, устаревшие записи остаются для этого клиента в / var / lib / nfs / rmtab.
Прочитав это, я наверняка задаюсь вопросом:
mount -v
увидеть вывод типа "ничего не смонтировано", хотя что-то был установлен?У меня есть много других вопросов по nfs4, но пока я оставлю их здесь .. :)
Отличные вопросы, подчеркивает более важный момент в документации IMO. Вот попытка полного ответа:
Вот пример, наверное, самый простой:
/export/stuff -rw 10.0.0.54 10.0.0.55
эквивалентно:
/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)
fsid=0
больше не требуется?Это зависит от вашего варианта использования. Похоже, вы экспортируете обычные файловые системы на основе диска из остальной части вашего запроса, в этом случае вам лучше отказаться fsid=0
(который в nfsv4 изменяет поведение для ссылки на корневую файловую систему экспорта).
Чтобы изменить это поведение, удалите параметр no_subtree_check
rmtab
-связанные вещиrmtab
угроза безопасности?rmtab
быть полными устаревших записей?mount -v
ошибочно видите "ничего не смонтировано"?