Как изящно управлять отключением общего ресурса Samba?

У меня есть веб-сервер Ubuntu 16.04 LTS, который монтирует файловый сервер Windows через Samba. Веб-сервер должен иметь возможность время от времени выполнять задачи, которые взаимодействуют с файлами на этом сервере. Однако недавно у нас произошел сбой в работе файлового сервера Windows, из-за которого веб-сервер начал плохо себя вести. Я надеюсь, что отключение монтирования просто приведет к немедленному сбою команд, которые пытаются взаимодействовать с этой папкой (что позволяет нам быстро поймать и обработать исключение), но вместо этого оказывается, что взаимодействия с монтированием происходят очень сильно вместо этого медленно .

Вот запись в / etc / fstab для монтирования общего ресурса:

//<Windows server hostname>/TPA /mnt/TPA cifs username=tasker,password=<redacted>,domain=<our domain>,sec=ntlm,iocharset=utf8,sec=ntlm 0 0

Под «медленно» я подразумеваю, что если я сделаю ls / mnt , команда примет примерно 30 секунд до завершения, прежде чем я получу следующее сообщение:

user@server:/mnt$ ls
ls: cannot access 'TPA': Host is down

Эту медлительность можно увидеть и в самом веб-приложении. Если возможно, я хотел бы иметь возможность настроить веб-приложение, чтобы определять, не работает ли общий ресурс, и обрабатывать это изящно, но я не хочу, чтобы это занимало 30 секунд с каждым запросом. Есть ли способ настроить вещи так, чтобы их можно было обрабатывать более изящно?

Чтобы усложнить ситуацию, веб-приложение на самом деле находится внутри контейнера Docker, к которому добавлен том, указывающий на / mnt , что может еще больше усугубить ситуацию, хотя я полагаю, что если я решу проблемы с хостом, то, надеюсь, контейнер также будет соответствовать.

Любой совет будет очень признателен!

EDIT: I ' Я добавлю, что на данный момент мы отключили некорректное крепление и закомментировали строку из fstab, и это, кажется, делает ее «счастливой», но в идеале я бы предпочел решение, которое не является ручным.

0
задан 19 August 2016 в 19:41
1 ответ

Просто некоторые идеи ...

Я не знаю, как проверить, как / mnt будет отвечать, когда вы обращаетесь к нему. Но у меня есть идеи, как более точно предсказать это.

Вы можете использовать smbclient или nmap , чтобы попытаться подключиться к серверу. Или запустите что-то в фоновом режиме с cron и т. Д., Которое отлично выглядит как файл в / mnt - таким образом он ничего не замедляет при истечении времени ожидания. Если какой-либо из тестов не прошел, сообщите об этом веб-приложению.

test -d / mnt && echo true также не работает, когда файловый сервер не работает ... если это помогает. Но вам нужно подождать, пока он истечет.

smbclient // host / share -Uuser password вернет почти мгновенно, если сервер не работает , так что это не сильно замедлит работу. nmap тоже, но на самом деле он не пытается войти на файловый сервер.

Я надеюсь, что кое-что из этого будет полезно.

1
ответ дан 4 December 2019 в 16:31

Теги

Похожие вопросы