読者です 読者をやめる 読者になる 読者になる

テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(writeboost report) SSDがリード不能な場合にもHDDのみでマウント出来るようにするための考察

ライトブーストについて評判が良いのは性能だが, ログ構造化故に耐障害性が高いということに注目してもらいたい.

  • メタデータとデータについてチェックサムを計算して書くことによって, 仮にログがパーシャルライトの場合には検出出来る

というのはすでに実装されているが,

  • 仮にSSDが死んだ場合でも, HDD上のデータは決して破綻しない

というのは実装されていない. これは, 他のライトバックキャッシュソフトウェアでは手に入れることが不可能なので, 理解されるならば売りにはなる. ログは副作用を記録しており, これが常に古い方からライトバックされて適用されていくため, HDDは常に正常な状態を保ち続けるというのが原理の概要である.

しかし, 原理的には可能なものの, 今の実装はそうなってはいない. なぜかというと, 上記の性質を得るためには, 全副作用をライトバックすることが必要であるが, どの道SSDにデータがあるからライトバックする必要がないと判断したものは, ライトバックしないからである.
例えば, 4KBのキャッシュデータに対して, バッキング上のアドレスで4KBのオーバーライトが入った時にこれが起こる. 前のキャッシュはライトバックせずにinvalidateすることが可能であり, ライトバック量を減らすことが出来るため, ライトバック対象から外している.
これは, 同じアドレスへのオーバーライトは典型的であるため, その点に注力したものであるが, 同時に, 他のキャッシュソフトウェアでは得ることの出来ない特長を破棄していることにもなっている.

コードを調査すると, 「入力された副作用は必ずライトバックする」という美しい性質はむしろコードをすっきりさせるだろうと予想している. なので, 私自身はこの修正に対して, 美しさの点からpositiveな意見を持っているのだが, 問題はユーザの意見だ. ユーザは, SSDが死んだ場合にもHDDのみで復元出来るという特長に対して性能を損なうことを払えるだろうか?原理的には正しそうなことは分かるが, 実装上本当に100%実現し得るだろうか?

もし, SSDが死んだらその時は仕方ないさ!SSDが死なないように運用でなんとかするさ!とか, 定期的にバックアップとるさ!ということであれば, 私は今の実装が良いと思っている. むしろ, SSDが死ぬまで使ってほしくはなく, 以前に記事を書いたように, pvmoveなどを使って定期的に交換して欲しいとは思う. 他のキャッシュソフトウェアに比べて単独で勝ってる特長はすでに持っているため, さらに取りにいくことはややオーバーキル気味であり, むしろ, 他が出来ることを出来なくなることの方が怖い.