使用最快速的虚拟机 KVM

前言
最近迷上 ubuntu 了,花了一周的时间把工作移到 ubuntu 上面。但是还是不能放弃Winows,因此尝试虚拟机。我先后安装了vmware 6.03, VirtualBox 1.5.6, 和 kvm0.91。最后得出结论:kvm最快!前题!!!你的CPU必须支持VM!!!

KVM的优点
常用的虚拟机我都试过了吧,总的来说,kvm具有以下优点。
1,速度,这是我最看中的。kvm的cpu效率和磁盘效率绝对是最优秀的。
2,稳定,这也是我看中的,目前的感受是最稳定的,不比 vmware 差。virtualbox我想大家都运到过qq问题。
3,扩展性,kvm是一个新的项目,以后回逐步在图形效率,3d和硬件上面得到linux最基础的支持。

KVM的缺点
1,使用不太方便。很多人惧怕命令行的东西,但是稍微注意一下,会发现命令行是那么的清晰和简单。
2,目前有些功能不太完善,比如图形性能,usb等。本文的最后有说明。
3,你的cpu需要支持vt技术,否则不能体现 kvm 的优势。

可能很多人在初次安装 kvm 后,一使用就放弃了。觉得鼠标移动都很不平滑,这的确是kvm目前最大的问题!但是鼠标是图形性能,记住,kvm在运算性能和磁盘性能上面基本上是最优秀的。下面我来给大家介绍如何用已有的方法去缓解鼠标这个弱点。

KVM 和 qemu 的关系
首先介绍一下 qemu 和 kvm 的关系。细节我就不多说了。
1,kvm 不是 qemu的插件。我在开始的时候一直以为kvm只是一个插件。记住,kvm基本是一个独立的系统,只不过借用了qemu的代码和操作界面。也就是说,你在命令行中如果使用 qemu 的地方,只需要题换成 kvm,其他的参数基本都不用修改就可以运行,这样的效率是 qemu 的很多倍。所以,如果你想用好kvm,去看看 qemu 的说明吧。
2,如果要用kvm,你的cpu必须支持 vm 技术,否则和 qemu 的效率基本相同。

如何判断你的cpu是否支持 vm 技术?
首先使用
代码:
egrep ‘(vmx|svm)’ /proc/cpuinfo

如果没有任何的输出,说明你的cpu不支持,不用往下看了;-)
如果支持,你可以在输出中找到 vmx 的字样。看看我的
代码:
danny@danny-laptop:~$ egrep ‘(vmx|svm)’ /proc/cpuinfo
flags     : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov patpse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lmconstant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3cx16 xtpr lahf_lm ida
flags      : fpu vme de pse tsc msr pae mcecx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr ssesse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitords_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm ida
danny@danny-laptop:~$ egrep ‘(vmx|svm)’ /proc/cpuinfo
flags     : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov patpse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lmconstant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3cx16 xtpr lahf_lm ida
flags      : fpu vme de pse tsc msr pae mcecx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr ssesse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitords_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm ida

安装和配置
注意,大多BIOS缺省是关掉了vt支持的,你需要首先设置你的bios,我使用的是x61,缺省就是关闭的。

接下来安装 kvm 包,使用“新得利”吧,细节就不说了。不过还需要下载 qemu包。因为 kvm没有包含建立虚拟磁盘的工具。kvm应该根据你的cpu类型自动激活内核模块,反正我的是这样的。接下来你需要在终端运行一下kvm,如果没有任何错误信息,那么恭喜你,你可以使用kvm了。

把你的用户加入到 kvm 组,使用系统管理当中的“用户和组管理”,这里略去细节。也可以使用命令行

代码:
adduser xxx kvm

如果你需要虚拟机访问物理磁盘,需要把你的用户添加到 disk 组。

代码:
adduser xxx disk

xxx是你的登录名。

建立磁盘映像文件,使用

代码:
qemu-img create -f qcow2 WindowsXP.img 10G

细节请看相关命令行说明。

你应该准备了 windows xp 的安装 iso 映像包吧。
然后使用下面命令打开虚拟机进行安装了。
代码:
kvm-M pc -m 512 -soundhw es1370 -hda /home/danny/kvm/WindowsXP.img-localtime -net nic,vlan=0 -net user,vlan=0 -cdrom/media/tools/winxp.iso  -boot d

-m 512 是虚拟机的 ram 大小
-hda /home/danny/kvm/WindowsXP.img 是你刚刚建立的虚拟磁盘  C盘
-cdrom /media/tools/winxp.iso 是安装光盘的位置 D盘
-boot d 是从光驱启动
这里注意一下,官方推荐使用 -no-acpi 参数,原因是 qemu/kvm不太支持,可能造成 cpu 的占用偏高。我没有用这个参数,一用就退出,但是CPU使用很正常。你们可以尝试先加上这个参数。
其他参数自己看看文档吧。

速度怎么样?是不是你见过最快的虚拟机?这里注意一下,切换方式和 vmware 一样,都使用 ctrl+alt 切换。如果出现显示冲突,你多半需要关闭你的桌面特效。linux总是给我们不经意的惊喜。

安装完了吧,怎么样?鼠标很慢?启动时间很快吧。试试其他的一些消耗CPU而不需要什么图形性能的程序你就知道kvm的效率了。

下面看看我的桌面效果,鼠标的问题也解决了。

剩下的问题题明天再解决,今天有事,先离开了。

回帖请注意:
1。把你自己的问题描述清楚
2。请不要废话

使用远程桌面
继续。。。。。。。。。。。
看样子已经有人安装成功了,下一步经过简单的操作,我们实现来消除鼠标的问题。

首先确定你的虚拟机没有运行,然后运行以下的代码
代码:
kvm-M pc -m 512 -hda /home/danny/kvm/WindowsXP.img -hdb /dev/sda5 -hdc/dev/sda7 -hdd /dev/sda8 -net nic -net user -usb -localtime -vnc127.0.0.1:0 -daemonize -redir tcp:3389::3389

解释一下,
1,-hda /home/danny/kvm/WindowsXP.img             你的系统虚拟磁盘
2,-hdb/dev/sda5 -hdc /dev/sda7 -hdd /dev/sda8这个根据你自己进行选择,kvm可以加载你系统的分区。注意,分区是独享的,也就是说如果在 kvm中加载了分区,这几个分区在宿主机(unbutu)中将无法访问。我这几个分区是Windows 下的分区,在 Ubuntu下也没有什么用。
3,-net nic -net user             使用简单网络访问,可以使得虚拟机上网,或者是访问宿主机。但是宿主机不能访问虚拟机(很奇怪的问题)。
4,-usb                使能 USB 支持,我没有成功。不知道为什么。
5,-localtime   时间同步,你不希望你的虚拟机是另外的时间吧。
6,-daemonize 后台运行,不显示图形界面,这个我后面要解释。
7,-vnc 127.0.0.1:0        打开远程桌面支持,这个可不是Windows的远程桌面哦。
8,-redir tcp:3389::3389            把虚拟机的远程桌面服务器端口映射到宿主机的端口,这个才是等同windows的远程桌面。

运行了吧,怎么突然退出而没有任何反应?因为虚拟机已经在后台运行了。你有两种方式查看虚拟机的界面。
1,使用远程桌面工具,地址 localhost , 端口 5900。
2,使用远程终端,地址 localhost 端口 3389
如果你的虚拟机还没有配置远程桌面,请现用第一种方式访问虚拟机界面,然后设定虚拟机(我的是XP)远程桌面方式,然后就可以了。

下一步是整合虚拟机到你的桌面,就和我的贴图一样,使用以下命令
代码:
rdesktop localhost:3389 -u danny -p xxxxxx -g 1024×720 -D -r sound:local

-u 后面的是用户名,-p 后面的是密码。-r sound:local 是启用声音,-D 是消除远程终端窗口的边框。怎么样,桌面出来了吧?应该还有登录的声音哦。这里也应该知道 1024×720 的道理了吧。这个值根据你自己的屏幕大小来调整。

这种方式下,可以享受 kvm 的所有效率,同时,鼠标是不是很快了。另外,几乎可以避免所有的键盘冲突。但是如果在虚拟机中看电影的話可能比较痛苦。

如何升级到 kvm 74
Ubuntu 源中的kvm版本是62的,太老了,很多新的特性都不支持。现在我们来看看如何升级到 kvm 74 的最新版本。
1。首先确定你已经安装了ubuntu官方源中的 kvm。如果直接使用我提供的 kvm 74,不会把 /dev/kvm 的权限设置成 kvm 组,比较麻烦。因此建议你按照前面所描述的,首先安装和设置官方源中的kvm
2。去launchpad.net下载最新编译好的kvm。我比较菜,不会自己编译。虽然提供了相应的源,但是我觉得最好是下载deb安装。因为launchpad.net提供的源中还包含了其他的很多包,有些包的升级可能对你的系统造成影响。因此,为了把影响控制在一定范围内,我强烈建议下载安装。下载地址是http://ppa.launchpad.net/intuitivenipple/ubuntu/pool/main/k/kvm/有三个版本
kvm_74+dfsg-0ubuntu2~ppa3g_i386.deb
kvm_74+dfsg-0ubuntu2~ppa3h_i386.deb
kvm_74+dfsg-0ubuntu2~ppa3i_i386.deb
其中,kvm_74+dfsg-0ubuntu2~ppa3h_i386.deb 是hardy的,h 代表 hardy 下载后直接安装。

使用kvm 74 中的USB自动识别
kvm 中的USB支持一直是很麻烦的。新版本的kvm可以支持USB设备的自动加载和卸载。现在我们就来看看是如何做的。

首先我们需要让kvm识别USB设备。这里需要编辑两个文件。
代码:
sudo gedit /etc/init.d/mountdevsubfs.sh

找到 Magic to make /proc/bus/usb work 这个地方,把下面的注解符号删除,最后的结果应该是下面这样。
代码:
#
# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs “” /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount –rbind /dev/bus/usb /proc/bus/us

然后,编辑 fstab 文件
代码:
sudo gedit /etc/fstab

在文件的最后一行加上
代码:
none /proc/bus/usb usbfs devmode=666 0 0

这样让所有用户可以访问 USB 设备。这种方式有安全隐患,也可以把 USB 访问的权限分配给一个组,这里我就不多说了。

重新启动Ubuntu,kvm应该可以认识 USB 设备了。

kvm不可能把所有的 USB设备全部转让给客户机运行,因此,必须给kvm说明那些usb会让客户机控制。这里需要使用到的是USB的vid和pid。每个 usb设备都有这两个id,vid 代表生产商,pid代表产品。你可以通过下面的命令来察看USB设备的这两个参数
代码:
lsusb

结果的方式是
代码:
Bus 006 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 007: ID 0a5c:2110 Broadcom Corp.
Bus 001 Device 006: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 001 Device 001: ID 0000:0000

如果是 ID 0000:0000 表示没有设备,
像 ID 0a5c:2110 Broadcom Corp.  表示vid是 0a5c,pid是2110

在启动kvm的命令中加入 -usbdevice host:0a5c:2110 就可以让客户机自动识别USB。当然也可以加入-usbdevice host:0a5c:* 这样的命令,使得客户机识别所有 pid是0a5c的USB设备。原则上不要使用-usbdevice host:*:* 这样的参数,否则你的Ubuntu不能识别USB设备了。

遗留问题
以下是遗留的问题,希望有朋友可以解决。
1,偶尔看看电影什么的,需要使用PPStream。切换到真实的 windows 太麻烦。希望通过 ppstream 的网络共享,在宿主上播放。

好了,希望大家使用 kvm 愉快,并且多多交流一下经验。如果你有什么好的经验,可以PM给我,让我们一同来完善这个帖子。

from:http://forum.ubuntu.org.cn/viewtopic.php?f=65&t=120857

发表评论

邮箱地址不会被公开。 必填项已用*标注