USBメモリの書き換え限界寿命

GIGAZINEに面白い記事があった。『USBメモリの書き換え限界寿命が来ると何が起きるのか、実際に寿命が来たケースをレポート』というもの。USBメモリNAND型フラッシュメモリが書き換え限界を突破し壊れたという話。非常に興味深いレポートなのだが,故障の原因を書き換え限界とするには根拠が乏しいのでは?

まず,NAND型フラッシュメモリに書き換え回数制限があるのは事実である。どれくらいかというと2値品で10万回,多値品だと1万回らしい*1。書き換え可能回数は微細化によっても減少するとのことなので最近のものの方がより少ない。
ここで注意すべき点はデバイスに1万回しか書き込みが出来ないというわけではないということだ。NAND型の場合,書き込みはページ(eg.2048バイト)と呼ばれる単位で,消去はページを複数集めた(eg.64ページ)ブロックと呼ばれる単位で行われる*2。特定のページへの書き込みの回数が1万回を超えるとそのページは壊れて使い物にならなくなる可能性がある。一方,書き込みをあまりしていないページは問題なく使える。1ページ使えないくらいでチップそのものも使えないというのでは不経済極まりないので,通常USBメモリやSDカードなどは不良があるブロックがあってもそれは使わないようにし,問題ないブロックのみにデータを書き込むようにしている(NAND型の不良検知はブロック単位)。HDDにも不良セクタというものがあるが,それと同じようなものだ(たぶん)。
しかし,書き込み可能回数に限界があるというのは事実。同じブロックばかり使っているとそのブロックが使えなくなってしまいデバイスの記憶域が減ってしまう。そこで,NAND型を使うデバイスはブロックを分散して使うようにし,各ブロックの書き込み回数が均一になるようにしている(ウェアレベリング)。例えば,ちょうど1ブロック分のサイズのファイルを100回上書き保存した場合,同じブロックに100回書き込むのではなく,最初はブロック0に書き込み,次はブロック1, ... , ブロック98, で,最終的にブロック99にそのファイルが書き込まれる。もちろんブロック0からブロック98は消去。フラッシュメモリDRAMSRAMのように上書きできないのでブロック0に100回書き込む場合も書き込む前に消去が必要なので実行されるコマンドの数はどちらも同じ。

前置きが長くなった・・・。ここで,レポートを読んでみると,

使用頻度としては2週間〜3週間に1度あるかないかぐらいで、LinuxのISOイメージなどを詰め込んで移動させるのに使ってました。

とある。また,

購入したのは2007年2月27日。故障したことが発覚したのは2008年1月13日。

とあり,どうやらそれほど使っていたわけではないらしい。ただLinuxのISOイメージは結構サイズが大きそうだ。メモリ領域の使用率が高いとウェアレベリングの効果は薄くなるので,その影響で不良ブロックが発生したのかもしれない。

実際に348枚のJPEG画像(488MB)をフォーマットしたこのUSBメモリにコピーしてから確認したところ、23枚が上記のような感じで化けました。すべての領域がアウトになったわけではないようですが、一部の個所にデータが書き込まれるとダメになる感じ。

USBメモリにコピーする時にはエラーが出ていないようだ。通常,書き込み時にエラーがなく,書き込んだデータをすぐに読み出すのであればきちんと読み出せるはず。というのは,NANDフラッシュメモリは書き込み後と消去後にちゃんと書き込めたか,ちゃんと消去できたかをチェックするためのコマンドがあり,書き込み後にちゃんとチェックしていれば間違ったデータが書き込まれることはないはずだからだ。仮にチェックで書き込み・消去の失敗がわかったらそのブロックが不良ブロックがどうか検査して不良ブロックであれば今後使われないように管理される。管理する責任を負うのはフラッシュメモリを使う側であり,USBメモリやSDカードはそのための機能を内部に持っているのが普通。きちんと不良ブロックが管理されていれば“一部の個所にデータが書き込まれるとダメになる感じ”ということはないはず。ただし,管理できる不良ブロックの数には限度がある場合が多いと思う。もし管理できる数以上の不良ブロックが発生した場合はどうなるかはわからない。親切なデバイスなら書き込み不可になるのかな。レポートの事例を読む限りコントローラにも問題がある気がする。

レポートの作者が故障の原因が書き込み限界寿命であるとしているのは以下の部分だと思われる。

モリー雑学 : データ復旧のオントラック

例えば1日に20ファイルを作ったり、変更したりした場合、100日〜1000日しかもたない事になります。また、例え製造試験を通ったからと言え、正常だった箇所の劣化率は製造上のばらつきから全く同一ではありません。 場合によってはあっと言う間に劣化する事もありますので、バックアップは不可欠です。


というわけなので、非常に少ない使用回数であっても壊れるときは壊れる、だからこそ「USBメモリの中だけにしかデータがない」というのはかなり危険な状態だ、と考えて良いようですので、バックアップはやはり複数の媒体にしておくのが安心ということです。何もかも失う前に、気をつけておきましょう。

なんか投げやりだなあ。“非常に少ない使用回数であっても壊れるときは壊れる”って何に対しても言えることだし。それに引用している『メモリー雑学』もなんか変。一般的に,“例えば1日に20ファイルを作ったり、変更したりした場合、100日〜1000日しかもたない事になります”なんてことはないと思う。もしそうだとしたらザウルスなんて使い物にならないのでは?内蔵NANDフラッシュメモリにデータを保存しているわけだから。実際に『メモリー雑学』を見てみると,

− Flash Memoryには寿命があるのを忘れない事

  Flash Memoryと呼ばれるものは素子上の微細なコンデンサに蓄積される
  電荷の有無を“0”か“1”に置き換えるメモリー素子です。 電荷を抱かせるには
  読み出しよりも遥かに高い電圧を加えますので、セルは徐々に劣化してゆきます。
  書き換え可能回数は1万〜10万回と言われ、決して大きな値ではありません。
  また、このメモリーの特性上、書込みはブロックでしか行えませんし、ファイル
  システム自体の書込み制御もクラスターというI/Oの最低単位で行いますので、
  通常1回のファイル操作で最も負荷の掛かるROOTディレクトリは数回の書込みが
  発生する可能性を持っています。 例えば1日に20ファイルを作ったり、変更
  したりした場合、100日〜1000日しかもたない事になります。
  また、例え製造試験を通ったからと言え、正常だった箇所の劣化率は製造上の
  ばらつきから全く同一ではありません。 場合によってはあっと言う間に劣化する
  事もありますので、バックアップは不可欠です。 小まめにPCにバックアップを
  取られる様お勧めします。

とある。うーむ,色々な点で微妙な説明だ。とりあえずウェアレベリングなどは考えていないようだ。コントローラが載っていないSmartMediaならともかく,SDカードやUSBメモリはこの通りに壊れるとは思えないが。書かれたのが2005年らしいので,もしかしたら2005年はこんなだったのかも。

勢いでここまで書いたが,なんかめんどくさくなってきたな・・・。また後で書くと思う。