Рекомендации по монтажу / размонтированию петлевых устройств на сетевом ресурсе?

Я ищу предпочтительный способ автоматического монтирования и размонтирования образов дисков (т. Е. Петлевых файлов) на сетевом диске.

К сожалению, /etc/init.d/umountnfs не проверяет наличие петлевых устройств. Следовательно, последовательность выключения застревает при попытке размонтировать сетевой диск, на котором находится файл обратной петли.

С другой стороны, как я могу обеспечить доступность файла обратной петли при запуске системы, т. Е. Как повлиять на последовательность монтирования файловой системы во время загрузки ?

4
задан 12 July 2014 в 11:04

2 ответа

Порядок монтирования будет обычно определяться последним целочисленным полем в /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, который имеет ту же ошибку.

1
ответ дан 12 July 2014 в 11:04

Главным образом порядок решен на основе этого файла: gksu gedit/etc/fstab Любезно создают одно резервное копирование этого файла и затем редактируют его в случае необходимости. Будьте очень осторожны при редактировании. Для размонтирования диска, sudo umount-l точка монтирования или sudo umount-I точка монтирования

Спасибо.

0
ответ дан 12 July 2014 в 11:04

Другие вопросы по тегам:

Похожие вопросы: