LAN上の一部のコンピュータでRsyncsするローカルサーバーがあります。これはバックアップソリューションの一部です。
Rsyncはcronjobを介して1日2回実行されます。時々、人々はテラバイト程度の大容量データを追加します。この場合、2番目のRsyncが開始される前にRsyncが完了するという保証はありません。
この状況ではどうなりますか?
これは避けるべきことですか?
ベストアンサー1
別のcronjobが完了する前に1つのcronjobが起動することを心配している場合は、通常このような一時/tmp
ファイルを作成し、/tmp/lockFile_$$
最初のcronjobの最後のステップで削除し、そのファイルにループの開始とともに2番目のcronjobが存在するようにします。 、各ループで5〜10秒間待機し、ファイルが消えたらループを停止します(何度も繰り返すたびにルートに電子メールを送信して、停止した操作を簡単に確認できます)。
最初のボトルネックがネットワーク帯域幅の場合は、--compress
オプションと一緒にrsyncを試すことができます。--compress-level
ブロッキングポイントがCPUの場合は、rsyncプロセスに低いnice値を与えることができます。
iowait
時には、Linuxionice
でcfqを使用するか、rsyncコマンドを複数の同時プロセスに分割して順次実行するのではなく、あるプロセスがI / Oを待っている間に別のプロセスが転送を実行することを検討できます。ほとんどのプラットフォームでは、I/O 機能を調整することもできます。 Linuxでは、最初のcronjob中に一時的にdeadline
スケジューラに切り替え(書き込みよりも読み取り優先順位を指定するため)、read_ahead_kb
ディスクから全体の大容量ファイルをインポートするため、一時的にスケジューラを増やすことを検討できます。