書き換えの寿命は ウィキペディア によると「数万回から数百万回」だそうで、 1日100回書き換えると1年くらいで故障するでしょうか。 そこで、実際にどのくらい使えるか試してみました。
試したのは PQI 製の 16GB Class 6 SDHC カードです。2008年10月に買いました。 これに Linux の ext3 ファイルシステムを作って、 (ext2 のほうが負荷が小さそうだがあえて ext3 に)、 /home ディレクトリに (Windows で言う \Users フォルダに) マウントしました。 空き容量は1から2割くらいで、 仕事で毎日朝から晩までデスクトップ環境として使いました。
最初に異変が起こったのは2年4か月後の2011年2月、 Windows で言うメールの「削除済みフォルダ」のように使っていたアクセスの多い場所でした。 あるファイルを読もうとすると Permission denied になったのでディレクトリを見ると、
$ ls -l 501[123] -rw------- 1 nomura nomura 4948 2010-05-14 11:35 5011 b--Srws--- 1 892749604 538986822 54, 55 2026-12-19 01:19 5012 -rw------- 1 nomura nomura 1730 2010-05-14 13:29 5013のまん中のファイルのように壊れていました。 別の例では、あるプログラムを実行すると落ちるのでバックアップしてあったファイルと比べると、 次のように外見は同じですが中身が壊れていました。 これは内容の一部が 0xff になっていました。
$ ls -l libStock.so.6.38* -rwxr-xr-x 1 nomura nomura 620832 2010-04-28 06:57 libStock.so.6.38* -rwxr-xr-x 1 nomura nomura 620832 2010-04-28 06:57 libStock.so.6.38.broken* $ cmp libStock.so.6.38* libStock.so.6.38 libStock.so.6.38.broken differ: byte 36865, line 95
ハードディスクが壊れた時はこれらのように変な結果が表示されるのでなく、 エラーになって結果は表示されないでしょう。 さらに数日使うと次のように I/O error が出始めて、 起動時に fsck も走るようになりました。
Feb 23 14:22:49 hannya kernel: mmc0: Got command interrupt 0x00000001 even though no command operation was in progress. Feb 23 14:22:49 hannya kernel: mmc0: Got data interrupt 0x00200000 even though no data operation was in progress. Feb 23 14:22:49 hannya kernel: mmc0: Controller never released inhibit bit(s). Feb 23 14:22:49 hannya kernel: mmcblk0: error -5 sending read/write command Feb 23 14:22:49 hannya kernel: end_request: I/O error, dev mmcblk0, sector 18252056
フラッシュメモリの困った所は、ハードディスクが壊れた時のように異音もなく、 アクセスが遅くなるわけでもなく、エラーもなく、 中身が平然と書き換わっていることです。 そのため、ハードディスク以上に感覚を研ぎ澄ませて、 異変を感じたら早めに避難しなければなりません。
結局2年ちょっと正常に使えたのと、 メモリだけに読み出しがディスクの1.5倍くらい速く感じるのと、 自分はハードディスクも3年ごとくらいに壊しているので、 書き込みが少なく読み出しが多い用途にうまく使えれば快適だと思います。