SSDの寿命に悩む
要約:SSDはどうも信用できない。SSDの状況を正直に報告してくれる仕掛けがあると信用できるのだがなぁ。
SSDというのはSolid State Driveの略で、要するにHDDじゃなくて半導体に記憶するシリコンディスクと言われるものだ。素子としてはフラッシュメモリを使っているのでUSBメモリと同類と言えば同類だが、もうちょっとと高級というか複雑な仕掛けを持っている。可動部分がないので静粛だし振動に強いしアクセスもそこそこ早いしサイズも小さくできる。
しかし、問題はこのフラッシュメモリという素子が書き込み回数に関して限界を持っているということで、構成によってSLCで10万回、MLCで1万回とも言われている。ただしそれぞれの製品について書き込み回数は仕様として明言されていない。
なので、ついついSSDの寿命については疑心暗鬼というか懐疑的になってしまう。実際にSSDを搭載したWindows7のPCを数年間使って、SSD換装も2度経験して、どうやら寿命らしきものも経験して思うのだが、やっぱりSSDは信用ならんな、と。
ということを言うと、「いまのSSDは進歩しているからそんなことはないよ。情弱(情報弱者)には困ったもんだ。」とか言われたりする。
そういう「お偉い人たち」の言い分はこうだ。まず容量64GBのSSDがあるとする。そしてそのSSDに1日10GB書き込むとする。1日に10GBというのはかなり無茶な(大きすぎる)前提だが、そうすると6.4日でSSD全体を書き込みが一巡することになる。SSDには10万回書けるとすると、このSSDを寿命まで使うには64万日かかることになる。64万日はは1753年だから、これだけ使えるのなら寿命としては十分でしょう、と。
これは間違いである。SSDというのは、というかフラッシュも同じだがそんなに単純なものではない。
HDDでは書き込みの最小単位は512バイトだ。ところが最近のSSDでは書き込みの単位(ページ)は例えば16KBなのだが、それに対して消去の単位をブロックと言って4MBだったりする。これがどういうことかというと、たった1バイト書き込むだけでもSSDでは4MBを消去して(そこにあったデータはどこかに保存しておいて書き戻す)、そのうちの1ページを書き換える。これで書き換え回数が10万回のうちの1回が消費されたことになる。
SSDが新品のときには、書き込みのたびに新しく4MBのブロックを消費していけばいいが(同じブロックを使っているとそこだけが消耗するので)、ブロックの消費が一巡すると、次にどのブロックを消去するのか、とか使用中のページをどう管理するかということを慎重に制御しないといけない。その中でページデータを移動したりすると、その操作自体がまた書き込み回数を消費することになる。
だから、SSDの寿命に関わるのは書き込み量ではなくて、書き込み回数なのだ。小さな量をたくさん書き込むような使い方をすると、その都度1ブロックの書き込み回数を消費してしまうから、4MBブロックで構成される64GのSSDは16000回の書き込みで一巡するので、例えばPCを操作している人はそんなに書き込みをしていないつもりでも、OSは人間の知らないところでいろいろ書き込んだりするので(スワップとかキャッシュとかバッファとか)1日に100万回の書き込みなんてこともあり得ないことではない(1日は86,400秒しかないので、これもちょっと無茶な前提ではある)。
1日に100万回の書き込みがあって書き込み寿命を10万回だとすると、64GBのSSDは2500日で寿命を迎える。これは7年だからまぁそれだけ持ってくれればいいか、という考え方もできる。書き込み限界が10万回ならば、だ。安価なMLCなら寿命はその1/10だから0.7年ということになって、8か月の命ということになる。
書き込み回数を減らすにはバッファリングとかいろいろな手段もあるが、それよりも今使っているSSDがどれくらい消耗しているのかを表示してくれればいいのに、と思うわけだ。SLCというのは確かSingle Level Comparisonだったかと思うが、素子の最小記憶単位に書き込まれている電荷の量を2値で判断する。

その結果、同じ構造の半導体に倍の容量を記憶することができるのだが、その代わりに判断レベルのマージンを犠牲にしている。
8値のMLCならば3ビットを詰め込めるわけで、実際にサムソンがそういう製品を出していたが最近その話を聞かないのは8値が使われなくなったのか、それともこっそり使っているのかわからないのが不安なところだ。
だから、診断ソフトというか、診断システムを完備させてほしい。
動作するときには実際に各セルごとにこれらのアナログ値の比較を行っているのだから、そのブロックのマージンはわかるはずだ。マージンがわかれば消耗具合がわかるはずで、メモリモジュールからそういう情報を引き出して、それをブロックごとに表示させることは可能だろう。
それが無理でも、ページの代替状況(ダメージを受けたページを代替する)は読み取れるはずだと思うので、そういう正直な状況表示機能を持たないことにはなかなか安心して使えないと思うよ。
そういう目的で作られたらしい「SSD LITE」というソフトがあったので、SSD搭載ノートPCで試してみたのだが、結局そのためのインタフェースを持っているわけではなくて、HDD向けの情報であるS.M.A.R.T.を利用しているらしいし、私の使っているSSDはそもそも提供すべき情報を提供していないらしくて、これはやはりまた「安物買い」をしてしまったのかもしれない。


というわけで7年目を迎えているDELLのmini9だが、さすがに電池がヘタってきていて確か当初は3時間半ほどつかえていた電池が2時間弱しか持たなくなってきている。今でも時々使わざるを得ない局面があって、月一くらいで使ったりしているので。
それは仕方がないと思っているのだが、なんだか正直なコメントがなかなか泣かせるなぁと思ったのでご紹介。
実際、2時間使えるかと思っていると、残り15分くらいで「電池がありません」とかメッセージを残してさっさと店じまい(シャットダウン)してしまうということが何度かあって、注意しなくちゃなぁと思っていたのだ。

2018年4月4日追記:
この投稿を書いたとき、私はTRIMコマンドのことをよく知らなかった。
昨年夏にそのあたりのことをかなり深く学習する機会があり、今ではTRIMコマンドを適切に使えればSSDも案外長く使えそうだ、という気になってきている。
TRIMというのはどいうことかというと、PC上のOS側からSSDに対して「この部分は今使っていないよ」ということを教えるコマンドなのだ。
なぜそれがSSDにとっていいのかというと、SSDはこのコマンドによって「使われていないページ」を知ることができて、それらのページをブロックにまとめることによって「新品のブロック」を準備できるからなのだ。
「新品のブロック」にページをどんどん書き込んでいくのはSSDにとって負荷が少ない。ブロックが新品でないと、私が心配するようにページを書き込むたびにブロックを消去しないといけない。
実際、ランダムアクセスで書き込むのなら、TRIM機能があってもやはり私が心配するように書きこみ回数はどんどん増えていくのだが、多くの場合はシーケンシャルな追記型の書き込みなので、OSがTRIM機能で使っていないページをちゃんとSSDに知らせてやれば、私の心配するような書き込み回数の急激な増大はなくなるだろう。
TRIM機能を使えばHDDよりもSSDのほうがやはり書き込み回数は多くはなるのだが、それはせいぜい2倍程度に抑えられるので、私が心配するような「あっという間に寿命が来る」ということはないだろう。
しかし、私がmini9で使っているSSDにはこのTRIM機能が無いのだなぁ。だめじゃん。
| 固定リンク
コメント
どうなんでしょ、ハードディスクも生もので結構早くに寿命が来たりしますからね、クラウドなら安心って人もいるけど「サービス停止します」なんて事態もままありますしね。
投稿: ををつか | 2016年11月27日 (日) 20時40分
SSDも数字的にはまぁ使用に耐えるところまで来ているのかもしれません。しかし、例えば信頼性について全面的に責任を持てるかというと、これはちょっと難しいですね。
HDDは長年の経験によって信頼を勝ち得たのですが、SSDも信頼を勝ち得るためには寿命判定のためのコストをかけてもいいんじゃないかと。
投稿: PicksClicks | 2016年11月29日 (火) 22時31分