Rsyncを使用して、AWSでホストされているNFSサーバーから同じAZ内の別のEC2インスタンスへのバックアップを実行しています。バックアップサーバーで使用しているrsyncコマンドは次のとおりです。
rsync -avzb --backup-dir=someDirectory 172.19.0.151:/Origin/* /opt/destination/
私のバックアップは数千、または数百万を超える小さなファイル(.pdf約200/500 KB)で構成されています。
私が抱えている問題は、インクリメンタルファイルリストが非常に速く送信されることです(これまでのところ良いです)が、rsyncがファイルのコピーを開始すると、20ファイルのようにコピーし、その後3〜4分間停止します。さらにいくつかのファイルをコピーします。
私は2時間ごとにcrontabでrsyncプロセスを実行していますが、ほとんどの場合、未完成のrsyncプロセスのリストが非常に長いため、サーバーを再起動する必要があります。
これは私のiowaitです:
iostat
Linux 4.4.0-1060-aws (prd-turecibo-backup) 06/06/2018 _x86_64_ (2 CPU)
avg-cpu: %user %Nice %system %iowait %steal %idle
0.29 0.00 0.74 84.56 0.00 14.41
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
nvme1n1 0.22 6.00 0.00 20984 0
nvme2n1 240.45 959.12 17.95 3354430 62788
nvme0n1 3.43 65.19 2.03 227995 7112
通常、iowaitは90%です。
EBSボリュームを交換しましたが、問題は解決しません。アルゴはインスタンスをアップグレードしましたが、運がありません。
何か案は?
私は2時間ごとにcrontabでrsyncプロセスを実行していますが、ほとんどの場合、未完成のrsyncプロセスのリストが非常に長いため、サーバーを再起動する必要があります。
Rsync-backupのインスタンスを1つだけ実行することから始めます
例えば。シェルスクリプトで flock
コマンドを使用する。
または、 run-one
ディストリビューションが提供する場合。 [提案者 Michael --sqlbot ]
Linux/Ubuntuから提供されているようです。
考慮すべきもう1つのことは、圧縮を無効にすることです。 AWSの2つのec2ノード間でDB(MySQL/MariaDB)を転送しようとしましたが、この転送は約15〜20MB /秒で実行されていました。
注:使用しているm4.2xlargeインスタンスでは、1桁高いと予想されていました。これらは、2つの異なるAZにありましたが、このような小さな転送はすべて、制限が課されていませんでした。 AWSによる:
$ truncate -s 500MB 500MB.file
$ ll | grep 500MB
-rw-rw-r--. 1 smingolelli smingolelli 500000000 Sep 5 14:55 500MB.file
$ rsync --progress -h -v 500MB.file 10.16.87.187:~
500MB.file
500.00M 100% 81.55MB/s 0:00:05 (xfr#1, to-chk=0/1)
sent 500.12M bytes received 35 bytes 66.68M bytes/sec
total size is 500.00M speedup is 1.00
圧縮をオフにしてテストを繰り返したところ、転送数が予想どおりに増加することがわかりました。したがって、-z
なしでコマンドを試してみることをお勧めします。
$ rsync -avb --backup-dir=someDirectory 172.19.0.151:/Origin/* /opt/destination/