kvm限制虚拟机资源

我们为什么需要资源控制?

在实际的生产环境中,希望每台虚拟机对资源的消耗是可控的,避免过度的消耗资源,造成对其他虚拟机的影响。

测试环境:

CentOS 6.2

操作步骤

1. 升级系统到最新

yum update -y

2. 安装epel源

rpm -Uvh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-7.noarch.rpm

3. 安装cgroup包

yum install libcgroup libgroup-devel -y

启动服务

/etc/init.d/cgconfig start

停止服务

/etc/init.d/cgconfig stop

查看状态

/etc/init.d/cgconfig status

服务启动后,就可以根目录下查看到cgroup目录

ls /cgroup/

blkio cpu cpuacct cpuset devices freezer memory net_cls

设置默认启动服务

chkconfig cgconfig on

4. 磁盘资源的控制

磁盘的io控制有两种方式:

1) 在整体中的权重,数值范围在100-1000。

2) 限制具体的io

设置磁盘的权重

设置虚拟机的权重为700,并立即生效。

virsh blkiotune 25 --weight 700 --live

xml 文档为

<blkiotune>

<weight>700</weight>

</blkiotune>

使用blkdeviotune可以设置虚拟机的读写速度和iops

参数如下:

--total-bytes-sec <number> total throughput limit in bytes per second

--read-bytes-sec <number> read throughput limit in bytes per second

--write-bytes-sec <number> write throughput limit in bytes per second

--total-iops-sec <number> total I/O operations limit per second

--read-iops-sec <number> read I/O operations limit per second

--write-iops-sec <number> write I/O operations limit per second

--config affect next boot

--live affect running domain

--current affect current domain

例子

virsh blkdeviotune 8 hda --total_bytes_sec 10240

--total-bytes-sec 10240 --read-bytes-sec 4096 --write-bytes-sec 2028 \

--total-iops-sec 30 --read-iops-sec 15 --write-iops-sec 15

Xml文档格式为

<iotune>

<total_bytes_sec>10000000</total_bytes_sec>

<read_iops_sec>400000</read_iops_sec>

<write_iops_sec>100000</write_iops_sec>

</iotune>

注意:实际在centos6.3的环境下,使用blkdeviotune,会出现虚拟机不能启动的情况,经过查询redhat官网,这个是libvirt和qemu之间配合的一个bug,在fedora17上做了同样的测试,有同样的问题。

virsh # start w2k3.64.e1000

error: Failed to start domain w2k3.64.e1000

error: unsupported configuration: block I/O throttling not supported with this QEMU binary

如果要使用这个功能,可能需要等待官方的修复。

5. 网络带宽的控制

Xml文档格式为

<devices>

<interface type=‘network‘>

<source network=‘default‘/>

<target dev=‘vnet0‘/>

<link state=‘down‘/>

</interface>

<bandwidth>

<inbound average=‘1000‘ peak=‘5000‘ burst=‘1024‘/>

<outbound average=‘128‘ peak=‘256‘ burst=‘256‘/>

</bandwidth>

单位kilobytes

命令行命令为:

virsh # help attach-interface

NAME

attach-interface - attach network interface

SYNOPSIS

attach-interface <domain> <type> <source> [<target>] [<mac>] [<script>] [<model>] [--persistent] [<inbound>] [<outbound>]

DESCRIPTION

Attach new network interface.

OPTIONS

[--domain] <string> domain name, id or uuid

[--type] <string> network interface type

[--source] <string> source of network interface

[--target] <string> target network name

[--mac] <string> MAC address

[--script] <string> script used to bridge network interface

[--model] <string> model type

--persistent persist interface attachment

[--inbound] <string> control domain‘s incoming traffics

[--outbound] <string> control domain‘s outgoing traffics

6. CPU资源的控制

Xml文档格式为

<domain>

...

<cputune>

<vcpupin vcpu="0" cpuset="1-4,^2"/>

<vcpupin vcpu="1" cpuset="0,1"/>

<vcpupin vcpu="2" cpuset="2,3"/>

<vcpupin vcpu="3" cpuset="0,4"/>

<emulatorpin cpuset="1-3"/>

<shares>2048</shares>

<period>1000000</period>

<quota>-1</quota>

<emulator_period>1000000</emulator_period>

<emulator_quota>-1</emulator_quota>

</cputune>

...

</domain>

主要参数说明:

shares cpu权重,没有固定的数值,和其他的虚拟机相比较,那个的数值大,那个可以使用的cpu资源就多,比如设置2048值得虚拟机,就比设置1024数值的虚拟机可以多使用2倍的cpu资源。

period vcpu强制间隔的时间周期,单位微妙,范围[1000, 1000000],每一个vcpu不能使用超过period时间周期。 www.it165.net

quota vcpu最大允许带宽,单位微妙,范围[1000, 18446744073709551]

emulator_period 强制间隔的时间周期,单位微妙,范围[1000, 1000000],虚拟机进程(qemu)不能使用超过period时间周期。

emulator_quota 虚拟机进程(qemu)最大允许带宽,单位微妙,范围[1000, 18446744073709551]。

7. 内存资源的控制

Xml文档格式为

<memory unit=‘KiB‘>2097152</memory>

<currentMemory unit=‘KiB‘>2097152</currentMemory>

<memtune>

<hard_limit unit=‘KiB‘>4194304</hard_limit>

<soft_limit unit=‘KiB‘>8388608</soft_limit>

<min_guarantee unit=‘Kib‘>1024000</min_guarantee>>

<swap_hard_limit unit=‘KiB‘>4194304</swap_hard_limit>

</memtune>

命令行命令为

virsh # help memtune

NAME

memtune - Get or set memory parameters

SYNOPSIS

memtune <domain> [--hard-limit <number>] [--soft-limit <number>] [--swap-hard-limit <number>] [--min-guarantee <number>] [--config] [--live] [--current]

DESCRIPTION

Get or set the current memory parameters for a guest domain.

To get the memory parameters use following command:

virsh # memtune <domain>

OPTIONS

[--domain] <string> domain name, id or uuid

--hard-limit <number> 强制最大内存 (default KiB)

--soft-limit <number> 可用最大内存 (default KiB)

--swap-hard-limit <number> 强制最大swap使用大小(default KiB)

--min-guarantee <number> 最小保证的内存 (default KiB)

--config 下次重启生效

--live 在线生效

--current 只在当前生效

例子:

memtune 6 --hard-limit 4194304 --soft-limit 8388608 --swap-hard-limit 4194304 --config

8. 其他资源或者功能的控制

Libvirt支持的资源

virsh # nwfilter-list

UUID Name

----------------------------------------------------------------

52cc08e0-59e9-8abc-a47f-292de158e50e allow-arp

ba62872c-f502-b186-a1d5-d42eca52020a allow-dhcp

2aac52ff-622d-4204-ee20-76914ed37050 allow-dhcp-server

069307c6-4e9e-64aa-3ceb-de11fe18742a allow-incoming-ipv4

6d1c441f-fb72-ee3d-ee23-f36f00289169 allow-ipv4

1670e7ba-0f88-6a07-8396-55fb205e60dc clean-traffic

2ef4e0ad-0b93-ff6d-0bea-db1bc40cb48e no-arp-ip-spoofing

f0913202-6548-2f6c-bb57-e4bb769a3f34 no-arp-mac-spoofing

924af240-4684-a33c-109e-84ac19c34809 no-arp-spoofing

cff39883-7766-5b16-e74b-0d4df1df188c no-ip-multicast

13c6ba86-4d9b-ca81-80f5-f73136a5b36d no-ip-spoofing

188b5f06-0c92-b3d0-a7ab-31b06dd3611d no-mac-broadcast

df609586-8ec5-b7de-234f-9411bb545cc0 no-mac-spoofing

9808a971-ef37-d5f6-8bfc-344beb9aeb3a no-other-l2-traffic

667b6824-5c51-a00e-21d2-33a69eb231d2 no-other-rarp-traffic

d29435d2-c5a1-78c3-8d4a-a0f8fe70b8b2 qemu-announce-self

409c14b9-7cf1-7259-1ce0-879a92197a7a qemu-announce-self-rarp

Arp资源的一个例子

virsh # nwfilter-dumpxml allow-arp

<filter name=‘allow-arp‘ chain=‘arp‘ priority=‘-500‘>

<uuid>52cc08e0-59e9-8abc-a47f-292de158e50e</uuid>

<rule action=‘accept‘ direction=‘inout‘ priority=‘500‘/>

</filter>

可以virsh nwfilter-edit命令编辑,例如

virsh nwfilter-edit allow-dhcp

<filter name=‘allow-dhcp‘ chain=‘ipv4‘ priority=‘-700‘>

<uuid>ba62872c-f502-b186-a1d5-d42eca52020a</uuid>

<rule action=‘accept‘ direction=‘out‘ priority=‘100‘>

<ip srcipaddr=‘0.0.0.0‘ dstipaddr=‘255.255.255.255‘ protocol=‘udp‘ srcportstart=‘68‘ dstportstart=‘67‘/>

</rule>

<rule action=‘accept‘ direction=‘in‘ priority=‘100‘>

<ip protocol=‘udp‘ srcportstart=‘67‘ dstportstart=‘68‘/>

</rule>

</filter>

时间: 2024-10-05 14:02:25

kvm限制虚拟机资源的相关文章

基于KVM建立虚拟机的步骤及总结说明

1.前言 目前正在涉足云计算IaaS工作,虚拟化是IaaS的重要部分,因此这段时间对各个虚拟机化技术和工具进行研究,研究的目的不仅仅是为了会使用这个工具,而是通过研究了解技术的实现机制和原理,即知其然也要知其所以然,本文主要算是本人进入这个技术领域的入门的开始,在记录自己的进展的同时,希望对有类似追求的同仁有所帮助.为了更明晰各个步骤,安装步骤不采用图形方式. KVM(不是键盘.显示器.鼠标)是一个基于Linux内核的虚拟化工具,具体的原理正在研究. 闲话少说,言归正传: 2.试验环境 硬件:D

KVM管理虚拟机

笔记内容:KVM管理虚拟机笔记日期:2018-03-08 28.9 克隆虚拟机 28.10 快照管理 28.11 磁盘格式 28.12 磁盘扩容(raw) 28.13 磁盘扩容(qcow2) 28.14 调整cpu内存和网卡 28.15 迁移虚拟机 在上一篇中,我们介绍了如何在 CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统.本篇则是介绍在KVM里安装完虚拟机后,如何使用KVM来管理虚拟机. 克隆虚拟机 克隆虚拟机是虚拟机软件必须得有的功能,这样能省去我们安装系统及环境的时

KVM 克隆虚拟机

KVM克隆虚拟机 virt-clone 作用简介 virt-clone 主要是用来克隆kvm虚拟机,并且通过 Options.General Option.Storage Configuration.Networking Configuration 等不同选项对新的虚拟机进行一些特殊的定义. 1 查看kvm虚拟机 [[email protected] ~]# virsh list --all Id Name State --------------------------------------

1-安装kvm及虚拟机

安装KVM及虚拟机 1.       创建lvm 2.       安装kvm相关的包 需要安装的包 安装好后,进入系统,发现没有eth0 然后重启网络 然后就看到了eth0,以及ip 挂载光盘 ' '选择挂载的光盘 然后挂载到/mnt下面 查看挂载文件 搭建仓库 来自为知笔记(Wiz) 附件列表

当虚拟机资源达到峰值

当虚拟机资源达到峰值 今天说一下虚拟机的几种峰值以及对物理机和物理机上其他虚拟机的影响. 目前运维一个上万节点的私有云平台,说下目前常见的虚拟机峰值出现的几种现象 举例机型:4核CPU+10G内存+100G磁盘 1:内存达到峰值 (如果是物理机,到达峰值一般都直接宕机或者卡的命令都快敲不出来了,但虚拟机多少还是有外溢的,好在一般做母机的机型内存都很大,作为母机,一定不要在内存上吝啬) 2:CPU达到峰值 (一些大的编译是可以把CPU跑到很高的,一台服务器正常有两颗或者一颗CPU,最多也就二十多个

kvm打开虚拟机失败Failed to bindsocket: No such file or directory

kvm打开虚拟机失败Failed to bindsocket: No such file or directory 使用virt-manger克隆一个虚拟机,再打开虚拟机失败,失败错误如下: Error starting domain: internal error:process exited while connecting to monitor: 2016-09-23T11:25:02.302266Zqemu-kvm: -chardevsocket,id=charchannel0,path

KVM guest虚拟机图形化安装

2  KVM Guest 安装方式 virt-manager图形化安装 1.  利用xmanager 中xshell 管理kvm host 2.  Virt-manager 调出 图形化安装管理工具.新建虚拟机.根据规范输入唯一SN:vm000001.选择Fully virtualized 准备工作: 1.上传要安装的系统镜像到/data1 [[email protected] ~]# ls /data1/ domains  lost+found  rhel-6.5x64.iso  rhel-s

超能云 (SuperVessel Cloud) -- 使用入门篇 (专供开发者的免费虚拟机资源)

注册 1. 注册超能云帐号:进入 http://www.ptopenlab.com 2. 点击右上方的"注册"按钮.在弹出的对话框填写你的有效邮箱地址,还有密码.邮箱地址必须有效,因为超能云(SuperVessel)会给您发一封激活的邮件. 3. 进入你注册使用的邮箱,有一封发自[email protected]的邮件,点击里面的激活链接,你的帐号就可以被激活使用了. 申请虚拟机 1. 点击 http://www.ptopenlab.com 页面上的"申请POWER虚拟机&q

KVM+SVN 虚拟机远程管理

1.安装kvm grep -E -o 'vmx|svm' /proc/cpuinfo #检查服务器是否支持虚拟化(vmx为interl平台.svm是AMD平台) #安装KVM所需软件包: yum groupinstall kvm 或 yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst bridge-utils lsmod |grep k