rsyncで帯域制限!ネットワークに負荷をかけないbwlimitオプション

Linux

概要

  • ディザスターリカバリ対策に、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

コメント