研究室のサーバを自宅からマウントする
2001/07/01この記事はもう古くなっています。現在では 9fs コマンドを使います。(2004/11/04)
ここでは大学の研究室にある Plan9 システムを自宅にある Plan9 端末にマウントするのに必要な知識を述べる。(もちろん大学の研究室とか自宅とかは単に例として考えて下さい。)
環境
筆者の自宅には LAN が張られていて、ISDN ルータを通じて、B 社のネットワークに入り、そこからインターネットゾーンに入り込む。大学のネットワークは防火壁で囲まれ、以下の原則で運用されている。
- 外部から内部へのアクセスは原則として阻止する。
サーバ管理者が外部からのアクセスを許可したい場合には、ポート番号を情報処理センターに届け出る。 - 内部から外部へのアクセスは原則自由とする。
但し学生が実習室等で使用するマシンはローカルアドレスなので実際上は Web 等に限られる。
自宅の Plan9 端末を p9term
研究室のファイルサーバを 9fs
研究室の認証サーバを hera
研究室の CPU サーバを ar
とします。防火壁との関係では図1のようになっています。
図1
防火壁とimport コマンド
ファイルサーバは TCP をサポートしていないので、CPU サーバ ar の名前空間を p9term にマウントする方式を選びます。p9term の側での操作としては、単にimport ar / /n/arを実行すれば、p9term の /n/ar に ar の名前空間が丸ごと見えるようにする訳です。
図1には、その場合に背後で行われている認証プロセスが簡単に説明されています。
hera に対してチケットのリクエストが発生します。IL ではなく TCP が使用されるようにするためには、p9term の /lib/ndb/local
で hera に対して
proto=tcpを指定しておく必要があります。hera の tcp567 にアクセスに行くので、防火壁が hera に対して TCP 567 を通してくれる必要があります。またチケットが貰えるためには、認証サーバに筆者のユーザ名である arisawa が登録され、その時のパスワードが p9term を立ち上げた時に入力するパスワードと一致している必要があります。
import
コマンドで ar への通信プロトコルが自動的に TCP で行われるようにするには p9term の /lib/ndb/local
で ar に対して hera と同様に
proto=tcp
を指定しておかなければなりません。
また import
コマンドは ar の tcp17007 にアクセスに行きます。従って防火壁は ar に対して TCP 17007 を通してくれる必要があります。
import コマンドのオプション
マニュアルによれば import コマンドの仕様は次の通りです。import [ -abcC ] [ -f ] system file [ mountpoint ]-abcC の意味は
mount
コマンドと同じです。筆者のように細い回線を使用している場合にはキャッシングの指定(-C)をしておいた方がよいでしょう。
mountpoint
を省略した場合には file と同じ値が使用されます。
従って例えば、
import -C ar /usr/arisawaを実行すれば、/usr/arisawa 以下のディレクトリが ar で見えるもの(これは 9fs が提供する名前空間) で置き換わります。
このコマンドによって
/usr/arisawa/tmp
は ar のものですが、
/tmp
は p9term のファイルシステムのものが見えています。Plan9 において
/tmp
が存在するのはダテではなかったのです。
ftpfs との違い
import とよく似たコマンドに ftpfs があります。両者ともリモート CPU サーバかで見える名前空間を端末の名前空間にマウントします。しかしながら ftpfs は FTP プロトコルを使用しているので、以下のような問題を含んでいます。
- 1つの操作を終えないと次の操作ができない。
- ftpfs は import のように安定していない。
- 大きなファイルに tail コマンドを発行した場合に、ftpfs の場合には全てのデータが端末に転送される。
import の限界
import
コマンドによって大学研究室のファイルシステムが自宅の p9term に、あたかもローカルディスクのファイルのように見えるようになるのですが、遠くにある大きなファイルを自宅の p9term で処理するのは 64Kb の ISDN 回線の下では得策ではありません。
幸い Plan9 には cpu コマンドがあります。このコマンドは telnet と同様にリモートホストで処理を行います。tenet との違いは、
- マウスやグラフィックを使える事
(文字データだけを使用している時には telnet の快適さを保っている) - ar から p9term の名前空間が見えている事
(ar の /mnt/term 以下に p9term の名前空間がマウントされている)