Em um contêiner em execução em um host com dois discos em um array mdadm RAID 1, tentei sem êxito limitar o IO do disco de um contêiner LXD chamado ci com:
lxc config device set ci root limits.read 30MB
lxc config device set ci root limits.write 10MB
No entanto, ao funcionar, por ex. este comando no container:
dd if=/dev/zero of=/root/testfile bs=1G count=10 oflag=direct
o resultado é toda a capacidade do disco, que é de aproximadamente 130MB / s , em vez do resultado esperado de cerca de 10MB / s para operações de escrita:
10737418240 bytes (11 GB, 10 GiB) copied, 81,3877 s, 132 MB/s
Isso também é confirmado por atop
em execução no host:
ComopossolimitarefetivamenteoIOdodiscodocontêiner,paraque,independentementedoqueaconteça,odesempenhododiscohostnãosejasupercomprometido?
Emumsegundoteste,eucorroomesmocomandoddcomoacimaaomesmotemponoconvidadoenohost,masohosttambémnãoépriorizado:
Algumas informações adicionais:
- Host e convidado são Ubuntu 16.04
- O servidor tem dois discos rígidos com partições iguais, unidos em matrizes RAID 1
-
No topo da maior matriz RAID, o sistema de arquivos raiz é montado em um grupo de volumes LVM
root@server ~ # lvs
LV VG Attr LSize
root vg0 -wi-ao---- 2,72t
swap vg0 -wi-ao---- 4,00g
-
O back-end de armazenamento do LXD é dir
Eu poderia particionar o disco de maneira diferente se isso pudesse ajudar a limitar a unidade de disco rígido do contêiner, por exemplo, ter uma matriz RAID dedicada ao ZFS para LXD. Isso ajudaria ?