您的位置:首页 > 其它

使用KVM/QEMU命令安装虚拟机

2014-11-07 23:59 781 查看

环境准备

两台主机,一台用作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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: