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

テストステ論

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

(writeboost report) 週末にライトブーストの修正をします

improve error handling (do not hang on I/O errors) · Issue #98 · akiradeveloper/dm-writeboost · GitHub

このイシューの概要は, ライトブーストが, 利用しているデバイスにエラーがあることを検知するやいなや速攻で閉塞してしまう動作は, 安全サイドに倒しすぎだろということ. デバイスは, たまにエラーが出るものなので, その程度でいきなり閉塞して, デバイスが実は生きていて本当はそのまま続行出来るのに再起動しか復活の手がないのは, 使いづらいということ.

この設計は, 「デバイスのエラーは信用出来る. エラーを返したということはもうダメぽということなのだ. よっしゃ店じまいや」という発想に基いているのだが, デバイスのエラーを信用出来るならば, 信用できるなりにそのまま続行するという考え方もある. 詳しくいうと, 現在は「デバイスがエラーを出したということはもうダメぽということであり, それ以降のあらゆるackは信頼に値しない. 次のIOでokと言ってきたとしても, そんなものを信用することは出来ないから, もう閉塞する」としているのだが, 「それ以降は信用しない」と言ってるのは, 「じゃあ信用しているのか信用してないのかどっちやねん」という矛盾に陥ってる意味があるため, 一貫して信頼し続けることにも理がある.

SSDへの書き込みと, HDDへのライトバックが成功し続けることは絶対に譲れないので, ここは, 失敗時にはリトライするしかない. バックグラウンドでやっていることもあり, エラーをクライアントに返すことは難しい. その他の, フォアグラウンドでのIOは, エラーをちゃんとアップストリームまで伝搬してあげることが出来る(なんならリトライでも構わない. なぜならば, SSDやHDDへのIOが失敗するならばどの道リトライし続けることになる. 単発的なエラーなら回復し得るということに仮定するのであれば, リトライする方が一貫性があるし設計もクリーン)

この変更のあとには, SSDとHDDをflakeyにして, 一定時間ごとに成功と失敗を繰り返す仮想的なデバイスとしても, エラーを繰り返しながらも処理が進んでいくということになる. これはテストを書くことが出来る. もっとも, ファイルシステムだってエラーを繰り返しすぎるとパニックして閉塞しますけどね.

バージョンは, 今が2.1.1なので, 2.1.2か2.2.0かで迷うところ. エラー処理の挙動が変わっているため単なるバグフィックスとも言えないし, もともとバグってるとまでは言いがたい意味がある. 2.2.0かも知れない.


このイシューは1ヶ月も前に報告されたものであり, ずっと放置していたことになる. 今, 私は, akashic-storageに集中しており, ライトブーストに対する情熱はさほどない. それもそのはず, 開発者というのは, 新しい機能を作ってる時が一番楽しいのだ. akashic-storageはHTTPの世界なので, 使うソフトウェアが全部シリコンバレーに直結しているし, なお楽しい. 実際, finchやfinagleに関わることも出来た. akka-httpにも多少の貢献をする予定だ.

が, じゃあライトブーストは辞めるかというと, そういうわけにはいかないしそれはない. そういうわけにはいかないサイドの理由としては, 現存する最高のOSS分散ストレージであるLizardFS(http://sourceforge.net/p/lizardfs/mailman/message/34724896/)の文脈でも紹介してもらっており, 試されているという背景がある. もはやおれが一人で放棄出来るものでもなくなっているように思う. 開発者として責任を伴ってしまっているのだ. (責任とってよね状態だ) それはないサイドの理由としては, こうやって広がればオポに繋がるし, 大体, オープンソースをいきなり放棄するような履歴は, 今後の活動に差し障るからオススメ出来ない. オープンソースは信頼第一なのだ. 従って, メンテし続けることは確定だが, 情熱を失ってきていることは間違いない.


情熱を失っているといえば, mdのメンテナが情熱を失ってるからもうメンテナを引退するということを去年の暮れに投稿した. [dm-devel] WANTED new maintainer for Linux/md (and mdadm) 開発は, すごく集中力のいることだから, 情熱がとても大事なのだ. 特に, ノーマニーで行うオープンソースは, 情熱とか信念のみが開発を支える. それが尽きると, もう崩れるしかない. マニーが欲しい.

ライトブーストは, 分散ストレージの世界で少しだけ求心力がある. その市場は大きいから, もし広まれば, かなり楽しくなる. その為にはもう少しがんばるといいと思うのだが, 今はakashic-storageがいいのだ.