« VeritasVolumeManagerでのresync | トップページ | Eee PCメモ »

2008年1月24日 (木)

VeritasVolumeManagerでのresync その2

結局、スクリプトはこんな感じに仕上がった

#!/bin/bash

MAXWORKER=2

FLAG2=0
TASKLIST=""
while [ $FLAG2 -eq 0 ]
do
WORKER=`vxtask list 2>/dev/null|grep RESYNC|grep "/R" |wc -l`
if [ $WORKER -ge $MAXWORKER ];
then
for taskid in `vxtask list 2>/dev/null|grep RESYNC|grep "/R"|awk '{ print $1 }'`
do
FOUND=0
for tasklistid in $TASKLIST
do
if [ "$taskid" == "$tasklistid" ];
then
FOUND=1
fi
done

if [ $FOUND -eq 0 ];
then
echo "Task $taskid is working...."
vxtask list $taskid |grep RESYNC|awk '{ print "This task resync /" $8 "/" $7 }'
TASKLIST="$TASKLIST $taskid"
fi
done

sleep 10

else
echo "search new taskid"
MINTASK=0
MINSIZE=9999999999
for taskid in `vxtask list 2>/dev/null | grep RESYNC | grep "/P" | awk '{ print $1 }'`
do
NEWSIZE=`vxtask -l list $taskid | grep Progress | awk '{ print $5 }'`
if [ $NEWSIZE -lt $MINSIZE ];
then
MINSIZE=$NEWSIZE
MINTASK=$taskid
fi
done
echo "Task $MINTASK start to resync"
vxtask resume $MINTASK
fi

# remove finished taskid
NEWTASKLIST=""
for tasklistid in $TASKLIST
do
TEST=`vxtask list $tasklistid 2>/dev/null`
if [ $? -ne 0 ];
then
echo "Task $tasklistid finished"
else
TEST2=`echo $TEST|grep "/R"`
if [ "$TEST2" == "" ];
then
echo "Task $tasklistid is paused"
NEWTASKLIST="$NEWTASKLIST"
else
NEWTASKLIST="$NEWTASKLIST $tasklistid"
fi
fi
done

TASKLIST="$NEWTASKLIST"
done

|

« VeritasVolumeManagerでのresync | トップページ | Eee PCメモ »

Linux」カテゴリの記事

クラスタリング」カテゴリの記事

サーバ」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/522499/10054503

この記事へのトラックバック一覧です: VeritasVolumeManagerでのresync その2:

« VeritasVolumeManagerでのresync | トップページ | Eee PCメモ »