Самый быстрый способ определить устаревшее монтирование Samba в Linux - PullRequest
4 голосов
/ 21 января 2010

Каков наилучший (самый быстрый) способ определить, является ли точка монтирования Samba мертвой в Linux? Мне нужно сделать это в C. Системные вызовы, такие как statfs (), statvfs (), блокируются в течение 30-40 секунд при вызове на устаревшем монтировании, и они даже не возвращают ошибку в этом случае stat (), кажется, терпит неудачу быстрее чем другие (приблизительно 10 секунд) и возвращает ошибку. Точка монтирования может устареть, потому что другой хост вышел из строя или демон Samba там был убит. Любой совет приветствуется ..

Ответы [ 3 ]

1 голос
/ 25 января 2010

Вы можете установить будильник (см. alarm() и setitimer()), который истекает через несколько секунд.

0 голосов
/ 30 января 2010

Я отвечаю на свой вопрос. Целью было минимизировать время, затрачиваемое несколькими процессами, пытающимися получить доступ к устаревшим точкам монтирования. Обычно системные вызовы завершаются за второе время. Блокировка устаревших акций на 10 секунд или даже, скажем, 3 секунды была неприемлемой, поскольку эти вызовы выполняются в нескольких местах, несколько раз, и время задержки накапливается. Итак, я закончил писать процесс мониторинга, который проверяет монтирование каждые n секунд и размонтирует их, если они недоступны. Я также читаю информацию из моих конфигов о том, какие файловые системы должны быть удалены (смонтированы), и проверяю файл mtab - если их нет, это ошибка. Проверка кода mtab завершается в течение секунды. Потребовался день или два для реализации, но у меня работает нормально.

0 голосов
/ 25 января 2010

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

...