环境准备
两台主机,一台用作kvm客户端,一台用户kvm服务端,kvm服务端用来创建和管理镜像,kvm客户端使用VNC远程连接kvm服务端的镜像,客户端使用ubuntu14.0桌面版,服务端使用ubuntu14.0 server版,客户端的用户名这边我是kvmclient,服务端的用户名为kvmserver
Kvm Server端配置
安装kvm和qemu-kvm
Apt-get install kvm qemu-kvm
效果如下
安装完成后测试模块加载是否正常
安装网络配置工具tunctl和brctl一个用来虚拟网卡一个用来设置网桥
Apt-get install uml-utilities
Apt-get install bridge-utils
安装vnc服务
Apt-get install vnc4server
#如果提示出现依赖包xbase-client没安装,先apt-get update下再执行上面的指令
安装完成后设置vnc服务密码(输入vnc后使用tab键可以看到所有vnc开头的指令)
启动vncserver服务(标示在本地启动一个1号监视器)
关闭服务,修改配置文件
配置文件如下
修改后如下
Kvm Client端配置
安装xvnc4viewer
给服务器添加网络配置脚本,在kvmserver的home目录下新建一个scripts目录,然后添加如下脚本(脚本里面的kvmserver根据自己的实际用户名修改)
#!/bin/sh
DEL_IPADDR=`ip addr show eth0|grep 'global eth0'|awk '{print $2}'`
IP_ADDR=`ifconfig eth0|grep 'inet addr'|cut -d ':' -f 2|cut -d ' ' -f 1`
NET_MASK=`ifconfig eth0|grep 'inet addr'|cut -d ':' -f 4|cut -d ' ' -f 1`
DEV_ETH="eth0"
TAP_NAME="tap1"
if [ -z "$DEL_IPADDR" ]; then
echo "${DEV_ETH}'s IP is not exist.\n"
exit
fi
#Create rollback.sh
echo "#!/bin/sh\n"\
"tunctl -d $TAP_NAME\n"\
"ifconfig br0 down\n"\
"brctl delbr br0\n"\
"ifconfig eth0 $DEL_IPADDR netmask $NET_MASK up">rollback.sh
#Create tap device
MSG=`ifconfig $TAP_NAME|grep "Device not found"`
if [ -z "$MSG" ]; then
#echo "1\n"
tunctl -t $TAP_NAME -u kvmserver
fi
#Create network bridge with br0,added eth0 to br0
#Delete current eth0 IP address
ip addr del $DEL_IPADDR dev $DEV_ETH
MSG=`brctl show|grep "^br0"`
if [ -z "$MSG" ]; then
#echo "2\n"
brctl addbr br0
fi
MSG=`brctl show|grep $DEV_ETH`
if [ -z "$MSG" ]; then
#echo "3\n"
brctl addif br0 $DEV_ETH
fi
#Give the br0 a IP address,then up that
ifconfig br0 down
ifconfig br0 $IP_ADDR netmask $NET_MASK up
ifconfig $TAP_NAME down
ifconfig $TAP_NAME up
MSG=`brctl show|grep $TAP_NAME`
if [ -z "$MSG" ]; then
#echo "4\n"
brctl addif br0 $TAP_NAME
fi
或者在client下写好然后上传到server上
能看懂上面脚本的童鞋也可以直接修改配置文件,脚本运行的每次虚拟机重启后都要执行一遍。然后用root用户给脚本附加可执行权限,然后以root权限执行
如果发生错误可以使用rollback.sh脚本回退,这个脚本在switch_br0.sh执行时会自动生成,当然也要用root附加可执行权限,如果switch_br0.sh执行成功会有如下提示
用ifconfig和brctl查询网络信息
第二步
创建虚拟磁盘
qemu-img create –f qcow2 winxp.img 10g
先将xp的镜像光盘插入VMware的server虚拟机的光驱中
在虚拟磁盘上安装操作系统,并启用qemu控制台管理虚拟机,使用VNC作为远程桌面,(这个命令好像不能写在脚本里面执行,否则会出现安装操作系统的时候提示只有1M大小磁盘空间)
qemu-system-x86_64 –hda ~/img/win_xp.img –m 512 –boot d –cdrom /dev/cdrom –net nic,vlan=0 –net tap,ifname=tap1,script=no –vnc :1 -usbdevice tablet -monitor stdio
在client侧使用VNC远程连接
vncviewer 192.168.101.137:1
然后在vnc:qemu窗口中完成操作系统的安装,安装完成后,可以在client的VNC图形界面里关闭guest,或者在server的qemu命令提示行出输入system_powerdown来关闭guest
重新引导磁盘镜像(如果发现鼠标同步性太差,添加上-usbdevice tablet)
qemu-system-x86_64 –drive file=~/img/winxp.img,cache=writeback –localtime –m 512 –boot c –net nic,vlan=0 –net tap,ifname=tap1,script=no –vnc :1 -usbdevice tablet –monitor stdio
在客户端使用vncviewer链接
参考资料
http://www.doc88.com/p-893241644418.html
http://www.chenyudong.com/
http://www.linux-kvm.org/page/Main_Page