Throttle The Disk I/O Rate: Limit disk I/O For rsync Tool on Linux and Unix

I run a backup script called /root/backup.sh which runs rsync command. However, rsync makes a lot of disks I/O and network I/O. I would like to reduce both disk and network I/O. My server has 10Mbps server connection with 160GB SATA hard drive. How do I reduce disk I/O so that the entire system does not die or become unresponsive?

This is a well-known issue. There are two methods to control or throttle the disk and network I/O rate under UNIX / Linux while using the rsync command.

How To Keep rsync From Using All Your Bandwidth on Linux/Unix/BSD Server

Method # 1: Limit I/O bandwidth using rsync command

The --bwlimit option limit I/O bandwidth. You need to set bandwidth using KBytes per second. For example, limit I/O banwidth to 10000KB/s (9.7MB/s), enter:
# rsync --delete --numeric-ids --relative --delete-excluded --bwlimit=10000 /path/to/source /path/to/dest/
OR
# rsync -av --delete --numeric-ids --relative --delete-excluded
--bwlimit=10000
/var/www/html [email protected]:/backups

Method # 2: Take control of I/O bandwidth using ionice utility

The ionice command sets the io scheduling class and priority for a program or script. You can totally control disk i/o. See the following article for detailed examples:

Posted by: SXI ADMIN

The author is the creator of SXI LLC and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.