最近整理公司的几台服务器,由于机器少应用多,就总是觉得服务器资源紧张,所以痛 下决心使用虚拟机。考察了一番决定使用KVM,因为机器配置不是很高,使用KVM性能 会比较好。
基础系统选用CentOS5.4,下面列出具体的安装配置过程
1. 安装CentOS操作系统
下载CentOS5.4,安装是使用Server模式,不安装任何桌面,毕竟图形桌面太占资源,在选择软件时启用下面的几项:
- 开发工具
- 开发库
- 虚拟化--KVM
虚拟化--KVM
kvm-amd模块时总是不成功!
安装完成后首先启用内核的kvm-amd模块,如果你的机器是intel的就改成kvm-intel,命令如下
[root@localhost ~]# modprobe kvm-amd
如果没有提示任何错误就成功了,可以使用
lsmod | grep kvm
查看是否装载成功,命令如下
[root@localhost ~]# lsmod | grep kvm
kvm_amd 68648 1
kvm 223264 2 ksm,kvm_amd
看到如上类似的输出就表示启用kvm模块成功!
2. 编译安装KVM
CentOS的yum源里提供的kvm版本太低,所以我决定自己编译安装。首先 下载kvm源码包,然后解压,命令如下
[root@localhost ~]# tar zxvf qemu-kvm-0.12.3.tar.gz
接下来开始编译、安装,进入解压后的目录,命令如下:
[root@localhost /]# ./configure --prefix=/usr
[root@localhost /]# make
[root@localhost /]# make install
编译很快,基本上几秒就完成了,如果没有出现什么错误,那么恭喜你!KVM已经成功安装了!
KVM版本
目前官方的最高版本是
0.13.0
,可是我使用发现无法通过vns连接虚拟机,所以只好放弃,使用
0.12.3
版本就一切正常。
3. 搞定虚拟机网桥
bridge-utils和 tunctl。
bridge-utils可以使用yum安装,命令如下:
yum install bridge-utils
tunctl在源里没有找到,需要下载rpm包手工安装,命令如下:
[root@localhost /]# wget -c 'ftp://194.199.20.114/linux/EPEL/5Server/x86_64/tunctl-1.5-2.el5.x86_64.rpm'
[root@localhost /]# rpm -ivh tunctl-1.5-2.el5.x86_64.rpm
接下来编辑网桥配置文件,新建一个名字为
vmbridge.sh
的shell文件,使用vim编辑,命令如下
[root@localhost /]# vim vmbridge.sh
然后在新建的文件中加入如下内容
#!/bin/bash
modprobe tun
tunctl -t tap0 -u root
tunctl -t tap1 -u root
tunctl -t tap2 -u root
tunctl -t tap3 -u root
tunctl -t tap4 -u root
tunctl -t tap5 -u root
tunctl -t tap6 -u root
brctl addbr br0
ifconfig eth0 0.0.0.0 promisc
brctl addif br0 eth0
ifconfig br0 up
dhclient br0
brctl addif br0 tap0
brctl addif br0 tap1
brctl addif br0 tap2
brctl addif br0 tap3
brctl addif br0 tap4
brctl addif br0 tap5
brctl addif br0 tap6
ifconfig tap0 up
ifconfig tap1 up
ifconfig tap2 up
ifconfig tap3 up
ifconfig tap4 up
ifconfig tap5 up
ifconfig tap6 up
chmod a+rw /dev/net/tun
加载tun模块 | |
首先是新建一个名为tap0的虚拟网卡,所有者为当前用户。 | |
新建一个名为br0的网桥 | |
使eth0进入promiscuous模式,不过执行此步之前最好记录原来eth0的IP,避免后面出现IP冲突。 | |
将eth0加入br0. | |
激活br0 | |
获取br0的IP | |
将tap0加入br0 | |
激活tap0 |
例 1. vmbridge.sh
以上的9个步骤就设置了一个虚拟网卡
tap0
,上面的例子中我一共创建了7个虚拟网卡,如果想设置更多的网卡参考上次的内容自行添加即可。
接下来给
vmbridge.sh
赋予可执行权限,命令如下:
[root@localhost /]# chmod a+x vmbridge.sh
然后把它加入系统启动里,这样每次启动系统就自动创建了7个虚拟网卡。命令如下:
[root@localhost /]# echo '/kvm/vmbridge.sh' >> /etc/rc.local
OK! 虚拟网卡已经配置完毕,你可以手动执行下
vmbridge.sh
,或者马上重启下系统,然后使用
ifconfig
命令查看一下是否出现了新建的虚拟网卡。
4. 安装VNC服务器
这步简单,两条命令搞定,命令如下:
[root@localhost /]# yum install vnc-server
[root@localhost /]# service vncserver start
现在可以查看一下VNC是否已经运行,执行下面的命令查看
[root@localhost /]# service vncserver status
Xvnc 已停
虽然显示
Xvnc 已停
,但其实是运行的,可以正差访问
5. 创建KVM虚拟机
所有的前期配置都OK了,下面可以创建KVM虚拟机了。
首先创建一个大小为40G的镜像文件用来安装WinXP虚拟机。命令如下
[root@localhost /]# qemu-img create -f qcow2 /kvm/vmimg/kvm-xp.img 40G
现在开始安装WinXP虚拟机,使用如下命令:
[root@localhost /]# qemu-system-x86_64 -m 1024 -drive file=/kvm/vmimg/kvm-xp.img,cache=writeback -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot d -cdrom /home/lm/iso/winxp.iso -smp 2 -soundhw es1370 -vnc 192.168.1.1:1 &
解释一下参数都是什么意思
root@localhost /]# qemu-system-x86_64 -m 1024 -drive file=/kvm/vmimg/kvm-xp.img,cache=writeback -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot d -cdrom /home/lm/iso/winxp.iso -smp 2 -soundhw es1370 -vnc 192.168.1.1:1
| |
| |
| |
| |
| |
| |
|
然后用VNC客户端连接
192.168.1.1:1
,就看到安装界面了。安装就不说,和以往安装XP一样的。
接下来可以访问安装好的虚拟机了。使用如下命令:
[root@localhost /]# qemu-system-x86_64 -m 1024 -drive file=/kvm/vmimg/kvm-xp.img -localtime -net nic,vlan=0,macaddr=00:00:00:00:20:02 -net tap,vlan=0,ifname=tap0,script=no -boot c -smp 2 -clock rtc -soundhw es1370 -vnc 192.168.1.1:1
命令格式基本和安装差不多,需要说明的是
macaddr
硬件地址要自己指定一个不冲突的,虚拟机可以用DHCP自动获取一个IP地址。最后用VNC客户端连接
192.168.1.1:1
就可看到XP启动界面了。如果你安装的是Linux,可以直接用SSH访问,比较方便。