<!--
<!doctype linuxdoc system>
-->
<!doctype linuxdoctr system>

<article>
<title>The InterMezzo High Availability File System HOWTO
<author> by the project members </author>
<date>v1.0.5, August 2001
<trans> 野本 浩一 (<tt>hng@ps.ksky.or.jp</tt>)
<tdate>v1.0.5j, February 08, 2002 
<abstract>
<!--
This document explains the configuration and operation of the
InterMezzo file system on Linux.
-->
この文書は、Linux 上の InterMezzo ファイルシステムの設定および動作を説明
します。
</abstract>

<toc>

<!--TYPO Aknowledgements は Acknowledgements-->
<!--
<sect> Aknowledgements
-->
<sect> 謝辞

<!--
<p>  Many individuals have contributed to this HOWTO.  Among the authors are
<url url="mailto:braam@clusterfs.com" name="Peter J. Braam">, Rob Simmonds,
<url name="Gordon Matzigkeit" url="mailto:gord@fig.org">, <url
name="Christopher Li" url="mailto:chrisl@gnuchina.org"> and  <url
name="Shirish Phatak"
 url="mailto:shirish@tacitussystems.com">
-->
<p>  多くの方々がこの HOWTO に寄与しました。著者は<url
url="mailto:braam@clusterfs.com" name="Peter J. Braam">, Rob Simmonds,
<url name="Gordon Matzigkeit" url="mailto:gord@fig.org">, <url
name="Christopher Li" url="mailto:chrisl@gnuchina.org">, <url
name="Shirish Phatak"
 url="mailto:shirish@tacitussystems.com"> です。

<!--
<sect>Disclaimer and License
-->
<sect>免責およびライセンス
<p>
<!--TYPO Red Hat, Inc, は Red Hat, Inc.,-->
InterMezzo is an experimental file system.  It contains kernel code
and daemons running with root permissions and is known to have
bugs.  Please back up all data when using or experimenting with
InterMezzo.

InterMezzo is covered by the GPL.  The GPL describes the warranties
made to you, and can be found in the file <tt/COPYING/.

Copyright on InterMezzo is held by Peter J. Braam, Stelias Computing,
Carnegie Mellon University, Phil Schwan, Los Alamos National
Laboratory and Red Hat, Inc, TurboLinux, Inc., Tacitus Systems,
Inc. and Mountain View Data, Inc.
<descrip>
<tag>参考訳</tag>
InterMezzo は実験的なファイルシステムです。それはカーネルコードおよびルー
ト権限で実行するデーモン、そして既知のバグを含んでいます。InterMezzo の
使用もしくは実験を行う場合、データをすべてバックアップしてください。

InterMezzo は GPL によって保護されます。GPL はあなたになされる保証につい
て述べ、ファイル <tt/COPYING/ の中にあります。

InterMezzo の著作権は Peter J. Braam, Stelias Computing, Carnegie Mellon
University, Phil Schwan, Los Alamos National Laboratory, Red Hat, Inc.,
TurboLinux, Inc., Tacitus Systems, Inc., Mountain View Data, Inc. が保有
しています。
</descrip>

<p> InterMezzo is a trademark of Stelias Computing.  It may be used
freely to refer to the software on the <url name="InterMezzo Web Site"
url="http://www.inter-mezzo.org">
<descrip>
<tag>参考訳</tag>
InterMezzo は Stelias Computing の商標です。<url 
name="InterMezzo ウェブサイト" url="http://www.inter-mezzo.org">上のソフ
トウェアを言及するために、自由に使用することができます。
</descrip>

<!--
<sect>Introduction
-->
<sect>はじめに
<!--
<sect1>What is InterMezzo?
-->
<sect1>InterMezzo は何ですか？

<p>
<!--
InterMezzo is a file system that maintains replicas of <em>folder
collections</em>, a.k.a. <em>fileset</em> residing on multiple
computers.  It keeps these replicas in sync by building a log of
modifications and propagating that log to other nodes. The computers
that express an interest in the replica are called the
<em>replicators</em> of the fileset.  InterMezzo has one server for
the fileset, which plays an organizing role in exchanging the updates
with replicators.
-->
InterMezzo は多数のコンピュータ上に存在する <em>folder collection</em>,
別名 <em>fileset</em> の複製を維持するファイルシステムです。修正のログを
構築し他のノードへそのログを広めることにより、同期してこれらの複製を保持
します。複製への関与を示すコンピュータは fileset の <em>レピリケータ</em>
と呼ばれます。InterMezzo は、レプリケータでの更新を交換する際に組織だった
役割を果たす、fileset のためのサーバが一つあります。

<p>
<!--
InterMezzo has <em>disconnected operation</em>, i.e. it maintains a
<em>log</em> to remember all updates that need to be
<em>forwarded</em> when a failed communication channel comes
back. This is a best effort synchronization since during disconnected
operation <em>conflicting updates</em> are possible, unless the
configuration parameters are set to avoid this.
-->
InterMezzo には<em>disconnected operation</em> (切断時の動作) があり、つ
まり、不通となっていたチャネルが復旧した時に <em>forwarded</em> が必要な
すべての更新を覚えておくために、<em>ログ</em> を管理します。コンフィグレー
ションパラメータで <em>conflicting updates</em> (競合する更新) の回避を
設定しない場合、disconnected operation の間に <em>conflicting
updates</em> が起きる可能性があるので、これはベストエフォート型同期です。

<p>
<!--
InterMezzo uses an existing disk file system as the storage location
for all data.  At present we support <em>ext3</em>, but soon also
ReiserFS and XFS might be supported.  When an ext3 formatted disk
volume is mounted with file system type InterMezzo instead of ext3,
the InterMezzo software starts managing all access to the file system.
It keeps the <em>logs</em> of modification records and negotiates
<em>permits</em> to modify the disk file system, to avoid conflicting
updates during connected operation.
-->
InterMezzo は全データの記憶域として既存のディスクファイルシステムを使用
します。現時点で <em>ext3</em> をサポートしますが、間もなく ReiserFS お
よび XFS をサポートするでしょう。ext3 にフォーマットされたディスクボリュー
ムが ext3 の代わりにファイルシステムタイプ InterMezzo でマウントされたな
ら、InterMezzo ソフトウェアはファイルシステムへのアクセスをすべて管理し
始めます。それは、修正の<em>ログ</em>を記録し、ディスクファイルシステム
を修正するための <em>許可</em> を確認し、connected operation 中の競合す
る更新を回避します。

<!--TYPO tranfer は transfer-->
<!--
<p> InterMezzo can use a basic internal file tranfer mechanism or rely
on the rsync protocol (see <url name="the Rsync web site"
url="http://rsync.samba.org">). 
-->
<p> InterMezzo は基礎的な内部のファイル転送の仕組みか、もしくは rsync プ
ロトコル (<url name="Rsync ウェブサイト"
url="http://rsync.samba.org">を参照してください) を使うことができます。

<!--
<sect1> Limitations in version 1.0.4
-->
<sect1> バージョン1.0.4での制限

<p>
<descrip>
<!--
<tag> Security </tag>
-->
<tag> セキュリティ </tag>

<!--
Currently you should run InterMezzo only on trusted networks - the
root users on the replicating systems need to be equally trusted.
There is some rudumentary security built into the system yet, which is
similar to NFS security (but <em>without</em> root squash).  A good
way to get a trusted network is to use IPSEC (see FreeSwan
<tt>http://www.freeswan.org</tt>), CIPE (see
<tt>http://sites.inka.de/sites/bigred/devel/cipe.html</tt>), or SSH
tunnels.  The SSL utility stunnel is somewhat harder to use since it
spawns many daemons trying to reconnect. Support for POSIX ACL replication
is available for the 2.2 kernel and forthcoming for 2.4.  Some
security improvements will be made as time progresses.
-->
今のところ、信頼されたネットワーク上でのみ InterMezzo を実行するべきです
- 複製に関わるシステム上のルートユーザは等しく信頼される必要があります。
システムに組込まれた rudumentary security がまだありますが、これは (root
squash のない) NFS セキュリティと似たようなものです。信頼されたネットワー
クを得る良い方法は IPSEC (FreeSwan <tt>http://www.freeswan.org</tt> を参
照してください)、CIPE 
(<tt>http://sites.inka.de/sites/bigred/devel/cipe.html</tt> を参照してく
ださい)、SSH トンネルを使うことです。SSL ユーティリティ stunnel はデーモ
ンを再接続試行でたくさん生成するので、多少難しいかもしれません。POSIX
ACL の複製は 2.2 カーネルで利用でき、2.4 向けはまもなく出ます。時
がたつにつれ、セキュリティの向上がなされるでしょう。

<!--TYPO seemless は seamless-->
<!--
<tag> Recovery </tag> The system currently has journal recovery in
combination with Ext3.  After system crashes the local disk system
with the KML, LML and last_rcvd file which contain distributed state
will recover automatically.  Recovery with peers will normally also be
seemless.
-->
<tag> リカバリ </tag> 今のところ、システムは Ext3 と組合わされたジャーナ
ルリカバリがあります。システムがクラッシュした後、分散された状態を含む
KML, LML last_rcvd ファイルを持ったローカルディスクシステムは自動的に復
旧するでしょう。相手をともなったリカバリも普通にシームレスに行われるよう
になるでしょう。

<!--
<tag> Conflict Handling </tag> The system does not currently have
conflict handlers but pessimistic, rigourous conflict detection.  More
extensive conflict resolution tools are being developed and should be
available with the next major release.  The design of the system means
that conflicts can only occur when reconnecting after a period of
disconnected operation and that conflicts can only occur on a client.
-->
<tag> 競合の扱い </tag> 現状システムは悲観主義ではなく厳格主義的な競合検
出を行う競合ハンドラを持っていません。もっと広範な競合解決ツールは開発が
続けられ、次のメジャーリリースで利用できるはずです。disconnected
operation の期間の後に再接続する場合だけ競合が起き、競合はクライアントだ
けで起きる可能性があるシステムの設計になっています。

<!--
<tag> Fetch on demand </tag> At the moment InterMezzo replicates an
entire filesystem.  However, a fetch on demand system will appear in a
future version, which will allow partial replication of a filesystem.
The first versions of this will fetch file data on demand but
replicate meta-data (directories and inodes fully).  Partial metadata
caching may be implemented in future versions.
-->
<tag> Fetch on demand </tag> 当面、InterMezzo は全ファイルシステムを複製
します。しかしながら、Fetch on demand システムは将来のバージョンで登場し、
ファイルシステムの部分的な複製ができるようになるでしょう。この最初のバー
ジョンはメタデータ (ディレクトリおよび inode すべて) の複製ではなく、
fetch file data on demand になるでしょう。部分的なメタデータの変更は将来
のバージョンで実装されるかもしれません。
</descrip>

<!--
<sect> Installing InterMezzo
-->
<sect> InterMezzo のインストール

<!--
<sect1> Overview
-->
<sect1> 概要

<!--
<p> InterMezzo depends on a kernel that has the InterMezzo file
system.  There is also a user level file server and cache manager
which are currently written in Perl.  Finally there are some utilities
to make InterMezzo file systems.
-->
<p> InterMezzo は InterMezzo ファイルシステムを持ったカーネルに依存しま
す。現在 Perl で書かれたユーザレベルのファイルサーバおよびキャッシュマネー
ジャがあります。そして InterMezzo ファイルシステムを作成するユーティリィ
ティがあります。

<!--
<sect1> Getting the packages
-->
<sect1> パッケージの入手

<!--
<p> The packages for version 1.0.4 are available from <url url=
"ftp://ftp.inter-mezzo.org:/pub/intermezzo/1.0.4/rh7.1/RPMS">.  These
packages should install cleanly on a RedHat 7.1 system.  You want to
intall either the 2.2 kernel package or the 2.4 kernel package.
-->
<p> バージョン 1.0.4 のパッケージは <url 
url="ftp://ftp.inter-mezzo.org:/pub/intermezzo/1.0.4/rh7.1/RPMS">から入
手できます。これらのパッケージはきれいな RedHat 7.1 システム上にインストー
ルすべきです。2.2 カーネルパッケージか 2.4 カーネルパッケージのどちらか
をインストールします。

<!--
<sect1> Configuring the 2.4 kernel for booting
-->
<sect1> ブートするための 2.4 のカーネルの構築

<!--
<p> In order to boot the 2.4 kernel, you need to generate an initial
ramdisk with initrd as follows:
-->
<p> 2.4 カーネルをブートするために、次のように initrd で初期 ramdisk を
生成する必要があります -

<tscreen> <verb>
mkinitrd /boot/initrd-2.4.7-ext3_0.9.5-presto_1.0.4 2.4.7-ac9
</verb></tscreen>

<!--
In order for Lilo to boot this kernel now add the following kind of
lilo entry to your <tt>/etc/lilo.conf</tt> file:
-->
Lilo でこのカーネルをブートするために、次のような lilo エントリを
<tt>/etc/lilo.conf</tt> ファイルに追加します -

<tscreen><verb>
image=/boot/vmlinuz-2.4.7_ext3_0.9.5_presto_1.0.4
        label=InterMezzo
        read-only
        root=/dev/hda1
        initrd=/boot/initrd-2.4.7-ext3_0.9.5-presto_1.0.4
</verb></tscreen>

<!--
<sect1> Building the InterMezzo file system for a custom kernel 
-->
<sect1> カスタムカーネル向け InterMezzo ファイルシステムの構築

<!--
<p> In order to get a kernel module for your kernel, you need to have
the <tt>.config</tt> file and the kernel sources for your kernel.
Proceed by first preparing your kernel sources, and then building the module:
-->
<p> あなたのカーネル向けカーネルモジュールを生成するために、あなたのカー
ネル向けの <tt>.config</tt> ファイルおよびカーネルソースが必要です。最初
にカーネルソースの準備、次にモジュールの構築へと進みます -

<tscreen> <verb>
cd /your/source/linux
make distclean
cp your.config  .config
make oldconfig dep
cd /usr/src/presto24-1.0.04
./configure --enable-linuxdir=/your/source/linux
make install
</verb> </tscreen>
[訳注；上記の /your/source/linux (二箇所) は「カーネルソースのディレクト
リ」に読みかえて実行してください。]

<!--
For Linux 2.2 kernel the same mechanism works.
-->
Linux 2.2 カーネルでも同じ手順で行います。

<!--
<sect> Configuring InterMezzo
-->
<sect> InterMezzo の設定

<!--
<sect1>Config files
-->
<sect1>コンフィグファイル
<p>
<!--
Your default config directory is <tt>/etc/intermezzo</tt>.  You may
use the interactive <tt/inconfig/ command to generate the following
configuration files, or manually create them.
-->
デフォルトのコンフィグディレクトリは <tt>/etc/InterMezzo</tt>です。以下
に示す設定ファイルを生成するために、対話型 <tt/inconfig/ コマンドを利用
するか、もしくは手動でそれらを作成してもかまいません。
<p>
<!--
The config files in versions 1.0 and later use use the XML format
instead of the Perl formats found in older versions.
-->
バージョン 1.0 およびそれ以降で使うコンフィグファイルは、より古いバージョ
ンで用いていた Perl フォーマットの代わりに、XML フォーマットを用います。

<descrip> 

<!--
<tag>/etc/intermezzo/sysid</tag> Holds a name of your system, the
presto device name and the IP bind address.  Suppose your server has
the name <tt/muskox/, with IP address <tt/192.168.0.3/, and your
clients are <tt/clientA/ and <tt/clientB/.  The <tt/sysid/ file
on each host would contain the host name, the presto device and the IP
bind address. i.e., on <tt/muskox/ the file would contain:
-->
<tag>/etc/intermezzo/sysid</tag> システム名、presto デバイス名、IP バイ
ンドアドレスを保持します。仮に、サーバ名が <tt/muskox/、IP アドレスが
<tt/192.168.0.3/ で、クライアントは <tt/clientA/ および <tt/clientB/ と
します。各ホストの <tt/sysid/ ファイルはホスト名、presto デバイス名、IP
バインドアドレスを含みます。つまり <tt/muskox/ のファイルは次のようにな
るでしょう -

<tscreen><verb>
&lt;sysid name="muskox" psdev="/dev/intermezzo0" bindaddr="192.168.0.3" /&gt;
</verb></tscreen>

<!--
Note that in early versions of InterMezzo, this file did not contain
the name of the presto device; this field is now required.
-->
InterMezzo の初期バージョンはこのファイルに presto デバイス名を含んでい
なかったことに注意してください - 今ではこのフィールドを必要とします。

<!--
<tag>/etc/intermezzo/serverdb</tag> Holds a database of servers.  The
server structure is a XML server element, as follows:
-->
<tag>/etc/intermezzo/serverdb</tag> サーバのデータベースを保持します。
server 構造体は次に示す XML の server エレメントです -

<tscreen>
<verb>
&lt;serverdb&gt;
  &lt;server name="muskox" ipaddr="192.168.0.3" port="2222" 
    bindaddr="192.168.0.3" /&gt;
&lt;/serverdb&gt;
</verb>
</tscreen>

<!--
The above contains a single server description for the server 
<tt/muskox/ with IP address <tt/"192.168.0.3"/.  The <tt/port/ and
<tt/bindaddr/ are optional; the default port is 2222.  Without a
<tt/bindaddr/ the server listens to all interfaces for requests, with
it, the server only listens on the <tt/bindaddr/ address.  If you
are running both a client and a server on the same system, you need
to specify a different <tt/bindaddr/ for the server and the client(s).
-->
上記は IP アドレス <tt/192.168.0.3/ なサーバ <tt/muskox/ 用の単一のサー
バの記述です。<tt/port/ および <tt/bindaddr/ の記述は任意です - デフォル
トのポートは 2222 です。<tt/bindaddr/ の記述のないサーバは要求をすべての
インターフェースで待ち (listen) ます。記述のあるサーバは <tt/bindaddr/
のアドレス上だけで待ちます。クライアントとサーバの両方を同じシステムで実
行している場合、異なる <tt/bindaddr/ をサーバとクライアントに指定するこ
とが必要です。

<!--
<tag>/etc/intermezzo/fsetdb</tag> Holds a database of filesets.  The
fsetdb structure is a XML fileset element, as follows:
-->
<tag>/etc/intermezzo/fsetdb</tag> fileset のデータベースを保持します。
fsetdb 構造体は次に示す XML の fileset エレメントです -

<tscreen>
<verb>
&lt;fsetdb&gt;
&lt;fileset name="yourfsetname" servername="muskox" fetchtype="bulktype" &gt;
&lt;replicator&gt;clientA&lt;/replicator&gt;
&lt;replicator&gt;clientB&lt;/replicator&gt;
&lt;/fileset&gt;
&lt;/fsetdb&gt;
</verb>
</tscreen>

<!--
The above contains a single fileset description for a fileset called
<tt/yourfsetname/ which is served by <tt/muskox/.  The fileset is
replicated on hosts <tt/clientA/ and <tt/clientB/.
-->
上記は <tt/muskox/ が維持する <tt/yourfsetname/ と呼ぶ fileset 向けの単
一な fileset の記述です。fileset はホスト <tt/clientA/ と <tt/clientB/
で複製されます。

<p>
<!--
The <em>fetchtype</em> can be the class name of a supported bulk
mover.  The default is "Rsync", the simpler InterMezzo managed bulk
mover is called "Desc".
-->
<em>fetchtype</em> はサポートされたバルクムーバのクラス名であることがあ
ります。デフォルトは &dquot;Rsync&dquot; で、より単純な InterMezzo に管
理されるバルクムーバは &dquot;Desc&dquot; と呼ばれます。

<tag>/etc/fstab</tag> 

<!--
To ease the mounting of InterMezzo filesets add one of the following to
the <tt>/etc/fstab</tt> file.  For testing and developing using a loop
device as the cache is easiest:
-->
InterMezzo fileset のマウントを簡単にするには、下記に示すうちの一つを
<tt>/etc/fstab</tt> に追加します。試験および開発には、ループデバイスをキャ
ッシュとして利用することがもっとも簡単です -

<tscreen>
<verb>
/tmp/cache  /izo0  intermezzo loop,fileset=fsetname,mtpt=/mnt/izo0,
      data=journal,prestodev=/dev/intermezzo0,cache_type=ext3,noauto 0 0
</verb>
</tscreen>

<!--
where <tt>/tmp/cache</tt> is a file associated with a loop device,
<tt>/izo0</tt> is a mount point (a directory), <tt>fsetname</tt> is the
name of the fileset and <tt>/dev/intermezzo0</tt> is the name of the
presto device.  The creation of the cache file and the presto device
is explained in the examples at the end of this section. 
The kernel must be configured with loopback device support enabled to
do this.
-->
ここで、<tt>/tmp/cache</tt> はループデバイスに使われるファイルで、
<tt>/izo0</tt> はマウントポイント (ディレクトリ) で、<tt>fsetname</tt>
は fileset 名で、<tt>/dev/intermezzo0</tt> は presto デバイス名です。キャ
ッシュファイルおよび presto デバイスの作成はこのセクションの終わりの例題
で説明されます。これをするには、カーネルは loopback device support を有
効にして構築されなければなりません。

<p>
<!--
<bf>NOTE:</bf> The mount option <tt>data=journal</tt> is important for
2.4 kernels pending a bug fix in ext3.
-->
<bf>注記 -</bf> マウントオプション <tt>data=journal</tt> は、2.4 カーネ
ル向け ext3 のバグが修正されるまで重要です。

<p>
<!--
Using a genuine block device is a little easier, because you do not
need to set up a loop device. To use the block device
<tt>/dev/hda9</tt>, the <tt>/etc/fstab</tt> file should contain:
-->
純粋なブロックデバイスを利用することは、ループデバイスの設定をする必要が
ないので、もう少し簡単です。ブロックデバイス <tt>/dev/hda9</tt> を利用す
るには、<tt>/etc/fstab</tt> ファイルは次のものを含みます -

<tscreen>
<verb>
/dev/hda9  /izo0 intermezzo fileset=fsetname,mtpt=/izo0,
prestodev=/dev/intermezzo0,cache_type=ext3,data=journal,noauto 0 0
</verb></tscreen>

<!--
<em>NOTE:</em>
-->
<em>注記 -</em>
<itemize>
<item>
<!--
While the lines may wrap in this document the <tt>/etc/fstab</tt>
entry should be a single line. The same holds for the following
examples.
-->
この文書では行が折り返されているかもしれませんが、<tt>/etc/fstab</tt> の
エントリは一行でなければなりません。以下に示す例でも同じことが言えます。
</item>
<item>
<!--
the mount point needs to be explicitly passed in the options
(future versions of mount will not need this).</item>
-->
マウントポイントはオプションの中で明示的に渡す必要があります (マウントの
将来のバージョンはこれが必要なくなるでしょう)。</item>
</itemize>
<!-- FIXME: In LinuxDoc, we're not allowed a null description, so we
split the kml and last_rcvd descriptions to supress warnings. -->
<!--
<tag>Other files</tag> 
-->
<tag>他のファイル</tag> 

<!--
The file <tt>/izo0/.intermezzo/fsetname/kml</tt> contains kernel
modification log (aka the <tt/KML/) which keeps track of all of the
changes made in an InterMezzo filesystem. The file
<tt>/izo0/.intermezzo/fsetname/last_rcvd</tt> is the <tt/last_rcvd/
file which keeps track of the distributed synchronization file.  In
the current release of InterMezzo, the KML and last_rcvd files need to
be created (usually by running <tt/mkizofs/) before first mounting an
InterMezzo filesystem.
-->
ファイル <tt>/izo0/.intermezzo/fsetname/kml</tt> は InterMezzo ファイル
システム内で行なわれた変更をすべての把握する kernel modification log (別
名 <tt/KML/) を含みます。ファイル
<tt>/izo0/.intermezzo/fsetname/last_rcvd</tt> は分散された同期化ファイル
を把握する <tt/last_rcvd/ ファイルです。InterMezzo の現行のリリースでは、
InterMezzo ファイルシステムを初めてマウントする前に、KML および
last_rcvd ファイルを作成 (通常 <tt/mkizofs/ を実行します) する必要があり
ます。

</descrip>

<!--
<sect1> Formatting an InterMezzo file system
-->
<sect1> InterMezzo ファイルシステムのフォーマット
<p> 

<!--
For this one uses the mkizofs tool:
-->
このためには、mkizofs ツールを利用します -

<verb>
mkizofs -r fsetname -j /tmp/cache
mkizofs -r fsetname -j /dev/hdaX
</verb>

<!--
The argument to the <tt/-r/ option gives the root fileset name for
which an InterMezzo replication log will be created, the <tt/-j/
option causes and Ext3 journal to be created.  There are further
options, see <tt/mkizofs -h/ for options, such as specifying the
filesystem type.
-->
<tt/-r/ オプションの引き数はInterMezzo の複製ログが作成されるルートの
fileset 名です。<tt/-j/ オプションで Ext3 ジャーナルが作成されます。さら
にファイルシステム種別を指定するようなオプションもありますので、
<tt/mkizofs -h/ を参照してください。

<!--
<sect1> Converting ext2/3 file systems to InterMezzo.
-->
<sect1> ext2/3 ファイルシステムの InterMezzo への変換

<p> 
<!--
If you have already initialized your cache filesystem, then you
must manually create the needed InterMezzo metadata files:
-->
既にキャッシュファイルシステムが初期化されている場合、InterMezzo が必要
とするメタデータファイルを手動で作成しなければなりません -

<tscreen>
<verb>
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
</verb>
</tscreen>

<!--
These example assumes that we are using the loopback device with the
/tmp/cache filesystm, and that the fileset will be called <tt/fsetname/.
-->
これらの例は、/tmp/cache ファイルシステムにループバックデバイスを利用し、
fileset は <tt/fsetname/ と呼ばれていると仮定します。

<!--
<p> Before you can mount these as InterMezzo you should manually
replicate them to the replicators, so that the file systems are
identical.
-->
<p> InterMezzo としてこれらをマウントする可能性が発生する前に、手動で複
製対象にそれらを複製するべきなので、結果的にファイルシステムは同一になり
ます。

<!--
<sect1> Three common configurations
-->
<sect1> 三つの一般的な構成

<p>

<!--
Let's consider three common system configurations, for each we will
give the config files and the correct invocations to start the
server/cache manager.
-->
一般的な構成を三つ例にとり、サーバ／キャッシュマネージャを起動するための
コンフィグファイルおよび正しい手順を考えましょう。


<!--
<sect2>One client and one server (typical use: laptop - desktop,
backup and two web server synchronization)
-->
<sect2>一つのクライアントと一つのサーバ (一般的な使用 - ラップトップとデスクトップ、バックアップ、二つのウェブサーバなどの同期)

<p>

<!--
In this case we assume that the host <tt/muskox/ is serving the fileset
<tt/shared/ and the host <tt/clientA/ is replicating the fileset.
The following files are placed on both <tt/muskox/ and <tt/clientA/. 
-->
この場合、仮にホスト <tt/muskox/ が fileset <tt/shared/ を維持し、ホスト
<tt/clientA/ が fileset を複製されるとします。次のファイルは <tt/muskox/
と <tt/clientA/ の両方に置かれます。

<descrip>

<tag>/etc/intermezzo/serverdb</tag>
<tscreen><verb>
&lt;serverdb&gt;
  &lt;server name="muskox" ipaddr="192.168.0.3" /&gt;
&lt;/serverdb&gt;
</verb></tscreen>

<tag>/etc/intermezzo/fsetdb</tag>
<tscreen><verb>
&lt;fsetdb&gt;
&lt;fileset name="shared" servername="muskox" &gt;
&lt;replicator&gt;clientA&lt;/replicator&gt;
&lt;/fileset&gt;
&lt;/fsetdb&gt;
</verb></tscreen>

<tag>/etc/intermezzo/sysid</tag>
<!--
On <tt/muskox/ this contains:
-->
<tt/muskox/ 上のこの内容は -
<tscreen><verb>
&lt;sysid name="muskox" psdev="/dev/intermezzo0" bindaddr="192.168.0.3" /&gt;
</verb></tscreen>
<!--
On <tt/clientA/ this contains:
-->
<tt/clientA/ 上のこの内容は -
<tscreen><verb>
&lt;sysid name="clientA" psdev="/dev/intermezzo0" bindaddr="192.168.0.20" /&gt;
</verb></tscreen>

<tag>/etc/fstab</tag>
<!--
The following line is added on both <tt/muskox/ and <tt/clientA/:
-->
次の行は <tt/muskox/ と <tt/clientA/ の両方のファイルに追加されます -
<tscreen>
/tmp/fs0  /izo0      intermezzo loop,fileset=shared,prestodev=/dev/intermezzo0,
mtpt=/izo0,cache_type=ext3,noauto 0 0
</tscreen>

<tag>/tmp/fs0</tag>
<!--
This file and the filesystem is created using the following commands:
-->
このファイルおよびファイルシステムは下記のコマンドを使用して作成されます
-
<tscreen><verb>
dd if=/dev/zero of=/tmp/fs0 bs=1024 count=10k
mkizofs -F /tmp/fs0
</verb></tscreen>

<tag>/izo0/.intermezzo/shared/kml</tag> 
<!--
If we didn't run mkizofs above, we create the KML and last_rcvd files
by first mounting the filesystem as ext3:
-->
上記の mkizofs を実行しなかった場合、最初にファイルシステムを ext3 とし
てマウントし、次のコマンドで KML および last_rcvd ファイルを作成します -
<tscreen><verb>
mkdir /izo0
mount -o loop /tmp/fs0 /izo0
mkdir -p /izo0/.intermezzo/shared
touch /izo0/.intermezzo/shared/{kml,last_rcvd}
umount /izo0
</verb></tscreen>

<tag>/dev/intermezzo0</tag> 
<!--
This is created using the following commands:
-->
これは下記のコマンドを使用して作成されます -
<tscreen><verb>
mknod /dev/intermezzo0 c 185 0
chmod 700 /dev/intermezzo0
</verb></tscreen>

<tag>/etc/conf.modules</tag>
<!--
Your modules configuration file may also be called <tt>/etc/modules.conf</tt>.
Add the lines:
-->
モジュールの構成ファイルは <tt>/etc/modules.conf</tt> と呼ばれているかも
しれません。次の行を追加してください -
<tscreen><verb>
alias char-major-185 intermezzo
</verb></tscreen>
</descrip>

<!--
Before starting lento, mount the cache:
-->
lento を起動する前に、キャッシュをマウントしてください -
<tscreen>
<verb>
mkdir /izo0; mount /izo0
</verb>
</tscreen>

<!--
Now lento can be started on both <tt/muskox/ and <tt/clientA/ by typing
-->
これで lento を起動できます。<tt/muskox/ と <tt/clientA/ の両方で、次を
入力します。
<tscreen><verb>
lento
</verb></tscreen>

<!--
<sect2> Two clients and one server (typical use: two remote offices)
-->
<sect2> 二つのクライアントと一つのサーバ (一般的な使用 - 二つのリモートオフィス)
<p>
<descrip>
<tag>/etc/intermezzo/serverdb</tag>

<!--
The can be the same as for the one client and one server case above.
-->
上記の「一つのクライアントと一つのサーバ」の場合向けと同様です。

<tag>/etc/intermezzo/fsetdb</tag>
<tscreen><verb>
&lt;fsetdb&gt;
&lt;fileset name="shared" servername="muskox" &gt;
&lt;replicator&gt;clientA&lt;/replicator&gt;
&lt;replicator&gt;clientB&lt;/replicator&gt;
&lt;/fileset&gt;
&lt;/fsetdb&gt;
</verb></tscreen> 

<!--
This is the same as in the first example, but clientB is added to the
replicators list.
-->
これは最初の例と同様ですが、clientB が replicator のリストに追加されてい
ます。

<tag>/etc/intermezzo/sysid</tag> 

<!--
This is the same as in the first example for <tt/muskox/ and
<tt/clientA/, and on <tt/clientB/ contains the following:
-->
<tt/muskox/ および <tt/clientA/ 向けのこれは 最初の例と同様で、
<tt/clientB/ 上のものは次を含みます -
<tscreen><verb>
&lt;sysid name="clientB" psdev="/dev/intermezzo0" bindaddr="192.168.0.21" /&gt;
</verb></tscreen>

<tag>/etc/fstab</tag>
<!--
This is the same as used with the one client and one
server case above.
-->
これは、上記の「一つのクライアントと一つのサーバ」の場合で使用されるもの
と同様です。
</descrip>

<!--
<sect2> Using IPSec and ssh tunnels
-->
<sect2> IPSec および ssh トンネルの利用

<p> 
<!--
Could someone write something here please?
-->
誰かここに何か書いていただけませんか？

<!--
Running over an encrypted tunnel
-->
暗号化されたトンネルの起動
     ssh -f -x -L 3333:localhost:2222 -R 3333:localhost:2222


<!--
<sect2> One client and one server on same host (typical use: testing
InterMezzo)
-->
<sect2> 同じホスト上での一つのクライアントと一つのサーバ (一般的な使用 - InterMezzo のテスト)
<p>

<!--
Suppose that we are running on the host <tt/muskox/.  To run multiple
lentos on one host we need to use ip-aliasing; the ip-aliasing option
must be compiled into your kernel (<tt/CONFIG_IP_ALIAS/).  This allows
one interface to have more than one IP address associated with it.
Suppose the name <tt/muskoxA1/ and the IP address <tt/192.168.0.100/
are available.  In:
-->
ホスト <tt/muskox/ 上で実行していると仮定します。一つのホスト上で複数の
lento を実行するには ip-alias の使用が必要です - ip-alias オプションがカー
ネルに組込まれていなければなりません (<tt/CONFIG_IP_ALIAS/)。これは一つ
のインターフェースに複数の IP アドレスを関連付けることができます。名前
<tt/muskoxA1/ および IP アドレス <tt/192.168.0.100/ が利用できるとします。
ファイル -

<descrip>
<tag>/etc/hosts</tag>
<!--
Add the line:
-->
の中に次の行を追加します -
<tscreen><verb>
192.168.0.100	muskoxA1	
</verb></tscreen>

<!--
Then add the ip-alias by typing:
-->
そして次の入力により ip-alias を追加します -
<verb>
    ifconfig eth0:1 muskoxA1 up
</verb>

<!--
Then create two configuration files containing the following:
-->
次に下記の内容の設定ファイルを二つ作成します -
<tag>/etc/intermezzo/sysid</tag>
<tscreen><verb>
&lt;sysid name="muskox" psdev="/dev/intermezzo0" bindaddr="192.168.0.3" /&gt;
</verb></tscreen>

<tag>/etc/intermezzo/sysid.muskoxA1</tag>
<tscreen><verb>
&lt;sysid name="muskoxA1" psdev="/dev/intermezzo1" bindaddr="192.168.0.100" /&gt;
</verb></tscreen>

<!--
The latter file will act as a <tt/sysid/ file for the lento running on
the aliased IP address.  Note that because we are running both the client
and the server on the same system, we have to specify different devices
for each, namely <tt>/dev/intermezzo0</tt> and <tt>/dev/intermezzo1</tt>.
-->
後者のファイルは alias された IP アドレス上で実行する lento 用の
<tt/sysid/ ファイルとして作用します。同じホスト上でクライアントとサーバ
の両方を実行しているので、それぞれのために <tt>/dev/intermezzo0</tt> お
よび <tt>/dev/intermezzo1</tt> という異なるデバイスを指定しなければなら
ないことに注意してください。

<tag>/etc/intermezzo/fsetdb</tag>
<tscreen><verb>
&lt;fsetdb&gt;
&lt;fileset name="shared" servername="muskox" &gt;
&lt;replicator&gt;muskoxA1&lt;/replicator&gt;
&lt;/fileset&gt;
&lt;/fsetdb&gt;
</verb></tscreen>

<!--
To run the second lento, a second presto device and loopback cache are
required.  These are made as follows:
-->
二番目の lento を実行するには、二つ目の presto デバイスおよびループバッ
クキャッシュが必要です。次のように作成します -

<verb>
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
</verb>

<tag>/etc/fstab</tag> 
<!--
Note that two entries are needed here:
-->
二つのエントリがここに必要なことに注意してください -
<verb>
/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
</verb>

<!--
Now mount the two InterMezzo filesystems:
-->
二つの InterMezzo ファイルシステムをマウントしてください -
<tscreen>
<verb>
mount /izo0
mount /izo1
</verb>
</tscreen>

<!--
The lento acting as the server can be started as before:
-->
サーバとして動作する lento を前と同様に実行できます -
<tscreen>
<verb>
lento
</verb>
</tscreen>

<!--
The lento acting as the replicator has to be told which <tt/sysid/
file to read (which tells it which presto device to use).
The second lento is started as follows:
-->
レプリケータとして動作する lento は、どの <tt/sysid/ ファイルを読むかを伝
えなければなりません (これはどの presto デバイスを使用するかを伝えること
です)。次のように二つ目の lento を起動します -
<tscreen>
<verb>
lento.pl --idfile=sysid.muskoxA1
</verb>
</tscreen>

</descrip>

<!--
<sect1> Configuration Checking
-->
<sect1> 構成チェック
<p>
<!--
Currently the <em>checkconfig</em> tool is not working.  The XML
version of the config check is not ready yet.
-->
今のところ、<em>checkconfig</em> ツールは動作していません。コンフィグチェッ
クの XML バージョンはまだ着手していません。
<p>
<!--
A script is provided to perform simple checks on the configuration
files.  The script is called <tt/config_check/ and can be found in the
<tt>.../intermezzo/tools</tt> directory.
-->
設定ファイルの簡単なチェックを行うスクリプトは提供されます。
<tt/config_check/ と呼ばれるスクリプトで <tt>.../intermezzo/tools</tt>
ディレクトリ内にあります。

<p>
<!--
If Lento is using the standard system id file,
<tt>/etc/intermezzo/sysid</tt>, the script can be run without
arguments.  If a different system id file is being used the
<tt/&#045;&#045;idfile=my_idfile/ flag can be used to indicate this.
-->
lento が標準的なシステム id ファイル <tt>/etc/intermezzo/sysid</tt> を使
用しているなら、スクリプトは引き数なしで実行できます。異なるシステム id
ファイルを使用しているのなら、これを示すために <tt/--idfile=my_idfile/
フラグを使用します。

<!--
<p> It is also possible to use a configuration directory other than
<tt>/etc/intermezzo</tt> by using the <tt/&#045;&#045;configdir=my_confdir/
flag.
-->
<p> さらに <tt/--configdir=my_confdir/ フラグを使用することで、
<tt>/etc/intermezzo</tt> 以外のコンフィグディレクトリを使用できます。

<!--
<sect> Recovery from conflicts
-->
<sect> 競合からのリカバリ

<p>

<!--
The current version of InterMezzo has a built in recovery mechanism to
deal with most situations of system crashes.  Through configuration
choices, conflicts, i.e. inconsistent updates to client and server
caches can be avoided.
-->
InterMezzo の現行版はシステムクラッシュのほとんどの状況に対処するために、
リカバリの仕組みが組込まれています。設定を選ぶことで、競合すなわちクライ
アントおよびサーバキャッシュへの一貫しない更新を回避できます。

</P> 

<p>
<!--
However, during disconnected operation, conflicts can be generated if
the configuration does not explicitly avoid them through enforcing the
file system to be readonly.  Where the client and server have
inconsistent caches, only manual recovery can recover the system.
-->
しかしながら disconnected operation の間、ファイルシステムを読出し専用と
することによりそれらを回避する設定を明示的にしなかった場合、競合は生成さ
れる可能性があります。クライアントおよびサーバが一貫しないキャッシュを持っ
てしまった場合、システムをリカバリできるのは、手動リカバリだけです。

<p>
<!--
The system can be recovered manually as follows:
-->
システムは手動で次のようにリカバリできます -
<p>

<enum>
<!--
<item> When a conflict happens, the lento which is reintegrating
changes will die.  This Lento is receiving updates from its peer in
this replicator and typically the peer will have the latest updates.
So we are going to synchronize from the lento that survived to the
lento that died.
-->
<item> 競合が起きる場合、変更を再統合している lento は終了します。この
lento はこのレプリケータの相手からの更新を受信していて、大抵相手は最新に
なっています。したがって動作を続けている lento から終了した lento へ同期
させましょう。

<!--
<item> Shutdown the server and client(s), unmount the caches, and
remove the presto module from the kernel:
-->
<item> サーバおよびクライアント (群) を終了し、キャッシュをアンマウント
し、カーネルから presto モジュールを削除します -

<tt> umountizo ; rmmod presto </tt>

<!--
<item> Mount each cache as an ext3 filesystem:
-->
<item> ext3 ファイルシステムとして各キャッシュをマウントします -

<tt> mount -o loop /tmp/fs0 /izo0</tt>

<!--
<item> Use rsync or tar, or another tool, to synchronize the caches
on the clients and server.  Make sure to remove files from the client
that you don't have on the server, the caches need to be identical.
-->
<item> クライアントおよびサーバ上のキャッシュを同期させるために rsync か
tar あるいは別のツールを使用します。サーバ上にないファイルをクライアント
から必ず削除し、キャッシュを同一にします。

<!--
<item> Set the synced flag on the clients - this prevents the system
from resyncing on startup.  This is done using the command below where
SYSID is replaced with the client's sysid, and FSETNAME is replaced
with the name of the fileset:
-->
<item> クライアントの synced フラグをセットしてください - これは起動時に
システムが再度同期しようとすることを防ぎます。これは SYSID をクライアン
トの sysid で、FSETNAME を fileset 名で、置きかえた以下のコマンドで行え
ます -

<tt> touch /var/intermezzo/SYSID/FSETNAME-synced</tt>

<!--
e.g. on client <tt/iclientA/ with fileset <tt/shared/ use:
-->
例えば、fileset <tt/shared/ を備えたクライアント <tt/iclientA/ 上で使う
には -

<tt> touch /var/intermezzo/iclientA/shared-synced</tt>

<!--
<item> The persistent databases will be out of sync at this point,
so you must clear the KML and last_rcvd records on both the client and
the server:
-->
<item> 永続的なデータベースはこの時点で、同期がはずれるので、クライアン
トとサーバの両方で KML および last_rcvd のレコードを消去しなければなりま
せん -

<tt> cp /dev/null /izo0/.intermezzo/shared/kml ; </tt>
<tt> cp /dev/null /izo0/.intermezzo/shared/last_rcvd</tt>

<!--
<item> Unmount the caches and mount them again as InterMezzo file
systems.  Restart Lento on the server and client.
-->
<item> キャッシュをアンマウントし、再び InterMezzo ファイルシステムとし
てマウントします。サーバおよびクライアント上の lento を再起動します。

</enum>

<!--
This is cumbersome, but journaled recovery is on its way.
-->
これは厄介ですが、journaled recovery は開発中なのです。


<!--
<sect> Debugging
-->
<sect> デバッグ

<!--
<p> To help us find bugs we need logging information.  The logs come
in two places, from the kernel in <tt>/var/log/messages</tt>, and from
lento on stdout and stderr.
-->
<p> バグの発見を助長するには、情報をログすることが必要です。ログは二箇所
で発生し、カーネルからのログは <tt>/var/log/messages</tt> へ、lento から
のログは stdout および stderr へ出力されます。

<!--
<p> The kernel debugging log slows things down enormously and is
activated with:
-->
<p> カーネルのデバッグログ機能はシステムをとても遅くします。次で開始され
ます -

<tscreen>
<verb> 
echo 4095 > /proc/sys/intermezzo/debug
echo 1 > /proc/sys/intermezzo/trace
</verb>
</tscreen>

<!--
The lento log can be captured from the terminal, and is activated
using the <tt>&#045;&#045;debuglevel=N</tt>.  With N=1 you get many things, with
N=100, all of it.
-->
lento のログは端末から捕捉でき、<tt>--debuglevel=N</tt> の使用で開始され
ます。N=1 で多くのことを、N=100 ですべてのことを、ログします。

<!--
Mailing us the logs as well as a precise description of what you did
to produce the bug might be enough to see what's happening.
-->
何が起こったのか調べるために、ログはもちろんのこと、バグを再現する正確な
情報もメールしてください。

<!--
<sect> Using the test framework for testing and debugging
-->
<sect> テストおよびデバッグのためにテストフレームワークを使用する

<!--
<p> Read the README file in the <tt>../intermezzo/tests</tt>
directory.  This can save all information for you conveniently and
runs the client(s) and server on a single system.
-->
<p> <tt>../intermezzo/tests</tt> ディレクトリ内の README ファイルを読ん
でください。これはあなた向けのすべての情報を簡単に取っておくことができ、
一台のシステム上でクライアントおよびサーバを実行します。





<!--
<sect>How does InterMezzo work?
-->
<sect>InterMezzo はどのように動作しますか？

<!--
<p> InterMezzo was heavily inspired by Coda, and its current cache
synchronization protocol is one of the many protocols that Coda
supports.  It is likely not the best for every situation but it is as
simple as we could make it.
-->
<p> InterMezzo はかなり Coda から着想を得ており、現在のキャッシュ同期プ
ロトコルは Coda がサポートする多くのプロトコルの一つです。すべての状況で
最良であるとは言えませんが、それを簡単に行うことができるものです。

<p>
<!--
The InterMezzo filesystem keeps sets of files on multiple hosts
synchronized.  It sits on top of the native filesystems on each host
and keeps track of updates to the filesystems in such a way that it
can synchronize the changes between multiple hosts.  In this document
we describe the architectures and protocols that InterMezzo uses to
keep files synchronized.
-->
InterMezzo ファイルシステムは同期させられた複数のホスト上のファイルの集
合を保持します。各ホストのネイティブファイルシステムの上に位置し、複数の
ホスト間の変更を同期させることができるような方法で、更新を把握します。こ
の文書で、同期されたファイルを保持するために InterMezzo が用いるアーキテ
クチャおよびプロトコルを記述します。


<!--
<sect1> Coherence and Granularity
-->
<sect1> 一貫性と粒度
    <p>
<!--
      InterMezzo guarantees only very loose coherence between the
      filesystems.  Files are only ever handled as complete units,
      changes are not propagated until the file is closed for writing,
      and changes on one system are not necessarily reflected on
      another immediately.  In InterMezzo 1.0 whole filesystems are
      replicated and only one host may have the write lock for that
      filesystem at any one time.
-->
      InterMezzo はファイルシステム間の非常に緩い一貫性だけを保証します。
      ファイルは完全なユニットとしてのみ扱われ、ファイルが書込みでクロー
      ズされるまで変更は広められず、あるシステム上の変更は別のシステムに
      直ちに反映する必要もありません。InterMezzo 1.0 ではファイルシステ
      ム全体が複製され、どの時点においてもあるホストだけがそのファイルシ
      ステム向けの書込みロックを持つことが可能です。
    </p>

<!--
    <sect1>intermezzo.o, the kernel module
-->
    <sect1>intermezzo.o、カーネルモジュール
    <p>
<!--
      Presto is the kernel module for InterMezzo.  It implements the
      various operations associated with the InterMezzo file system
      under VFS and creates pseudo devices for communication with
      Lento.
-->
      Presto は InterMezzo 用のカーネルモジュールです。VFS 下の
      InterMezzo ファイルシステムに関連した様々な動作を実行し、Lento と
      のやり取りのための仮想デバイスを作成します。
    </p>

    <sect1>Lento
    <p>
<!--
      Lento is a user-space daemon which handles file transfers and
      other caching issues on behalf of presto.  There is one Lento
      per mounted InterMezzo file system.
-->
      Lento はユーザ空間のデーモンで、ファイル転送および presto に代わっ
      て他のキャッシュ関連を扱います。マウントされた InterMezzo ファイル
      システムにつき Lento が一つあります。
    </p>
    
<!--
    <sect1>The KML File
-->
    <sect1>KML ファイル
    <p>
<!--
      There is one KML file per mounted InterMezzo filesystem.  The
      KML file contains records of changes to the filesystem, and
      taken as a whole the KML file can provide a script for building
      a replica of the whole filesystem.
-->
      マウントされた InterMezzo ファイルシステムにつき一つの KML ファイ
      ルがあります。KML ファイルはファイルシステムの変更のレコードを含み、
      KML ファイルを全体的に見ると、ファイルシステム全体の複製を構築する
      ためのスクリプトと規定できます。
    <p>
<!--
      The KML file is a series of binary records, each of which
      represents a single modification to the filesystem.  Each record
      is self-contained in that it does not have references to other
      records, a property which makes the records easy to move around.
      The records are of variable length, and the length of the record
      is stored at the beginning and end of each record to facilitate
      moving forward or backward through the file.  A complete
      description of the allowed KML record formats doesn't exist yet.
-->
      KML ファイルは一連のバイナリレコードで、その各々はファイルシステム
      に対する一つの修正を表わします。各レコードは他のレコードと関係がな
      い点で自給自足で、レコードを容易に動かせるのが特徴です。レコードは
      可変長で、ファイルの中で前後に動かし安くするために、レコードの長さ
      は各レコードの最初と最後に格納されます。許される KML レコードフォー
      マットの完全な記述はまだ存在しません。
    </p>

<!--
    <sect1>The Last_rcvd File
-->
    <sect1>Last_rcvd ファイル
    <p>
<!--
      There is one Expect file per mounted InterMezzo filesystem. The
      Expect file contains information about how this host is
      synchronized with the other hosts by holding pointers into this
      and other hosts' KML files.  This information is stored in the
      filesystem so that it will be persistent across reboots.
-->
      マウントされた InterMezzo ファイルシステムにつき一つの Expect ファ
      イルがあります。Expect ファイルは、このホストおよび他のホストの
      KML ファイルへのポインタを保持することにより、このホストが他のホス
      トと同期する方法についての情報を含みます。この情報はファイルシステ
      ム内に格納されるので、リブートされてもこれは永続性があります。
    <p>
<!--
      The Expect file has four pieces of information for each remote
      host.
-->
      Expect ファイルはリモートホスト用にそれぞれ四つの情報を持ちます。

      <enum>
      <item>
<!--TODO 最後の文の意味は？-->
<!--
	<bf>next_to_expect</bf>.  A pointer to the next record in the
	remote host's KML file that we expect it to send to us.  If we
	get a set of records that is does not start at this value then
	a message has been dropped somewhere and we need to
	renegotiate with that host.  This is NOT a hint.
-->
	<bf>next_to_expect</bf> 私たちに送られることを期待するリモートホ
	ストの KML ファイル内の次のレコードへのポインタ。この値で始まら
	ないレコードの組みを得た場合、メッセージがどこかで落とされ、その
	ホストとの再交渉が必要です。これはヒントではありません。
      </item>
      <item>
<!--
	<bf>next_to_send</bf>.  A pointer to the next record in our KML
	file that we intend to send to the remote host.  This is just
	a hint because we advance next_to_send as soon as we've sent
	data to another host, not when we've gotten confirmation that
	it has been received and processed.  When we send KML records
	to the remote host we send the value of next_to_send (plus the
	gap, below) to tell the remote host where the records come
	from in our KML.
-->
	<bf>next_to_send</bf> リモートホストへ送る予定の私たちの KML ファ
	イル内の次のレコードへのポインタ。データが受信され処理されたこと
	の確認が得られた時ではなく、別のホストへデータを送ったらすぐに
	next_to_send を進めるので、これは単にヒントです。KML レコードを
	リモートホストに送る場合、レコードが私たちの KML のどこにあるか
	リモートホストに伝えるために、next_to_send の値を送ります (以下
	の gap を加算します)。
      </item>
      <item>
<!--
	<bf>confirmed</bf>.  A pointer to the beginning of the next
	record in our KML file that has not yet been confirmed as
	received and processed by the remote host.  This is NOT a
	hint.
-->
	<bf>confirmed</bf> リモートホストが受信および処理したことをまだ
	確認 (confirmed) していない私たちの KML ファイル内の次のレコード
	の始まりへのポインタ。これはヒントではありません。
      </item>
      <item>
<!--
	<bf>gap</bf>.  An adjustment to add to next_to_send before
	sending it to the remote host.  This lets us move records
	forward or back in our local KML file while preserving the
	externally visible file locations.  This is NOT a hint.
-->
	<bf>gap</bf> リモートホストへレコードを送る前に next_to_send に
	加える調整。これは、外部的に見えるファイル位置を保持しながら、私
	たちのローカル KML ファイル内でレコードを前後させます。これはヒ
	ントではありません。
      </item>
      </enum>
    </p>

<!--
    <sect1>Legal Transformations of the KML and Expect Files
-->
    <sect1>KML および Expect ファイルの正当な変換
    <p>
<!--
      In order to maintain consistency, only certain kinds of
      transformations to the KML and Expect files are allowed, and
      generally they have to be done together using transactions to
      make sure the system remains in a coherent state.
-->
      一貫性を維持するために、KML および Expect ファイルに対するある特定
      の変換だけが許可され、一般にシステムを一貫した状態に確実にしておく
      ため、一緒にトランザクションを利用して行わなければなりません。

    <enum>
     <item>
<!--
	<bf>Append a Record to the KML File.</bf> This is the operation
	that the normal VFS file operations end up using.  The record
	is appended to the KML file, and no modifications are made to
	the Expect file.
-->
        <bf>KML ファイルにレコードを追加する。</bf>これは通常の VFS ファ
	イル操作の最後に利用される操作です。レコードは KML ファイルに追
	加され、Expect ファイルに対する修正は行われません。
      </item>

      <item>
<!--
	<bf>Incorporate a Remote KML Record.</bf> In addition to
	performing the operation and appending the record to the local
	KML file, increment the next_to_expect for that host.
	Modifies the KML and Expect files.
-->
        <bf>リモートの KML レコードを組込む。</bf>ローカル KML ファイル
	に対する操作の実行およびレコードの追加に加え、そのホスト向けの
	next_to_expect を増加します。KML および Expect ファイルを修正し
	ます。
      </item>

      <item>
<!--
	<bf>Send KML Records to a Remote Host.</bf> A block of KML
	records are read from the KML file starting at next_to_send,
	and are transmitted to the remote machine.  next_to_send is
	incremented by the number of bytes read.  We effectively get a
	read lock on this section of the KML file. KML is read but not
	modified, and the Expect file is modified.
-->
        <bf>リモートホストへ KML レコードを送る。</bf>KML レコードのブロッ
	クは next_to_send から始まる KML ファイルから読まれ、リモートマ
	シンへ送信されます。next_to_send は読まれたバイト数の分増加され
	ます。KML ファイルのこのセクションの読出しロックを効果的に得ます。
	KML は読まれますが修正されず、Expect ファイルは修正されます。
      </item>

      <item>
<!--
	<bf>Receive Confirmation of KML Processing.</bf> We receive
	confirmation from a remote host that a set of records starting
	at a given point and with a certain byte length has been
	received and processed.  These offsets are from a remote host
	so we have to subtract off the gap for that host, then compare
	with what we think the confirmed pointer is, then move the
	confirmed pointer.  There are no KML modifications.
-->
        <bf>KML 処理の確認を受取る。</bf>受信および処理されたレコードの
	ポインタと特定のバイト数の組みからなる確認をリモートホストから受
	取ります。これらのオフセットはリモートホストからなので、そのホス
	ト向けの gap を引き、次に confirmed ポインタと考えているものと比
	較し、その後 confirmed ポインタを動かさなければなりません。KML
	の修正はありません。
      </item>

      <item>
<!--TYPO relenquished は relinquished-->
<!--
	<bf>Optimize a Section of the KML File.</bf> We obtain a write
	lock on the section to be optimized, then read the section in,
	perform whatever optimizations we desire, then write it out
	again.  The newly written section must be no larger than the
	previous, and if it is smaller a NOP block is inserted to fill
	out the space either before or after the new section. If this
	section is at the end of the KML file then the KML file can be
	truncated to remove the NOP block at the end.  Then the write
	lock is relenquished.  The KML file is modified and the Expect
	file is not.
-->
        <bf>KML ファイルのセクションを最適化する。</bf>最適化するために
	セクションの書込みロックを取得し、セクションの中を読出し、私たち
	が望む最適化を実行し、それを再び書込みます。新しく書かれたセクショ
	ンは前と比べ大きくなってはならず、より小さい場合、NOP ブロックが
	新しいセクションの前後の領域を満たすため挿入されます。このセクショ
	ンが KML ファイルの終わりにある場合、KML ファイルは終わりにある
	NOP ブロックを削除することで切り詰めることができます。その後書込
	みロックは解放されます。KML ファイルは修正され、Expect ファイル
	は修正されません。
      </item>

      <item>
<!--
	<bf>Punch Out a Section of the KML File.</bf> The section to be
	removed must not have outstanding read or write locks, and it
	can only have NOP records in it.  File system magic is then
	performed to release the appropriate file blocks to produce a
	sparse file.  The Expect file is not changed.
-->
        <bf>KML ファイルのセクションを打抜く。</bf>削除されるセクションは
	顕著な読出しもしくは書込みロックを持ってはならず、その中に NOP
	レコードを持つことだけができます。その後、ファイルシステムのマジッ
	クは希薄なファイルを形成する適切なファイルブロックを解放します。
	Expect ファイルは変更されません。
      </item>

      <item>
<!--
	<bf>Front-Truncation of the KML File.</bf> Instead of producing a
	sparse file you can remove the beginning of the KML file.
	Like the punch operation, the section to be removed should
	have no outstanding read or write locks and should have only
	NOP operations.  The file should then be truncated and the gap
	values for all of the remote hosts adjusted in one
	transaction.
-->
        <bf>KML ファイルの前面を切り詰める。</bf>希薄なファイルを形成す
	る代わりに、KML ファイルの始めを削除できます。前記の打抜く操作と
	同様に、削除されるセクションは顕著な読出しもしくは書込みロックを
	持ってはならず、NOP 操作だけ持つことができます。その後、ファイル
	は切詰められ、すべてのリモートホスト用の gap の値は一つのトラン
	ザクション内で調節されます。
      </item>

      <item>
<!--
	<bf>Skip a NOP Block in the KML File.</bf> The next_to_send and
	confirm pointers must both be pointing to the beginning of a
	NOP block.  Then next_to_send, confirm, and gap can all be
	incremented by the size of the NOP block.  No changes are made
	in the KML file.
-->
        <bf>KML ファイル内の NOP ブロックをスキップする。</bf>
        next_to_send と confirm の両ポインタは NOP ブロックの開始を指し
	ているはずです。その後 next_to_send, confirm, gap のすべてを NOP
	ブロックの大きさ分増加できます。変更は KML ファイル内で行なわれ
	ません。
      </item>
    </enum>









<!--
<sect> Contact Information
-->
<sect> 連絡先の情報

<p>
<!--
The InterMezzo web site is <tt>http://www.inter-mezzo.org</tt>.
-->
InterMezzo ウェブサイトは <tt>http://www.inter-mezzo.org</tt> です。

<p>
<!--
General questions about InterMezzo can be sent to <tt>
intermezzo-discuss@lists.sourceforge.net </tt>.  This along with other
InterMezzo related mail lists are archived on the InterMezzo web site,
so it may be worth checking here to see if your question has already
been answered.
-->
InterMezzo の一般的な質問は
<tt>intermezzo-discuss@lists.sourceforge.net</tt> に送ることができます。
これは、InterMezzo に関連する他のメールリストと同様に InterMezzo ウェ
ブサイト上でアーカイブされていますので、あなたの質問が既に答えられたも
のかどうか確かめるためにここをチェックする価値があるかもしれません。

<p>
<!--
Bug reports should be filed on sourceforge.  Please include the
version of InterMezzo you are using and a description of your system
configuration and the problem observed.
-->
バグ報告は sourceforge に提出してください。使用している InterMezzo のバー
ジョン、システム構成の詳細、観察された不具合も添えてください。

<!--by author
It would be useful if you could run the <tt/config_check/ script on
your hosts before sending the bug report to ensure that the system is
configured correctly.  The <tt/config_check/ script can be found in
the <tt>../intermezzo/tools</tt> directory. (XXX is this still working). 
-->

<!--
Also, please include all relevant logs: /var/log/messages, and the
output of Lento (run with debugging) on server and clients.
-->
さらに、適切なログもすべて添えてください - サーバおよびクライアントの
/var/log/messages、(デバッグで実行した) Lento の出力。

<sect> 日本語訳について
<p>
日本語訳は Linux Japanese FAQ Project が行いました。
翻訳に関するご意見は JF プロジェクト &lt;JF@linux.or.jp&gt; 宛に連絡
してください。

<descrip>
<tag>v1.0.5</tag>
翻訳:
野本浩一 &lt;hng@ps.ksky.ne.jp&gt;

<verb>
校正: 
早川 仁さん <cz@hykw.tv>
</verb>
</descrip>

</article>
