QEMU和KVM

先看几个动作

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

这样,镜像就启动了,弹出一个窗口

NewImage

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

可以看到,从开始到现在一直都是通过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等都是

发表回复