Re:SSDで不良セクタが出た話

meatlog.de10.moe

まさかの続編である…

ワタクシ製造業の中でも機械加工をやっておりまして、その都合で、旧い旋盤やマシニングセンタのNCプログラム支援のための旧いプログラムを動かすために、いまだにWindows XP環境を維持するハメになっております。

捨てたい…!めっちゃ捨てたい…!(むり)

で、XP時代にはSSDなんてなかったので、中古品のPCはHDDが入っています。これがSSDに慣れた身体にはとてもつらい。

なので、中古PCを入手したら、ついでに新品のSATA SSDを買って、HDDからSSDに丸ごとセクタバイセクタのコピーを行い差し替えることで、まあまあI/Oが高速な環境をゲットして、そこそこ快適に使っているわけですが…

先日そんなPCの1台が起動不能になりました。

ブートドライブが存在しない…SSDの故障!?ホンマに!?

TestDiskを使う

とりあえずこういう時は、SSDを取り出して、TestDiskで中身をチェックしてみます…

www.cgsecurity.org

使い方はこんな感じ。

pctrouble.net

XPはMBR形式しか使えないので、最初のパーティション形式選択で [Intel] を選び、[Analyse] - [Quick Search]と進めてみます。

…おやおや、パーティションが全滅しておるな…

よく見たらRead error at 0/0/7 (lba=6) というエラーが出ていました。ここが読めないということは、おそらくこの周辺を記録するSSDの1ブロック(512KB~2MBぐらい)丸ごと怪しいデータになっていると思われます。

先頭からそれだけの分のデータが壊れたということは、パーティションテーブルも全滅するのはあたりまえ。つらい…

GPT形式ならバックアップテーブルがあるんですが、こいつはWIndows XP、当然MBR形式であり、バックアップなんてものはない。超つらい…

さて、全然ダメくさいので、 [Deeper Search] で再検索をはじめて、しばらく待ってみましょう…

矛盾のないHPFS/NTFS領域が1つだけ見つかって、緑色になっています。ほかに選択肢はないので、こいつを [Write] してパーティションテーブルとして書いてみると…うまくいきました!

とりあえず先頭の2MB分のデータは壊れていると思われますが、それ以外のファイルはすべて異常なく読めました。

もちろん加工ノウハウが詰まっているファイル群も救出できました。よかった…

教訓:SSDも駄目なときはダメだからバックアップしろ(マジで)

実際何が起こっていたか(推定)

おそらくRead Disturbによるデータ化けでしょう。

MBR形式の先頭セクタはPCを起動するたびに必ず読まれる割に、書き込みはセットアップ時の1回だけです。

で、SSDの特定のブロックがまったく書き込まれないまま何度も読まれると、対象セル(と隣接セル)が、読み取り指示の電気信号の影響でデータ化けを起こす可能性があります。

SSDファームウェアやコントローラがいまいちだと、このデータ化け対策としてのウェアレベリング処理もいまいちで、最悪保存していたデータが壊れると考えられます。

今回このデータ化けがパーティションテーブルを保管した場所で起こってしまったことで、起動不能に陥ったものと思われます。

SSDを買う時は、コントローラやファームウェアの信頼性も考えないといけないとか、めんどいですなあ…