Смонтированная папка cifs постоянно отключается (сервер Ubuntu)

Смонтированная папка cifs постоянно отключается (сервер Ubuntu)

У меня есть эта запись fstab, позволяющая приложению Tomcat читать/писать в общей папке Windows Samba:

//dc/docs    /media/docs      cifs       credentials=...,rw,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm,uid=tomcat7,gid=tomcat7,dir_mode=0770,file_mode=0770 0 0

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

$ sudo ls /media/docs
finance  postsale  repository

#after e.g. 10 minutes...
$ sudo ls /media/docs
[sudo] password for user:
ls: cannot access '/media/docs': Connection reset by peer

#this takes ages to complete
$ sudo umount /media/docs

#this fails immediately after, succedes after about 5/10 seconds
$ sudo mount /media/docs
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
$ sudo mount /media/docs
mount error(104): Connection reset by peer
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
$ sudo mount /media/docs
$ sudo ls /media/docs
finance  postsale  repository

Как это отладить или предотвратить падение?

Пользователи приложения Tomcat не имеют права на повторное монтирование, поэтому каждый раз им нужно отправлять запрос в ИТ-отдел.

Обратите внимание, что это монтирование на том же ресурсе не падает (единственное отличие, которое я заметил, userэто sudoer, а tomcat7указанное выше — нет):

//dc/share       /media/share     cifs       credentials=....credentials,rw,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm,uid=user,gid=user,dir_mode=0770,file_mode=0770 0 0

ОБНОВЛЯТЬ:

Папка /var/log/sambaпуста — как настроить ведение журнала для Samba?

Если я продолжу перечислять папку, она не исчезнет:

while true; do date; ls /media/docs; sleep 5; done

ОБНОВЛЕНИЕ 2:

Вот mountвывод:

//fs-mxp/ZZZshare on /media/share type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=XXX,domain=YYY-it,uid=1000,forceuid,gid=1000,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//fs-mxp/ftp on /media/ftp type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=XXX,domain=YYY-it,uid=1000,forceuid,gid=1000,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//sql-mxp/C$ on /media/sql type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=administrator,domain=YYY-it,uid=1000,forceuid,gid=1000,forcegid,addr=10.39.52.11,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//fs-mxp/ZZZdocs on /media/docs type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=YYYdoc,domain=YYY-it,uid=113,forceuid,gid=123,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//fs-mxp/ZZZshare/ASTE on /home/esales/aste type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=XXX,domain=YYY-it,uid=1001,forceuid,gid=1002,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)
//fs-mxp/ftp/YYYvendor on /home/esales/YYYvendor type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,username=XXX,domain=YYY-it,uid=1001,forceuid,gid=1002,forcegid,addr=10.39.52.6,file_mode=0770,dir_mode=0770,nounix,serverino,mapposix,rsize=61440,wsize=65536,actimeo=1)

решение1

Думаю, это как-то связано с исправлениями, которые поставляются обновлениями Windows для предотвращения атак с использованием программ-вымогателей. Он показывает, что сервер, на котором находится общая папка, отклоняет запросы CIFS V1. По умолчанию монтирование использует CIFS V1. Попробуйте добавить его vers=2.0в конец команды монтирования. У меня была та же проблема, и таким образом мне удалось ее исправить. PS / FYI: моя команда выглядит следующим образом

//192.168.1.10/public/mount /media/windowsshare cifs credentials=/home/MY_USERNAME/.smbcredentials,iocharset=utf8,sec=ntlm,vers=2.0 0 0

решение2

Из вывода монтирования, добавленного к вашему вопросу, мы видим, что вы все еще используете CIFS 1.0.

Я бы посоветовал монтировать монтирование как CIFS 2.1, если серверы его поддерживают, так как с CIFS v2.0 или 2.1 протокол поддерживает лучшее восстановление после сна/обрывов соединения. Для этого есть опция vers=2.1.

Прочные дескрипторы (2.02, 2.1) — позволяют прозрачно переподключаться к серверу в случае временного отключения.

Я также советую добавить эту опцию echo_interval=60вместо добавления цикла while, так как в этом случае код клиента SMB будет отправлять серверу сигнал keepalive каждую минуту.

Обратите внимание, как я предупреждал и исправил в ответе @Thillina, все варианты находятся в третьем поле и разделены запятой.

Более подробную информацию см.CIFS случайно теряет соединение с общим ресурсом Windows

Читая статьи, которые я цитирую в своем посте:

3.0 — протокол SMBv3.0, представленный в Microsoft Windows 8 и Windows Server 2012.

Таким образом, наличие Windows Server 2012 означает, что как минимум сторона Windows поддерживает CIFSv3.0 и ниже.

Чтобы проверить, было ли выполнено повторное согласование и с какой версией, измените параметры в вашем fstabфайле и выполните следующее:

#mount -o remount /media/docs

а затем выполните mountкоманду, чтобы проверить, с какой версией было выполнено/согласовано монтирование.

решение3

В итоге я установил задание cron, которое каждые 3 минуты обращается к файлу на каждой cifsобщей папке, mountчтобы поддерживать соединение активным.

На данный момент акции вернулись к нормальной доступности:

cifs_keepalive:

#!/bin/bash

while read spot; do
   touch --no-create "${spot}/.cifs_keepalive"
done <<< "$(mount | awk '/cifs/{ print $3; }')"

/etc/cron.d/cifs_keepalive:

*/3 *   *   *   *   root    /home/bcait/bca_util/bin/cifs_keepalive >/dev/null 2>&1

Кредиты: Я взял идею изэтот пост в блоге.

решение4

В моем случае у меня были другие сетевые интерфейсы, которые были отключены. Истечение срока аренды DHCP на этих интерфейсах привело к падению монтирований Согласноhttp://ubuntuforums.org/showthread.php?t=1140094Самба перезагружается.

Для меня я отключил эти интерфейсы. Другим возможным решением может быть autofs с 0 timeout.

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