Назад | Перейти на главную страницу

Условное монтирование в Linux: dev или nfs

У меня есть точка монтирования - пусть будет /media/question - и два возможных устройства: физический жесткий диск и удаленная папка NFS. Иногда подключаю устройство физически, в других случаях монтирую через NFS.

Есть ли способ указать их обоих в fstab так что выполнение mount /media/question желательно выбрать физический том, а когда он недоступен - NFS?

Вы также можете посмотреть udev, если он установлен. Это позволяет выполнять действия при добавлении или удалении устройства; например, когда появляется сетевой интерфейс. Чтобы увидеть это в действии, просмотрите файлы, описывающие доступ к сети, в /etc/udev/rules.d/ (на моем компьютере SuSE они называются 77-network.rules). Вы можете определить действия, когда интерфейс идет вверх / вниз:

/etc/udev/rules.d/77-network.rules

# SUBSYSTEM == "net",

ENV {ИНТЕРФЕЙС} == "ppp * | ippp * | isdn * | plip * | lo * | irda * | dummy * | ipsec * | tun * | tap * | bond * | br * | vlan * | modem * | dsl * ", GOTO =" skip_ifup "

SUBSYSTEM == "net", ACTION == "add", RUN + = "/ sbin / ifup $ env {INTERFACE} -o hotplug"

SUBSYSTEM == "net", ACTION == "remove", RUN + = "/ sbin / ifdown% k -o hotplug"

LABEL = "skip_ifup"

(строка «ENV (INTERF ....» используется для игнорирования нестандартных сетевых интерфейсов, при совпадении она переходит к соответствующему оператору LABEL. Строки SUBSYTEM запускаются при совпадении оператора ACTION, т. е. интерфейс ДОБАВЛЕН или УДАЛЕН ”)

Итак, если вы измените ДЕЙСТВИЕ «добавить / удалить» для вызова вашего скрипта, который будет вызывать ifup / ifdown, а затем запускать все, что вы хотите, после этого. .например. вызовите «ifup $ @», затем проверьте IP-адрес интерфейса и смонтируйте соответствующие записи. Если монтирования были перечислены в fstab с опцией «noauto», тогда вам нужно только простое соглашение об именах, чтобы найти запись и выполнить монтирование.

Аналогичным образом сценарий /etc/udev/rules.d/56-idedma.rules охватывает IDE (или диски sata) и запускается при обнаружении дисков. Этот сценарий позволит инициировать локальное монтирование в зависимости от присутствия, используя альтернативный сценарий RUN.

Именование и порядок правил аналогичны тем, которые используются в системе инициализации. Дополнительные примеры и параметры можно найти в файлах справки и правил.

Вам нужно создать сценарий Bash, который проверяет, существует ли физическое устройство, если оно существует, смонтируйте устройство, иначе смонтируйте общий ресурс NFS.

Что-то вроде этого :

if [ -d /media/disk ] ; then {
mount /media/disk ...
}
else{ ...

вы можете поместить этот скрипт в /etc/init.d для запуска при запуске или добавить в cron для проверки каждые 5 минут или другой диапазон времени ...