web-dev-qa-db-ja.com

rsyncを使用したバックアップは非常に遅い

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ボリュームを交換しましたが、問題は解決しません。アルゴはインスタンスをアップグレードしましたが、運がありません。

何か案は?

1
nikolaigauss

私は2時間ごとにcrontabでrsyncプロセスを実行していますが、ほとんどの場合、未完成のrsyncプロセスのリストが非常に長いため、サーバーを再起動する必要があります。

Rsync-backupのインスタンスを1つだけ実行することから始めます
例えば。シェルスクリプトで flock コマンドを使用する。

または、 run-one ディストリビューションが提供する場合。 [提案者 Michael --sqlbot ]
Linux/Ubuntuから提供されているようです。

3
AnFi

考慮すべきもう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/
0
slm