やりたいこと整理

やりたいこと過剰。

最新の困ったは、viverrc(VIVER Pacsを適用するプログラム)の実装がいっこうにできないこと。XMLをパースしてみたり、マルチスレッドにしてみたり、Cで書いてみたりしているので、混乱するばかりで進まない。
Cにしたのが一番の問題だと思う。
シェルスクリプトXMLのパース・マルチスレッドは無理がある。
C++はlibstdc++に依存するところがイマイチ。
PerlRubyJavaインタプリタ/VMが必要なのが気に入らない。
できる限りディストリビューション非依存にしたいので、依存するライブラリはlibcだけにしたい・・・無理かな。
とりあえずデータ構造を決めねば。でも、構造体でXMLのパースやマルチスレッドというのは、かなり難しいことに挑戦しているのではなかろうか・・・。

で、やりたいこと整理。

NBDに認証
やっぱり、必要だと思う。とりあえず候補としては、NuFWで低いレイヤーで認証してもらう、NBDサーバー/クライアントを勝手に拡張する(簡単にできれば話は早い。できない!)・・・くらいかな。NBDサーバー/クライアント、またC・・・。NuFWは、クライアント側に暗号化ライブラリなどなど、重量級ライブラリが必要なことが欠点。VIVERの肥大化は避けられない。
正常にシャットダウンできるようにする
これが、できない・・・。ルートファイルシステムの構成が複雑すぎる。cowloop + (ループバックマウント + 普通のマウント) + Squashfs + LUKS-cryptroot + Device Mapper + RAID-Multipath + NBD/rootdisk これ以上に問題なのが、killallを飛ばすとNBDクライアントデーモンが落ちて、停止してしまうこと。どうやって'NBDクライアント以外のプロセスを全部を落とすか'が問題。とりあえず、NBDクライアントがルートファイルシステムを開きっぱなしにしてどうやってもシャットダウンできない問題と、initプロセスがpivot_rootした後でも(昔の)ルートファイルシステムを開きっぱなしにしてしまう問題は解決済み。(適当にtmpfsをマウントしておいて、そこにコピーして実行)
Dynamic Rootdisk Migration
起動後にNBDサーバーを切り替える。負荷状態に応じてもっとも応答の早いサーバーに接続しなおしたり、起動後に追加されたrootserverに追加で接続して、フェイルオーバーにしたり。結構使える機能に思えるので、カッコ良さそうな名前をつけてみる。
部分rootdisk接続
rootdiskの部分部分で接続するNBDサーバーを変える。たとえばrootdiskが100MBあるとして、50MB分まではNBDサーバーA、50MB〜100MB分までをNBDサーバーBに接続する。これは下の機能いろいろに関係してきます。
分散RAM展開
rootdiskを、全部ではなくて、一部分だけをRAMに展開する。数台で分散して全部のrootdiskをRAMに展開した後、Dynamic Rootdisk Migrationで各ノードが各分散展開されたrootdiskを持つノードに部分rootdisk接続すれば、完全ディスクレスネットワークにできるわけです。加えて、分散RAM展開の一部を担当しているノードがシャットダウンするとき、そのノードが展開していた部分のデータをほかのノードがRAM展開するようにすれば、自立してディスクレスネットワークを維持することができます。
SSI
前から考えているけども、OpenMosixやOpenSSI、KerrighedなどのSSIクラスタを組み込んで、Process Migration/ロードバランシングをやってみたい。シンクライアント全体をSSIにするというのは、自然な流れだと思います。カーネルがLinuxで、デスクトップ用途なら、各クライアントは単なるX端末で良い。でも最近のパソコンはパワーが有り余っているから、その余剰資源をSSIにすることで共有する。デスクトップ環境を使うならマルチプロセスになるので、パフォーマンスも向上するはず。(試したことないけど・・・)
Zeroconf
Zeroconf(Bonjour(Rendezvous...))で、IPアドレスの自動設定や名前解決、サービスの自動検出を行う。システム構築時(ノードのIPアドレスが'未定')に名前で各ノードを識別できる。やたら長いブートパラメータを渡さなくても、rootserverやファイルサーバーを検出できるようになる。できればPXEをZeroconf対応にしてDHCP不要にしたいんですが・・・無理ですね。Intelあたりどうにかしてくれませんかね?Etherbootなら・・・その前にそもそもEtherbootに対応していない。
IPv6対応
たぶん、'対応'するのは無理で、'IPv4バージョン'と'IPv6バージョン'に分かれると思います。現在amazon:マスタリングTCP/IP IPv6編で勉強中。
VIVER Pacの充実
少なくとも、ネットワーク起動.pac ホスト名決定.pac DHCPサーバー.pac tftpサーバー.pac NBDサーバー.pac が必要。(全部できていない)さらに、ノードの起動状態の監視.pac NFS/CIFS/SHFS/v9fsファイルサーバー起動/接続.pac NIS/LDAP認証.pac IPVS/UltraMonkeyフェイルオーバークラスタ構築.pac MPIクラスタ構築.pac Xen+いろんなOS全画面起動.pac QEMU+いろんなOS.pac が欲しい。

あー・・・多すぎ。
でも、KNOPPIXがやってしまう前にやりたい!うーむ・・・まだまだ若いなぁ。いいことだ。