启动时未执行 /etc/init.d/lvm2 脚本

启动时未执行 /etc/init.d/lvm2 脚本

在启动时,我希望/etc/init.d/lvm2执行 Debian squeeze 附带的脚本。我运行update-rc.d lvm2 enable并检查了文件夹中是否创建了符号链接/etc/rcX.d

# find /etc -name "*lvm2"
/etc/rc6.d/K09lvm2
/etc/rc0.d/K09lvm2
/etc/init.d/lvm2
/etc/rcS.d/S05lvm2

手动执行脚本有效,lvm 卷也正确激活,但启动后什么也没发生。/var/log 中根本没有关于 lvm 的任何信息。我​​尝试在 init 脚本中将该行添加logger Starting lvm到函数开头,但日志中仍然没有任何内容。start()

我如何追踪错误并找出无法正常启动的原因?我想避免将发行版附带的内容放入rc.local.


让我也向您展示一下 init 脚本。另外需要注意的是:之前的命令[ -x /sbin/vgchange ] || exit 0也不会执行,因此不可能是该行导致脚本退出。乍一看,我也没有在 init 脚本中看到任何依赖循环或类似的东西。

#!/bin/sh
### BEGIN INIT INFO
# Provides:          lvm2 lvm
# Required-Start:    mountdevsubfs udev
# Required-Stop:
# Should-Start:      mdadm-raid cryptdisks-early multipath-tools-boot
# Should-Stop:       umountroot mdadm-raid
# X-Start-Before:    checkfs mountall
# X-Stop-After:      umountfs
# Default-Start:     S
# Default-Stop:      0 6
### END INIT INFO

SCRIPTNAME=/etc/init.d/lvm2

. /lib/lsb/init-functions

[ -x /sbin/vgchange ] || exit 0

do_start()
{
        logger starting lvm
        modprobe dm-mod 2> /dev/null || :
        /sbin/vgscan --ignorelockingfailure --mknodes || :
        /sbin/vgchange -aly --ignorelockingfailure || return 2
}

do_stop()
{
        /sbin/vgchange -aln --ignorelockingfailure || return 2
}

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

相关内容