Logo address

研究室のサーバを自宅からマウントする

2001/07/01
この記事はもう古くなっています。現在では 9fs コマンドを使います。(2004/11/04)
  1. 環境
  2. 防火壁とimport コマンド
  3. import コマンドのオプション
  4. ftpfs との違い
  5. import の限界
  6. import の弊害
ここでは大学の研究室にある Plan9 システムを自宅にある Plan9 端末にマウントするのに必要な知識を述べる。(もちろん大学の研究室とか自宅とかは単に例として考えて下さい。)

環境

筆者の自宅には LAN が張られていて、ISDN ルータを通じて、B 社のネットワークに入り、そこからインターネットゾーンに入り込む。

大学のネットワークは防火壁で囲まれ、以下の原則で運用されている。

  1. 外部から内部へのアクセスは原則として阻止する。
    サーバ管理者が外部からのアクセスを許可したい場合には、ポート番号を情報処理センターに届け出る。
  2. 内部から外部へのアクセスは原則自由とする。
    但し学生が実習室等で使用するマシンはローカルアドレスなので実際上は Web 等に限られる。
と言う訳で自宅から研究室のサーバへは TCP によるアクセスが可能になっています。

自宅の 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. 1つの操作を終えないと次の操作ができない。
  2. ftpfs は import のように安定していない。
  3. 大きなファイルに tail コマンドを発行した場合に、ftpfs の場合には全てのデータが端末に転送される。
FTP プロトコルを使用する ftpfs と 9P を使用する import では、使い心地には圧倒的な差があります。

import の限界

import コマンドによって大学研究室のファイルシステムが自宅の p9term に、あたかもローカルディスクのファイルのように見えるようになるのですが、遠くにある大きなファイルを自宅の p9term で処理するのは 64Kb の ISDN 回線の下では得策ではありません。

幸い Plan9 には cpu コマンドがあります。このコマンドは telnet と同様にリモートホストで処理を行います。tenet との違いは、

にあります。従って研究室にあるファイルの処理には cpu コマンドを使用した方が効率が良いのですが、ファイルの編集に acme を使った場合にはレスポンスの遅さを感じます。結局は import と cpu コマンドを使い分けた方がよいのでしょう。なお cpu コマンドは TCP 17013 ポートにアクセスに行きます。

import の弊害

研究室で仕事をしなくなる... !