Running a process within a limited amount of resources, in Linux

Solution 1:

There is one more extreme level of process control than (re)nice: chrt. You may set the process to SCHED_IDLE. In combination with ionice IDLE that should do the job.

There is a really device mapper target which unfortunately didn't make it into the mainline kernel yet which gives you even more control: ioband

Another option would be: Put this process into a VM. Direct VFS access is possible in KVM and you can precisely define how much I/O the VM gets.