non-SCMサーバの作成

codaファイルシステムにはSCMとnon-SCMサーバの二つの種類のサーバがある。SCMはどうもServer Control Machineということで、いわゆるマスターサーバである。non-SCMはSCMの制御下で動作するサーバである。せっかく分散ファイルシステムなのだからnon-SCMサーバを作ってみないと意味がないのでやってみた。rubyというのはSCMであり, diaというのはこれから追加するnon-SCMサーバである。

SCMのserversファイルにエントリを追加

SCMが正常に動いている状態では既にSCMのエントリが書かれているのでそれをまねればOK。IDはとうぜんユニークになるように。

ruby.arara.rim.or.jp            1
dia.arara.rim.or.jp             2 ##これを追加

VSGDBファイルを作成する

これは新規作成。

E0000100 ruby
E0000102 dia
E0000104 ruby dia 

EほげほげはVSG番号である。ユニークでなくてはならない。E0000100はSCMを示す特別な番号で、よく注意するとSCMのインストール時に表示されていることに気がつく筈。いまのところ理由は不明だが3行目は必要のよう。

ボリュームエリアを指定するvicetabの編集

これにはSCMで集中管理するアプローチと、それぞれのnon-SCMサーバで管理する分散アプローチがある。ここでは当然集中管理アプローチをする。SCMのvicetabにこれから追加するサーバのvicepaディレクトリを指定する。

ruby.arara.rim.or.jp   /dsk/vice/vicepa   ftree   width=64,depth=3
dia.arara.rim.or.jp   /home/vice/vicepa   ftree   width=64,depth=3 ##<これを追加

また、filesファイルにvicetabエントリがあることを確認する。filesファイルはSCMからnon-SCMへ伝播するファイルをリストするものである。これによりサーバはさまざまな情報を共有することができる。

auth2.pw
auth2.tk
auth2.tk.BAK
auth2.lock
dumplist
files
prot_users.cdb
servers
scm
update.tk
volutil.tk
vicetab
VLDB
VRDB
VRList
maxgroupid

分散アプローチをする場合には、逆にvicetabがfilesファイルにないことを確認すること。さもないと、SCMの情報で上書きされる。

SCMのリスタート

これまで行った更新を読み込ませるためにcodasrvをリスタートする。

non-SCMでの設定

  • non-SCMでvice-setupを実行する。
  • updateclnt -h SCM-serverを実行する
  • vice/db配下のファイルがSCMからコピーされていることを確認する。
  • codasrvを実行する

ボリュームの作成とマウント

SCMでcreatevol_repを行い、ボリュームを作成してみる。以下ではrubyとdiaで複製されるボリュームを作成している。

createvol_rep vol1 ruby dia

マウントはcfsコマンドで行う。このコマンドはcodaクライアントなのでcoda管理者のチケットが必要なのでclogでチケットを取得してから行う。

% cfs mkmount /coda/ruby.arara.rim.or.jp/vol1 vol1

これで使えるようになる。適切にACLを設定して書き込むと両方のサーバに書かれている様子が分かる筈。