使用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 ...
随机推荐
- 倒叙筛除list
for(int i=list.Count-1;i>=0;i--) { if(list[i]) { list.RemoveAt(i); } }
- 一把刀终极配置 For XP v2.0 免费绿色版
软件名称: 一把刀终极配置 For XP 软件语言: 简体中文 授权方式: 免费软件 运行环境: WinXP 软件大小: 924KB 图片预览: 软件简介: 一把刀终极配置 For XP,用于快速方便 ...
- Smarty练习增删改
<?php //将题目表显示在页面 include("../init.inc.php"); include("../DBDA.php"); $db = n ...
- D - 娜娜梦游仙境系列——村民的怪癖
D - 娜娜梦游仙境系列——村民的怪癖 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Othe ...
- 测试sql性能方法
SET STATISTICS io ON SET STATISTICS time ON go ---你要测试的sql语句 selec ...
- dedecms 自定义标签的方法
function lib_demotest(&$ctag,&$refObj) { global $dsql,$envs; //属性处理 $attlist="row|12,ti ...
- 《JavaScript高级程序设计》读书笔记 ---语句
do-while语句do-while 语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件.换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次.以下是do-whil ...
- webform在页面生成的代码与事件回传
<script type="text/javascript"> //<![CDATA[ var theForm = document.forms['form1'] ...
- php项目第三季
1.百度浏览器路径写相对路径 2.svn--setting中两个勾去掉,第二页一个勾打上.工程上右击update是更新,commit是提交. 3.Deprecated: mysql_connect() ...
- HTTP 返回状态值详解
当用户点击或搜索引擎向网站服务器发出浏览请求时,服务器将返回Http Header Http头信息状态码,常见几种如下: 1.Http/1.1 200 OK 访问正常 表示成功访问,为网站可正常访问 ...