Предотвращение разрыва соединения NFS от зависания клиентской системы

21

У нас есть общий ресурс NFS 4, разделяющий том между несколькими серверами (NFS-сервер и все клиенты Debian 8). Недавно у нас были некоторые проблемы, когда перебои в сети приводили к зависанию клиентских систем.

Наши параметры NFS были минимальными, просто rw(и так по умолчанию hard, fgи т. Д.).

Сейчас я экспериментирую с этими параметрами, но не получаю ожидаемого поведения: rw,soft,bg,retrans=6,timeo=150

(Я увеличил ретранс, чтобы компенсировать некоторый мягкий риск)

Процедура, которой я следую, чтобы проверить это:

  • Загрузочная машина
  • cd в /mnt/mountpoint
  • Проверьте соединение NFS в порядке
  • cd /
  • убить сеть ifdown eth0
  • cd в /mnt/mountpoint
  • ls

В этот момент командная строка зависает, и я не могу ее прервать. Через некоторое время сообщение «nfs: server [servername] не отвечает, время ожидания истекло», которое, кажется, повторяется раз в минуту (неопределенно).

Что бы я хотел / ожидал, чтобы произошла ошибка операции и вернуть контроль.

Может кто-нибудь сказать мне, где я не так с этими настройками?

(PS: я также пытался монтировать с помощью autofs, но видел похожее поведение)

Спасибо

UpTheCreek
источник
3
Я не рекомендовал бы ни softпри каких обстоятельствах. Это позволяет сбрасывать данные при ошибке . Вместо этого я бы предложил hard,intr.
roaima
2
@roaima - Спасибо. Это мнение, кажется, очень распространено в сети :) Проблема в том, что текущая ситуация, с hardкоторой мы имеем дело, столь же плоха для нас (системы умирают и остаются мертвыми до перезагрузки). intrне поддерживается в NFS4 в соответствии с man.
UpTheCreek
2
(Исправление, кажется intr, поддерживается NFS4, но не ядрами> 2.6.25)
UpTheCreek
Я думаю, что отличие от «стандартных» ответов заключается в том, что вы меняете текущий рабочий каталог на точку монтирования. Вы получаете такое же поведение без cd, но вместо этого делать ls /mnt/mountpoint? Возможно, что после lsсбоя ваша оболочка пытается выполнить операции файловой системы, зависящие от PWD. (Еще хуже, если вы были достаточно глупы, чтобы вставить .свой $PATH)
Тоби Спейт

Ответы:

4

intrдолжен позволять вам снова получить контроль, когда вы нажмете ^C, но обычно не сразу.

   intr           If an NFS file operation has a major timeout and it is hard mounted, then allow signals to interupt the
                  file  operation  and cause it to return EINTR to the calling program.  The default is to not allow file
                  operations to be interrupted.

Как вы говорите, ожидания являются проблемой здесь. Проблемы с сетью могут быть временными, но сбой операции является постоянным. Поэтому большинство операций по умолчанию просто блокируются, пока операция не завершится.

Это стандартный ответ, но, глядя на текущую справочную страницу, я вижу это:

                  The  intr / nointr mount option is deprecated after ker-
                  nel 2.6.25.  Only SIGKILL can interrupt  a  pending  NFS
                  operation on these kernels, and if specified, this mount
                  option is ignored  to  provide  backwards  compatibility
                  with older kernels.

Так что это не проблема NFS3 / NFS4, а решение о том, как это intrработает. Таким образом, вы должны быть в состоянии KILLв процессе, но это может не дать вам много пользы.

Мне не удалось найти обсуждение того, почему опция была удалена. Можете ли вы убить-убить свой процесс?

BowlOfRed
источник
Спасибо, но, по словам человека intr, поддерживается nfs 2/3, но не 4.
UpTheCreek
@ UpTheCreek, я не понимаю, почему это будет. У меня нет системы Debian, но она явно упоминается как доступная. Ты пробовал это? «intr Это позволит прерывать операции NFS4 (на жестких устройствах) во время ожидания ответа от сервера».
BowlOfRed
2
Да, я попробовал, и это, похоже, не имело никакого эффекта. Человек говорит, что это игнорируется в последних версиях ядра.
UpTheCreek
Невозможно УБИТЬ процесс, потому что вся система зависает. Никакие команды не могут быть выполнены в моем опыте. (Хотя в некоторых случаях может быть возможно использовать SSH в такой замороженной машине.)
MountainX для Monica
3

Некоторые из моих ответов - это мнение, основанное на опыте. Там, где у меня есть факты, я постараюсь (не забывать) ссылаться на них.

  1. NFS 4 считается улучшением по сравнению с версиями 2 и 3. Тем не менее, я еще не видел сильного варианта использования для нужд улучшений. Возможно, это потому, что я стремлюсь экспортировать файловые системы для клиентов Windows с Samba и для клиентов Unix / Linux с NFS.
  2. Я не рекомендовал бы ни softпри каких обстоятельствах. Это позволяет сбрасывать данные при ошибке . Вместо этого я бы предложил hard,intr.
  3. Как вы указываете, intrэто не подходит для NFS 4, но кажется, что это изменение ядра, а не NFS.
  4. NFS Automounter ( autofs) хорошо работает для моих сценариев использования с NFS версий 2 и 3 и помогает защитить мои клиентские системы от сбоев сервера, монтируя файловые системы NFS только тогда, когда они необходимы.

Я предлагаю вам рассмотреть вопрос о переходе с NFS 4 на NFS 3 и посмотреть, поможет ли это в вашем конкретном случае использования. Не думайте об этом как о понижении рейтинга.

roaima
источник
1
Спасибо, но я не могу переключиться на NFS3, и даже если бы я, как вы говорите, intrне поддерживал последние версии ядра.
UpTheCreek
2
Ах да , выглядит , как intr это поддерживается в NFS4 (он перечислен в обоих 2/3 только варианты и 4 только варианты в человеке, который является немного запутанным), но только не поддерживается в последнее время ядра версий.
UpTheCreek
1
«Я бы не рекомендовал мягкий ни при каких обстоятельствах» - правда? В моем случае у меня есть занятый веб-сервер, который монтирует каталог изображений. Если хост изображений отключается и мы используем его hard, весь сайт отключается. Если мы используем soft, мы можем получить несколько неработающих изображений (хотя наша система кэширования почти полностью устраняет это). Риск softповреждения файла на самом деле не так уж и важен. Я бы предпочел иметь один поврежденный файл изображения, чем сайт вниз!
Даг Маклин
1
@DougMcLean также находился в аналогичной ситуации (загруженная веб-ферма, серверы изображений, NFS ...). Я бы сказал, что это довольно специфический случай. Если бы мои серверы изображений были ненадежными, я подозреваю, что вполне мог бы найти softприемлемое решение. Ответ изменен с «никогда» на «почти никогда». Благодарность!
Ройма
1
Если моя память верна, эта проблема зависания системы также присутствовала в NFS v3.
MountainX для Моники