(KVM连载)4.1.3 CPU过载使用(overcommit)
KVM允许客户机过载使用(over-commit)物理资源,即给客户机分配的CPU和内存数量多于物理上实际存在的资源。...
View Article(KVM连载)4.2.4 内存过载使用(overcommit)
同4.1.3节中介绍的CPU过载使用类似,KVM中内存也是允许过载使用(over-commit)的,KVM能够让分配给客户机的内存总数大于实际可用的物理内存总数。由于客户机操作系统及其上的应用程序并非一直100%地利用其分配到的内存,而且宿主机上的多个客户机一般也不会同时达到100%的内存使用率,所以内存过载分配是可行的。一般来说,有如下三种方式来实现内存的过载使用。...
View Article(KVM连载)4.3.2 qemu-img命令详解
qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具,本节对其用法和实践使用方法进行介绍。 qemu-img工具的命令行基本用法如下: qemu-img command [command options] 它支持的命令分为如下几种: (1)check [-f fmt]...
View Article(KVM连载)4.3.4 QEMU支持的镜像文件格式
qemu-img支持非常多种的文件格式,可以通过“qemu-img -h”查看其命令帮助得到,它支持如下所示的二十多种格式。 Supported formats: blkdebug blkverify bochs cloop cow tftp ftps ftp https http dmg nbd parallels qcow qcow2 qed host_cdrom host_floppy...
View Article(KVM连载)4.4.1 QEMU支持的网络模式
网络是现代计算机系统不可或缺的一部分,QEMU也对虚拟机提供丰富的网络支持。qemu-kvm中主要给客户机提供了如下4种不同模式的网络。 (1)基于网桥(Bridge)的虚拟网卡 (2)基于NAT(Network Addresss Translation)的虚拟网络 (3)QEMU内置的用户模式网络(user mode networking) (4)直接分配网络设备(包括VT-d和SR-IOV)...
View Article(KVM连载)4.4.2 使用网桥模式(bridge networking mode)
在QEMU/KVM的网络使用中,网桥(bridge)模式可以让客户机和宿主机共享一个物理网络设备连接网络,客户机有自己的独立IP地址,可以直接连接与宿主机一模一样的网络,客户机可以访问外部网络,外部网络也可以直接访问客户机(就像访问普通物理主机一样)。即使宿主机只有一个网卡设备,使用bridge的方式也可知让多个客户机与宿主机共享网络设备,其使用非常方便,其应用也非常广泛。...
View Article(KVM连载)4.5.3 非图形模式
在qemu-kvm命令行中,添加“-nographic”参数可以完全关闭QEMU的图形界面输出,从而让QEMU在该模式下完全成为简单的命令行工具。而QEMU中模拟产生的串口被重定向到了当前的控制台(console)中,所以如果在客户机中对其内核进行配置从而让内核的控制台输出重定向到串口后,就依然可以在非图形模式下管理客户机系统或调试客户机的内核。...
View Article(KVM连载)4.5.1 SDL显示的使用
在客户机中,特别是对于桌面级的Linux系统和所有的Windows系统来说,虚拟机中的图形显示是非常重要也是几乎必需的功能。本节主要主要介绍KVM中图形界面显示相关配置。 4.5.1 SDL的使用 SDL(Simple DirectMedia...
View ArticleAES-NI新指令在KVM中的使用及性能测试数据
AES NI(Advanced Encryption Standard new instructions)是Intel在2008年3月提出的在x86处理器上的指令集扩展,它包含了7条新指令,其中6条是硬件对AES的支持,另1条是对进位乘法的优化,从而在执行 AES 算法的某些复杂的、计算密集型子步骤时更好地利用底层硬件,减少计算的CPU cycles,提升AES加解密的性能。(2012.9.27...
View Article如何挂载一个镜像文件(how to mount an image file)
在使用KVM或Xen虚拟化的情况下,经常需要使用镜像文件(image file),我们可以将Guest系统启动起来,然后对镜像文件进行修改,不过这样有时也是比较麻烦,其实也是可以将镜像文件直接进行mount的,可以用如下两种办法。 (本文写的RAW格式镜像文件的挂载;我的另一篇文章写了“如何挂载qcow2格式的镜像文件”)...
View Article“br0: reveived packet on eth0 with own address as source address”问题解决方法
在做KVM的nested virtualization(嵌套虚拟化)测试时,在L1 guest中遇到了“br0: reveived packet on eth0 with own address as source...
View Article如何挂载qcow2格式的镜像文件(how to mount a qcow2 image)
两个月前,写了一篇“如何挂载一个镜像文件”,当时没有把qcow2的挂载方法写进入,刚好一个博友留言提到qcow2了,就再一小篇关于mount qcow2格式的客户机镜像吧。QCOW2是目前QEMU(qemu-kvm)推荐使用的guest镜像文件格式,在KVM、Xen虚拟化中的使用都是比较广泛的。 可以使用qemu自带的一个工具qemu-nbd来挂载一个客户机,具体步骤如下: (qemu-nbd...
View Article(KVM连载)5.1.1 Virtio概述和基本原理(KVM半虚拟化驱动)
5.1 半虚拟化驱动 5.1.1 virtio概述 KVM是必须使用硬件虚拟化辅助技术(如Intel VT-x、AMD-V)的hypervisor,在CPU运行效率方面有硬件支持,其效率是比较高的;在有Intel...
View Article(KVM连载) 5.1.3 使用virtio_balloon(KVM中的Ballooning)(上)
5.1.3 使用virtio_balloon 1. Ballooning简介 通常来说,要改变客户机占用的宿主机内存,是要先关闭客户机,修改启动时的内存配置,然后重启客户机才能实现。而内存的ballooning(气球)技术可以在客户机运行时动态地调整它所占用的宿主机内存资源,而不需要关闭客户机。...
View Article(KVM连载) 5.1.4 使用virtio_net (半虚拟化网卡)
5.1.4 使用virtio_net 1. 配置和使用virtio_net 在选择KVM中的网络设备时,一般来说优先选择半虚拟化的网络设备而不是纯软件模拟的设备,使用virtio_net半虚拟化驱动,可以提高网络吞吐量(thoughput)和降低网络延迟(latency),从而让客户机中网络达到几乎和原生网卡差不多的性能。...
View Article(KVM连载) 5.2.1 VT-d概述 (KVM设备直接分配)
5.2.1 VT-d概述 在QEMU/KVM中,客户机能使用的设备,大致可分为如下三种类型。 1. Emulated device:QEMU纯软件模拟的设备。 2. Virtio device: 实现VIRTIO API的半虚拟化驱动的设备。 3. PCI device assignment: PCI设备直接分配。...
View Article用virsh执行qemu monitor中的命令
Virsh可以作为使用QEMU/KVM虚拟化的一个非常方便的命令行管理工具。在使用QEMU时,QEMU monitor中有一些命令还是比较有用的,在virsh命令中可能没有完全实现,那么可用通过virsh命令来向QEMU monitor发送命令吗? 答案是肯定,因为我这两天好好看了下virsh的帮助文档,可以使用virsh的“qemu-monitor-command”命令来向Monitor发送命令~...
View Article(KVM连载) 8.2.1 CPU性能测试工具
8.2.1 CPU性能测试工具 CPU是计算机系统中最核心的部件,CPU的性能直接决定了系统的计算能力,故对KVM虚拟化进行性能测试首先选择对客户机中CPU的性能进行测试。任何程序的执行都会消耗CPU资源,所以任何程序都几乎可以作为衡量CPU性能的基准测试工具,不过最好是选择CPU密集型的测试程序。有很多的测试程序可用于CPU性能的基准测试,包括:SPEC组织的SPEC...
View Article(KVM连载) 8.2.2 KVM CPU测试环境配置
8.2.2 测试环境配置 本次对CPU性能测试的硬件环境为一台使用Intel Xeon E5-4650处理器的服务器,在BIOS中打开了Intel VT 和 VT-d技术的支持,还默认开启了Intel CPU的超线程(Hyper-threading)技术。本次测试使用的宿主机内核是根据手动下载的Linux...
View Article(KVM连载) 8.2.3 KVM CPU性能测试方法
8.2.3 性能测试方法 本节的CPU性能测试选取了SPEC CPU2006、内核编译和Super PI这三个基准测试来对比KVM客户机与原生系统的性能。下面分别介绍一下在本次性能中使用的具体测试方法。 1)SPEC CPU2006 在获得SPEC CPU2006的测试源代码后,进入其主目录后,运行install.sh脚本即可安装SPEC...
View Article(KVM连载) 8.2.4 KVM CPU性能测试数据
8.2.4 性能测试数据 由于使用的硬件平台、操作系统、内核、qemu-kvm等对本次CPU性能测试都有较大影响,而且本次仅仅使用了Intel Xeon E5-4650处理器上的4个CPU线程,所以本次CPU性能测试数据并不代表该处理器的实际处理能力,测试数据中绝对值的参考意义不大,请读者主要参考其中的相对值(即KVM客户机中的测试结果占原生系统中测试结果的百分比)。 1)SPEC CPU2006...
View ArticleLinux内核中的KVM代码
[2013.06.02 update] 参考我写的这个文档:https://github.com/smilejay/kvm-book/blob/master/misc/kvm-code-in-linux.txt 今天简单查了Linux内核中有哪些KVM相关的代码(Linux 3.8.0-RC5版本),统计了一下KVM内核的代码量。目前在,Linux 3.8.0中有大约6万多行关于KVM代码。...
View Article(KVM连载) 6.1.2 libvirt的编译、安装
6.1.2 libvirt的编译、安装和配置 1. 从源代码编译和安装libvirt 如果只是普通用户使用libvirt,一般不需要从源码编译libvirt,只需要安装对应的Linux系统上libvirt软件包即可。一些高级用户或者开发者,可能希望对libvirt进行更多的了解,甚至修改libvirt的源代码来实现自己的功能,那么还是需要了解从源代码编译和安装libvirt的过程。...
View Article(KVM连载) 6.1.3 libvirt、libvirtd的配置和使用
6.1.3 libvirt、libvirtd的配置和使用 1. libvirt的配置文件 以RHEL 6.3为例,libvirt相关的配置的配置文件都在 /etc/libvirt/ 目录之中,如下所示: [root@rhel6u3-ga libvirt]# cd /etc/libvirt/ [root@rhel6u3-ga libvirt]# ls cim libvirt.conf...
View Article(KVM连载) 6.1.5 libvirt API 简介
6.1.5 libvirt API 简介 libvirt 的核心价值和主要目标就是提供了一套管理虚拟机的、稳定的、高效的应用程序接口(API)。libvirt API 本身是用C语言实现的,本节以其提供了最核心的 C语言接口的 API 为例做简单的介绍。 libvirt API 大致可划分为如下8个大的部分: (1)连接 Hypervisor 相关的API:以virConnect 开头的一系列函数。...
View Article(KVM连载) 6.1.7 libvirt API 使用示例(C API)
6.1.7 libvirt API 使用示例 经过前面几个小节对libvirt的配置、编译、API、建立连接等内容的介绍,相信大家对libvirt已经有了大致的了解。对API进行学习的最好方法就是使用代码来调用API实现几个小功能,所以本节主要通过两个示例来分别演示如何调用libvirt的C语言和Python语言绑定的API。 1. libvirt C API的使用 在使用libvirt...
View Article(KVM连载) 6.1.7 libvirt API 使用示例(Python API)
2. libvirt Python API的使用 6.1.1小节中已经介绍过,许多种编程语言都提供了libvirt的绑定。Python作为一种在Linux上比较流行的编程语言,它也提供了libvirt API的绑定。在使用Python调用libvirt之前,需要安装libvirt-python软件包,或者使用6.1.2节中介绍的方法来自行编译和安装libvirt及其Python API。...
View ArticleKVM API 使用实例
用户空间的程序与KVM的交互来查询、管理KVM hypervisor或者guest,是通过使用ioctl函数与一个特殊的设备/dev/kvm的交互来实现的。 KVM API就是一些可以用于控制虚拟机各个方面的ioctl的集合。(The kvm API is a set of ioctls that are issued to control various aspects of a virtual...
View ArticleKVM嵌套虚拟化中使用virtual ETP特性
嵌套虚拟化的概念 嵌套虚拟化(nested virtualization、recursive virtualization)是指在虚拟化的客户机中运行一个Hypervisor,从而再虚拟化运行一个客户机。嵌套虚拟化不仅包括相同Hypervisor的嵌套(如KVM on KVM、Xen on Xen、VMware on VMware等),也包括不同Hypervisor的相互嵌套(如VMware on...
View Articleigbvf由于MAC地址为0,而不能在guest中使用的情况
在使用了Linux 3.9 作为KVM host的内核后,使用Intel igb NIC(如:82576, I350)的SR-IOV,在将VF(igbvf)分配guest使用时,可能会遇到不工作的情况。在guest的dmesg中可以看到如下的错误信息: View Code BASH1 2 3 igbvf 0000:00:03.0: irq 26 for MSI/MSI-X igbvf...
View ArticleWeb应用(WordPress)在KVM虚拟机中的性能测试
目前,有很多的应用运行在虚拟机中,其中有很大一部分是Web程序,那么对一个虚拟机的性能做综合评估时,Web程序应当是必须纳入评估范围的。本文以最流行的开源博客系统——WordPress(本博客也是用它来搭建的)来做为本次测试使用的Web应用,测试它在KVM虚拟机以及在嵌套虚拟化的第2层虚拟机中的性能表现。 本次测试使用了Intel最新的硬件平台Haswell,它有EPT和ShadowVMCS的支持。...
View ArticleKVM的一些基准测试和性能测试数据分享
上个月基于Linux 3.10.0-RC1的版本在Intel Haswell Desktop和IvyBrdige-EP平台上,对普通的虚拟化和嵌套虚拟化做了一些性能测试(使用一些基准测试工具)。其中,对于嵌套虚拟化特别对virtual EPT、VMCS...
View ArticleUbuntu上使用Android SDK的一些注意点
测试硬件环境: 打开了Intel VT的PC (使用KVM时需要VT支持的) 测试软件环境: Ubuntu 12.04 x86_64 ADT Bundle Linux x86_64 (在android官网下载:https://developer.android.com/sdk/index.html ) 1. 下载所需的Image和创建AVD: 可以在Eclipse(ADT)中,”Window”...
View Article《KVM虚拟化技术:实战与原理解析》已经出版了!
本人拙著《KVM虚拟化技术:实战与原理解析》已经由机械工业出版社于2013年10月出版,请大家支持,也请批评指教 ^_^ 如果您喜欢KVM虚拟化技术,可以在各大购书网站搜索“KVM虚拟化”来购买 您也可以考直接通过如下的任何一个链接去购买该书: 当当网:http://product.dangdang.com/23341742.html...
View Article分析Linux kernel在“make install”时的“ERROR: modinfo: could not find module...
网友whipper在我的文章“(KVM连载)3.3.4 安装KVM”中提到了在编译KVM后安装时的一些错误提示,我以前也遇到过多次的,这次回答他的问题,简单总结一下吧。 问题描述:在编译内核后,make install 时可能遇到“ERROR: modinfo: could not find module XXX”的新题;命令行中操作看到的内容如下: View Code BASH1 2 3 4 5...
View Articlebonnie++测试KVM虚拟机磁盘I/O性能
(最近没有做多少Linux system level的事情了,看着草稿箱中还有以前写的这篇文章,凑合着发出来吧) 从http://www.coker.com.au/bonnie++/ 网页下载bonnie++-1.03e.tgz 文件,然后解压,对其进行配置、编译、安装的命令行操作如下: [root@kvm-guest ~]# cd bonnie++-1.03e [root@kvm-guest...
View ArticleQEMU/KVM非图形界面安装guest
这两天有读者朋友向我咨询QEMU/KVM如何在非图形界面(文本模式)下安装客户机,今天找了台CentOS的宿主机做了下实验。 我觉得,先试试在宿主机上安装VNC Server,然后VNC连过去安装客户机吧(这样就有VNC的虚拟桌面了);或者试试 -curses方式;当然,如果你真的需要nographic这样来安装,那么本文是你而准备的。 这里使用的QEMU...
View Articlevirt-install非图形界面安装KVM guest
在上次写:QEMU/KVM非图形界面安装guest的文章时,其实也就用virt-install非图形界面安装KVM guest了,当时这篇文章在草稿箱中,在2014年前整理发布出来吧。 这里以安装一个CentOS-minimal系统为例: 1. 将安装ISO中的文件复制出来,并修改.treeinfo文件,指定正确而的kernel和initrd。 View Code BASH1 2 mount...
View Article通过网络连接到QEMU monitor
在我的KVM书中,关于QEMU监控器(monitor)的使用还是讲了不少东西的,不过,翻看以前收藏的一篇文章,发现其中提到的通过网络访问QEMU monitor的方法是没有在书中提及的。所以,在这里简单介绍一下吧,也是给自己留个记忆。(如果–仅仅是如果,有再版的话,可以考虑加上一两页来讲个东东。) 1. QEMU monitor支持远程telnet访问: View Code BASH1...
View Articlevirtio-blk-data-plane的配置使用
virtio-blk-data-plane是qemu/kvm中的一种高性能的块设备I/O方式,它最初在qemu 1.4版本中被引入。virtio-blk-data-plane与传统virtio-blk相比,它为每个块设备单独分配一个线程用于I/O处理,virtio-blk-data-plane线程不需要与原qemu执行线程同步和竞争锁,而且它使用 ioeventfd/irqfd...
View Article4.4.3 KVM使用NAT模式网络
前言:之前连载过 4.4.2 使用网桥模式(bridge networking mode) 一文,其实使用NAT的情况也蛮多的,不需要建物理的bridge配置会更加方便,所以现在把KVM...
View Article4.4.4 QEMU内部的用户模式网络
前言:之前连载过2篇KVM网络的配置 4.4.2 使用网桥模式(bridge networking mode) 4.4.3 使用NAT模式...
View ArticleHugePage简介和KVM中使用HugePage
这是2011年我写过的一篇文章,现在发现仍有意义,转发到我的这个博客上。 原文:http://www.51testing.com/html/38/225738-235472.html 在KVM的测试中,有一项是要测试huge page的使用,所以对Huge Page(巨页)做了一些了解,结合网上的一些资料进行总结一下。 现在,有许多的处理器架构都支持多种的内存页大小,其中就包括比一般的page...
View Article