目標列挙

そろそろVIVERを開発再開したい。というか、する。

VIVER本体は、結局RubyC++もやめて、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でサービスを検出した後で、別途サーバー側の認証が必須。

プラグインの充実

こんなサービスが自動的に設定されたら良いな。

ドキュメントを書く

書く。