Мне нужно «подделать» изменение в /etc/exports, чтобы выполнить mount -a. В чем проблема?

Мне нужно «подделать» изменение в /etc/exports, чтобы выполнить mount -a. В чем проблема?

Всякий раз, когда мне приходится перезагружать server1, единственный способ восстановить монтирование NFS на server2 — это изменить одно из целых чисел «fsid» в/etc/экспортыфайл на сервере 1. В противном случае,монтировать -акоманда просто зависает на сервере2.

Типичный сценарий:

Server1 перезагружен. На server1 у меня есть две строки кода в/etc/экспорты:

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=1,rw,no_root_squash,no_subtree_check,async)

Я даю следующую команду:

"exportfs -r".

На сервере2 у меня это есть/etc/fstab:

xxx.xxx.x.x:/server1_dir1/ /dir1_server2 nfs async,noatime 0 0
xxx.xxx.x.x:/server2_dir2  /dir2_server2 nfs async,noatime 0 0

Сначала я «размонтирую» старые каталоги, которые теперь имеют устаревшие дескрипторы NFS. Затем,

"mount -a"

Команда зависает. После того, как я ее убиваю,дфпоказывает, что dir1 смонтирован, а dir2 — нет.

Единственный способ заставить оба каталога смонтироваться — это изменить целое число fsid на что-то другое. Например, на server1 у нас теперь есть:

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=2,rw,no_root_squash,no_subtree_check,async)

Я изменилсяfsid=1 to =2. Я снова выпускаюэкспортфс -ркоманда, и вуаля,монтировать -акоманда работает на сервере2.

Может быть, я не понимаю, чтоfsidна самом деле так, но, очевидно, должен быть лучший способ «перемонтировать» NFS, чем каждый раз случайным образом редактировать номер fsid?

РЕДАКТИРОВАТЬ: Если у меня нетfsidвключенный в мой файл экспорта на сервере server1, он дает мне

"Warning: /mnt/ramdisk/dir1 requires fsid= for NFS export" 

И если я устанавливаю fsid=0 для обеих строк (dir1 и dir2), то точки монтирования в итоге будут такими же, как все мои файлы, которые копировались в расположение dir1! Так что, похоже, единственный способ заставить это работать — постоянно переключать целые числа fsid, несколько случайным образом.

ПРАВКА2: Я удалилfsid=0так как это "особенный", и изменил их наfsid=1иfsid=2в/etc/экспортына server1. Это, конечно, сработало (так как файл был изменен). Но сегодня пришлось просто принудительно перезагрузиться, и после (медленного) размонтирования устаревших дисков с server2,монтировать -ане удалось, как и прежде. Итак, (как и прежде), я отредактировал файл экспорта на сервере1, на этот раз,fsid=2иfsid=3,экспортфс -р, и вуаля,монтировать -аснова работает на сервере 2. Возвращаемся к исходной точке 1.

РЕДАКТИРОВАТЬ3Критическая информация: если я все отключаю контролируемым образом (т. е. server1 не «падает») и сначала отмонтирую каталоги на server2, затем перезагружу server1, ПОТОМ монтирую -a на server2, то все работает отлично. Эта проблема возникает только тогда, когда монтирования на server2 резко обрываются. Так что, я полагаю, что на server2 нужно что-то сбросить? Я знаю, что отмонтирование устаревших дескрипторов на server2 после сбоя server1 занимает много времени.

решение1

Я предполагаю, что проблема вызвана использованием fsid=0в одном из ваших экспортов.

Помните, что fsidпредназначен для уникальной идентификации устройств, когда базовый драйвер файловой системы не предоставляет свои собственные уникальные идентификаторы. И в частности, fsid=0имеетособое значение:

Для NFSv4 есть выделенная файловая система, которая является корнем всех экспортируемых файловых систем. Это указывается с помощью fsid=rootили fsid=0оба, которые означают одно и то же.

Поскольку это явно не то, что вам нужно, всегда используйте fid, отличный от 0.

Связанный контент