起動時に iSCSI 上の LVM ボリュームを認識させるには

起動時に iSCSI 上の LVM ボリュームが認識されない問題([id:naga_sawa:20120422:1335110193])のむりやり解決編

ここにあるように、スクリプト走らせろ。
Bug 474833 – LVM on iSCSI do not work upon restart
ってことなので、こちら(Linux:iSCSI - Kaiseki)を参考にしてスクリプトを書いてみた。
iscsi, iscsid が走ってから実際に iSCSI ボリュームが認識されるまでタイムラグがあるようなので、ウエイト(iscsi_ready_wait)を仕込んでるので適宜調整。
CentOS 6.2 用。


スクリプトを作成する

# vi /etc/init.d/iscsimount

#!/bin/bash
#
# iscsimount      mount LVM group on iSCSI partitions
#
# Author:       naga_sawa
#
# chkconfig: 2345 98 03
# description: mount LVM group on iSCSI partitions
#
# processname: iscsimount
# pidfile: /var/lock/subsys/iscsimount

### BEGIN INIT INFO
# Provides: iscsimount
# Required-Start: libvirtd
# Required-Stop: libvirtd
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: mount LVM group on iSCSI partitions
# Description: This is a script for mounting LVM group on iSCSI partitions
#              by /etc/fstabs
### END INIT INFO


# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0
prog=iscsimount
iscsi_ready_wait=5

start()
{
  sleep $iscsi_ready_wait
  vgchange -ay
  mount -a
  touch /var/lock/subsys/iscsimount
}

stop()
{
  rm -f /var/lock/subsys/iscsimount
}

case "$1" in
  start)
        echo -n $"Starting $prog: "
        start
        ;;
  stop)
        echo -n $"Stopping $prog: "
        stop
        RETVAL=$?
        ;;
  *)
        # do not advertise unreasonable commands that there is no reason
        # to use with this device
        echo $"Usage: $0 {start|stop}"
        exit 1
esac

if [ $RETVAL = 0 ] ; then
    echo_success
    echo
else
    echo_failure
    echo
fi
exit $RETVAL

起動時にこのスクリプトが走るようにする

# chmod 755 /etc/init.d/iscsimount
# chkconfig --add iscsimount
# chkconfig --list iscsimount
iscsimount      0:off   1:off   2:on    3:on    4:on    5:on    6:off

blkid コマンドでマウントするLVM論理ボリュームのUUIDを調べる([id:naga_sawa:20120422:1335099188])
わかった UUID を fstab に追記する~

# vi /etc/fstab

UUID=100c65bb-71fd-484d-9b90-a013035d0abf /mnt/iscsi/virtimages1  ext4  _netdev 0 0