首页 > 代码库 > nova系列二:kvm介绍

nova系列二:kvm介绍

一 常见虚拟化模式

Hypervisor即vmm,主要功能就是用来控制生成vm,并管理vm的运行,按照Hypervisor的实现方式和位置不同,常见的形式分两种

1. 全虚拟化

物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Centos。Hypervisor 作为 OS 上的一个程序模块运行,并对管理虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation 都属于这个类型。

技术分享 

2. 半虚拟化

Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型。

技术分享

二 KVM

openstack可以兼容很多虚拟化解决方案,其中最主要的就是针对x86平台的kvm。

KVM 全称 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的,这就使得linux内核本身就相当于一个Hypervisor。

具体的:

基于kvm创建的vm就是普通的linux进程,由linux内核调度程序进行调度,vm因此可以使用linux内核已有的功能。因为vm的执行本质就是vm中cpu的执行,因此vm的每个cpu就是普通的linux进程。

 

KVM有一个内核模块叫 kvm.ko,只提供 CPU 和内存的虚拟化,而针对于IO及其他硬件设备(网络及存储等)的虚拟化,则是交给qemu实现,qemu运行在用户态通过/dev/kvm接口设置一个客户机虚拟机服务器的地址空间,向kvm提供模拟的I/O,并且将它的视频显示映射回宿主的显示屏。

技术分享

 

 

Libvirt

大家在网上看 KVM 相关文章的时候肯定经常会看到 Libvirt 这个东西。

Libvirt 是啥?
简单说就是 KVM 的管理工具

其实,Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。
OpenStack 底层也使用 Libvirt,所以很有必要学习一下。

Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh

  1. libvirtd是服务程序,接收和处理 API 请求;

  2. API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具,后面我们也会介绍;

  3. virsh 是我们经常要用的 KVM 命令行工具,后面会有使用的示例。

作为 KVM 和 OpenStack 的实施人员,virsh 和 virt-manager 是一定要会用的。

今天5分钟差不多了,下一次我们来玩 KVM

 

nova系列二:kvm介绍