Chinaunix首页 | 论坛 | 博客
  • 博客访问: 123732
  • 博文数量: 23
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 345
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-13 15:50
文章分类

全部博文(23)

文章存档

2010年(6)

2009年(12)

2008年(5)

我的朋友

分类: LINUX

2010-10-11 19:04:58

    都说KVM是虚拟机中的战斗机,前些时试用了一下,果然不一般,启动很快,运行时占系统的资源比其它的虚拟机都少,速度也快。决定以后虚拟机都跑在这上面了。
    言归正传,下面来说一下KVM的安装。安装KVM首先需要你的CPU和主板要支持硬件虚拟化(Intel VT or AMD-V),可以用以下命令来查看。
查看是否支持VT

grep -E 'vmx|svm' /proc/cpuinfo

然后在配置内核:

[*] Virtualization --->

    --- Virtualization

    <*> Kernel-based Virtual Machine (KVM) support

    <*> KVM for Intel processors support

    < > KVM for AMD processors support

如果你是AMD的CPU选最后一项
内核中网络支持:

Device Drivers --->

    [*] Network device support --->

         <*> Universal TUN/TAP device driver support

Networking support --->

    Networking options --->

         <*> 802.1d Ethernet Bridging

         <*> 802.1Q VLAN Support

编译内核用新内核启动。

添加USE flags: alsa esd gnutls pulseaudio sdl
这只是一些基本的,它们的意义和其它的可用flags可以在安装gentoolkit后,通过运行下面的命令查看。

equery uses qemu-kvm


                     
安装所需软件包:
  • : 虚拟机软件
  • : USB支持(lsusb)
   下面的两个是网络支持
  • : brctl
  • : tunctl

添加用户到kvm组:

gpasswd -a kvm


创建虚拟磁盘文件:

qemu-img create -f qcow2 gentoo-amd64.img 20G

参数中的20G是磁盘文件最大大小,并不是说这个文件就有这大,所以你也可以多分一点。
qcow2格式利用了qemu提供的一些特性如多个快照,压缩等。不过个格式有个问题,就是其它对writethrough的支持不是很好,在这种模式下性能比较差。所以如果你讲求性能的话,最好是用writeback.
不过writeback不像writethrough等主机的page cache中的东西写返回后才返回给Guest OS, writeback在写到host OS的page cache中后就直接返回了。在主机掉电或出意外停机后,会有一致性问题。如果不指明,默认用的是writethrough.

网络配置:
为了让系统精简一点,我用的是桥接方案,以两个虚拟机为例。
/etc/conf.d/net 文件如下:

config_eth0=("null")

bridge_br0="eth0 tap0 tap1" 

brctl_br0=( "setfd 0" "sethello 0" "stp off" )

config_br0=("192.168.1.88 netmask 255.255.255.0 brd 192.168.1.255")

routes_br0=( "default via 192.168.1.1" )

rc_need_br0="net.tap0 net.tap1"


config_tap0=( "null" )

tuntap_tap0="tap"

tunctl_tap0="-u your_user_name" 


config_tap1=( "null" )

tuntap_tap1="tap"

tunctl_tap1="-u your_user_name"

在这里我主机原来IP是192.168.1.88, 用的是eth0,现用它桥接后配的是br0.
在这里tap0和tap1都没有写让Guest OS自己配置。
如果你想更多的虚拟机上网,你可以再写上tap3, tap4, ......

启动这几个接口:

cd /etc/init.d

ln -s net.lo net.br0
ln -s net.lo net.tap0
ln -s net.lo net.tap1

br0加入default runlevel:

rc-update add net.br0 default
rc-update del net.eth0


然后就可以用下面的命令启动安装了:

kvm -hda gentoo-amd64.img -cdrom gentoo-livecd.iso -m 256 -net nic,macaddr=52:54:00:12:34:89 -net tap,ifname=tap0,script=no,downscript=no -alt-grab -name gentoo1 -boot d

安装好后,可以把-cdrom和其参数去掉,-boot 后面的d(从cdrom启动)变成c(从disk启动)。
如前所说的,这里默认用的是writethrough. 如果想用writeback,将-hda改成

-drive file=gentoo-amd64.img,cache=writeback

如果你想多虚拟一块硬盘,再创建一个img,在参数中多加一个-drive file就好。系统会自动的按-drive file出现的顺序对index加1(你自己加上也可以)。

对于第二个Guest OS,只用把tap0 变成 tap1, 再把macaddr随便写个不一样的就可以用了。
阅读(928) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~