概要
- ディザスターリカバリ対策に、1時間ごとに社内の重要データをリモートへrsyncを使って転送しています。
- rsyncを普通に実行すると可能な限り高速に転送を行うため、CPUやネットワークがボトルネックになります。
bwlimit
オプションを使って帯域制限をします。
bwlimit
に指定する値の単位がKBPS(キロバイト/秒)です。普通、ネットワークはMbps(メガビット/秒)で表記するので変換に注意する必要があります。
以下に簡単に変換表です。
- 100Mbpsなら、12500KBps
- 10Mbpsなら、1250KBps
- 1Mbpsなら、125KBps
- 500kbpsなら、62.5KBps
実行例
bwlimit指定無し
1.3MBps(約10Mbps)で転送。100BaseTで構築されたLANでの転送の場合とか。
[matsu@dev1 ~]% rsync -vau -e ssh sv2.tar.bz2 www.tymy.net:/home/matsu/test1.tar.bz2 Enter passphrase for key '/home/matsu/.ssh/id_rsa': building file list ... done sv2.tar.bz2 sent 25806946 bytes received 36 bytes 1323434.97 bytes/sec total size is 25803676 speedup is 1.00
bwlimit指定有り
62KBps(約500kbps)で転送。少量のデータをインターネット上にバックアップするときとか。
[matsu@dev1 ~]% rsync -vau --bwlimit=62 -e ssh sv2.tar.bz2 www.tymy.net:/home/matsu/test2.tar.bz2 Enter passphrase for key '/home/matsu/.ssh/id_rsa': building file list ... done sv2.tar.bz2 sent 25806946 bytes received 36 bytes 62562.38 bytes/sec total size is 25803676 speedup is 1.00
bwlimitオプションの詳細
man rsyncには以下のようにかいてあります。
--bwlimit=KBPS This option allows you to specify a maximum transfer rate in kilobytes per second. This option is most effective when using rsync with large files (several megabytes and up). Due to the nature of rsync transfers, blocks of data are sent, then if rsync determines the transfer was too fast, it will wait before sending the next data block. The result is an average transfer rate equaling the specified limit. A value of zero specifies no limit.
応用
さらに、rsyncを実行しているホスト上で、実行プライオリティを下げるために、niceを併用すると他のサービスに影響が少なくなる。
% nice -n 19 rsync -aruz --bwlimit=125 -e ssh [local] [remote]
おまけ
このようなサービスにバックアップを取るときに使えます。
コマンドで覚えるLinux
コマンドで覚えるLinux
Comments