使用libvirt做适配的kvm虚拟机window server 2008 磁盘性能的提升
实验室自己做了一个iaas的项目,当时是为了更方面的在kvm和xen下进行迁移,所以选择了libvirt作为适配层。
昨天简单的测试一了一下我们跟qingcloud的性能对比。我们的linux主机性能跟qingcloud差不多,但是window下的性能就差了一大截,尤其是硬盘的性能。同等配置的虚机,青云的评分是我们的好几倍,于是乎就开始寻找我们window下硬盘慢的原因。
去qingcloud上安装了一台window server 2008的虚机,通过硬件管理器看qingcloud的配置与驱动信息,如下图所示:

而我们的机器关于存储的配置是:

记得以前看过关于virtio是一个利用半虚拟话技术优化kvm下io处理性能的方案。所以就觉得我们的windows慢是因为没有配置virtio所导致。于是就查找相关的资料。
大概的原因就是:
kvm因为使用了硬件虚拟化,所以其cpu方面的运行效率是很高的。不过,kvm在I/O虚拟化方面,传统的方式是利用QEMU纯软件的方式来模拟I/O设备,这样每次虚机发起I/O请求的时候,KVM内核模块会捕获这次请求,然后处理后将其放入I/O共享页,并通知用户空间中运行的QEMU程序。QEMU获得I/O操作,交由硬件模拟代码(Emulation)来模拟出本次I/O操作之后,将结果放回I/O共享页,同时通知KVM内核模块读取I/O共享页的操作结果,把结果返回给虚机。由于这种方式每次I/O操作经过的路径很复杂,其效率很低。
所以就提出了virtio这种方案,virtio其实就是一个运行于Hypervisor之上的api接口,让客户机知道自己运行于虚拟化环境中,进行I/O操作的时候通过virtio与Hypervisor通信,从而是虚机有更好的性能。
关于virtio详细的介绍,我们下回在谈。
现在就看看怎么配置虚机,让其支持virtio。
linux下话:默认目前的流行的发行版,其自带的内核都已经将virtio相关的驱动编译为模块了,这里就不再叙述了,只需在用配置文件启动虚拟机的时候,在disk标签的target子标签的bus属性的时候指出使用的为virtio(如果没有指定该属性,默认的给的bus是ide)
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/opt/images/win-server-08.img'/>
<target dev='vda' bus='virtio'/>
</disk>
另外,多说一点,target标签的的bus属性也不是必须的,如果没有bus属性,libvirt会根据dev来判断bus的类型,默认的hd* bus为ide,vd* bus为virtio。
window下的话:window就比较麻烦,微软没有提供默认的virtio的相关驱动,因此需要提供额外的驱动以便支持virtio。我选择是从Fedora项目中下载二进制ISO文件。地址是:
http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/。相关的关于virtio在window下具体的kvm官方文档是在:http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
具体的做法比如说你已经有一台win-server-08机器的镜像。但是如果你直接把你的系统盘按照linux的方法来做的话,你的win会启动不起来,因为你没有装这时候你需要装virtio相关的驱动。这时候你就需要手动去申请一块硬盘给该虚机挂上,并把下载的iso也挂载在该虚拟机上。
比如说:你用
qemu-img ceate -f qcow2 10G fake.img
指令申请了一块磁盘,这时候你需要修改win-server-08的libvirt的配置文件。修改为如下格式:
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/nfs/192.168.1.11/volumes/e/i/3046231d8c594c6a8ec4ccd362ea394e.img'/>
<target dev='hda' bus='ide'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='xxxx/fake.img'/>
<target dev='vdb' bus='virtio'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='xxxx/xxx.iso'/>
<target dev='hdc' bus='ide'/>
</disk>
其中cdrom是为了挂载iso文件,以便安装virtio的驱动。而fake.img是为了让win能识别需要安装virtio的驱动。
这样你重启虚机以后,在windows下的硬件管理器之中就能看到有标黄的需要安装的驱动,选择在文件系统里安装,在iso文件里找对应的版本的驱动,下一步安装即可。是不是很简单。
经过这些步骤之后,你的带virtio i/o驱动的window的模版就OK了。
我们在我们的环境下测试新模版的i/o得分,比以前提高了大概3-4倍。
]8F()7GG]0MD)G.jpg)


使用libvirt做适配的kvm虚拟机window server 2008 磁盘性能的提升的更多相关文章
- 在window server 2008 64位系统上 发布网站的过程中遇到的问题(转)
发布网站的过程如下: 1.安装数据库系统2.建立数据库,执行sql3.安装iis4.在本地机子上发布网站5.把发布好的东西拷贝到IIS上 1.安装数据库系统: 出现错误:必须使用角色管理工具 安装或配 ...
- 在window server 2008 64位系统上 发布网站的过程中遇到的问题
发布网站的过程如下: 1.安装数据库系统2.建立数据库,执行sql3.安装iis4.在本地机子上发布网站5.把发布好的东西拷贝到IIS上 1.安装数据库系统: 出现错误:必须使用角色管理工具 安装或配 ...
- Restrict each user to a single session in window server 2008 R2 or 2012
Restrict each user to a single session in window server 2008 R2 or 2012 2014-10-31 In window server ...
- Window Server 2008 R2 FTP服务用户隔离
Window Server 2008 R2 FTP服务用户隔离 原题:安装FTP服务,新建一个FTP站点,主目录为C:\ftproot,通过适当技术实现用户soft1 与soft2通过匿名方式登录FT ...
- 使用 libvirt创建和管理KVM虚拟机
1. libvirt介绍 Libvirt是一个软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等.Libvirt概括起来包括一个API库.一个 daemon(libv ...
- linux kvm虚拟机快速构建及磁盘类型
KVM命令管理 virsh命令:用来管理各虚拟机的接口命令查看/创建/停止/关闭...支持交互模式格式:virsh 控制指令 [虚拟机名称] [参数] [root@room1pc01 桌面]# vir ...
- 烂泥:KVM安装Windows Server 2008 R2使用virtio硬盘
本文首发于烂泥行天下. 在上一篇文章中,我们介绍了使用IDE硬盘来安装Windows Server 2008 R2,这篇文章我们来介绍使用virtio硬盘来安装Windows Server 2008 ...
- 安装Window Server 2008的些配置
上次安装window server2008,由于server2008需要设置很多东西,不然用起来很不爽,就说IE吧,每次随便打开一个网页都要弹出n多窗口出来叫你添加到信任域里面!太烦人了![下面有解决 ...
- window server 2008 安装Oracle10g
oracle安装都大同小异. 开始安装步骤 输入完之后点击下一步 这时候稍等一会儿. 这时候也要稍等一会儿. 直接安装. 设置口令管理,设置SCOTT的密码为tiger就好了. 这时候稍等一会儿. o ...
随机推荐
- CSV文件解析工具
package com.common.util; import java.io.BufferedReader; import java.io.FileInputStream; import java. ...
- MySQL复制表结构,表数据。
1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable; ...
- HDU 5807 Keep In Touch
加维降复杂度 #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #inc ...
- 基于KNN的相关内容推荐
如果做网站的内容运营,相关内容推荐可以帮助用户更快地寻找和发现感兴趣的信息,从而提升网站内容浏览的流畅性,进而提升网站的价值转化.相关内容 推荐最常见的两块就是“关联推荐”和“相关内容推荐”,关联推荐 ...
- iOS模拟器沙盒使用推荐
iOS沙盒路径的查看和使用 1.模拟器沙盒目录文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,他的目录其实是Library.因为应用是在沙箱(sandbox)中的,在文件读写权限上受到限制 ...
- Android状态选择器用法总结
原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6284682.html 本文首先列出常见状态选择器的创建,然后按照常用控件来分别列出状态选择器的具体 ...
- c语言-扑克牌小魔术
/************************************* Copyright(C) 2004-2005 vision,math,NJU. File Name: guess_card ...
- VBS脚本操作网页元素
=================打开百度,点击百度按钮==================== Dim btn,ieSet ie = WScript.CreateObject("Inter ...
- 使用CSS灵活的盒子
CSS3灵活的盒子,或flexbox,是一个布局模式提供页面上的元素的安排这样的元素表现可以预见当页面布局必须适应不同屏幕大小和不同的显示设备.对于许多应用程序,灵活的块盒模型提供了一个改进模型,它不 ...
- 1.Java为什么能跨平台运行?请简述原理
因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台. 1, java代码不是直接运行在CPU上,而是运 ...