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

Крепления CIFS зависают при чтении

У меня проблема с несколькими креплениями CIFS, которые выглядят следующим образом:

//192.168.10.2/remote-share /home/windows-shared/remote-share cifs defaults,user=xxx,password=xxx,uid=603,gid=603       0 0

Эта проблема возникает через некоторое время, обычно через день, когда пользователи загружают свои машины утром, и их общие ресурсы больше не работают удаленно.

Поэтому, когда я пытаюсь сделать ls Я получаю это:

ls: cannot access /home/windows-shared/remote-share: Host is down

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

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

Обновить:

Не помогло и добавление этих параметров в команду mount:

soft,timeo=300,retrans=3

Я настоятельно рекомендую AutoFS.

Это будет динамически подключать и отключать ваши сетевые ресурсы в фоновом режиме, все прозрачно для пользователя. Раньше у меня были проблемы с размонтированием и повторным подключением мобильных устройств, пока я не переключился.

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

Вот несколько очень простых инструкций:

  • Установить из apt-get: sudo apt-get install autofs -y
  • Удалить все в /etc/auto.master и замените на: /- /etc/auto.cifs --timeout=20 --ghost
  • Добавьте одну строку в auto.cifs для каждого монтирования:/mnt/LOCAL/MOUNT/PATH -fstype=cifs,rw,noperm,credentials=/etc/auto.credentials ://SERVER/MOUNT
  • В /etc/auto.credentialsдобавьте следующий контент: username=USERNAME password=PASSWORD
  • В заключение, sudo service autofs restart.

Вот и все.

В большинстве случаев вы можете хотя бы удалить зависшую точку монтирования, выполнив ленивое размонтирование: umount -l //server/share. Может быть, вы можете поместить это в крюк приостановки (насколько я понимаю, ваши машины приостанавливаются на ночь и работают несколько дней?)