Размонтировать привязку устаревшей NFS

У меня проблема с удалением монтировок, созданных с mount -o bind из локально смонтированной папки NFS. Предположим следующую структуру монтирования:

NFS смонтированный каталог:

$ mount -o rw,soft,tcp,intr,timeo=10,retrans=2,retry=1 \
 10.20.0.1:/srv/source /srv/nfs-source

Связанный каталог:

$ mount -o bind /srv/nfs-source/sub1 /srv/bind-target/sub1

Что приводит к этой карте горы

$ mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
# ...
10.20.0.1:/srv/source on /srv/nfs-source type nfs (rw,soft,tcp,intr,timeo=10,retrans=2,retry=1,addr=10.20.0.100)
/srv/nfs-source/sub1 on /srv/bind-target/sub1 type none (rw,bind)

Если сервер (10.20.0.1) понижается (например, ifdown eth0), ручки становятся несвежими, что ожидается.

Теперь я могу отменить монтирование NFS с силой

$ umount -f /srv/nfs-source

Это занимает несколько секунд, но работает без проблем. Тем не менее, я не могу размонтировать связанный каталог в /srv/bind-target/sub1, Вынужденный umount результаты в:

$ umount -f /srv/bind-target/sub1
umount2: Stale NFS file handle
umount: /srv/bind-target/sub1: Stale NFS file handle
umount2: Stale NFS file handle

Вот след http://pastebin.com/ipvvrVmB

Я пробовал предварительно размонтировать подкаталоги, найти любые процессы, имеющие доступ к чему-либо внутри NFS или bind mounts (их нет).

lsof также жалуется:

$ lsof -n
lsof: WARNING: can't stat() nfs file system /srv/nfs-source
      Output information may be incomplete.
lsof: WARNING: can't stat() nfs file system /srv/bind-target/sub1 (deleted)
      Output information may be incomplete.
lsof: WARNING: can't stat() nfs file system /srv/bind-target/
      Output information may be incomplete.

Я пытался с последними стабильными ядрами Linux 3.2.17, 3.2.19 и 3.3.8 (не могу использовать 3.4.x, потому что нужен патч grsecurity, который пока не поддерживается - grsecurity не исправлен в тестах выше!).

У меня nfs-utils версии 1.2.2 (стабильная версия Debian).

Кто-нибудь есть идеи, как я могу либо:

  • заставить демонтировать другой путь? (любая грязная уловка приветствуется, потеря данных или повреждение незначительны в этот момент)
  • использовать что-то другое вместо mount -o bind? (нельзя использовать программные ссылки, потому что смонтированные каталоги будут использоваться в chroot; bindfs через FUSE далеко до медленного будет вариант)

Спасибо пол

Обновление 1

  • С 2.6.32.59 размонтирование (устаревших) подмонтирований работает просто отлично. Кажется, это ошибка регрессии ядра.
  • Выше тесты, где с NFSv3. Дополнительные тесты с NFSv4 не показали изменений.

Обновление 2

  • Мы протестировали несколько ядер 2.6 и 3.x и теперь уверены, что это было введено в 3.0.x. Мы заполним отчет об ошибке, надеюсь, они это выяснят.

3 ответа

Что-то, что работало для меня в моей конкретной установке, чтобы заставить работать клинтов, было так:

У меня было дерево autofs с смонтированным nfs fs в / fs / doom и другим, смонтированным в /fs/doom/localvol5. После перезагрузки сервера было возможно получить доступ к / fs / doom и /fs/doom/localvol5/sub, но / fs / doom / localvol5 сам дал ESTALE для всего, включая umount -f, -l, -fl.

Чтобы клиент работал без перезагрузки, я переместил всю иерархию / fs / doom в другое дерево:

    mkdir /dev/shm/garbage-mount
    mount --move /fs/doom /dev/shm/garbage-mount

Это переместило все дерево, и, очевидно, работает только потому, что / fs / doom был доступен и точка монтирования. Я не могу размонтировать ни одну из этих файловых систем, но я смог перезапустить autofs и получить новое и работающее дерево.

Это должно работать с любым деревом autofs, имеющим неправильно работающие подкаталоги nfs.

Надеюсь, это поможет.

Вы можете просто смонтировать удаленную файловую систему в /srv/bind-target/sub1.

Если вы ожидаете такой уровень недоступности, вам также следует указать опцию синхронизации (хотя, возможно, по умолчанию) для NFS, чтобы снизить вероятность неписанных изменений на вашем клиенте.

$ umount -l

Работал на меня, прежде чем никто из них не работал

$ mount -f ...
Другие вопросы по тегам