lsyncd - 複数のクライアントを同じディレクトリに同期すると、同期が中断されます。

lsyncd - 複数のクライアントを同じディレクトリに同期すると、同期が中断されます。

背景 -

HA目的でNASをDR_NASと同期しようとしています。
残念ながら、合併症があります。

  1. NASはAlibaba Cloudにあります。まだNAStoNAS同期をサポートしていません。
  2. 私が知っている最善の方法は、2つのNASの間に同期プロトコルをインストールすることですが、NASに直接接続することはできません。アリババがコントロールします。
  3. 単一のシステムにインストールし、2つのNAS間でlsyncd / rsyncを試してみました。しかし、それは失敗しました。
  4. lsyncdの主な著者によると、lsyncdはLinuxカーネルを使用してファイルシステムを監視するInotify Waitを使用しています。ただし、LinuxカーネルはNFSファイルシステムを監視しません。サーバー自体がNASにファイルを書き込む時期はわかりますが、他のシステムがファイルに書き込む時期はわかりません。
  5. したがって、NASにファイルを書き込むすべてのシステムにlsyncdを設定する必要があります。これは、Inotify Waitが知る唯一の方法だからです。
  6. 同期が設定されました。システムが(PROD NAS):/ data / A /にファイルを書き込むと、lsyncdはそれを検出してrsyncサーバーに報告します。その後、rsyncサーバーはそのディレクトリ(DR NAS)にファイルを書き込みます。/ data / A /

現在の状態 -

ここに画像の説明を入力してください。

ある日、同期が壊れていることを発見するまで、うまくいくようです。

作成者が同じディレクトリを同期できないようです。

  • rsync サーバーは、SystemA が /data/A に書き込み、SystemB が /data/B に書き込むときにもこの操作を実行します。
  • SystemAとSystemBが同時に/ data / Cに書き込む場合、同期の1つが中断され、その後は1つのシステムのみが/ data / Cに書き込まれます。

質問

  1. 複数のlsyncdクライアントがrsyncサーバーと同期し、同じディレクトリを使用できますか?
  2. 2つのリモートNFSディレクトリを同期するより良い方法はありますか?

ベストアンサー1

問題は「Inotify Waitを使用するlsyncd」にあります。おそらく/ dataディレクトリレベル(?)で発生します。これにより、ターゲットデータが変更され、lsyncプログラムが起動します。

両方のソースが同時に同じ宛先を更新する場合、その更新が有効であっても更新は信頼できません。文書。同じディレクトリの使用に問題はありません。

inotifyがより細かいレベル(ファイルレベルなど)で指定されている場合、1つのソースのみがファイルに書き込まれている限り(そして他のプログラムがファイルを読み取ることができる)問題はありません。

したがって、1 つの SystemX のみを /data/X に書き込むと、競合は発生しません。

inotifyただし、両方のSystemXが/ data / SAMEに書き込むと、一部のディレクトリレベルのトリガーイベントが見つからず、lsyncがいくつかの更新を欠落しています。

2つのNASディレクトリを同期する方法に答えるには、システムに関する詳細な知識が必要です。ただし、定期的な同期はrsync両方のNASシステムに対して(別々に)実行されます。できる動作 - そのディレクトリに重複ファイルがない場合。

おすすめ記事