Я ищу предпочтительный способ автоматического монтирования и размонтирования образов дисков (т. Е. Петлевых файлов) на сетевом диске.
К сожалению, /etc/init.d/umountnfs
не проверяет наличие петлевых устройств. Следовательно, последовательность выключения застревает при попытке размонтировать сетевой диск, на котором находится файл обратной петли.
С другой стороны, как я могу обеспечить доступность файла обратной петли при запуске системы, т. Е. Как повлиять на последовательность монтирования файловой системы во время загрузки ?
Порядок монтирования будет обычно определяться последним целочисленным полем в /etc/fstab
. Например:
UUID=XXX / ext4 errors=remount-ro,noatime,nodiratime 0 1
Здесь последнее целочисленное поле определит порядок (чем меньший, тем ранее). Таким образом, Вы, вероятно, хотите nfs, монтируются, чтобы иметь некоторый порядок здесь (например, 2) и обратная петля выше, чем тот (например, 3). Однако с nfs сложность может быть то, что они смонтированы только после того, как сетевые устройства полностью и не могли бы произойти как часть постоянного клиента /etc/init/mountall.conf
. Таким образом, нам нужно было связать устройство закольцовывания вместо этого для взаимодействия через интерфейс с подъемом или вниз.
Это обычно делается сценариями в /etc/network/if-up.d
. Но монтирование NFS произойдет в фоне, так как этим управляет новомодное задание в /etc/init/mountall-net.conf
который просто отправляет сигнал в mountall, чтобы попытаться перезагрузить все сетевые файловые системы каждый раз, когда сетевое устройство подходит. Кажется, что будет задержка после передающего сигнала, таким образом, я предположу сценарий, который будет ожидать как это, должен работать:
#!/bin/sh
ntries=10
while [ $ntries -gt 0 ]; do
if findmnt <nfs-mount-point> >/dev/null 2>/dev/null; then
if findmnt <loop-mount-point> >/dev/null 2>/dev/null; then
# loop already mounted; nothing to be done
:
else
mount -t loop <loop-file> <loop-mount-point>
fi
break
else
sleep 1
ntries="`expr $ntries - 1`"
fi
done
(замена <nfs-mount-point>
, <loop-mount-point>
, <loop-file>
с фактическими значениями), Это ожидает 10secs в интервале 1 секунды для NFS, который будет смонтирован. Поскольку я упомянул естественное место, чтобы вставить его /etc/network/if-up.d
заказанный после upstart
напишите сценарий там, но мы лучше запускаемся в фоне, чтобы не ожидать особенно, так как новомодное монтирование произойдет в фоне через сигнал /etc/init/mountall-net.conf
. Так вставляет этот сценарий, говорят, что/usr/local/bin, сделайте его исполняемым файлом (позволяющий выполняться даже иначе) и добавьте /etc/network/if-up.d/zzz-local
(необходимо сначала проверить, работает ли сценарий как ожидалось путем ручного выполнения с sudo mountloop.sh
):
#!/bin/sh
/usr/local/bin/mountloop.sh &
(сделайте zzz-локальными как исполняемый файл), umount сделан /etc/init.d/umountnfs.sh
задача sysv. То, что мы должны сделать, добавляет сценарий к umount циклическому устройству с номером заказа меньше, чем это. Поэтому добавьте /etc/init.d/umountloop.sh
как:
#! /bin/sh
### BEGIN INIT INFO
# Provides: umountloop
# Required-Start:
# Required-Stop: umountnfs
# Should-Stop: $network $portmap nfs-common
# Default-Start:
# Default-Stop: 0 6
# Short-Description: Unmount network loop filesystems.
# Description: Unmount network loop filesystems.
### END INIT INFO
umount <loop-mount-point>
(замена фактическим значением и делает исполняемый файл сценария), порядок umountnfs.sh 31 в моей системе (/etc/rc0.d/S31umountnfs.sh
, /etc/rc6.d/S31umountnfs.sh
), таким образом, мы дадим ему меньшее число:
sudo update-rc.d umountloop.sh start 30 0 6 .
Править: Я сделал ошибку в mountloop.sh сценарии прежде. Это должно было быть mount -o loop
и нет mount -t loop
. Также umountloop.sh должен иметь, "Запустите значение по умолчанию": как "0 6" а не на "Остановке по умолчанию": в комментариях, чтобы быть точным, хотя это не причинит боль и я главным образом скопировал с umountnfs.sh, который имеет ту же ошибку.
Главным образом порядок решен на основе этого файла: gksu gedit/etc/fstab Любезно создают одно резервное копирование этого файла и затем редактируют его в случае необходимости. Будьте очень осторожны при редактировании. Для размонтирования диска, sudo umount-l точка монтирования или sudo umount-I точка монтирования
Спасибо.