次のページ 前のページ 目次へ

5. InterMezzo の設定

5.1 コンフィグファイル

デフォルトのコンフィグディレクトリは /etc/InterMezzoです。以下 に示す設定ファイルを生成するために、対話型 inconfig コマンドを利用 するか、もしくは手動でそれらを作成してもかまいません。

バージョン 1.0 およびそれ以降で使うコンフィグファイルは、より古いバージョ ンで用いていた Perl フォーマットの代わりに、XML フォーマットを用います。

/etc/intermezzo/sysid

システム名、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 デバイス名を含んでい なかったことに注意してください - 今ではこのフィールドを必要とします。

/etc/intermezzo/serverdb

サーバのデータベースを保持します。 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 をサーバとクライアントに指定するこ とが必要です。

/etc/intermezzo/fsetdb

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 はホスト clientAclientB で複製されます。

fetchtype はサポートされたバルクムーバのクラス名であることがあ ります。デフォルトは "Rsync" で、より単純な InterMezzo に管 理されるバルクムーバは "Desc" と呼ばれます。

/etc/fstab

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

注記 -

他のファイル

ファイル /izo0/.intermezzo/fsetname/kml は InterMezzo ファイル システム内で行なわれた変更をすべての把握する kernel modification log (別 名 KML) を含みます。ファイル /izo0/.intermezzo/fsetname/last_rcvd は分散された同期化ファイル を把握する last_rcvd ファイルです。InterMezzo の現行のリリースでは、 InterMezzo ファイルシステムを初めてマウントする前に、KML および last_rcvd ファイルを作成 (通常 mkizofs を実行します) する必要があり ます。

5.2 InterMezzo ファイルシステムのフォーマット

このためには、mkizofs ツールを利用します -

mkizofs -r fsetname -j /tmp/cache
mkizofs -r fsetname -j /dev/hdaX

-r オプションの引き数はInterMezzo の複製ログが作成されるルートの fileset 名です。-j オプションで Ext3 ジャーナルが作成されます。さら にファイルシステム種別を指定するようなオプションもありますので、 mkizofs -h を参照してください。

5.3 ext2/3 ファイルシステムの InterMezzo への変換

既にキャッシュファイルシステムが初期化されている場合、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 としてこれらをマウントする可能性が発生する前に、手動で複 製対象にそれらを複製するべきなので、結果的にファイルシステムは同一になり ます。

5.4 三つの一般的な構成

一般的な構成を三つ例にとり、サーバ/キャッシュマネージャを起動するための コンフィグファイルおよび正しい手順を考えましょう。

一つのクライアントと一つのサーバ (一般的な使用 - ラップトップとデスクトップ、バックアップ、二つのウェブサーバなどの同期)

この場合、仮にホスト muskox が fileset shared を維持し、ホスト clientA が fileset を複製されるとします。次のファイルは muskoxclientA の両方に置かれます。

/etc/intermezzo/serverdb

<serverdb>
  <server name="muskox" ipaddr="192.168.0.3" />
</serverdb>

/etc/intermezzo/fsetdb

<fsetdb>
<fileset name="shared" servername="muskox" >
<replicator>clientA</replicator>
</fileset>
</fsetdb>

/etc/intermezzo/sysid

muskox 上のこの内容は -

<sysid name="muskox" psdev="/dev/intermezzo0" bindaddr="192.168.0.3" />
clientA 上のこの内容は -
<sysid name="clientA" psdev="/dev/intermezzo0" bindaddr="192.168.0.20" />

/etc/fstab

次の行は muskoxclientA の両方のファイルに追加されます -

/tmp/fs0 /izo0 intermezzo loop,fileset=shared,prestodev=/dev/intermezzo0, mtpt=/izo0,cache_type=ext3,noauto 0 0

/tmp/fs0

このファイルおよびファイルシステムは下記のコマンドを使用して作成されます -

dd if=/dev/zero of=/tmp/fs0 bs=1024 count=10k
mkizofs -F /tmp/fs0

/izo0/.intermezzo/shared/kml

上記の 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

/dev/intermezzo0

これは下記のコマンドを使用して作成されます -

mknod /dev/intermezzo0 c 185 0
chmod 700 /dev/intermezzo0

/etc/conf.modules

モジュールの構成ファイルは /etc/modules.conf と呼ばれているかも しれません。次の行を追加してください -

alias char-major-185 intermezzo

lento を起動する前に、キャッシュをマウントしてください -

mkdir /izo0; mount /izo0

これで lento を起動できます。muskoxclientA の両方で、次を 入力します。

lento

二つのクライアントと一つのサーバ (一般的な使用 - 二つのリモートオフィス)

/etc/intermezzo/serverdb

上記の「一つのクライアントと一つのサーバ」の場合向けと同様です。

/etc/intermezzo/fsetdb

<fsetdb>
<fileset name="shared" servername="muskox" >
<replicator>clientA</replicator>
<replicator>clientB</replicator>
</fileset>
</fsetdb>

これは最初の例と同様ですが、clientB が replicator のリストに追加されてい ます。

/etc/intermezzo/sysid

muskox および clientA 向けのこれは 最初の例と同様で、 clientB 上のものは次を含みます -

<sysid name="clientB" psdev="/dev/intermezzo0" bindaddr="192.168.0.21" />

/etc/fstab

これは、上記の「一つのクライアントと一つのサーバ」の場合で使用されるもの と同様です。

IPSec および ssh トンネルの利用

誰かここに何か書いていただけませんか?

暗号化されたトンネルの起動 ssh -f -x -L 3333:localhost:2222 -R 3333:localhost:2222

同じホスト上での一つのクライアントと一つのサーバ (一般的な使用 - InterMezzo のテスト)

ホスト muskox 上で実行していると仮定します。一つのホスト上で複数の lento を実行するには ip-alias の使用が必要です - ip-alias オプションがカー ネルに組込まれていなければなりません (CONFIG_IP_ALIAS)。これは一つ のインターフェースに複数の IP アドレスを関連付けることができます。名前 muskoxA1 および IP アドレス 192.168.0.100 が利用できるとします。 ファイル -

/etc/hosts

の中に次の行を追加します -

192.168.0.100   muskoxA1        

そして次の入力により ip-alias を追加します -

    ifconfig eth0:1 muskoxA1 up

次に下記の内容の設定ファイルを二つ作成します -

/etc/intermezzo/sysid

<sysid name="muskox" psdev="/dev/intermezzo0" bindaddr="192.168.0.3" />

/etc/intermezzo/sysid.muskoxA1

<sysid name="muskoxA1" psdev="/dev/intermezzo1" bindaddr="192.168.0.100" />

後者のファイルは alias された IP アドレス上で実行する lento 用の sysid ファイルとして作用します。同じホスト上でクライアントとサーバ の両方を実行しているので、それぞれのために /dev/intermezzo0 お よび /dev/intermezzo1 という異なるデバイスを指定しなければなら ないことに注意してください。

/etc/intermezzo/fsetdb

<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

/etc/fstab

二つのエントリがここに必要なことに注意してください -

/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

5.5 構成チェック

今のところ、checkconfig ツールは動作していません。コンフィグチェッ クの XML バージョンはまだ着手していません。

設定ファイルの簡単なチェックを行うスクリプトは提供されます。 config_check と呼ばれるスクリプトで .../intermezzo/tools ディレクトリ内にあります。

lento が標準的なシステム id ファイル /etc/intermezzo/sysid を使 用しているなら、スクリプトは引き数なしで実行できます。異なるシステム id ファイルを使用しているのなら、これを示すために --idfile=my_idfile フラグを使用します。

さらに --configdir=my_confdir フラグを使用することで、 /etc/intermezzo 以外のコンフィグディレクトリを使用できます。


次のページ 前のページ 目次へ