libvirt-qemu-用cgroup对虚拟机进行资源分割

xiaoxiao2021-02-28  17

(文章来自作者维护的社区微信公众号【虚拟化云计算】) (目前有两个微信群《kvm虚拟化》和《openstack》,扫描二维码点击“云-交流”,进群交流提问)     使用libvirt可以把创建的虚拟机放到cgroup划分的资源区中,从而实现所有虚拟机、部分虚拟机、单个虚拟机的资源控制,例如控制虚拟机的cpu使用情况、控制虚拟机在host上内存的使用大小等。   libvirt默认资源划分: 默认的libvirt使用cgroup创建一个名为machine的组:/sys/fs/cgroup/cpuset/machine/。 然后使用libvrit创建的虚拟机都在这个machine组中。 控制或改变machine组中的各个资源就可以控制虚拟机。 例如: 改变/sys/fs/cgroup/memory/machine/memory.limit_in_bytes的大小,就可以改变使用libvirt创建的所有虚拟机的实际占用host的总内存大小。   libvirt指定资源划分: 如果需要把部分虚拟机划分的一个资源组中,单独对这个资源组进行资源的控制,则需要手动创建资源组。   例如建立一个新的资源组名字为openstack.partition,步骤 1.在RESOURCE中建立目录:/sys/fs/cgroup/$RESOURCE/machine/openstack.partition/ (这里RESOURCE的取值为blkio cpu,cpuacct cpuset devices freezer memory net_cls perf_event)   2.根据需求修改/sys/fs/cgroup/$RESOURCE/machine/openstack.partition/中的资源,例如修改/sys/fs/cgroup/memory/machine/openstack.partition/memory.limit_in_bytes的大小。   3.在openstack.partition资源组中创建虚拟机。 libvirt的domain的xml:   <domain type='kvm' id='6'>   ....   <resource>     <partition>/machine/openstack.partition</partition>   </resource>   .... </domain> 4.启动虚拟机后,虚拟机的资源就收到了openstack.partition资源组的控制。 可以看到在/sys/fs/cgroup/memory/machine/openstack.partition/目录下多了此虚拟机的文件夹:instance-00000049.libvirt-qemu   注: 1./sys/fs/cgroup/中资源的控制是可以嵌套的,子目录的资源定制可以覆盖掉父目录的资源定制。 2.在上面例子是在ubuntu这种非systemd启动的系统中实践。在centos等systemd启动的系统中配置方式有所区别。 具体可参考libvirt文档: https://libvirt.org/cgroups.html   ============================================================ 关注微信公众号【虚拟化云计算】,阅读更多虚拟化云计算知识,纯技术干货更新不停。      
转载请注明原文地址: https://www.6miu.com/read-1650310.html

最新回复(0)