使用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 ...
随机推荐
- [css3动画]渐隐渐现
测试 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- vb6加载时提示出错,窗体log文件中错误信息为:控件 XX 的类 MSComctlLib.ListView 不是一个已加载的控件类。
解决办法:单击[工程] -- [部件] 添加此Microsoft Windows Common Controls-6.0 (SP6)部件,如果列表中没有,浏览到~\project\包\Support中 ...
- Meta标签中的属性及含义
一.Meta标签中的format-detection属性及含义 format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的一些格式的,那关于meta的forma ...
- E: GPG error: http://mirrors.oschina.net trusty-backports InRelease: Clearsigned file isn't valid, got 'NODATA' (does the network require authentication?)
E: GPG error: http://mirrors.oschina.net trusty-backports InRelease: Clearsigned file isn't valid, g ...
- 2.Perl 多线程:Threads(线程返回值)
use warnings; use strict; use threads; sub TEST{ print "Hello, World!\n"; 'a'/); } #返回列表方法 ...
- js如何在指定页面跳转到另一指定页面
要实现从一个页面A跳到另一个页面B,js实现就在A的js代码加跳转代码 JS跳转大概有以下几种方式: 第一种:(跳转到b.html)<script language="javascri ...
- js第一天 innerHTML和value 的区别
innerHTML在JS是双向功能:获取对象的内容 或 向对象插入内容:如:<div id="aa">这是内容</div> ,我们可以通过 document ...
- 1305: Substring
#include <iostream>#include<string.h>#include<stdio.h> using namespace std; #defin ...
- .Net 读取xml
一.常规方法 1.知识介绍 //初始化一个xml对象 XmlDocument xml = new XmlDocument(); //加载xml文件 xml.Load("文件路径") ...
- pureMVC java版搭建流程
转自:http://blog.csdn.net/sutaizi/article/details/6588004 pureMVC 是一个轻量级的框架 它在 flex中非常流行(和cairngorm差不多 ...