虚拟化方案之--kvm简单教程(网络桥接方案,绝对可用,更新到kvm-87)
研究了很久的KVM,感觉是我用过的最快的虚拟机。对比常用的虚拟机,Vmware的功能全面,设置简单,但其速度不是很好;VirtualBox的效率虽然比Vmware高一些,但是存在不少缺点,感觉在运行时比较抢CPU,而且好像还没有对SMP的支持(还没有研究出来,如果有,请告诉我方法);KVM(Kernel-based Virtual Machine),基于内核的虚拟机,是我用过的最快的虚拟机,需要CPU支持虚拟化技术,并且在BIOS里打开虚拟化选项,效率可达到物理机的80%以上,对SMP的支持很好。所以现在强烈吐血卖命推荐KVM。
没有废话,以下是在UBUNTU804下的方法
获得KVM:
KVM的网站:http://linux-kvm.org
下载最新的kvm-87.tar.gz
解压:需要用到的包:
三步曲:
./configure--prefix=/usr/local/kvm
make
sudo make install安装好以后加载KVM模块
sudomodprobekvm-intel//如果你的是INTEL处理器就用这个
sudo modprobe kvm-amd //如果你的是AMD处理器就用这个这样就装好了。
下面介绍配置KVM桥接网络的方法:\\特别注意,大部分不能桥接无线网卡。。。只能桥接PCI网卡。。。。
安装桥接工具:安装创建TAP界面的工具:
编辑网络界面配置文件(
),根据你的情况加入以下内容:
ifaceeth0inetstatic\\这里可以为DHCP
address192.168.1.2
netmask255.255.255.0
gateway192.168.1.1
autotap0
ifacetap0inetmanual
upifconfig$IFACE0.0.0.0up
downifconfig$IFACEdown
tunctl_userlm\\lm是我的用户名,在这里换为你的用户名
autobr0
ifacebr0inetstatic\\当然这里也可以使用DHCP分配
bridge_portseth0tap0
address192.168.1.3
netmask255.255.255.0
network192.168.1.1
broadcast192.168.1.255
gateway 192.168.1.1激活tap0和br0: //有些时候会不奏效,但重启后就行了
好了以后ifconfig看一下,多了一个tap0和br0,br0上的IP地址就是你本机的IP地址。
KVM的使用方法:
KVM的使用方法具体可以参考下面具体举几个例子:
创建虚拟磁盘(用qemu-img命令):cdkvm
/usr/local/kvm/bin/qemu-img create -f qcow2 winxp.img 10G创建虚拟机:
注意:在KVM-87下,请去掉df=h
这里对各个参数说明一下:分配512MB的内存给GUEST OS
使用虚拟磁盘的文件和路径
使用本地时间(一定要加这个参数,不然虚拟机时间会有问题)
使用网络,并连接到一个存在的网络设备tap0,注意mac地址一定要自己编一个,特别是如果你虚拟了多个系统并且要同时运行的话,不然就MAC冲突了,在KVM-87下去掉df=h
从光盘启动 (从硬盘启动则为 -boot c )
使用的光盘镜像,如果要使用物理光驱的话就是 -cdrom /dev/cdrom
smp处理器个数为2个,如果你是4核处理器,后面的数字就为4(如果不开启此选项,则只能以单核模式运行)
使用rtc时钟(如果不开启此选项,WINXP可能会很慢)
开始启动装系统了吧?是不是非常的快?如果你机器可以的话大概在15分钟左右就把XP装好了。
启动装好的虚拟机(很简单,上面的命令改两个参数就行):注意,在KVM-87下,请去掉上面参数中的df=h
然后在客户端里设置好IP地址就可以使用了,但是KVM的显卡能力不行,可以通过rdesktop远程连接解决补充:
如果同时运行多个GUEST OS ,则网络设置要改一下,在/etc/network/interfaces 里加几个tap界面就行了,每个GUEST OS单独使用一个TAP,比如说现在要同时运行3个GUEST OS ,则配置文件如下:ifacetap0inetmanual
upifconfig$IFACE0.0.0.0up
downifconfig$IFACEdown
tunctl_userlm\\lm是我的用户名,在这里换为你的用户名
autotap1
ifacetap1inetmanual
upifconfig$IFACE0.0.0.0up
downifconfig$IFACEdown
tunctl_userlm\\lm是我的用户名,在这里换为你的用户名
autotap2
ifacetap2inetmanual
upifconfig$IFACE0.0.0.0up
downifconfig$IFACEdown
tunctl_userlm\\lm是我的用户名,在这里换为你的用户名
autobr0
ifacebr0inetstatic\\当然这里也可以使用DHCP分配
bridge_portseth0tap0tap1tap2
address192.168.1.3
netmask255.255.255.0
network192.168.1.1
broadcast192.168.1.255
gateway192.168.1.1
启动GUEST OS
注意,在KVM=86下,请去掉参数中的df=h
把ifname=tap0换为你要tap1或者tap2就行了,MAC也要改噢。。
要注意,系统重启后要重新加载kvm内核模块:sudomodprobekvm-amd//如果使用AMD处理器
sudo modprobe kvm-intel //如果是用INTEL处理器当然,你也可以修改系统相关设置在启动时自动加载该模块。
同理,可以用此方法安装LINUX。装完了可以对比一下,是不是比VB和VM要爽得多呢?
其他比如像USB连接问题可以参考论坛里的帖子
但是现在KVM还有很多的缺点,我还没有成功在KVM上安装SOLARIS系统(可能时钟不同步导致),还有有些时候WINDOWS在KVM里会有系统时钟不同步的问题(会导致WINDOWSGUEST运行很慢)。
我已经在我的系统里同时运行了4个CentOS4.61个winxpsp31个win2003sp25个FreeBSD7.0
速度太快了,难以置信。
系统配置为:AthlonX25000+4GRAM跑的Ubuntu8.04.164bit
其实KVM的安装和使用都很方便简单的,大家要理解KVM各个参数的含义。最关键的就是KVM的网络桥接的设置,参考了网上很多的东西都没有效果,最终还是参考了VIRTUALBOX的官方的用户使用文档的网络桥接设置部分才成功的,在这里大家要多看软件自身的文档,会有很大的帮助。VIRTUALBOX的网络桥接的设置也可以参考这里的网络桥接的方法。