SSD に関する雑感

  • SSD は block erase やら wear leveling で作業領域としての DRAM に大きく頼らざるを得ない。
  • 電源断により DRAM の dirty な領域が消失することを考慮しながらメタデータの破損を防ごうとすると、 DRAM -> NAND の書き込み順序に強い制約が生じ、高速化に支障を来す。(ファイルシステムにおけるそれと同じように)
  • DRAM with BBU を仮定すると、ファームウェアが書き込みの順序をイジる自由度が大幅に増す。
  • HDD と違い、 NAND は短時間ならキャパシタの電力で書き込みを行うことが出来るので、 SSD 内部での DRAM with BBU が容易であり広く普及するだろう。
    • コンデンサ二次電池と違い、はめ殺しに出来る程度に寿命が長い。
    • 定期的な交換を必要とせずメンテナンスが楽なので、コンシューマ向けにも普及するだろう。
  • 安価な SSD であっても、コントローラは数十チャンネルの NAND インターフェイスを持ち、それぞれを並列に動作させることが出来る。
  • ケミカルコンデンサも電気二重層コンデンサも経年劣化で容量が減るので、バックアップされてるはずだったが実は容量が足りなくて消えた!という事故が今後 10年ぐらいで起きるだろう。
    • しかし RAID カードの BBU で同様の事が起きるリスクと大して変わらないと思っている。
    • 将来的に SSD にも「定期的にバックアップキャパシタの容量をチェックする」みたいな機能が入るだろう。
  • コンシューマ向けのくだりで定期的な交換は不要と言っているが、全体の製品寿命に対しては十分な寿命があり問題ない、と考えている。(マザーボード上のキャパシタ同様)
  • 電源断についてあーだこーだ書いたが、私が欲しいのは「電源断でも壊れない堅牢なストレージ」ではなく、「電源断を恐れずに高度に性能を追求したストレージ」である。
    • もちろん電源断でも壊れない方が良いです。
  • 電源断まで厳密に保証したミッションクリティカルなストレージを選んで使うより、ノード冗長を取る方が低コストである。
    • ノード冗長の副次的な作用としてオペミスに強くなるというのも、個人的に重視している。
    • 他にも色々ありますが、大体こういう思想です。 http://nippondanji.blogspot.jp/2009/03/ssd.html
  • 商用 UNIX でカチカチに固めた環境じゃないし、一度電源断したホストの DB を使いつづけたりしないでしょ。
  • Linux なんてファイルシステム・ブロックデバイスレベルでテキトーなので、 kernel panic したら一巻の終わり。

つらつら書きましたが、上のようなことを考えながら日々 SSD を使っています。
私は SSD を作る人ではないし、最新の Linux kernel について深い知見があるわけではないので、 Linux kernel hacker からすれば最近の kernel なら問題ないという意見が出てくるでしょうし、 NAND ストレージベンダーからすればツッコミどころ満載かと思いますが、あくまでこういう考えの奴も居るということで。