Назад | Перейти на главную страницу

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

Каждый раз, когда мне нужно перезагружать server1, единственный способ восстановить монтирование NFS на server2 - это изменить одно из целых чисел "fsid" в / etc / exports файл на server1. В противном случае mount -a команда просто зависает на server2.

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

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

/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".

На server2 у меня это в / и т.д. / 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"

Команда зависает. После того, как я его убью, df показывает, что 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 до = 2. Я снова выдаю exportfs -r команда, и вуаля, mount -a команда работает на server2.

Возможно я не понимаю, что 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 / exports на server1. Это, конечно, сработало (поскольку файл был изменен). Но сегодня просто пришлось принудительно перезагрузиться, и после (медленно) размонтирования устаревших дисков с server2, mount -a не удалось, как и раньше. Итак, (как и раньше), я отредактировал файл экспорта на server1, на этот раз, fsid = 2 и fsid = 3, exportfs -r, и вуаля, mount -a снова работает на server2. Вернемся к квадрату 1.

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

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

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

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

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