2007年11月11日(日)

coda

数週間前に、玄箱蹴飛ばさなきゃその日にやってたはずの作業

  1. とりあえず coda のインストール via pkgsrc
    1. kernel 側のAPIが変っているので一箇所修正が要る
  2. vice-setup でサーバ側、 venus-setup でクライアント側の設定を作れる
    1. 必要なもの
/vicepa
ストレージ用の領域。 AFS の場合と同一
/vice
管理用の領域。面倒なので / に含めた
/usr/coda
なんかゴチャゴチャとディレクトリが作られる。安全そうな UFS 上ということでここに。
/usr/coda/logs/
トランザクション用のログファイルを二つ作る。一つは 20M、 もう一つは256M にした。それだけの空き容量が必要。ホントはパーティションでやるんだが、こんな小さな領域刻んでらんないのでファイルで
    1. vice-setup 実行。質問に答えてゆく。web のドキュメントに書いてあるが、 random token は8文字でないと駄目だとか密かに制限がある。
      1. domain 名がついてないと駄目だということなので、玄箱-vaio間直結の 192.168.200.x/24 に適当に名前を……
      2. server ID, admin uid/username は適当
      3. RVM の設定では、上述のように /usr/coda/logs のファイルでログを指定。 data file を 512M にしたら、ファイル作ったところで OS が凍ること2回。諦めて 256M とした。
      4. /etc/rc.local には rc.vice を実行するよう記述されるが、 pkgsrc はそのファイルをインストールしない。 pkgsrc の展開物から /usr/pkg/etc にコピー
      5. /dev/cfs0 もないので手で作る
    2. venus-setup は何事もなく終わる
      1. やはり起動ファイル venus.init がコピーされないので、 pkgsrc の展開物からコピー。 linux 用なので適宜修正
  1. venus-setup の時点で /coda が作られ、 NOT_REALLY_CODA というファイルが作られる。 venus.init で venus まわりの daemon が起動し /coda に mount されればこのファイルは見えなくなる。

で、その後…… clog (AFS の klog に相当) で認証しようにも timeout してんですけど……

kuroyagibox# clog codaadmin
username: codaadmin@goatland.info
Unable to resolve addresses for Coda auth2 servers in realm 'goatland.info'
Password: 
Invalid login (RPC2_FAIL (F)).

そりゃ nameserver 的解決なんかできるわけねーけどさぁ……

mount(2) の引き数の変更に追随するための pkgsrc への修正

--- coda-src/venus/worker.cc.orig       2007-08-02 03:32:29.000000000 +0900
+++ coda-src/venus/worker.cc    2007-11-10 21:27:54.000000000 +0900
@@ -369,9 +369,9 @@
 #endif
                        
        if (error < 0)
-           error = mount("coda", venusRoot, 0, kernDevice);
+           error = mount("coda", venusRoot, 0, kernDevice, strlen(kernDevice)+1);
        if (error < 0)
-           error = mount("cfs", venusRoot, 0, kernDevice);
+           error = mount("cfs", venusRoot, 0, kernDevice, strlen(kernDevice)+1);
 #if defined(__FreeBSD__) && !defined(__FreeBSD_version)
 #define MOUNT_CFS 19
        if (error < 0)

venus.init の改変

--- coda-src/scripts/venus.init.orig    2007-11-11 23:03:41.000000000 +0900
+++ coda-src/scripts/venus.init 2007-11-11 23:03:48.000000000 +0900
@@ -10,10 +10,10 @@
 # chkconfig: 345 97 01
 # description: The Coda cache manager.
 
-prefix=/usr
+prefix=/usr/pkg
 exec_prefix=${prefix}
 
-PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH
+PATH=/sbin:/usr/sbin:/usr/pkg/sbin:$PATH
 export PATH
 
 # defaults
@@ -41,11 +41,11 @@
        if [ -f $pid_file ]; then
                echo "$pid_file exists, venus already running?."
        fi
-       [ -d /var/lock/subsys ] && touch /var/lock/subsys/venus.init
+#      [ -d /var/lock/subsys ] && touch /var/lock/subsys/venus.init
 
-       echon " kernel"
-       /sbin/modprobe coda
-       [ -x /sbin/udevsettle ] && /sbin/udevsettle || sleep 5
+#      echon " kernel"
+#      /sbin/modprobe coda
+#      [ -x /sbin/udevsettle ] && /sbin/udevsettle || sleep 5
 
        ${exec_prefix}/sbin/vutil --swaplogs
        echon " venus"
@@ -59,7 +59,7 @@
                umount $mountpoint
        fi
        rm -f $pid_file
-       [ -d /var/lock/subsys ] && rm -f /var/lock/subsys/venus.init
+#      [ -d /var/lock/subsys ] && rm -f /var/lock/subsys/venus.init
        echo "done."
     ;;
   hardstop)

[referer: [an error occurred while processing this directive]]

あわせて読みたい