SSD を Secure Erase する
NANDフラッシュメモリを使ったSSDは、総書込量が増えるにつれて、書き込みが遅くなっていく。それを緩和するために Trim コマンドが新設された。だが、手に入れたSSDTranscend TS64GSSD25S-Mは Trim をサポートしていない古い機種だ。
そんな古い機種でも ATA の SECURE ERASE UNIT コマンドを使って、ドライブ全体を初期化するという手段を使うことで、初期の性能を取り戻すことができる。では、どうやって Secure Erase コマンドを発行したらよいのか。
ネット上で好評なのは Texim(テクシム)社の TxBench だ。これはSSDやHDDのベンチマークソフトだが、Secure Eraseや全域Trimのコマンドを発行する機能がある。だが、Windows 8以降はOSが SECURE ERASE UNIT コマンドをフィルタしてしまうために、TxBenchによるSecure Eraseはできなくなった。
というわけで、非Windows環境でSecure Eraseを行うことを目指した。その顛末記である。
Parted Magic
Secure Erase のソフトをオンラインで探していると、Parted Magic を勧めているサイトが多かった。CDブートのLinux環境にGPartedを組み込んだもので、Secure Eraseの機能もある。
フリーウェアとして紹介されていたが、すでに有償化されていた。わずか$9ではあるのだが、期待通りの動作をしてくれなければ悔しいので、購入はためらわれる。最後のフリーバージョンは 2013_08_01 (ライセンスはGPL)。このバージョンをネットで探していると、ふうえん氏のParted Magicについてというエントリを見つけ、貴重な情報を得ることができた。氏に感謝である。それによると
- Parted Magic の 2013_08_01 のLinuxカーネルには、USBコントローラを破損させうる致命的なバグが含まれている。
- Parted Magic LLC では、これに対処した 2013_08_10 というバージョンを急遽リリースした。
- このバージョンはネットではなかなか見つからないが、ポーランドのmrsebe氏が再構成した2013_08_10のISOファイルを公開している。
- さらに、これらのバージョンの Secure Erase 機能ではデフォルトのパスワードがNULLになっている(これはパスワードなしを意味する)が、Lenovo BIOSではSSDがbrick(=文鎮)化するリスクがある。なので、Lenovoで使う場合にはSecure EraseのパスワードをNULLにしてはいけない。
mrsebe氏のエントリからたどって pmagic_2013_08_10_reconstructed_v2.iso をダウンロードする(ニュージーランドのMEGAというオンラインストレージを使っている)。これをCD-Rに焼いて起動すると・・・。
どれを選んでも良いが、私のPCは1GB以上のメモリを積んだ64bit機なので、2を選択した。
タイムゾーンの選択画面では Asia/Tokyo を選ぶ。
無事にLinuxが起動した。ここで画面上のアイコンから Erase Disk(消しゴムのアイコン)を選ぶ。
消去手法の選択画面が表示される。一番下の Internal Secure Erase を選択。
ドライブ選択画面。安全のためHDDのコネクタを抜いておいたので、SSDだけが表示されている。チェックを付けてOKを押す。
SSDドライブがfrozen状態になっているという警告が表示された。悪意あるウィルスなどがSecure Eraseコマンドを発行してドライブデータが全部消えてしまったら大損害である。それを防ぐために起動時にBIOSなどがドライブをfrozen状態にして、Secure Eraseコマンドを受け付けないように設定してしまう。これを解除しなければならない。その方法は、
- 別のPCを使う(frozenにしないBIOSを積んだPCを使えば良い)→却下。
- PCをいったんスリープさせる(スリープすることでドライブの電源が切れ、frozenが解除される)→今回はこれを。
- PCを起動したままドライブの電源コネクタを抜き差しする(ドライブ破損のリスクがあるのでお薦めできないが、他の方法がダメならこれしかない)。
ここではSleepを選んで押してみた。PCがスリープ状態になったところで、電源ボタンを押して目覚めさせ、再度Erase Diskを選ぶところからやり直したところ、frozenの警告は表示されなかった。
Secure Eraseのパスワード設定画面。NULLのままにすると、パスワードなしになる。(ただし、Lenovo+USB接続の場合にはNULLにするとSSDが文鎮化するリスクがあるそうだ)。
ドライブにエンハンスドSecure Eraseの機能がある場合には選択画面が表示される。エンハンスドだとユーザーがアクセスできない領域(エラー代替用の予備ブロックとか)までクリアされるようだが、unsureならNOを選んで通常のSecure Eraseを使え、というのでNoを選択。
すべてのデータが消去されるという警告。Secure Eraseには約2分かかるという。
どうやらドライブがエラーを返してきて消去できなかったようだ。パスワードはNULLにしておいたし、エンハンスドを選んでもエラーになる。これ以上は手の打ちようがなく、Parted Magicを使ったSecure Eraseは未完に終わることになった。
(その後、Parted Magicの新しいバージョンで試してみたら、SSDがSecure Eraseの対象として表示されなかった。このSSDの製品仕様なのか、個体の問題なのかは不明だが、Secure Eraseの機能に何らかの不具合が生じているようだ)。
HDDErase
もう少しLinux環境でSecure Eraseを行ってみようと思い、hdparm コマンドを試してみた(参考 nvsofts氏のエントリ)・・・が、それもエラーになってしまった。
そこで、HDDErase というソフトを使ってみた。カリフォルニア大学サンディエゴ校(UCSD)にあるCMRR(磁気記憶研究センター)で開発されたソフトだ(UCSDと聞くとPascalという言語を思い出すのは中年以降だろう)。HDDEraseはDOSベースの古くさいソフトで、しかも担当研究者が退職したのでテクニカルサポートが提供できないとある。最新版4.0の日付が9/20/2008。とはいえ、非Windows・非Linux環境で試せるソフトとしては筆頭であろう。
まず、Rufus というソフトを使ってUSBメモリにFreeDOSをインストールし、そこへHDDERASE.EXEを転送した。
次に、BIOSのストレージの設定を変更し、LegacyとかIDE互換のモードにした(つまり、昔ながらのPrimary/Secondary, Master/Slaveの扱いをしてくれるモード)。
USBからFreeDOSを起動させ、HDDERASE.EXEを実行。
確認画面を通過していくと、ドライブ選択が現れるので、ここでは s0 を選択した。
ATAのセキュリティ機能をサポートしている、エンハンスドSecure Eraseの機能がある、さらにfrozen状態になっている、とある。frozen状態だとSecure Eraseができない。そこで、PCを起動したままドライブの電源コネクタを抜き差しするという荒技を使ってfrozen状態を解除し、HDDERASE.EXEの起動からやり直したら、frozenの警告が消えた。
選択メニューが表示されたので、1を選んで通常のSecure Eraseを実行。
ドライブの最大アドレスと最大LBAアドレスが違っている、とある。これはドライブの終わり部分にHPAあるいはDCOという領域を確保してあることを示している。Secure Eraseするとその領域も消えてしまう、という警告が表示された。もちろん消えてしまっても私はかまわない。
問題なのは、そのHPA/DCO領域の大きさが4,169,760,769セクタもあると表示されていることだ(約2GB)。SSDの容量を完全に上回っている。なにかの不調が潜んでいるようだ。このSSDがきちんと動作するのにジャンク品として売られていた理由は、このあたりにあるのかも。
Unable to remove HPA/DCO area(s)とエラー表示があり、選択メニューに戻ってしまった。HDDEraseを使ったSecure Eraseも成功しなかった。ジャンク品手強しである。
HDDEraseについてのより詳しい操作は DOS/V POWER REPORの記事 がある。
TxBENCH
Parted Magic もダメで、HDDErase もダメとなったら、どうすればいいのか? 結局、TxBENCHを使うしかなかった。Windows 10(や8)上ではSecure Eraseができないのだから、そのためにわざわざWindows 7をインストールした。
TxBENCHのデータ消去画面。右上のSecurty Frozenが緑色に点灯している。すでにHDDEraseの時にやったように、PCを起動したままドライブの電源コネクタを抜き差しするという技を使ってSecurity Frozen状態を解除した( 表示になる)。
確認画面(約2分かかると表示されている)。
正常終了した。・・・はあ、ずいぶん回り道をさせられたものだ。
他のSSDで試してみないとならないが、Secure EraseのためにWin7環境をHDDに残さなければならないのはウザい。WinPE3.0でブータブルなUSBメモリを作っておいた方がいいかもしれない。
Secure Erase前後でベンチマーク比較
せっかくTxBENCHをインストールしたので、Secure Eraseを行う前後でベンチマーク結果を比較した。
上がSecure Erase実行前、下が実行後。
ランダムアクセスに有意な差はなかった。シーケンシャルリードが速くなった。理由は謎だ。散々苦労してSecure Eraseを成し遂げたのに、あまり差がないというのは残念だが、SSDの前のオーナーがSecure Eraseしてから手放したのかもしれない。
ともかく、無事Secure Eraseができたので、このSSDにWindows 10をインストールしてみた。もちろんプチフリは起きているが、それについては稿を改めよう。