https://access.redhat.com/site/documentation/ru-RU/Red_Hat_Enterprise_Linux/6/html-single/Resource_Management_Guide/index.html#ch-Using_Control_Groups
Лимитирование дисковой подсистемы
С дисками ситуация сложнее, хотя реализация лимитов там возможна более жёсткая.
Посмотрим, что у нас есть внутри контроллера blkio, который отвечает за управление дисковым IO.
# cd /cgroup/blkio
# ls
blkio.io_merged blkio.io_service_bytes blkio.io_service_time blkio.reset_stats blkio.time
blkio.weight_device cgroup.event_control release_agent blkio.io_queued
blkio.io_serviced blkio.io_wait_time blkio.sectors blkio.weight cgroup.clone_children
cgroup.procs notify_on_release tasks
Как вы можете видеть, есть несколько параметров ограничения производительности дисковой подсистемы, а именно —
iops — количество операций ввода/вывода в секунду,
bps — пропускная способность,
weight — вес системы.
Чтобы указать, для какого диска и какого процесса нужно выставить iops или bps, нужно определить major и minor диска (см. про классификацию устройств) и переслать их в специальный файл (пример для bps):
# ls -la /dev/sda
brw-rw—- 1 root disk 8, 0 Фев 11 13:59 /dev/sda
# echo $$ > /cgroup/blkio/tasks
# echo 3 > /proc/sys/vm/drop_caches
# echo «8:0 1000000» > /cgroup/blkio/blkio.throttle.read_bps_device
# echo «8:0 1000000» > /cgroup/blkio/blkio.throttle.write_bps_device
# dd if=/dev/zero of=/tmp/zerofile bs=4K count=102400 oflag=direct
# dd if=/tmp/zerofile of=/tmp/zerofile2 bs=4K count=102400
25426+0 записей считано
25425+0 записей написано
скопировано 104140800 байт (104 MB), 102,21 c, 1,0 MB/c
Поэтому если вам необходимо использовать жёсткие лимиты, виртуальная машина должна использовать отдельное блочное устройство (например раздел на LVM), у которого будут major и minor. Для образов в виде файлов можно использовать только контроллер blkio.weight.