KVM虚拟化学习之路(一): 基础知识

kvm 2017-04-10

虚拟化与云计算

云计算没有一个明确统一的概念,引用维基百科中的定义:

云计算(英语:Cloud Computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。

云计算是一种按量分配模式的,提供可用的,便捷的,按需的网络访问.云计算的兴起,改变了现有的以本地计算为主的应用模型.大量的计算任务,由客户端通过网络发起,在云计算提供商的数据中心的服务器集群进行计算,其结果通过网络返回.

虚拟化是构建云基础架构不可或缺的技术之一,虚拟化通过一个在物理平台上虚拟出更多的虚拟平台,而其中一个虚拟平台可以作为独立的终端加入云端的分布式系统.比起传统直接使用物理平台,虚拟化在资源更有效的利用,动态调配和高可靠性方面有着巨大的优势.

虚拟化技术

物理计算设备通过定义的物理资源接口与其运行在上层的计算元件进行交互.随着硬件技术的发展,物理资源容量越来越大而价格越来越低,物理资源容易产生闲置和浪费.为了避免这种资源浪费,引入一个新的虚拟化层,对下管理真是的物理资源,对上提供虚拟化资源.在x86平台虚拟化中,新引入的虚拟化层通常称为 虚拟机监控器,也叫作 Hypervisor .监控器运行的环境也就是真实的物理平台,称为 宿主机 . 而虚拟出来的平台称为 客户机 .

KVM 介绍

KVM(Kernel Virtual Machine),即内核虚拟机.KVM最初为了简化开发,开发人员没有选择从底层开始新写一个 Hypervisor .而是选择了基于Linux内核,通过加载新的模块从而是Linux内核本身变成一个 Hypervisor .2006年10月,kvm模块的代码被正式接纳入linux kernel,成为内核源代码的一部分.

kvm是基于虚拟化扩展(Intel VT 或 AMD-V)的x86硬件,是Linux完全原生的全虚拟化解决方案.在kvm架构中,虚拟机是宿主机上常规的Linux进程.kvm本身不执行任何虚拟,需要用户控件程序通过 /dev/kvm 接口中设置一个客户机虚拟服务器的地址空间.

其他虚拟化Xen,VMware,VirtualBox,Hyper-V等不做介绍了.

QEMU与KVM

QEMU本身并不是KVM的一部分,其自身也是开源的虚拟机软件,QEMU是一个纯软件的实现,所以性能比较底下.QEMU的代码中包括了整套的设备虚拟,包括处理器,内存,网卡,显卡,存储控制器,硬盘等.

为了简化和代码重用,KVM在QEMU的基础上进行了修改.QEMU通过KVM模块提供的系统调用进入内核,由KVM模块负责处理器运行或输入输出操作. 从QEMU角度来看,QEMU使用了KVM模块的虚拟化功能为自己虚拟机提供硬件虚拟化加速.现实中,QEMU与KVM两者结合是比较成熟的选择.

硬件要求

KVM最初基于x86和x64处理器架构的linux系统进行的.目前已经被移植到很多不同的处理器架构上.KVM必要的硬件虚拟化扩展为: Intel的虚拟化技术(Intel VT)和AMD的 AMD-V 技术.一般BIOS都默认将VT打开.


本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

赏个馒头吧