2017-06-17 23:34 — asano
ThinkPad X60のHDDの調子がおかしいので交換用にHDDを買ってきました。
これが買ってきた東芝のMQ01ABD100です。これまでのものは500GBだったのですが、500GBと1TBで値段があまり違わなかったので1TBに増量です。2つあるのはちょっと別の予定があるから(先日の超小型PCではありません)です。
超小型PCで4096バイト/セクタのHDDでも何も問題ないことがわかったので「ADVANCED FORMAT」のものです。もっともこの容量で512バイト/セクタのドライブは無いと思いますが...
8455MB (CYL16383,H16,S63)
1TB (LBA 1,953,525,168Sectors)
の2つの容量が書かれているのが面白いですね。今さらCHSで使うことなんて考えなくてよいと思いますけど。
上部のコネクタは左から電源、SATAですが、右になにやら得体の知れない4ピンのコネクタがいますね。
さて事の発端は数日前X60を使っていたところやけに動作が遅いのに気付いたことです。いや遅いというより反応が返ってこなくなりしばらくするとまた使えるようになるという状況でした。それでログを見てみたところ
wd0g: error reading fsbn 137411616 of 137411616-137411647 (wd0 bn 166312992; cn 164993 tn 0 sn 48), retrying wd0: (uncorrectable data error)
といったエラーが大量に記録されていました(OSはNetBSDです)。どうもHDDが死にかけているようです。
超小型PCのときと同様、買ってきたHDDをUSBで接続してコピーを行ないます。前回は先頭の/dev/sd0aパーティションしか正常にコピーされなかったので、堅実に1パーティションずつやるか再現実験をかねてまとめてやるか悩ましいところですが、あえて再現実験する道を選びます。
それで前回と同様に作業を行ないます。
cyanide [22] # disklabel -W sd0 cyanide [23] # dd if=/dev/rwd0d of=/dev/rsd0d bs=20b dd: /dev/rwd0d: Input/output error 2086830+0 records in 2086830+0 records out 21369139200 bytes transferred in 3074.054 secs (6951452 bytes/sec) cyanide [24] #
おっと、リードエラーを無視するためのオプションを付け忘れていました。
でもエラーは/dev/sd0gのはずなので/dev/sd0a, /dev/sd0e, /dev/sd0fはコピーできているはずです。これを順に確認していきます。
cyanide [24] # fsck /dev/rsd0a ** /dev/rsd0a ** File system is journaled; replaying journal ** Last Mounted on / ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 7750 files, 124119 used, 383904 free (336 frags, 47946 blocks, 0.1% fragmentation) MARK FILE SYSTEM CLEAN? [yn] y ***** FILE SYSTEM MARKED CLEAN ***** ***** FILE SYSTEM WAS MODIFIED *****
大丈夫そうです。/dev/sd0aは前回も正常だったので予想通りです。続いて/dev/sd0eを試します。ここは前回は失敗していたところです。
cyanide [25] # fsck /dev/rsd0e fsck: cannot open `/dev/rsd0e': Device not configured
アクセスすらできません。そうか買ってきたばかりのHDDにNetBSDのパーティション情報(MBRパーティションではありません、念のため)が書かれていないのでカーネルが勝手に/dev/sd0aと/dev/sd0d(ディスク全体)のみのドライブを仮定していたのです。コピーしてパーティション情報の書かれているエリアは書き換えられているのですが、カーネルはそのことを知らないので反映されていないようです。
面倒なのでUSBを抜き挿ししてパーティション情報を読み直させ、再度試してみます。
cyanide [27] # fsck /dev/rsd0e ** /dev/rsd0e ** File system is journaled; replaying journal ** Last Mounted on /var ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 885 files, 230752 used, 277271 free (143 frags, 34641 blocks, 0.0% fragmentation) MARK FILE SYSTEM CLEAN? [yn] y ***** FILE SYSTEM MARKED CLEAN ***** ***** FILE SYSTEM WAS MODIFIED *****
あれっ、/dev/sd0eもコピーできています。/dev/sd0fについても同様にOKでした。謎が深まってしまいました。とりあえず今回はこの点は追及しないでHDD換装のための作業を続けることとします。
あとコピーしなくていけないのは/dev/sd0gと/dev/sd0hです。
/dev/sd0gはコピー元に読めない部分があるので、エラーを無視しつつコピーを試みることにします。
cyanide [30] # dd if=/dev/rwd0g of=/dev/rsd0g bs=20b conv=noerror,sync
/dev/sd0hはせっかくなのでディスク末端まで容量を増やすことにして、newfs (論理フォーマット)をやり直してファイル単位でコピーすることにします。
/dev/sd0gのコピーを始めたのですが、まだまだ時間がかかりそうなので今日はここまでとします。
コメントを追加