web-dev-qa-db-ja.com

数百万のファイルとディレクトリを持つ複数のLinuxサーバー間でのライブファイル同期

実行中の本番サーバーの巨大なデータを同期するための最良の方法は何ですか?

私たちのサーバーには、2000万を超えるファイル(10kの小さなファイルと最大50MBの大きなファイル)が100万のディレクトリに保存されています。すべてのデータのサイズは約5 TB(着実に増加))です。

データをlsyncdと同期することは可能ですか?制限(特にinotifyの)は何ですか? lsyncdにはどのくらいの追加スペースが必要ですか?負荷(CPUとメモリ)とライブ時間はどうですか?

別の解決策はGlusterFSです。ダウンタイムがまったくない、または最小限のプロダクションでGlusterFSを使用することは可能ですか? GlusterFSは多くの魔法のデータをx属性ファイルに保存し、ストレージボリュームはGlusterFS以外のシステムよりも約15〜20%大きくなります。大量の無駄のようです...?負荷はどうですか?

そして、少なくともrsyncとcronjobsがその仕事をすることができます。 rsyncはスレーブでのみ実行されます...したがって、プライマリサーバーに追加のスペースは必要ありませんが、rsyncはcronが実行されるたびにディレクトリツリー全体を読み取る必要があります...

4
Barmi

ファイルシステムにはZFSのようなものを使用することを強くお勧めします。

ZFSスナップショットやZFS送信/受信などの組み込みツールを使用すると、ファイルシステムのブロックレベルのスナップを取得して、2番目のサーバーに送信できます。

sanoid/syncoid のようないくつかのサードパーティツールは、あるホストから別のホストへのファイルシステムの自動管理/プルーニングと同期を設定できます。

これはブロックデバイスレベルで行われるため、rsyncチェックサム/インベントリプロセスを回避できます。

5
ewwhite

本番サーバーでファイルシステムを変更できない場合は、ファイルを別のサーバーに配置し、NFSでマウントします。工数が安価な場合は、LinuxとZFSを使用します。おそらく、ある種のホームNASディストリビューション、あるいはホームNAS(どちらもおそらくZFSベース) )すべてが高価な場合および信頼性とサポートと比較してお金が問題にならない場合は、プロフェッショナルレベルの冗長性を実現するもの、またはNetAppまたはIBM SpectrumScaleを見つけることができます。

プロフェッショナルレベルの冗長性を備えた実際のフル機能のファイルサーバーにファイルを配置したら、フェイルオーバーを構成した場合はプライマリNFS IPを直接指すか、バックアップNFSサーバーを指すようにします。

3
Law29