В контейнере, запущенном на хосте с двумя дисками в массиве mdadm RAID 1, я безуспешно пытался ограничить дисковый ввод-вывод контейнера LXD с именем ci с участием:
lxc config device set ci root limits.read 30MB
lxc config device set ci root limits.write 10MB
Однако при запуске, например, эта команда в контейнере:
dd if=/dev/zero of=/root/testfile bs=1G count=10 oflag=direct
в результате получается весь объем диска, что примерно 130 МБ / с, вместо ожидаемого результата около 10 МБ / с для операций записи:
10737418240 bytes (11 GB, 10 GiB) copied, 81,3877 s, 132 MB/s
Это также подтверждают atop
работает на хосте:
Как я могу эффективно ограничить дисковый ввод-вывод контейнера, чтобы независимо от того, что на нем происходит, производительность диска хоста не превышалась?
Во втором тесте я запускаю то же самое дд как указано выше, одновременно на гостевой и на хосте, но хост также не имеет приоритета:
Дополнительная информация:
На вершине самого большого RAID-массива корневая файловая система монтируется в группу томов LVM.
root@server ~ # lvs
LV VG Attr LSize
root vg0 -wi-ao---- 2,72t
swap vg0 -wi-ao---- 4,00g
Серверная часть хранилища LXD реж
Я мог бы разделить диск по-другому, если бы это могло помочь ограничить дисковый ввод-вывод контейнера, например наличие RAID-массива, выделенного для ZFS для LXD. Это поможет?
Ограничения ввода-вывода работают, когда файловая система контейнера находится на блочном устройстве, но не работает на виртуальных устройствах, таких как mdadm RAID, при использовании старой версии, например 10.0.9.
После обновления до версии 10.15 лимиты работают. В Ubuntu вы можете обновить с помощью:
sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable
sudo apt-get update
sudo apt-get install lxd
Подробнее см. Обсуждение этого на https://discuss.linuxcontainers.org/t/limiting-disk-io-on-lxd-containers/261 и открытый вопрос на https://github.com/lxc/lxd/issues/3515