文章目录
[隐藏]

一、概述

1、虚拟化

虚拟化演变过程:软件模拟、虚拟化层翻译,容器虚拟化

  • 软件模拟:理论上可模拟任何硬件,性能低,典型产品QEMU、Bochs;
  • 虚拟化层翻译:又分为
    • 软件捕获翻译,即软件全虚拟化,(VMWare的软件全虚拟化方案)
    • 改造虚拟机系统内核加虚拟化层翻译,即半虚拟化,(Xen改造虚拟机操作系统)
    • 硬件支持的虚拟化层翻译,即硬件支持全虚拟化,基于硬件效率特别高,(Intel硬件方案,对CPU指令进行改造,及VR-x)
  • 容器虚拟化:基于CGroups和Namespace技术将进程隔离,Docker。

2、KVM

KVM (Kernel-based Virtual Machine),Openstack的主流虚拟化引擎。
架构:KVM为内核的一个模块,用户空间通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机对应一个Linux进程,通过对该进程管理实现对虚拟机的管理.
考虑到对进程管理非常麻烦,RedHat发布Libvirt完成对虚拟机的管理,具备API和命令行工具。诸如Openstack、CloudStack、OpenNebula大多数管理平台通过Libvirt实现对KVM虚拟机的管理。

 3、QEMU与KVM

Qemu开源项目,实现软件模拟硬件,可以模拟X86、AMD64、MIPS R4000、ARM v6/v7、APARC sun3和PowerPC架构的硬件,可以在其他平台上运行Linux程序,可以存储和还原虚拟机的状态,可以虚拟网卡、多CPU、IDE设备、软驱、显卡、声卡和多种并/串口设备、US设备、PC喇叭、PS/2键鼠、USB键鼠、蓝牙设备。
Qemu还内建DHCP、DNS、SMB、TFTP服务器。
纯软件模拟,优点是可以在支持平台上模拟设备,缺点是效率低,运行慢,1.0时期有与KVM结合分支,后来版本合并到主版本,目前QEMU默认支持KVM,KVM虚拟机可以借助QEMU管理工具来管理,QEMU可以借助KVM来加速。

4、Libvirt与KVM

Libvirt为开源的虚拟化管理工具,组成包括:
  • API的lib库:支持C/Python/Ruby等主流语言
  • Libvirtd服务
  • 命令行工具virsh
Libvirt设计目标是通过相同的方式管理不同的虚拟化引擎,比如KVM、Xen、HyperV、VMware ESX等,但目前实际场景KVM使用Libvirt最多,其他平台各有管理工具。
Libvirt可以实现对虚拟机的创建、启动、关闭、暂停、恢复、迁移、销毁及硬件设备的热添加等管理。
Libvirt还支持远程的宿主机的管理,在宿主机上启动libvirtd服务并做好配置,可以通过SSH、TCP或基于TCP的TLS进行虚拟机的配置。

5、KVM优势

  • 开源:与底层Linux、中间层Libvirt、到云管理平台Openstack紧密结合
  • 性能:同样硬件条件下,提供更好的虚拟机性能
  • 免费:开源
  • 技术支持:开源社区活跃

二、实践

利用virt-install命令创建一个虚拟机:

导出虚拟机XML模版文件:

该文件如下:

可以查看该虚拟机的内存、磁盘、网卡、CDROM设备的配置信息。

三、参考文档

深度实践KVM:核心技术、管理运维、性能优化与项目实施》 肖力等著

KVM详解:http://www.voidcn.com/article/p-opxudbpz-zp.html