Linuxで対話的にホットスワップするスクリプト作った

私の構築しているサーバーはホットスワップベイが付いているのですが、Linuxでホットスワップするのはコマンド打たないといけなくてちょっと面倒。

というわけで、対話的にホットスワップできるスクリプトを組んでみました。

このスクリプトでアンマウントとecho 1の書き込みをワンタッチで行うことが出来ます。ついでにsyncもさせています。


#!/bin/sh

while true;do
list=`df -h |grep /dev/sd`
echo "HDD一覧を表示します。"
echo "$list\n"

while true;do
echo "HDD名を入力 /dev/sd 例)a"
read name

if [ $name ] ; then
break
fi
done

echo "/dev/sd$nameでよろしいですか? y/n"
read answer

case $answer in
y)
hdd=sd$name
dev=/sys/block/$hdd/device/delete
if [ ! -e $dev ] ; then
echo "/dev/sd$nameが存在しません。"
else
echo "処理を開始します。"
break
fi
;;
n)
echo "最初からやり直します。"
;;
*)
echo "入力ミスです。"
;;
esac
done

echo "sync中..."
sync
sync
sync
sleep 3s

echo "/dev/$hddをumount..."
sudo umount /dev/$hdd*

if [ $(mount |grep $hdd |wc -l) -gt 0 ] ; then
echo "umountに失敗しました。"
exit 1
else
echo "正常にunmountしました。"
echo "/dev/$hddの削除..."
echo "1" > $dev

if [ ! -e $dev ] ; then
echo "/dev/$hddを削除しました。"
else
echo "削除に失敗しました。"
fi
fi

コピーしたらタグとか全部消えてしまった…。

シェルスクリプトもド素人なのでソースがおかしければご指摘お願い致します。

私の環境ではこれで一応問題なくホットスワップできているようです。

もし参考になれば使ってあげて下さい。

 

ただ、ディスクを抜き差しするとステータスが変わった的なメッセージが表示されるのですがこれは正常なんですかね…?