У меня несколько виртуальных машин, работающих на гипервизоре KVM. Одна из виртуальных машин потребляет большую часть доступной полосы пропускания, что затрудняет использование других виртуальных машин. Как я могу контролировать использование полосы пропускания для каждой виртуальной машины. Я хотел бы гарантировать пропускную способность для каждой отдельной виртуальной машины. Я хотел бы знать, делается ли это обычно на уровне гипервизора, если да, то как? или на уровне виртуального коммутатора при условии, что он у меня есть.
Спецификация домена libvirt уже включает эту функцию. Вы можете указать отдельные настройки для входящего и исходящего трафика. Пример, приведенный в документации libvirt:
<devices>
<interface type='network'>
<source network='default'/>
<target dev='vnet0'/>
<bandwidth>
<inbound average='1000' peak='5000' floor='200' burst='1024'/>
<outbound average='128' peak='256' burst='256'/>
</bandwidth>
</interface>
<devices>
Вы можете узнать больше об апстриме на http://libvirt.org/formatdomain.html#elementQoS
Хотя это может быть излишним, я думаю, что стоит изучить Открыть vSwitch. Это программный коммутатор, который использует OpenFlow для обеспечения функций уровня 2 и уровня 3. Это включает в себя маршрутизацию и QoS. Возможно, вам повезет больше с tc, я просто хотел убедиться, что вы знаете об этом.
В зависимости от того, как виртуальные машины подключены к сети (мостовая или маршрутизированная), вы можете использовать tc (8) в хосте, чтобы обеспечить приоритетную организацию очереди.