ФАКТЫ
Ранее работающий файл / etc / exports, отлично работающий на Debian, не работает должным образом на Ubuntu. Я могу экспортировать каталог верхнего уровня; клиенты могут монтировать его и видеть один уровень каталога вниз; но они не могут видеть другие подкаталоги, и они не могут монтировать подкаталоги.
DISCUSSION
Во-первых, что-то, что работает немного:
/archive 192.168.0.0/255.255.255.0(fsid=root,crossmnt,rw,sync,no_root_squash,no_subtree_check)
fsid = root является обязательным, видимо - не так. Debian - и crossmnt есть для тестирования.
Я могу монтировать / архивировать на клиенте. Я могу спуститься в / archive / dir1. Однако, когда клиенты пытаются прочитать каталог / архив / dir1, каталог отображается как пустой.
Далее я попробую двухстрочную версию / etc / exports:
/archive 192.168.0.0/255.255.255.0(fsid=root,crossmnt,rw,sync,no_root_squash,no_subtree_check)
/archive/dir1/dir2/dir3 192.168.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)
Первая строка такая же, как и ранее, а вторая строка экспортирует подкаталог как отдельный объект. Опять же, это прекрасно работает при экспорте из Debian.
На этом этапе все попытки монтировать / архив / dir1 / dir2 / dir3 терпят неудачу. На клиенте Debian клиент пытается использовать версию NFS 4.2, жалобы на устаревший дескриптор файла, возвращается к версии 3 и циклически работает на версии 3 бесконечно.
На клиенте Ubuntu попытка монтировать с ошибкой «Stale file handle» с использованием NFS версии 4; возвращается к версии 3 и циклам между протоколами 6 и 17; и в конечном итоге не удается.
Обратите внимание: * Все клиенты находятся за одним и тем же брандмауэром. * В машине нет внутреннего брандмауэра (например, ufw отключен или выключен)
rpcinfo на сервере :
# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 51505 mountd
100005 1 tcp 33248 mountd
100005 2 udp 59490 mountd
100005 2 tcp 46113 mountd
100005 3 udp 59750 mountd
100005 3 tcp 38367 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049
100227 3 tcp 2049
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049
100227 3 udp 2049
100021 1 udp 55501 nlockmgr
100021 3 udp 55501 nlockmgr
100021 4 udp 55501 nlockmgr
100021 1 tcp 37597 nlockmgr
100021 3 tcp 37597 nlockmgr
100021 4 tcp 37597 nlockmgr
rpcinfo на клиенте:
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049
100227 3 tcp 2049
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049
100227 3 udp 2049
100021 1 udp 56523 nlockmgr
100021 3 udp 56523 nlockmgr
100021 4 udp 56523 nlockmgr
100021 1 tcp 37425 nlockmgr
100021 3 tcp 37425 nlockmgr
100021 4 tcp 37425 nlockmgr
100024 1 udp 39290 status
100024 1 tcp 37851 status
100005 1 udp 52528 mountd
100005 1 tcp 43547 mountd
100005 2 udp 36593 mountd
100005 2 tcp 34609 mountd
100005 3 udp 42349 mountd
100005 3 tcp 45613 mountd
Наконец,
RPCMOUNTDOPTS="--manage-gids"
в файле / etc / default / nfs-kernel-server [ ! d14]
EDIT
Возможным симптомом является то, что / var / lib / nfs / rmtab не обновляется. Я ожидаю, когда nfs-kernel-server будет остановлен, rmtab будет обновлен; или когда я экспортирую файловые системы (exportfs -ua); или когда я размонтирую клиента. Вместо этого rmtab продолжает сохранять устаревшую информацию.
ACTIONS
Я хотел бы предложить предложения по отладке этой проблемы.
EDIT
Еще несколько точек:
Я проверил списки ACL (не заданы) и разрешения файлов, и они выглядят правильно. Даже после холодного отключения клиента и сервера, выполненного по другим причинам, я по-прежнему получаю ошибки «устаревшего файла». Если я включу rpcdebug для поиска NFS-proc, я вижу жалобу на отсутствие обратного пути к клиенту Linux NFSv4.2, но эта ошибка не появляется, например, для клиентов MacOS или Ubuntu.
Я проверил списки ACL (не заданы) и разрешения файла, и они выглядят корректно.не работает.
Резюме: эта проблема остается неразрешимой, и IMO - это не простая проблема с разрешениями - если только мне не хватает настроек где-либо или даже всей программы или файла конфигурации.
После обширных проб и ошибок я обнаружил, что, по-видимому, является причиной неудачи. Глядя на /archive, я заметил, что у меня есть подкаталог с тем же именем, то есть /archive/arhive.
Когда я удалил /archive/archive, мои проблемы были остановлены по большей части. Основываясь на содержании и разрешениях того, что я видел, экспорт /archive фактически экспортировал /archive/archive.
Дальше: Дальше: я заметил, что при экспорте /archive клиент монтируется как NFS версии 4. Когда я монтирую подкаталог, а именно /archive/dir1/dir2/dir3, этот подкаталог (тот же диск и, следовательно, одна и та же файловая система) монтируется как версия 3! Я все еще гоняюсь за этим, но в то же время я бегу.
Если этот «подкаталог с тем же именем вызывает плохое монтирование» требует отчета об ошибке, я могу воспроизвести это по своему желанию и записать его.
После обширных проб и ошибок я обнаружил, что, по-видимому, является причиной неудачи. Глядя на /archive, я заметил, что у меня есть подкаталог с тем же именем, то есть /archive/arhive.
Когда я удалил /archive/archive, мои проблемы были остановлены по большей части. Основываясь на содержании и разрешениях того, что я видел, экспорт /archive фактически экспортировал /archive/archive.
Дальше: Дальше: я заметил, что при экспорте /archive клиент монтируется как NFS версии 4. Когда я монтирую подкаталог, а именно /archive/dir1/dir2/dir3, этот подкаталог (тот же диск и, следовательно, одна и та же файловая система) монтируется как версия 3! Я все еще гоняюсь за этим, но в то же время я бегу.
Если этот «подкаталог с тем же именем вызывает плохое монтирование» требует отчета об ошибке, я могу воспроизвести это по своему желанию и записать его.