デフォルトのコンフィグディレクトリは /etc/InterMezzo
です。以下
に示す設定ファイルを生成するために、対話型 inconfig
コマンドを利用
するか、もしくは手動でそれらを作成してもかまいません。
バージョン 1.0 およびそれ以降で使うコンフィグファイルは、より古いバージョ ンで用いていた Perl フォーマットの代わりに、XML フォーマットを用います。
システム名、presto デバイス名、IP バイ
ンドアドレスを保持します。仮に、サーバ名が muskox
、IP アドレスが
192.168.0.3
で、クライアントは clientA
および clientB
と
します。各ホストの sysid
ファイルはホスト名、presto デバイス名、IP
バインドアドレスを含みます。つまり muskox
のファイルは次のようにな
るでしょう -
<sysid name="muskox" psdev="/dev/intermezzo0" bindaddr="192.168.0.3" />
InterMezzo の初期バージョンはこのファイルに presto デバイス名を含んでい なかったことに注意してください - 今ではこのフィールドを必要とします。
サーバのデータベースを保持します。 server 構造体は次に示す XML の server エレメントです -
<serverdb>
<server name="muskox" ipaddr="192.168.0.3" port="2222"
bindaddr="192.168.0.3" />
</serverdb>
上記は IP アドレス 192.168.0.3
なサーバ muskox
用の単一のサー
バの記述です。port
および bindaddr
の記述は任意です - デフォル
トのポートは 2222 です。bindaddr
の記述のないサーバは要求をすべての
インターフェースで待ち (listen) ます。記述のあるサーバは bindaddr
のアドレス上だけで待ちます。クライアントとサーバの両方を同じシステムで実
行している場合、異なる bindaddr
をサーバとクライアントに指定するこ
とが必要です。
fileset のデータベースを保持します。 fsetdb 構造体は次に示す XML の fileset エレメントです -
<fsetdb>
<fileset name="yourfsetname" servername="muskox" fetchtype="bulktype" >
<replicator>clientA</replicator>
<replicator>clientB</replicator>
</fileset>
</fsetdb>
上記は muskox
が維持する yourfsetname
と呼ぶ fileset 向けの単
一な fileset の記述です。fileset はホスト clientA
と clientB
で複製されます。
fetchtype はサポートされたバルクムーバのクラス名であることがあ ります。デフォルトは "Rsync" で、より単純な InterMezzo に管 理されるバルクムーバは "Desc" と呼ばれます。
InterMezzo fileset のマウントを簡単にするには、下記に示すうちの一つを
/etc/fstab
に追加します。試験および開発には、ループデバイスをキャ
ッシュとして利用することがもっとも簡単です -
/tmp/cache /izo0 intermezzo loop,fileset=fsetname,mtpt=/mnt/izo0,
data=journal,prestodev=/dev/intermezzo0,cache_type=ext3,noauto 0 0
ここで、/tmp/cache
はループデバイスに使われるファイルで、
/izo0
はマウントポイント (ディレクトリ) で、fsetname
は fileset 名で、/dev/intermezzo0
は presto デバイス名です。キャ
ッシュファイルおよび presto デバイスの作成はこのセクションの終わりの例題
で説明されます。これをするには、カーネルは loopback device support を有
効にして構築されなければなりません。
注記 - マウントオプション data=journal
は、2.4 カーネ
ル向け ext3 のバグが修正されるまで重要です。
純粋なブロックデバイスを利用することは、ループデバイスの設定をする必要が
ないので、もう少し簡単です。ブロックデバイス /dev/hda9
を利用す
るには、/etc/fstab
ファイルは次のものを含みます -
/dev/hda9 /izo0 intermezzo fileset=fsetname,mtpt=/izo0,
prestodev=/dev/intermezzo0,cache_type=ext3,data=journal,noauto 0 0
注記 -
/etc/fstab
の
エントリは一行でなければなりません。以下に示す例でも同じことが言えます。ファイル /izo0/.intermezzo/fsetname/kml
は InterMezzo ファイル
システム内で行なわれた変更をすべての把握する kernel modification log (別
名 KML
) を含みます。ファイル
/izo0/.intermezzo/fsetname/last_rcvd
は分散された同期化ファイル
を把握する last_rcvd
ファイルです。InterMezzo の現行のリリースでは、
InterMezzo ファイルシステムを初めてマウントする前に、KML および
last_rcvd ファイルを作成 (通常 mkizofs
を実行します) する必要があり
ます。
このためには、mkizofs ツールを利用します -
mkizofs -r fsetname -j /tmp/cache mkizofs -r fsetname -j /dev/hdaX
-r
オプションの引き数はInterMezzo の複製ログが作成されるルートの
fileset 名です。-j
オプションで Ext3 ジャーナルが作成されます。さら
にファイルシステム種別を指定するようなオプションもありますので、
mkizofs -h
を参照してください。
既にキャッシュファイルシステムが初期化されている場合、InterMezzo が必要 とするメタデータファイルを手動で作成しなければなりません -
mount -t ext2 -o loop /tmp/cache /izo0
mkdir -p /izo0/.intermezzo/fsetname/db
chgrp -R InterMezzo /izo0/.intermezzo
chmod 700 /izo0/.intermezzo
touch /izo0/.intermezzo/fsetname/{kml,lml,last_rcvd}
tune2fs -j /tmp/cache # if file system was ext2
umount /izo0
これらの例は、/tmp/cache ファイルシステムにループバックデバイスを利用し、
fileset は fsetname
と呼ばれていると仮定します。
InterMezzo としてこれらをマウントする可能性が発生する前に、手動で複 製対象にそれらを複製するべきなので、結果的にファイルシステムは同一になり ます。
一般的な構成を三つ例にとり、サーバ/キャッシュマネージャを起動するための コンフィグファイルおよび正しい手順を考えましょう。
この場合、仮にホスト muskox
が fileset shared
を維持し、ホスト
clientA
が fileset を複製されるとします。次のファイルは muskox
と clientA
の両方に置かれます。
<serverdb>
<server name="muskox" ipaddr="192.168.0.3" />
</serverdb>
<fsetdb>
<fileset name="shared" servername="muskox" >
<replicator>clientA</replicator>
</fileset>
</fsetdb>
muskox
上のこの内容は -
<sysid name="muskox" psdev="/dev/intermezzo0" bindaddr="192.168.0.3" />
clientA
上のこの内容は -
<sysid name="clientA" psdev="/dev/intermezzo0" bindaddr="192.168.0.20" />
次の行は muskox
と clientA
の両方のファイルに追加されます -
/tmp/fs0 /izo0 intermezzo loop,fileset=shared,prestodev=/dev/intermezzo0,
mtpt=/izo0,cache_type=ext3,noauto 0 0
このファイルおよびファイルシステムは下記のコマンドを使用して作成されます -
dd if=/dev/zero of=/tmp/fs0 bs=1024 count=10k
mkizofs -F /tmp/fs0
上記の mkizofs を実行しなかった場合、最初にファイルシステムを ext3 とし てマウントし、次のコマンドで KML および last_rcvd ファイルを作成します -
mkdir /izo0
mount -o loop /tmp/fs0 /izo0
mkdir -p /izo0/.intermezzo/shared
touch /izo0/.intermezzo/shared/{kml,last_rcvd}
umount /izo0
これは下記のコマンドを使用して作成されます -
mknod /dev/intermezzo0 c 185 0
chmod 700 /dev/intermezzo0
モジュールの構成ファイルは /etc/modules.conf
と呼ばれているかも
しれません。次の行を追加してください -
alias char-major-185 intermezzo
lento を起動する前に、キャッシュをマウントしてください -
mkdir /izo0; mount /izo0
これで lento を起動できます。muskox
と clientA
の両方で、次を
入力します。
lento
上記の「一つのクライアントと一つのサーバ」の場合向けと同様です。
<fsetdb>
<fileset name="shared" servername="muskox" >
<replicator>clientA</replicator>
<replicator>clientB</replicator>
</fileset>
</fsetdb>
これは最初の例と同様ですが、clientB が replicator のリストに追加されてい ます。
muskox
および clientA
向けのこれは 最初の例と同様で、
clientB
上のものは次を含みます -
<sysid name="clientB" psdev="/dev/intermezzo0" bindaddr="192.168.0.21" />
これは、上記の「一つのクライアントと一つのサーバ」の場合で使用されるもの と同様です。
誰かここに何か書いていただけませんか?
暗号化されたトンネルの起動 ssh -f -x -L 3333:localhost:2222 -R 3333:localhost:2222
ホスト muskox
上で実行していると仮定します。一つのホスト上で複数の
lento を実行するには ip-alias の使用が必要です - ip-alias オプションがカー
ネルに組込まれていなければなりません (CONFIG_IP_ALIAS
)。これは一つ
のインターフェースに複数の IP アドレスを関連付けることができます。名前
muskoxA1
および IP アドレス 192.168.0.100
が利用できるとします。
ファイル -
の中に次の行を追加します -
192.168.0.100 muskoxA1
そして次の入力により ip-alias を追加します -
ifconfig eth0:1 muskoxA1 up
次に下記の内容の設定ファイルを二つ作成します -
<sysid name="muskox" psdev="/dev/intermezzo0" bindaddr="192.168.0.3" />
<sysid name="muskoxA1" psdev="/dev/intermezzo1" bindaddr="192.168.0.100" />
後者のファイルは alias された IP アドレス上で実行する lento 用の
sysid
ファイルとして作用します。同じホスト上でクライアントとサーバ
の両方を実行しているので、それぞれのために /dev/intermezzo0
お
よび /dev/intermezzo1
という異なるデバイスを指定しなければなら
ないことに注意してください。
<fsetdb>
<fileset name="shared" servername="muskox" >
<replicator>muskoxA1</replicator>
</fileset>
</fsetdb>
二番目の lento を実行するには、二つ目の presto デバイスおよびループバッ クキャッシュが必要です。次のように作成します -
mknod /dev/intermezzo1 c 185 1 dd if=/dev/zero of=/tmp/fs1 bs=1024 count=10k mkizofs -F /tmp/fs1 chmod 700 /dev/intermezzo1
二つのエントリがここに必要なことに注意してください -
/tmp/fs0 /izo0 intermezzo loop,fileset=shared,prestodev=/dev/intermezzo0, mtpt=/izo0,cache_type=ext3,noauto 0 0 /tmp/fs1 /izo1 intermezzo loop,fileset=shared,prestodev=/dev/intermezzo1, mtpt=/izo1,cache_type=ext3,noauto 0 0
二つの InterMezzo ファイルシステムをマウントしてください -
mount /izo0
mount /izo1
サーバとして動作する lento を前と同様に実行できます -
lento
レプリケータとして動作する lento は、どの sysid
ファイルを読むかを伝
えなければなりません (これはどの presto デバイスを使用するかを伝えること
です)。次のように二つ目の lento を起動します -
lento.pl --idfile=sysid.muskoxA1
今のところ、checkconfig ツールは動作していません。コンフィグチェッ クの XML バージョンはまだ着手していません。
設定ファイルの簡単なチェックを行うスクリプトは提供されます。
config_check
と呼ばれるスクリプトで .../intermezzo/tools
ディレクトリ内にあります。
lento が標準的なシステム id ファイル /etc/intermezzo/sysid
を使
用しているなら、スクリプトは引き数なしで実行できます。異なるシステム id
ファイルを使用しているのなら、これを示すために --idfile=my_idfile
フラグを使用します。
さらに --configdir=my_confdir
フラグを使用することで、
/etc/intermezzo
以外のコンフィグディレクトリを使用できます。