热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

最快速的KVM虚拟机使用介绍

前言最近迷上ubuntu了,花了一周的时间把工作移到ubuntu上面。但是还是不能放弃Winows,因此尝试虚拟机。我先后安装了vmware6.03,VirtualBox1.5.6,和kvm0.91。最后得出结论:kvm最快!前题!!!你的CPU必须支持VM!!!KVM的优点常用的虚拟机我
前言
最近迷上 ubuntu 了,花了一周的时间把工作移到 ubuntu 上面。但是还是不能放弃Winows,因此尝试虚拟机。我先后安装了 vmware 6.03, VirtualBox 1.5.6, 和 kvm 0.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 pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm ida
flags    : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_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 pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm ida
flags    : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_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 -vnc 127.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 1024x720 -D -r sound:local

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

这种方式下,可以享受 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给我,让我们一同来完善这个帖子。

还是别急..我们再来解决网卡桥接的问题..

好吧,搞定所有前奏了.
终于需要启动你的虚拟机了,..


推荐阅读
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • 本文介绍了如何在不同操作系统上安装Git,以及一些基本和高级的Git操作,包括项目初始化、文件状态检查、版本控制、分支管理、标签处理、版本回退等,并简要提及了开源许可协议的选择。 ... [详细]
  • 如何在Mozilla Firefox中调整GIF动画的循环次数
    本文介绍了如何通过调整Mozilla Firefox的高级设置来控制GIF动画的播放次数,帮助用户根据个人喜好自定义浏览体验。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 高级缩放示例.就像谷歌地图一样.它仅缩放图块,但不缩放整个图像.因此,缩放的瓷砖占据了恒定的记忆,并且不会为大型缩放图像调整大小的图像.对于简化的缩放示例lookhere.在Win ... [详细]
author-avatar
宝宝壮壮妈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有