LINUX.ORG.RU
ФорумAdmin

Долгий mount cifs, error 115

 , ,


0

3

ОС Редос, в домене MS AD. Посредством pam_mount монтируется корень DFS в файловую систему, всё ОК, всё работает. Но в корне DFS есть одна ссылка, серверы которой недоступны по порту 445. И caja при заходе начинает начитывать эти папки и становится раком. Через 2-3 минуты получаю ошибку: cifs mount failed with rerurn code 115: operation in progress. Понятно, что сетевая проблема, но блин, таймаут 3 минуты!

  1. Есть ли способ уменьшить время таймаута для mount?
  2. Есть ли способ заставить caja не лезть в подкаталоги при открытии каталога?

ЗЫЖ mc - то же поведение. А вот far2l - всё ОК, залипание происходит только при явной попытке зайти в этот проблемный каталог.

серверы которой недоступны по порту 445

прописать в /etc/hosts для проблемных серверов какую-нибудь заглушку (например другой рабочий сервер).

MirandaUser2 ★★
()
Последнее исправление: MirandaUser2 (всего исправлений: 1)

наверное правильнее перейти на autofs c параметрами типа
echo_interval=6,soft,nofail
или привлечь через systemd с параметрами
noauto,x-systemd.automount,x-systemd.mount-timeout=10,x-systemd.idle-timeout=60,echo_interval=6,soft,nofail

Atlant ★★★★★
()
Ответ на: комментарий от Atlant

Все эти варианты опций я уже перепробовал, проблема в том, что когда дело именно в отсутствии сетевой связности по 445 порту, любой mount «зависает» на 3 минуты, пока не вывалит error 115. И на все опции монтирования оно внимания не обращает вообще ( Это как будто уже со стороны ядра долгий ответ. Вариант с заглушкой в hosts конечно вариант, но в крупном проде в dfs большое количество ссылок и нет гарантии, что в какой-то момент времени кто-то не будет недоступен. Хотелось бы докопаться до сути проблемы, уменьшить таймаут по этой ошибке 115 для mount, но долгое гугление пока не дало результата (

Deepdig
() автор топика
Ответ на: комментарий от Deepdig

Хотелось бы докопаться до сути проблемы, уменьшить таймаут по этой ошибке 115 для mount, но долгое гугление пока не дало результата (

а что там гуглить, если у mount.cifs нет параметров на timeout, retry и пр. (сравни с mount.nfs). У smbnetfs (FUSE) есть какой-то timeout, но непонятно на что он распространяется.

MirandaUser2 ★★
()
Ответ на: комментарий от MirandaUser2

Я уже было придумал «гениальный» план alias mount=‘timeout 10s mount’, но ядру-то пофиг на алиасы, а монтирование как раз от ядра.

Deepdig
() автор топика

Пробовал устанавливать параметр монтирования handletimeout?

В мане вот что пишут:

handletimeout=arg

The time (in milliseconds) for which the server should reserve the handle after a failover waiting for the client to reconnect.  When mounting with resilienthandles or persistenthandles mount option, or when their use is requested by the server (continuous availability shares) then this parameter overrides the server default handle timeout (which for most servers is 120 seconds).

(https://www.mankier.com/8/mount.cifs#Options-handletimeout)

Ja-Ja-Hey-Ho ★★★★★
()
Ответ на: комментарий от Deepdig

Я уже TCP параметры ядра перекопал, всё уменьшил, ничего не меняется блин ) Но где-то же этот таймер прописан?? Прямо в коде что-ли захардкожен?

Deepdig
() автор топика
Последнее исправление: Deepdig (всего исправлений: 1)
Ответ на: комментарий от Ja-Ja-Hey-Ho

Ну тогда уж:
https://www.mankier.com/8/mount.cifs#Options-echo_interval

sets the interval at which echo requests are sent to the server on an idling connection. This setting also affects the time required for a connection to an unresponsive server to timeout. Here n is the echo interval in seconds. The reconnection happens at three times the value of the echo_interval set for an unresponsive server. If this option is not given then the default value of 60 seconds is used. The minimum tunable value is 1 second and maximum can go up to 600 seconds.

Его в kernel 4.5 добавили.
(гм, на https://linux.die.net/man/8/mount.cifs устаревший список опций. :-| )

MirandaUser2 ★★
()
Ответ на: комментарий от MirandaUser2

Может это и прозвучит как неправда, но и эту опцию echo_interval я тоже пробовал, поведение не меняется. Ядро у нас 6.12. Такое ощущение, что все эти таймауты работают уже после начала подключения к серверу, а до подключения - какие-то сетевые таймауты. Хотя в sysctl уже поменял кучу сетевых параметров, и ничего не изменилось, всегда те же 205-206 секунд. Есть интересно способ посмотреть в ядре, какой именно таймаут отработал? В dmesg не нашёл.

В скриптах это залипание на 205 секунд можно обойти через предварительную проверку доступности по порту 445, но вот когда в файловом менеджере юзер щёлкает на ссылку в DFS, которая ведёт на недоступный сервер, происходит автоматический mount - вот тут пока не придумал как быть (

Deepdig
() автор топика
Последнее исправление: Deepdig (всего исправлений: 2)
Ответ на: комментарий от Deepdig

Причём интересно, что правкой параметров ядра: net.ipv4.tcp_syn_retries=1 net.ipv4.tcp_syn_linear_timeouts=20

удаётся уменьшить время с 205 до 121 секунд! Где прячутся ещё 120 - непонятно.

Deepdig
() автор топика
Ответ на: комментарий от Deepdig

В логах видно, что раз в 10 секунд ошибка: CIFS: VFS: Error connecting to socket, aborting operation. И так 20 раз!
После подкрутки сетевых параметров ядра 1 попытка занимает 6 секунд, вот и получается 120 секунд. И никак не получается, чтобы mount сдавался после не 20-ти попыток блин, на все параметры ему чихать.

Deepdig
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария