World
SSD耐久テスト
第1回 MLCの書き込み回数はどれぐらいなのか (2008.8.9)
SSDは書き込み可能な回数がHDDより低いが、実際にはどれぐらい書き込めるんだろうか。空き容量1GBにして耐久テストをしてみる。1〜32KBや1〜10MBなどのファイルを作り、正常に書き込めたか確認し、ある程度ファイルが増えるか空き容量がなくなったら削除。これをエラーが出るまで繰り返す。


使用するのはASUS Eee PC 901-XのDドライブ(MLC)。


まだ始まったばかりである。

テスト結果
キャッシュサイズ修正 (2008.8.10)

キャッシュを増やして高速化したので、最大で25MBのファイルが作られるように変更した。まだ60GBを超えたところだ。
10000回 (2008.8.13)

MLCのSSDは、同じ場所に10000回ぐらいと書き込めると言われているが、プログラムで同じ場所に書き込んだとしても、自動的に書き込み頻度が低い場所に割り当ててくれるので、あまり気にする必要はない。

SSD耐久テストでは、この話が嘘ではないことを前提に作ってある。つまり空き容量1GBのSSDに、512MBのファイルを書き込んで消すのを4回繰り返したとしても、SSDの前半512MBに4回書き込まれるのではなくて、全体の1GBに2回書き込まれるということ。

現在「SSD全体に書き込んだ回数」が201だが、これが10000前後で壊れるはずだ。安物は5000回ぐらいで壊れるとか、良品は20000回ぐらい平気とか、いろいろ言われるが……どうなんだろうか。
10日経過 (2008.8.20)

テストを始めて10日が経過したが、現在512回。仮に10000回で壊れるとすると、あと約20倍の時間が必要だから、200日かかることになる……残り190日。早く壊れるところを見てみたい。
1TBに到達 (2008.8.31)

ついに1TBに到達した。現在1133回書き込んだことになっているが、平均故障間隔の10%を過ぎたあたりだ。気が遠くなるようなテストを始めてしまったなと……。
2TBに到達 (2008.9.15)

とくに問題は発生せず順調だ。
3TBに到達 (2008.9.30)

この時点でSSD全体に3324回書き込んでいるので、10000回で壊れるとすると約1/3が終わった感じだ。
エラー発生 (2008.10.8)

いつものように901の電源を入れたまま、朝から晩まで耐久テスト。ところがSSDにアクセスしていないではないか。これはもしかすると……。


ついにエラーが発生した。この日を待っていた……と言いたいところだが、まだ3629回しか書き込んでいない。ちょっと壊れるのが早過ぎる気がする。でも書き込みに失敗しているのは事実だし、901のSSDは粗悪品なんだろうか。

SSDを確認したら空き容量が1.6MBしかなかった。こうなる前に自動的に削除するはずなので、何かおかしい気がするから計算してみたのだが、なぜか20MBぐらい足りない。いったいどこに行ったのだろうか。

そういえば以前、耐久テスト中に電源が切れたことがあった。もしかすると破損ファイルとして残っているのかな……残っていた。修復したら足りなかった20MBが復活してくれた。まだまだSSDは元気だ。
4TBに到達 (2008.10.13)

現在4420回だが、5000回前後で壊れたらどうしようか。
5TBに到達 (2008.10.25)

やっと予定の半分が終わった。
6TBに到達 (2008.11.6)

6TBを超えたようだが壊れそうな気配はない。この時点で6633回ということは、9TB過ぎたあたりで10000回になりそうだ。このままいけば今年中に結果が出そうな気がするが、来年になっても元気に動いているかもしれない。
SSDが壊れた (2008.11.18)

初めて見たメッセージだ。XPにこんな機能があるとは知らなかった。エクスプローラーでエラーチェックするよう指示が表示されるが、FILE0006.CHKといったファイルが書き込まれるから、更に酷くなるような……。


プログラムそのものも正常に動作しなくなっている。突然意味不明なDLLを要求したり、勝手にフォントが変わってしまったり、ドライブを認識できなくなったりと、プログラムが改変されてしまったような危険な動きを見せる。

HDDの感覚で考えれば、移動させていないプログラムには影響しないと思ってしまうかもしれないが、SSDでは新たに書き込んだ部分だけでなく、このように移動も更新もしていないファイルにも影響を与える。例えば16GB SSDの前半8GBに何かインストールし、空いている後半8GBで読み書きしているつもりでも、実際には全体が均等に書き込まれるようファイルの移動が行われている。


テスト開始した頃に保存しておいたビットマップ。ファイルサイズは変わらないが、もう読み込めなくなっている。もちろんこのファイルも移動させていない。頻繁に読み書きするファイルが壊れたらすぐ気づくが、このように滅多に読み込まないファイルが壊れても気づかない。気づいたときには手遅れだ。


テストで使用したファイルを削除しようとしても、このようにエラーになってしまう。読み込み時は耐久力が低下しないので、いくつかのファイルは無事に読み込むことができたが、コピーが成功しても中身が破壊されているファイルがあった。


ディスクの管理で見てみると、なぜか後半505MBが切り離されていた。エクスプローラーでは1GBとして認識していたので、もうファイルシステムごと破壊されてしまったのかもしれない。ちなみにフォーマットしても失敗してしまい、ファイルがそのまま残ってしまう。なぜならフォーマットも書き込みだからだ。

もしSSDに社外秘資料や個人情報が入っていた状態で、このように壊れてしまったとしたら、削除もフォーマットもできず破棄するとき困りそうだ。その時は物理的に破壊するしかないのかもしれない。


7544回書き込んだところで壊れた。購入してすぐにテストを始めたわけではないので、10000回は下回るだろうとは思っていたが、目標の約75%という結果をどう捉えるべきか難しいところだ。

この結果からSSDが壊れる目安になりそうなものは、書き込んだバイト数とテスト期間だろう。6×1024+850ということで、書き込んだバイト数は6994GB。8月9日から11月18日ということで、テスト期間は102日間。ちなみに1日のテスト時間は、朝7時頃テストを開始し、夜10時頃確認して終了させていたので、15時間書き込み続けたことになる。


SSDの中身を簡単に表現。横方向が容量で縦方向が耐久力。まずは新品のSSDに何かインストールした状態。緑色のはシステムファイルのような滅多に更新されないブロックで、赤色のはキャッシュファイルのような頻繁に更新されるブロック。右側の3ブロックには色が付いていないので、ここが空き容量。


ファイルが更新されると耐久力が減っていくことがわかる。


更新頻度が低い緑色のブロックを移動させ、均等にさせるのがウェアレベリング。


このように全体が均等になるように使用していく。


ウェアレベリングを使わずに、空き容量の範囲内だけで更新していくと、このように早過ぎる寿命を迎え、半分近くを無駄に残してSSDが壊れることだろう。ウェアレベリングの性能が悪いSSDでは、これに近い悲惨な結末があるらしい。

今回のテスト結果から、寿命の目安となる計算式を見つけ出す。テスト期間は102日間だったが、C1購入してから書き込み速度が上がったので、この期間を基本として計算する(1TBあたり12日間)。6994÷1024×12で82日間。

ウェアレベリングの仕組みはSSDによって異なるので、平均値を使った比率から算出した。まずは空き容量を求める。容量の単位は全てGBである。

  SSDの容量−使用量×使用量÷SSDの容量=空き容量

書き込み頻度を20%と仮定すると、単位を年とした係数は82÷(10÷15)×10÷365÷0.2で16.8となる。この係数16.8を使って寿命を求める。

  空き容量÷1日の使用時間×16.8=寿命

これはMLCとして計算しているので、SLCならば10倍にする。

  例
  8GBのSSD(7.5GB) 空き容量3.5GB(使用量4GB) 1日に7時間使用
  7.5−4×4÷7.5=5.367
  5.367÷7×16.8=12.88
  寿命は約12〜13年

今回のテスト結果から推定した寿命なので参考程度に。
壊れる前兆 (2008.11.20)

壊れる前日(17日)の話になるが、壊れる前兆らしき現象があった。それはSSDへのアクセス速度低下だ。朝見たときテストの進行速度が遅いような気がしたので、エクスプローラーでコピーや削除をしてみたところ、いつもより3倍以上遅くなっていた。過去にも同じようなことが発生したが、夜には元の速さに戻ってくれたので、今回も大丈夫だろうと思ったら……そのまま壊れてしまった。


SSDの中はこんな感じになっている。320MB付近で必ずエラーが出るのだが、見た目ではわからない。なぜならこれは実際のSSD上での配置とは異なるからだ。視覚的に壊れる前兆を知るのは無理みたいだ。

テスト開始前 11月17日
Sequential Read 29.755MB/s 29.492MB/s
Sequential Write 8.005MB/s 7.733MB/s
Random Read 512KB 29.481MB/s 29.532MB/s
Random Write 512KB 1.868MB/s 1.841MB/s
Random Read 4KB 6.926MB/s 6.790MB/s
Random Write 4KB 0.018MB/s 0.026MB/s
ちなみにベンチマークには影響しないようだ。これはCrystalDiskMarkの結果だが、テスト開始前と17日のを比較しても、誤差程度でしかなかった(逆に17日のほうが速い項目もある)。ここに数倍の差が表れれば確実な目安になるのだが、どうやらコピーや削除といった体感を信じるしかないようだ。

寿命の目安となる計算式で使用した、係数16.8について補足。テストの結果から1GBが壊れる日数が82日間。これは1日に15時間書き込んだときの日数なので、10÷15で割って10時間あたりの日数に変換する。

  82÷(10÷15)=122.9日

最終的には1時間単位で使用時間を指定するので、10倍にして1時間あたりの日数に変換する。

  82÷(10÷15)×10=1229.9日

年単位の係数がほしいので365で割る。

  82÷(10÷15)×10÷365=3.4年

書き込み頻度を20%(1時間あたり12分間の書き込みが発生)にするため0.2で割る。

  82÷(10÷15)×10÷365÷0.2=16.8年

これで毎日1時間使って1GBが壊れるまでの年数が得られた。この16.8を係数とする。
Home