Назад | Перейти на главную страницу

Как контролировать трафик виртуальных машин на KVM

У меня несколько виртуальных машин, работающих на гипервизоре 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) в хосте, чтобы обеспечить приоритетную организацию очереди.

Eсть доступно полное руководство.