Размонтирование cifs/nfs при пропадании сети

Подскажите правильный и простой путь для размонтирования cifs/nfs при пропадании сети и/или ухода "сервера" в даун.
Сейчас происходит "подвисание" всего, что юзало сетевой ресурс. Это очень не приятно (

в инете нашел только скрипты для других дистрибутивов и ссылки на autofs(но мне кажется, что он чутка для другого создан)

_SerEga_

_SerEga_ написал(а):
Подскажите правильный и простой путь для размонтирования cifs/nfs при пропадании сети и/или ухода "сервера" в даун.
Сейчас происходит "подвисание" всего, что юзало сетевой ресурс. Это очень не приятно (

в инете нашел только скрипты для других дистрибутивов и ссылки на autofs(но мне кажется, что он чутка для другого создан)

+1
Тоже мучает. Хорошо, что редко случается.
Хотел запостить на форуме проблему, руки не доходили

umount -l /media/cifs

umount -l /media/cifs

Приходиться так, но это

Приходиться так, но это спасает только свежезапущенные проги, а то что уже "висит" - продолжает...
к тому же хочется автоматизации.

/

_SerEga_ написал(а):
Приходиться так, но это спасает только свежезапущенные проги, а то что уже "висит" - продолжает...
к тому же хочется автоматизации.

Лично я этому не удивлён.
Не просто так нормальным поведением umount при попытке отмонтирования используемой файловой системы является ошибка "device is busy".
Попробуй описать хотя бы в нулевом приближении правильное поведение приложения в ситуации, когда редактируемый файл становится недоступным (полагаю, здесь будет нелишним почитать трассу).
Если сочинится что-то приличное, можно попробовать посмотреть, что скажет апстрим (для начала на примере наиболее интересного тебе приложения).

:wq
--
Live free or die

Я понимаю, почему так

Я понимаю, почему так происходит, но мне это не нравиться.
Меня бы устроило, если бы можно было послать всем таким программам IO error, что б они прекратили ждать.

ps будет время погляжу на трейс.

.

_SerEga_ написал(а):
Я понимаю, почему так происходит, но мне это не нравиться.

Вопрос не в этом, а в физической реализуемости альтернативы, которая тебя устроила бы.

_SerEga_ написал(а):
Меня бы устроило, если бы можно было послать всем таким программам IO error, что б они прекратили ждать.

В таком случае возможно отдельно имеет смысл баг по части отработки соответствующей опции umount.
Но что-то мне подсказывает, что приложение, получившее I/O error на открытый файл... чувствует себя не лучшим образом...

:wq
--
Live free or die

Но большинство нормальных

Но большинство нормальных программ это переживет.
К тому же, это будет пусть лучше прога огорчиться, но продолжит работать, чем мне придется ее убить собственноручно )
ps больше всего меня огорчает "повисание" таскбара kde
pss мне в голову пришла мысль, что большая часть проблем возникает из-за того, что папка была не размонтирована вовремя. Т.е. ресурс стал не доступен, а я или какая-нибудь прога мимоходом заглядываю в паку, куда он был смонтирован. Так, что скрипт вовремя размонтирующий ее уберет большую часть последствий

Напишите скрипт, который

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

#!/bin/sh
mount | grep cifs | while read MOUNT_STR
do
   IP=`echo $MOUNT_STR | cut -f3 -d/`
   MNT_POINT=`echo $MOUNT_STR | grep cifs | cut -f 3 -d" "`
   if ! ping -c 1 -w 1 $IP > /dev/null 
   then
     lsof "$MNT_POINT" | grep '[0-9]\{1,3\}r\|[0-9]\{1,3\}w' | awk '{ print $2}' | while read PID 
     do
       kill -9 $PID
     done
     umount -l $MNT_POINT
   fi
done

Это запихнуть в cron с определённым интервалом.

Скрипт не проверял, на работу, просто написал, поправьте если что.

В общих чертах, выбираем из списка смонтированных файловых систем файловые CIFS, получаем ip адрес сервера, с которого смонтирована файловая системе, отправляем ICMP запрос (ping) с ожиданием в 1 секунду, если ответ не пришёл то проверяем есть ли программы, которые пишут или читают из точки монтирования файловой системы, "убиваем" их процессы и размонтируем файловую систему.

.

kostik87 написал(а):
В общих чертах, выбираем из списка смонтированных файловых систем файловые CIFS, получаем ip адрес сервера, с которого смонтирована файловая системе, отправляем ICMP запрос (ping) с ожиданием в 1 секунду, если ответ не пришёл то проверяем есть ли программы, которые пишут или читают из точки монтирования файловой системы, "убиваем" их процессы и размонтируем файловую систему.

Почто не анализируешь exit codes?

Я в своё время решал подобную задачу так:

check_channel ()
{
        for test in 1 2 3 4
        do
                ping -с 1 file-server.host.zone 2>&1 > /dev/null && return 0
        done

        return 1
}

В данном примере имеет смысл допилить функцию с использованием (и вестимо проверкой) аргумента (hostname).

:wq
--
Live free or die

Если кого заинтересует

Если кого заинтересует использование этого скрипта пусть дописывает и тестирует.

спасибо, на выходных потестю.

спасибо, на выходных потестю.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".