Kenji Arisawa
E-mail: arisawa@aichi-u.ac.jp
Aichi University
Kurozasa 370, Miyoshi-cho
Aichi, Japan
http://ar.aichi-u.ac.jp

Plan9 の実際

注意: この記事は筆者が Plan9 を使い始めた 1996年頃のものです。

ここでは筆者が実際に行ってきたことをもとにPlan9の雰囲気を伝えて行きたいと 思います。

システム構成

筆者のPlan9システムは からなり、さらにいくつかの UNIX システムとのコネクションを持っています。 いずれも i486DX2 クラスの使い古しのパソコンです。

ファイルサーバには2台の500MB の SCSI ハードディスクが接続されています。 CD-ROM 版のPlan9は 500MB のハードディスクには入りません。さらにユーザ領域を 確保するには全体で1GB程度のディスク領域が必要になります。 普通のOSでは500MBのハードディスクを2台接続したからと言って、CD-ROMをそのまま インストールすることは出来ません。きっとCD-ROMの一部分だけを分離して1つのハードディスクに入れ、そのあと残りをもう一つのハードディスクに入れる事になるでしょう。でもPlan9 はちょっと違います。複数のハードディスクを纏めて1つのハードディスクに見せかける能力を持っています。ハードディスクへの書き込みはインターリーブされ、1個のファイルも複数のハードディスクに分散されて格納されます。そういう訳で 小さな余りもののハードディスクがPlan9で活躍しています。

小さな規模で使う限り、ファイルサーバには強力なCPUは必要ありません。実際のネックはイーサネットの速度にあります。ベル研究所のように光ファイバを使うなら話は別です。Plan9のファイルサーバは素晴らしく安定しており、これまで一度も転けた事はありません。安定している原因は、ここでは1つの仕事だけが行なわれているからでしょう。Plan9にとってディスクは本来は WORM(Write Only Read Many) と呼ばれる書き込み可能光ディスクに対するキャッシュでしかありません。ですから WORM を取りつけなければ本来のファイルサーバではないのですが、お金がないので私のシステムでは WORM は省かれています。

認証サーバを独立させたのは、この方がシステムのリブートが容易だからです。 通常はtftpサーバはCPUサーバと兼用になりますが、どうせ認証サーバの仕事量は 殆どないのですから、この際もっと働いてもらうことにしました。認証サーバを独立させる他のメリットもあります。私の認証サーバではリモートログインを禁止しています。従ってユーザは認証に関係したファイル(暗号化されていますが)には外部から全くアクセスできません。

CPUサーバにはもっと能力のあるパソコンが欲しいのですが、お金がないのでここは がまんしました。端末と同じCPUではCPUサーバを設ける理由がありませんからね。 でも今は plan9.aichi-u.ac.jp として活躍して貰っています。

Plan9端末は、実は他と同じ i486DX2 と言ってもさらに一世代前のもの。でも筆者は 他の3つよりもこの古いコンピュータが気に入っています。プラスチックの華奢なフレームではなく、ちゃんとした金属のフレームで、もうケースが行方不明になっていますが、裸でしゃきっと立っています。ボートの試験には最適なのですね。Plan9端末は i486DX2 クラスのパソコンでも軽快に働きます。

これらのコンピュータは何れも10BASEのイーサネットで接続されています。 本当はPlan9はこんな接続の仕方をしてはダメなのです。少なくともCPUサーバとファイルサーバの間だけは 100 BASE のイーサネットで接続したいものです。

さてこれからが本論です。

エンドユーザがUNIX のファイルをマウントできる

筆者はいろいろ使っているうちに、ディスク容量をもっと欲しいと思う様になりました。しかしお金がないので、ハードディスクの内容を整理する事にし、めったに使わない Plan9 のソースコードを他に移しました。容量にゆとりのある UNIX があったので CD-ROM のコピーを UNIX 側に持ったのです。

Plan9のアップデートはCD-ROM の内容との差分で配布されます。従って、アップデートを行う時には必ずCD-ROMのソースがPlan9のファイルシステムの一部、しかも /sys/src の場所に見えていなければなりません。他のOS であれば、CD-ROMのコピーをUNIX側に移してしまったらアップデートの時に困ってしまいます。でもPlan9では大丈夫。

Plan9ではエンドユーザの権限で他のPlan9のファイルシステムやUNIXのファイルシステムをマウントできるのです。しかも好きな位置にマウント出来ます。 私のファイルサーバではソースコードを置く位置
/sys/src/
以下は空のディレクトリです。(正確に言えばコンパイルに必要な数個のファイルが 入っているだけです) アァプデート版をコンパイルしたい時にだけ私はあるおまじないをかけます。 すると、/sys/src/ 以下にはCD-ROM 版のソースコードが現われます。 エンドユーザの権限でマウントできるばかりか、書き込み禁止になっているシステム 領域である /sys/src/ にマウントできるのです!

UNIXの常識では考えられなかった事がPlan9では可能になります。このようなことを 許してもセキュリティは完璧に保たれているのです。なぜならPlan9の mount コマンドは他のユーザ、他のプロセスに一切の影響を与えないからです。

エンドユーザが、/sys/includeを変更出来る

私はアップデート版をコンパイルし、インストールしてもできるだけシステムをオリジナルな環境を保つ様にしています。Cコンパイラのインクルードファイルの改訂すら /sys/include/ 以下のファイルに手を付けません。問題が発生するだろうと考えるのはUNIXユーザの 常識です。Plan9ではエンドユーザの権限で実質的に /sys/include/ 以下のファイルを 変更できるのです。
私は自分のホームディレクトリの下( $home/X/sys/include/ )に、変更が発生したインクルードファイルの改訂版を持っています。Plan9 にはbind と言う命令があり、これを使って、/sys/include/ の見え方を変更しているのです。
bind -b $home/X/sys/include /sys/include

以上で分る通り、Plan9ではファイルシステムの見え方をエンドユーザの権限で変更できます。UNIXではエンドユーザに許されているファイルシステムの編成はホームディレクトリから下だけです。従ってホームディレクトリから上の変更が必要になる場合にはUNIXではどうしてもシステム管理者にお願いしなければなりませんでした。そして大抵の場合には管理者はエンドユーザの要求を聞いてくれません。そのためにあきらめていた事の多くがPlan9では可能になるのです。

過去のファイルをコマンド1つで呼び出せる

最近私はpseudo-WORMベースのファイルシステムへ移行しました。(pseudo-WORMに関しては「UNIXとの違い」のページを参照して下さい。) 本当はWORMでやりたかったのですが、予算の関係でpseudo で妥協しました。 (pseudo-)WORMファイルシステムは本当に魅力的です。毎日自動的にバックアップを とってくれて、コマンド1つで指定されたファイルあるいはディレクトリを過去の状態に 戻せるのです! 一瞬の内に! これは余りにも魅力的でとうとう大枚(?)をはたいてHDを買ってしまいました。..... そのうち、私のUNIXのファイルシステムもPlan9ベースで やって行きましょう。

もうtelnetやrloginは古い

Plan9ではCPUサーバにアクセスするのに telnet や rlogin のような古いツールを使いません。
cpu
とコマンドを打つだけで、プログラムの実行に使用されるCPUが、端末のCPUからCPUサーバのCPUに切り替わります。そして、重要なことは、それまで見えていたファイルシステムがそのままの姿で見え、端末で実行できていたプログラムがそのまま実行でき、操作の方法に一切の変化が発生しないと言うことです。もちろんウィンドウシステムがそのまま使えます。
(となると馬鹿ばかしくて端末のCPUを使う気になりませんね)

ちょつと役に立つこと

もしもあなたがリモートのUNIXシステムのファイルをマウスベースのエディタで編集したいなら、そしてそれが現状ではいろいろな理由でできないなら、Plan9端末を1つ持つことを推奨します。UNIXのエンドユーザの権限でUNIXのファイルシステムを根こそぎあなたのPlan9端末にマウントできます。そしてPlan9のマウスベースのエディタでUNIXのファイルを編集できます。私はこれを名大の共同利用のUNIXシステムに適用しています。

もしもあなたが anonymous FTP でディレクトリツリーごとコピーを取りたいなら、 Plan9端末はそれを可能にします。Plan9には ftp コマンドはありません。その代わり、もっと気のきいたコマンドてである ftpfs コマンドが存在します。 このコマンドはftpサーバのディレクトリをPlan9のファイルシステムの一部として見せてくれます。ftpサーバからファイルを取ってくるのに、cp や tar などの Plan9 のコマンドがそのまま使えるのです。