Skip to main content

山椒の実

Caveat-Scriptor: Write Anywhere Shingled Disks

これも魅力的なタイトルですね。Garth GibsonのところのCMUの人。Shingled Diskまだまだ熱いですからね。

Caveat-Scriptorはラテン語でlet the writer bewareという意味らしい。それでも意味がわからないんだけど、書き込む側が何らかの負担をするという意味みたい。

Host-Managed software for Caveat-Scriptor shingled disks is allowed to write anywhere, but if it fails to respect these distance parameters, it may destroy data.

とのこと。Shingled Diskはピッチを狭めて書き込んでいるので、両側から書き込まれると真ん中が消えてしまう。つまり基本的にシーケンシャルに書き込まなければならない。たまに飛んでもいいけど、制約があったりする。普通はディスクのファーム側に制約を満たしつつうまくやってくれる(SSDのファームと非常に似た処理をする)層をつける。ここでログ構造にしてLSM treeみたいにするのが一般的と言えると思います。いま売られているSeagateのArchive系のシリーズは中身がそうなってる奴ですね。こういうのは当然、各社出してくると思います。この論文ではホスト側でやったほうがうまくいくはずなのでその方法を考えたよ、という話。

2つの方法がある。一つはちゃんとやろう(Strict-Append)として、Log-Structured FSとかでシーケンシャルに書き出すように頑張る。もう一つがタイトルになっているCaveat-Scriptorで、もうちょっと中身を知った上で間違えないように書き込む。

間違えないように、というのは残したいデータから何ブロック離れてたら書き込める、みたいなパラメータは知っているので、厳密にシーケンシャルにする必要はなく、書けるとこには書いちゃおうよというのを書き手責任(Caveat-Scriptor)でやる。ホスト側は知ってるからできる、と。Strict-Appendは書ける場所の選択肢がほぼ1つしかないので、そこに既存データがあったらGCで救い出しつつ古いデータを捨てて新しいデータを混ぜて書き出すのだけど、Caveat-Scriptorは殺してもいいデータの周辺に上書いてしまう。危ない橋を渡る分、効率が良くなるはず。

これって普通のディスクだと厳密にフリーなブロックだけが必要なのに対して、Caveat-Scriptorは書き込むときは少しぼやかして大きくなった領域がフリーになっている必要があるという違いがある。書き込むと少し外側の領域まで読めなくなるという非対称性はプログラマにとっては厄介なところ。

まあこういうのって決して普及したりはしないんだろうけど、実験としては面白いと思う。これが常識になった世界もちょっと見てみたい。怖いもの見たさ的なね。今はどこまで無茶していいか、探りながら世界を作っていく感じ? ソフト屋としては興味深いよね。Shingled Diskにしても十年前から技術としては知られていて、それが最近やっと製品になったわけだから。