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

6. 競合からのリカバリ

InterMezzo の現行版はシステムクラッシュのほとんどの状況に対処するために、 リカバリの仕組みが組込まれています。設定を選ぶことで、競合すなわちクライ アントおよびサーバキャッシュへの一貫しない更新を回避できます。

しかしながら disconnected operation の間、ファイルシステムを読出し専用と することによりそれらを回避する設定を明示的にしなかった場合、競合は生成さ れる可能性があります。クライアントおよびサーバが一貫しないキャッシュを持っ てしまった場合、システムをリカバリできるのは、手動リカバリだけです。

システムは手動で次のようにリカバリできます -

  1. 競合が起きる場合、変更を再統合している lento は終了します。この lento はこのレプリケータの相手からの更新を受信していて、大抵相手は最新に なっています。したがって動作を続けている lento から終了した lento へ同期 させましょう。
  2. サーバおよびクライアント (群) を終了し、キャッシュをアンマウント し、カーネルから presto モジュールを削除します - umountizo ; rmmod presto
  3. ext3 ファイルシステムとして各キャッシュをマウントします - mount -o loop /tmp/fs0 /izo0
  4. クライアントおよびサーバ上のキャッシュを同期させるために rsync か tar あるいは別のツールを使用します。サーバ上にないファイルをクライアント から必ず削除し、キャッシュを同一にします。
  5. クライアントの synced フラグをセットしてください - これは起動時に システムが再度同期しようとすることを防ぎます。これは SYSID をクライアン トの sysid で、FSETNAME を fileset 名で、置きかえた以下のコマンドで行え ます - touch /var/intermezzo/SYSID/FSETNAME-synced 例えば、fileset shared を備えたクライアント iclientA 上で使う には - touch /var/intermezzo/iclientA/shared-synced
  6. 永続的なデータベースはこの時点で、同期がはずれるので、クライアン トとサーバの両方で KML および last_rcvd のレコードを消去しなければなりま せん - cp /dev/null /izo0/.intermezzo/shared/kml ; cp /dev/null /izo0/.intermezzo/shared/last_rcvd
  7. キャッシュをアンマウントし、再び InterMezzo ファイルシステムとし てマウントします。サーバおよびクライアント上の lento を再起動します。

これは厄介ですが、journaled recovery は開発中なのです。


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