Я пытаюсь смонтировать тома LVM во время запуска моей системы Debian Squeeze. Поскольку по какой-то причине тома / группы LVM по умолчанию неактивны, их необходимо активировать, прежде чем можно будет выполнить любое подключение. Кроме того, группа томов, к которой принадлежат мои тома, находится на другом физическом томе LVM. Поэтому я не могу использовать сценарий инициализации /etc/init.d/lvm2
по умолчанию, но написал свой собственный, который сначала активирует тома LVM первого уровня, а затем те, которые я хочу смонтировать:
~# cat /etc/init.d/lvm2_vtt
#!/bin/sh
### BEGIN INIT INFO
# Provides: lvm2_vtt
# Required-Start: mountdevsubfs udev
# Required-Stop:
# Should-Start: mdadm-raid cryptdisks-early multipath-tools-boot
# Should-Stop: umountroot mdadm-raid
# Default-Start: S
# Default-Stop: 0 6
# X-Start-Before: checkfs mountall
# X-Stop-After: umountfs
### END INIT INFO
SCRIPTNAME=/etc/init.d/lvm2_vtt
. /lib/lsb/init-functions
[ -x /sbin/vgchange ] || exit 0
do_start()
{
echo "bla"> /root/hah
modprobe dm-mod 2> /dev/null || :
/sbin/vgscan --ignorelockingfailure --mknodes || :
/sbin/vgchange -aly --ignorelockingfailure || return 2
/sbin/vgscan
/sbin/vgchange -ay
/sbin/lvmdiskscan
/sbin/vgscan
/sbin/vgchange -ay agvtt-volume
}
do_stop()
{
/sbin/vgchange -aln --ignorelockingfailure || return 2
/sbin/vgchange -an agvtt-volume
}
case "$1" in
start)
log_begin_msg "Setting up LVM Volume Groups"
do_start
case "$?" in
0|1) log_end_msg 0 ;;
2) log_end_msg 1 ;;
esac
;;
stop)
log_begin_msg "Shutting down LVM Volume Groups"
do_stop
case "$?" in
0|1) log_end_msg 0 ;;
2) log_end_msg 1 ;;
esac
;;
restart|force-reload)
;;
*)
echo "Usage: $SCRIPTNAME {start|stop}" >&2
exit 3
;;
esac
Этот скрипт работает, я могу выполнить его вручную, и он делает все, что должен.
Я активирую его, используя update-rc.d lvm2_vtt defaults
который работает (хотя он жалуется на то, что некоторые уровни выполнения не совпадают):
~# ls -g /etc/rcS.d
total 4
-rw-r--r-- 1 root 447 Mar 24 2012 README
lrwxrwxrwx 1 root 24 Oct 23 12:18 S01mountkernfs.sh -> ../init.d/mountkernfs.sh
lrwxrwxrwx 1 root 14 Oct 23 12:18 S02udev -> ../init.d/udev
lrwxrwxrwx 1 root 26 Oct 23 12:18 S03mountdevsubfs.sh -> ../init.d/mountdevsubfs.sh
lrwxrwxrwx 1 root 18 Oct 23 12:18 S04bootlogd -> ../init.d/bootlogd
lrwxrwxrwx 1 root 18 Mar 1 11:26 S04lvm2_vtt -> ../init.d/lvm2_vtt
lrwxrwxrwx 1 root 21 Oct 23 12:18 S05hostname.sh -> ../init.d/hostname.sh
lrwxrwxrwx 1 root 25 Oct 23 12:18 S05hwclockfirst.sh -> ../init.d/hwclockfirst.sh
lrwxrwxrwx 1 root 22 Oct 23 12:18 S06checkroot.sh -> ../init.d/checkroot.sh
lrwxrwxrwx 1 root 20 Oct 23 12:18 S07hwclock.sh -> ../init.d/hwclock.sh
lrwxrwxrwx 1 root 24 Oct 23 12:18 S07ifupdown-clean -> ../init.d/ifupdown-clean
lrwxrwxrwx 1 root 27 Oct 23 12:18 S07module-init-tools -> ../init.d/module-init-tools
lrwxrwxrwx 1 root 17 Oct 23 12:18 S07mtab.sh -> ../init.d/mtab.sh
lrwxrwxrwx 1 root 20 Oct 23 12:18 S08checkfs.sh -> ../init.d/checkfs.sh
lrwxrwxrwx 1 root 18 Oct 23 12:18 S09ifupdown -> ../init.d/ifupdown
lrwxrwxrwx 1 root 21 Oct 23 12:18 S09mountall.sh -> ../init.d/mountall.sh
....
Итак, мой скрипт инициализации выполняется перед mountall
, который должен монтировать записи fstab. Мой fstab теперь выглядит следующим образом:
~# cat /etc/fstab
# the local partitions
proc /proc proc defaults 0 0
UUID=07791c3e-5388-4edc-b30f-a4b4f2dbcb33 none swap sw 0 0
UUID=6522596a-210d-47ab-8894-e6259ffd99ee / ext3 defaults 0 1
# our lvm volumes, secured and unsecured. Get the uuids using blkid.
UUID=66a66e81-9eb8-4ce8-a370-f3a48ece289e /space/secured xfs defaults 0 0
UUID=9e74cbd4-d3a0-4047-8466-74c00c14542a /space/unsecured xfs defaults 0 0
# these are simpler aliases
/space/unsecured /unsecured bind bind 0 0
/space/secured /secured bind bind 0 0
Как видите, тома LVM (файловая система xfs) сначала монтируются, а затем создается некоторая привязка для другого расположения.
Теперь я вижу, что после загрузки ни тома LVM не активированы, ни смонтированы правильно. (Что они не могут в неактивном состоянии.)
Что мне здесь не хватает?