2013年7月26日金曜日

ls-qlに4TB USB Touro接続 (3)

起動スクリプト

/etc/init.d/touro_mount.shを作成。/etc/hotplug.d/scsi_device/usb-buffalo.hotplugを参考にする。
ポイントは青字箇所、partprobeで、パーティションを認識させて、mount_usbdiskでマウントする。mount_usbdiskは、libbuffalo.touroで定義している。
#!/bin/sh
#echo "*** $0:$* pid=$$" >/dev/console
LOCK="/var/lock/touro_mount.lock"
. /usr/local/bin/libbuffalo.touro
. /usr/local/lib/libsys
cleanup_exit()
{
        rm -f ${LOCK}
        exit $1
}
mount_touro()
{
        local i
        for i in `seq 1 ${MAX_USBDISK_NUM}`
        do
    TOURO=`grep /dev/usbdisk${i} /var/tmp/usb_list | grep Touro`
    if [ ! -z "${TOURO}" ] ; then
      ##/usr/local/sbin/partprobe /dev/usbdisk${i}
      partprobe /dev/usbdisk${i}
      mount_usbdisk ${i}
    fi
        done
}
##echo "env=(`env`)"
if [ -f ${LOCK} ] ; then
        exit 1
fi
echo $$ > ${LOCK}
#spinlock_file /var/lock/usb-hotplug
        ### USB-Strage devices
        if [ "$1" = "stop" ]; then
                echo "umount USB disks"
                /usr/local/bin/service_control.sh media stop
                /usr/local/bin/service_control.sh share stop
                for i in `seq 1 ${MAX_USBDISK_NUM}`
                do
                        umount -f ${MPT_USBSHARE}${i}
                done
        fi
        #if [ $? -eq 1 -a "$1" != "create" ]; then
        #fi
  if [ "$1" = "start" ]; then
    mount_touro
    echo "*** [$0 $$] Restarting Daemons..." > /dev/console
    # if ${ACTION} is "remove" already servers are killed.
    # so no need to stop servers at here.
    if [ "${2}" != "test" ] ; then
      /usr/local/bin/service_control.sh media stop
      /usr/local/bin/service_control.sh share stop
      sleep 1
      /usr/local/bin/service_control.sh share start
      /usr/local/bin/service_control.sh media start
    fi
  fi
#echo "--- exit pid=$$" >/dev/console
cleanup_exit $?
libbuffalo.touroを読み込む。libbuffalo.touroは、libbuffaloのmount_usbdiskに下記朱記の変更をしたもの。gptパーティションの名前が、touro_xfsであれば、MountXFSを実行するにした。
mount_usbdisk()
{
...
                     xfs)
                             echo "xfs"
                             MountXFS /dev/${BASENAME}_$minor ${MPT}
                             if [ $? -eq 0 ]; then
                                     chmod 777 ${MPT}
                                     rm -rf "${MPT}/lost+found" > /dev/null >&1
                                     return 0
                             fi
                             ;;
     ### begin - Touro mount
                     *)
       PNM=`grep "^${minor}:" /tmp/fdisk_usb|awk -F ":" '{print $6}'`
                             if [ "${PNM}" = "touro_xfs" ] ; then
         echo "touro_xfs"
         MountXFS /dev/${BASENAME}_$minor ${MPT}
         if [ $? -eq 0 ]; then
           chmod 777 ${MPT}
           rm -rf "${MPT}/lost+found" > /dev/null 2>&1
           return 0
         fi
       fi
                             ;;
     ### end - Touro mount 
...
}

隘路

libbuffaloのmount_usbdiskを書き換えたが、再起動したら書き換え前に戻ってしまった。起動の度に、上書きするようなので、libbuffalo.touroを別に作成した。

つづく。

0 件のコメント: