QEMU是一个开源的虚拟机和模拟器,由法国天才程序员Fabrice Bellard 所开发,可以模拟不同的处理器架构(x86,server and embedded PowerPC, and S390 guests)。官网为 http://wiki.qemu.org/Main_Page
KVM是构建在QEMU之上的虚拟机,其本身主要是一个Linux内核模块,只不过了整合了QEMU,目前受到Redhat公司的专门支持,是一个被相当看好的虚拟化项目,与Xen相比貌似有很多独特的优势。
kvm内核模块可以使QEMU虚拟机的运行速度接近于主机,但要有硬件上的支持,即CPU具有虚拟扩展(Intel VT or AMD-V)。官网为 http://www.linux-kvm.org/page/Main_Page
jimmy@ubuntu:~$ grep '(vmx|svm)' /proc/cpuinfo
查看cpu是否支持虚拟化,不支持也可以使用qemu,只不过没有qemu-kvm加速
jimmy@ubuntu:~$ sudo apt-get install qemu
ubuntu 12.04对应的版本为1.0,默认kvm加速模块也安装好了
jimmy@ubuntu:~$ mkdir images
jimmy@ubuntu:~/images$ cd images
jimmy@ubuntu:~/images$ qemu-img create -f qcow2 winxp_sp2.img 10G
创建格式为qcow2大小为10G的虚拟硬盘
jimmy@ubuntu:~/images$ qemu-system-i386 -h
查看可用的命令参数
jimmy@ubuntu:~/images$ sudo qemu-system-i386 -hda ./winxp_sp2.img -cdrom ./WindowsXP_SP2.iso -localtime -boot d -m 512 -smp 2
系统镜像WindowsXP_SP2.iso已放在目录images中,如果安装的虚拟机是64位,则选择qemu-system-x86_64
-hda dev 指定虚拟硬盘,这里用我们刚刚创建的winxp_sp2.img
-cdrom dev 使用光盘镜像,如果要使用物理光驱的话就是 -cdrom /dev/cdrom
-localtime 使用本地时间,虚拟机时间和主机一致
-boot d 从光盘启动 (第一次安装系统要从光盘启动,从硬盘启动则为 -boot c )
-m 512 指定虚拟机使用的内存大小
-smp 2 指定处理器个数为2个(如果不开启此选项,则只能以单核模式运行)
还可加参数 -monitor stdio 将console窗口重定向到标准输出,即终端界面
jimmy@ubuntu:~/images$ sudo qemu-system-i386 ./winxp_sp2.img.img -m 512
进入虚拟机后,可以使用快捷键
crtl+alt+f 切换为全屏
crtl+alt+2 切换到console界面
crtl+alt+1 切换回虚拟机
crtl+alt 从虚拟机中切出来(解除鼠标和键盘绑定,和VMware一样)
在ubuntu 12.04下安装qemu之后发现,kvm和kvm-img命令也可用,kvm链接到qemu-system-x86_64,kvm-img链接到qemu-img.
安装的kvm内核模块位于/lib/modules/3.2.0-23-generic-ape/kernel/arch/x86/kvm/.
qemu启动虚拟机默认采用的网络连接模式是NAT,虚拟机的IP为10.0.2.15,网关为10.0.2.2,在资源管理器输入\\10.0.2.2可以看到主机共享的文件夹
如果要采用网桥连接模式,配置如下:
#设置tun设备权限
su
chown root.usergroup /dev/net/tun
chmod g+rw /dev/net/tun
#添加网桥br0
brctl addbr br0
ifconfig eth0 0.0.0.0 promisc
brctl addif br0 eth0
dhclient br0
# 创建tap0
apt-get install uml-utilities
tunctl -t tap0 -u username
# 启动tap0
brctl addif br0 tap0
ifconfig tap0 up
#查看可用的虚拟网卡
qemu-system-i386 -net nic,model=?
可以看到: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio
#退出root后以网桥模式启动
qemu-system-i386 ./winxp_sp2.img.img -net nic,model=rtl8139 -net tap
其中usergroup和username要设置成自己所使用的。
如果出现could not configure /dev/net/tun: Operation not permitted的问题,那就还是以root权限启动qemu。
进入虚拟机后会发现现在ip地址和主机是一个网段了。
参考自:http://stackoverflow.com/questions/4462799/how-does-work-network-in-qemus-guest-os
-----------------------------分割线-------------------------------------
QEMU用户文档:http://qemu.weilnetz.de/qemu-doc.html
非常全面地讲解QEMU的用法,尤其值得注意的是:
3.5 QEMU Monitor
3.6 Disk Images
-----------------------------分割线-------------------------------------
创建快照镜像snapshot.img(以winxp_sp2.img 为原始镜像,要为qcow2格式):
qemu-img create -f qcow2 -b winxp_sp2.img snapshot.img
查看快照镜像信息:
qemu-img info snapshot.img
如果从快照镜像启动:
qemu-system-i386 snapshot.img
那么对系统的更改只会保存在快照镜像中,原始镜像不会改动。但对原始镜像的改动会影响快照镜像。
也可以创建临时快照:
qemu-system-i386 winxp_sp2.img -snapshot加-snapshot参数后,启动虚拟机后对系统的更改不会保存到原始镜像winxp_sp2.img,所以关闭后对系统的改动就丢失了
另外,进入系统后还可以在终端用命令savevm和loadvm分别创建和恢复多个快照,会保存在镜像文件中,下次启动就可以使用参数-loadvm,但是不能同时使用-snapshot,不然loadvm参数不起作用。
-----------------------------分割线-------------------------------------
其他有用的参考:
Ubuntu论坛置顶贴,详细讲解了怎么配置kvm的网桥连接
UbuntuWiki KVM教程:http://wiki.ubuntu.org.cn/Kvm%E6%95%99%E7%A8%8B
虚拟化之QEMU与KVM :http://blog.chinaunix.net/uid-23769728-id-3256677.html
这里对kvm虚拟机与主机的运行速度进行了简单的对比,可以有一个感性认识。
这里非常详细地讲解kvm,博主计划出书。

本文介绍了QEMU,一个由Fabrice Bellard开发的开源虚拟机和模拟器,以及KVM,一个基于QEMU的Linux内核模块。KVM通过硬件虚拟化支持使虚拟机性能接近主机。在Ubuntu 12.04下,QEMU安装后可使用kvm和kvm-img命令。QEMU默认使用NAT网络模式,但可以通过配置实现网桥连接。此外,文章还探讨了如何使用qemu-img创建和管理快照镜像,并提供了多个参考资料链接,包括QEMU用户文档和Ubuntu论坛的KVM配置教程。
2317

被折叠的 条评论
为什么被折叠?



