Activation du volume LVM avant les montages fstab

2

J'essaie de monter des volumes LVM lors du démarrage de mon système Debian Squeeze. Étant donné que pour une raison quelconque, les volumes / groupes LVM sont inactifs par défaut, ils doivent être activés avant tout montage. De plus, le groupe de volumes auquel appartiennent mes volumes se trouve sur un autre volume LVM physique. Par conséquent, je ne peux pas utiliser le /etc/init.d/lvm2script init par défaut , mais j'ai écrit le mien, ce qui active d'abord le premier niveau de volumes LVM, puis ceux que je souhaite monter:

~# 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

Ce script fonctionne, je peux l'exécuter manuellement et il fait tout, il devrait faire. Je l'activer en utilisant update-rc.d lvm2_vtt defaultsqui fonctionne (bien qu'il se plaint de certains niveaux d'exécution ne correspondent pas):

~# 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
....

Donc, mon script init est exécuté avant mountall, ce qui devrait monter les entrées fstab. Mon fstab ressemble maintenant à ceci:

~# 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

Comme vous pouvez le constater, les volumes LVM (système de fichiers xfs) sont d'abord montés, puis une liaison est créée pour un autre emplacement.

Ce que je vois maintenant, c’est qu’après le démarrage, ni les volumes LVM ne sont activés ni montés correctement. (Ce qu'ils ne peuvent pas dans un état inactif.)

Qu'est-ce que j'oublie ici?

janoliver
la source
Pensez à utiliser / dev / mapper / ... ou LABEL = ... pour le premier champ fstab (au cas où vous auriez à gérer la restauration de volume à partir d'un instantané sur la route ...).
thomp45793