У меня есть точка монтирования — пусть будет /media/question
— и два возможных устройства: физический HDD и удаленная папка NFS. Иногда я подключаю устройство физически, в других случаях я монтирую его через NFS.
Есть ли способ указать их оба, fstab
чтобы при выполнении mount /media/question
предпочтительнее был выбран физический том, а когда он недоступен — NFS?
решение1
Вам необходимо создать Bash-скрипт, который проверяет, существует ли физическое устройство, и если существует, монтирует устройство, в противном случае монтирует общий ресурс NFS.
Что-то вроде этого :
if [ -d /media/disk ] ; then {
mount /media/disk ...
}
else{ ...
Вы можете поместить этот скрипт в /etc/init.d для запуска при запуске или добавить в cron для проверки каждые 5 минут или через другой промежуток времени...
решение2
Вы также можете посмотреть на udev, если он установлен. Это позволяет выполнять действия при добавлении или удалении устройства; например, при появлении сетевого интерфейса. Чтобы увидеть это в действии, посмотрите файлы, которые охватывают сетевой доступ в /etc/udev/rules.d/ (называемые 77-network.rules на моем SuSE-боксе). Вы можете определить действия, когда интерфейс включается/выключается:
/etc/udev/rules.d/77-network.rules
# ПОДСИСТЕМА=="сеть",
ENV{INTERFACE}=="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"
МЕТКА="skip_ifup"
(строка «ENV(INTERF....» используется для игнорирования нестандартных сетевых интерфейсов, при совпадении происходит переход к соответствующему оператору LABEL. Строки SUBSYTEM срабатывают при совпадении оператора ACTION – т.е. интерфейс ДОБАВЛЯЕТСЯ или УДАЛЯЕТСЯ)
Итак, если вы измените ДЕЙСТВИЕ «add/remove» для вызова вашего скрипта, который вызовет ifup/ifdown, а затем запустит все, что вам нужно после этого. Например, вызовите «ifup $@», затем проверьте IP интерфейса и смонтируйте соответствующие записи. Если монтирования были перечислены в fstab с опцией «noauto», то вам нужно только простое соглашение об именовании, чтобы найти запись и выполнить монтирование.
Аналогичным образом скрипт /etc/udev/rules.d/56-idedma.rules охватывает диски IDE (или sata) и будет запущен при обнаружении дисков. Этот скрипт позволит инициировать локальные монтирования на основе присутствия, используя альтернативный скрипт RUN.
Наименование и порядок правил аналогичны используемым в системе init. Посмотрите файлы справки и правил для получения дополнительных примеров и опций.