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

テストステ論

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

(writeboost report) LVMコマンドの設計

ライトブーストにLVMコマンドを作るという案がある.

時間があれば私がやってもいいが, 出来れば他の人にやって欲しい. 我こそはという骨のあるガイは手を挙げて欲しい. DMやLVMにがっつり絡んでおくのは, あなたのキャリアのためにも得である. あと私はOCamlとの戦いが骨だ.

そこで, まずは設計案だけを示そうと思う.

LVM向けに設計するに当たって重要な性質は, 「もともと何かしらのDMスタックで作ったデバイスの上に動的にライトブーストを追加出来る」ことである. LVMを使うメリットの一つがここにある. あとは終了処理をクリーンに出来るようにする.

ライトブーストを導入してもらうためには, ファイルシステムを崩してデバイスを作って〜〜〜というのはかなり不利だ. だから, もともとlinearなどの上に作られていたものの, DMテーブルだけをすげ替えてライトブースト化するというのを自動化出来るといい.

LVMを使う利点というのは, 使いやすさの向上一点である.

  • ブート時にデバイスが自動で作られる.
  • もともとあるLVを破壊せずに使うことが出来る.

イメージとしては,

lvcreate testvg -L 1T -n testlv
lvcreate testlv -W $cachedev
lvremove testlv

のような感じで使いたい. とにかくシンプルに使いやすさのみを追究する. 他のパラメータを使いたい人はdmsetupを使えで問題ないと思う. 実際, dm-thinなんかはそういう思想だし, dm-cacheもそうだろう. 要求があればオプションを追加するで良い. Persistent Loggingはオフでいいだろう. 最高のスループットを体験するにはPersistent Loggingは邪魔だ. もし, --persistent-loggingオプションをつけたら, cachedevのうち決め打ちされたいくらか(例えば16MB)を切り出して使うという設計にしようかと思う. ライトブーストの多くの挙動は実行時に変更出来るから, デフォルトのまま使っても十分なのだ.

以上, まずは骨のあるガイが現れるのを待つ.