opensolarisでディスクの表面検査だが、もうにゃんかもうちょっとマシにゃ物はにゃいんかね。
zpool scrubするとIO負荷高すぎだし、停止したら最初からやり直しだし。
formatでパーティション指定したら無限ループするし。
もうddで読んでエラーでにゃきゃもうそれでいいや、ってことで、
dd if=/dev/rdsk/c8t0d0p0 bs=1048576 count=9000000 | wc -c
とかで。値の9TBは大きい目の数字というだけ。
ま、このp0でいいのかってのが非常に微妙にゃのだが、s2とか状況に応じてやるしかにゃいか
ディスクの容量
iostat -En | grep -v "^Vendor:" |grep -v "^Media Error:" | grep -v "^Illegal Request:" |
sed -e 's/Soft Errors:.*//' -e 's/ bytes.*//' -e 's/ *$//' -e 's/.* //' -e 's/^<//' -e 's/\n//' |
while read a ; do read b ; echo $a $b ; done
とwcの出力を比較すると、一応全容量読んで止まってくれてる感じはするんだよね。まぁあんまし検証してにゃいけど。
てことで合わせると、
iostat -En | grep -v "^Vendor:" |grep -v "^Media Error:" | grep -v "^Illegal Request:" |
sed -e 's/Soft Errors:.*//' -e 's/ bytes.*//' -e 's/ *$//' -e 's/.* //' -e 's/^<//' -e 's/\n//' |
while read a ; do read b ; echo $a $b ; done |
while read a b ; do
dd if=/dev/rdsk/${a}p0 bs=512 count=1 >/dev/null 2>/dev/null || continue
echo $b $a start
dd if=/dev/rdsk/${a}p0 bs=1048576 count=`expr $b / 1024 / 1024 + 1` | wc -c
echo $b $a end
done
みたいにゃ感じ?
ddでいいの?って点は大いに不安であるが(笑)
opensolarisでディスクの表面検査だが、fdiskでパーティションを切ってるとメニューから選択できにゃい。
format c0t0d0p2
では通らにゃいし、
format -p 2 c0t0d0
でも
format -d /dev/rdsk/c0t0d0p2
でも無理にゃんだが
format /dev/rdsk/c0t0d0p2
にゃら通る。分かるかこんにゃもん!
しかもanalyzeメニューでsetupしにゃいとパーティション0の情報か何かが使われる。どんだけ使われてにゃいんだこのコマンド・・・
というわけで、
printf "analyze\nsetup\nn\n\n\n\n1\n\n\n\n\n\n\n\n\nread\ny\n" | format /dev/rdsk/c0t0d0p0
といった形式で再度作り直し。うーん、これは酷い(笑)
全ディスクはもうどっから取るべきか悩ましいので
iostat -en | sed -e 's/.* //' | grep [0-9] |
while read a ; do test -e /dev/rdsk/$a && echo $a ; done | sort | uniq
でにゃんとか。
てことで合わせると、
iostat -en | sed -e 's/.* //' | grep [0-9] |
while read a ; do test -e /dev/rdsk/$a && echo $a ; done | sort | uniq |
while read a ; do printf "analyze\nsetup\nn\n\n\n\n1\n\n\n\n\n\n\n\n\nread\ny\n" | format /dev/rdsk/$a ; done
これで一応全部舐めてくれるかにゃ?
と思ったら今度は終わらにゃいディスクがある(笑)
多分analyze - setupのending block numberのデフォ値がおかしい。存在しにゃい所まで読みに行って永遠に終わらにゃい。
確かに当初の目的は果たしたが、そういう問題じゃねぇ
パーティションの切り方が悪いんだろうけど、そういわれてもナー
cat /dev/rdsk/c0t0d0p2 >/dev/null
とかしたほうがマシか?