先看几个动作
brew install quem brew install kvm
预先准备的qcow2格式镜像
$ qemu-img info forqemu.qcow2 image: forqemu.qcow2 file format: qcow2 virtual size: 20G (21474836480 bytes) disk size: 1.6G cluster_size: 65536 Format specific information: compat: 0.10 refcount bits: 16
这里看上去创建20G存储空间,实际上目前也就1.6G
$ qemu-system-x86_64 forqemu.qcow2 -m 512
这样,镜像就启动了,弹出一个窗口
可以看到,从开始到现在一直都是通过QEMU来操作,甚至镜像文件都可以用qemu-image create来创建,感觉上就跟KVM没任何关系
再来看一个动作,在debian里通过apt-get安装kvm
lihui@2015:~$ sudo apt-get install kvm [sudo] password for lihui: Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'qemu-kvm' instead of 'kvm' The following extra packages will be installed: ipxe-qemu libaio1 libfdt1 libiscsi2 librados2 librbd1 libseccomp2 libspice-server1 libvdeplug2 libxen-4.4 libxenstore3.0 qemu-system-common qemu-system-x86 qemu-utils seabios sharutils Suggested packages: samba vde2 sgabios ovmf debootstrap The following NEW packages will be installed: ipxe-qemu libaio1 libfdt1 libiscsi2 librados2 librbd1 libseccomp2 libspice-server1 libvdeplug2 libxen-4.4 libxenstore3.0 qemu-kvm qemu-system-common qemu-system-x86 qemu-utils seabios sharutils 0 upgraded, 17 newly installed, 0 to remove and 78 not upgraded. Need to get 6,540 kB of archives. After this operation, 30.4 MB of additional disk space will be used. Do you want to continue? [Y/n]
可以看到,安装kvm,有很多依赖,其中就有qemu-XXXX,这么看来,KVM必须得依靠QEMU
对于虚拟化,看过三段话,描述地比较直接
第一种称为本地虚拟化(或全虚拟化)。在这种虚拟化中,管理程序实现基本的隔离元素,将物理硬件与来宾操作系统相分离。这种技术首次出现于 1966 年 IBM® CP-40 虚拟机/虚拟内存操作系统中,另外 VMware ESX Server 也使用了此技术。
另一种流行的虚拟化技术称为半虚拟化。在半虚拟化中,控制程序实现了管理程序的应用程序接口(API),它将由来宾操作系统使用。Xen 和 Linux Kernel-based Virtual Machine (KVM) 都使用了半虚拟化技术。
第三种有用的技术称为仿真。仿真,顾名思义,通过模拟完整的硬件环境来虚拟化来宾平台。仿真可通过多种方法实现,即使在同一个解决方案中也是如此。通过仿真实现虚拟化的技术有 QEMU 和 Bochs。
QEMU本身实际上是一个仿真模拟器,可以模拟真实的系统环境,也就是说通过模拟完整的硬件环境来虚拟需求的平台
KVM上面已经说明了,半虚拟化,kvm本身来说是Linux内核的一个模块
lihui@2015:~$ ls -l /lib/modules/3.16.0-4-amd64/kernel/arch/x86/kvm/kvm* -rw-r--r-- 1 root root 97120 May 26 12:05 /lib/modules/3.16.0-4-amd64/kernel/arch/x86/kvm/kvm-amd.ko -rw-r--r-- 1 root root 223680 May 26 12:05 /lib/modules/3.16.0-4-amd64/kernel/arch/x86/kvm/kvm-intel.ko -rw-r--r-- 1 root root 715920 May 26 12:05 /lib/modules/3.16.0-4-amd64/kernel/arch/x86/kvm/kvm.ko
可以自行加载模块
lihui@2015:~$ modprobe kvm modprobe: ERROR: could not insert 'kvm': Operation not permitted lihui@2015:~$ sudo modprobe kvm lihui@2015:~$ lsmod | grep kvm kvm 388635 0
那么为什么安装kvm的时候,还需要依赖一些qemu-*之类的呢,原因是kvm是内核模块,就算加载了,用户态也无法直接操作,需要借助一些用户态的工具才能管理虚拟机,比如上面用到的qemu-system-x86_64,qemu-image等都是