zoukankan      html  css  js  c++  java
  • [转载]libvirt使用之使用tc实现kvm虚拟机带宽控制

    转载自

    http://itxx.sinaapp.com/blog/content/109

    注意,这个在libvirt 0.9.4版本之前是不work的(ubuntu 11.10上面安装libvirt 0.9.10有问题)

    在kvm虚拟机管理的过程当中,对虚拟机带宽进行良好的控制是十分重要的。

    linux系统当中对网络带宽的控制一般都是使用tc命令实现,tc即是traffic control的缩写,在这里可以找到有关tc命令的内容。

    当然你可以手动使用tc命令来处理这些事情,比如使用cbq队列,htb队列等,都是可以实现的,网上找找应该有很多关于这方面的资料,

    比如下面就是使用cbq队列限制src ip为192.168.1.102发送数据包的速率:

    1.建立cbq队列:
    tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 100mbit
    2.建立带宽限制分类:
    tc class add dev eth0 parent 1: classid 1:1 cbq rate 60mbit allot 1500 prio 5 bounded isolated
    tc class add dev eth0 parent 1: classid 1:2 cbq rate 70mbit allot 1500 prio 5 bounded isolated
    tc class add dev eth0 parent 1: classid 1:3 cbq rate 80mbit allot 1500 prio 5 bounded isolated

    3.建立过滤器,绑定指定带宽限制类型至指定虚拟机ip:
    tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip src 192.168.1.102 flowid 1:2

    我比较推荐的方法还是直接使用libvirt,libvirt 中已经集成了带宽控制的功能,下面是关于带宽控制部分的xml描述:

    使用方法:在网卡interface中加入

    <bandwidth>
    <inbound average='1000' peak='5000' burst='1024'/>
    <outbound average='128' peak='256' burst='256'/>
    </bandwidth>

    以下是关于各项参数的解释,获取最新的信息可以到这里.

    mandatory attribute:
    average: It specifies average bit rate on interface being shaped.

    optional attributes:
    peak: which specifies maximum rate at which interface can send data,
    burst: amount of bytes that can be burst at peak speed.

    Accepted values: integer numbers.

    units:
    average: kilobytes per second
    peak: kilobytes per second
    burst: kilobytes.


    原创内容,如需转载,保留署名
  • 相关阅读:
    HTTP Caching
    有关缓存的那些事 读 PHP高级编程
    用embercli 学习搭建了todoMVC
    redis数据结构开篇
    linux最小安装后进行的操作
    redis数据结构整数集合
    redis数据结构动态字符串(SDS)
    redis数据结构压缩列表
    redis数据结构字典
    redis数据结构跳跃表
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2966791.html
Copyright © 2011-2022 走看看