目標列挙
そろそろVIVERを開発再開したい。というか、する。
VIVER本体は、結局RubyもC++もやめて、C書くことにになりました。ごっそり作り直すことになるので、ここで目標を列挙してみます。
いろんな人々の協力で、いろんなことできそうです。
VIVER本体
・新構想にあわせて、initrd刷新
・例外処理を強化→できる限りエラーで落ちないようにする
・ハードウェア自動検出を、ハードウェアの種類別(NIC、ディスクドライブ、USBなど)に細分化して、並列処理
・メッセージ出力をもっと細かく制御して、わかりやすく、カッコ良く
・プラグイン式に拡張できたら面白い(ただし細かい制御と矛盾)→ブート時にVIVER本体を拡張できる→特殊な環境にもディスクを作り直さずに適応
分散ブロックデバイス共有(仮)
NBDを置き換える、分散型のブロックデバイス共有システム。(SAN) + (P2P) - (ファイルシステム) という感じ?
認証があると良いかも。でも、PXEにセキュリティが皆無なことを考えると、無意味かも。
透過型暗号化・複合化ブロックデバイスドライバ
暗号化と複合化を透過的に行う、ブロックデバイスドライバ。現行のスパゲッティーなプロセスを、一気に簡略化できる。
Device Mapperを使って実装するのかもしれない。
同様に、透過型の圧縮・展開ブロックデバイスドライバも実装。
Shadowingブロックデバイスドライバ
要するにcowloop。もっと良い名前無いかな。
これもDevice Mapperで実装すれば、ブロックデバイス周りを全部Device Mapperに統一できてキレイ。
上の3つを組み合わせれば、安定性動作するようになったら、NFS-Rootに代わるネットワークブート方式のデファクトスタンダードになるのではなかろうか。(VIVERがネットワークブート方式のデファクトスタンダードになる可能性も…)
プラグインの仕様策定
もっと記述性が高くて、人間にもわかりやすいメタデータの書式が必要。併せてviverrcの更新が必要。
プラグイン共通API
必須。これのあるなしで、プラグインの開発速度が劇的に変わるはず。
プラグイン管理ツール
依存関係の解決は、viverrcではなく、このプラグイン管理ツールが行うことにしました。これにより、起動時間が短縮できるほか、ディスクを作成する前に依存関係のミス(循環した依存など)を発見できます。
このツールはディスク作成時に使用するので、ディストリビューション依存をあまり気にしなくても良いはずです。
DNS-SD+mDNS
DNS Service Discovery と Multicast DNS。これを使って各種サーバーを検出します。ブートパラメータを長々と書く必要が無くなります。
また、"サーバー同士"でネゴシエーションが必要なプラグイン(フェイルオーバークラスタなど)を実装する際、すでに別のサーバーが起動しているかを検出するために、DNS-SDとmDNSが使えます。
ただし、セキュリティが皆無。セキュリティを確保しようと思ったら、DNS-SDでサービスを検出した後で、別途サーバー側の認証が必須。
プラグインの充実
こんなサービスが自動的に設定されたら良いな。
ドキュメントを書く
書く。