ひとりごと

新しい記事:[2443]  古い記事:[2441] 表示単位 :

ついったー[おとなり日記] かがみさん Y.Kumagaiさん

2009/02/12 (木)

・ だめだめUSB-HDDアダプタ

USBって便利ですよね。以前はハードディスクというとSCSIなりATAとして接続するのが当たり前でしたが、最近はUSBに変換してPCに接続するといろいろ便利に使えます。特にあらかじめUSBで外付けHDDを接続してHDDイメージをコピー、最後にPCを分解して物理的に交換 というのが最近の私のHDDリプレース手順。だから裸のドライブを接続してUSBに変換するアダプタは手放せません。

が、なんか動作が妙に感じることが稀にあるんですよね。以前ZFSプールを作成してミラーした時も妙なエラーがカウントされました。昨日は所用にてUSBアダプタのHDDにFreeBSDを入れたところ、 make world できない(コンパイルエラーが出る)現象が発生。

何かがおかしいことは間違いなさそうなので、簡単なスクリプトで実験してみました。

#!/bin/sh
base=testdata

dd if=/dev/random bs=200k count=10 | hd >$base

# ファイル作成
count=1
until [ $count -eq 1000 ];
do
    cp $base ${base}$count
    count=`expr $count + 1`
done

# ファイル比較
count=1
until [ $count -eq 1000 ];
do
    diff $base ${base}$count
    rm ${base}$count
    count=`expr $count + 1`
done
rm $base

動作としては、10MBぐらいの大きいテキストファイルを作成した後 ファイル名を変えて1000個コピー、コピーが終わった後で diff にて元のファイルと同じかどうか調べています。正しく動作していれば dd が出力するメッセージ以外は画面に表示されないはずです。が、

1回目 2回目
1回目2回目

なんと、違いが検出されてしまいます(T^T)

ちなみにおうちには2種類のUSB-HDDアダプタがあるのですが、片方は上記のように複数回実験しても違いが検出されるのですが、もう片方は試した限りでは同じHDDを使用しているにも関わらずdiffによる違いは見つかりませんでした。make world もちゃんと通ります。今まではっきりとは分からなかったのですが、USBアダプタのうち一つはダメダメだったのですねー。もしかしたらWindowsとかで使う限りは問題が起きないのかもしれませんが、FreeBSDで問題があるなら私にとってはゴミです。ゴミはゴミ箱へ(^_^)。

しかし、ハードディスクの読み書きがおかしい時はもっと盛大に(少なくともセクタ単位で)異常が見られるものだと思っていたのですが、こんな風に合計10GB弱読み書きして数バイトだけ違うなんてこともあり得るのですな。そりゃ今まで問題が発覚しなかったわけです。

[つっこみ]

新しい記事:[2443]  古い記事:[2441] 表示単位 :
※このページへのリンクは自由です。リンクの方法については[つっこみ]で表示されるページの最後をごらんください。
たかたに(takatani@mars.dti.ne.jp)