天天看点

kvm虚拟化简介虚拟化分类kvmlibvirt

我们知道LNMP架构中的四部分一般会部署在不同服务器上,这是为防止当服务器出现故障时所有服务全部崩溃的情况发生。但是以服务器的性能只运行一个服务显然浪费资源,因此造就了虚拟化技术。

虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑意义上的计算机。也就是在一台宿主机上运行多台虚拟机,每个虚拟机可以搭建不同操作系统,并且绝大部分应用都在相互独立的空间内运行且互不干涉,从而提高计算机工作效率。

虚拟化技术重新定义并划分了计算机硬件资源,实现了资源的动态分配和灵活调度,提高了资源利用率。

虚拟化分类

以层次分类

  • 完全虚拟化:完全虚拟化是最流行的虚拟化方法。通过hypervisor在虚拟服务器和底层硬件之间建立一个抽象层。hypervisor可以捕获CPU指令,伪指令访问硬件控制器和外部设备充当媒介。完全虚拟化技术几乎可以让每一罐操作系统不经改动就安装到虚拟机上。但是,hypervisor对CPU压力巨大。代表软件有VMware和VirtualPC。
  • 准虚拟化:为了解决完全虚拟化的处理器密集特性,就诞生了准虚拟化技术。通过改动操作系统使其能够与hypervisor一同工作,这就是准虚拟化。相比完全虚拟化,准虚拟化的性能更高,但是准虚拟化只能应用于Linux等开源操作系统。
  • 系统虚拟化:操作系统层的虚拟化技术。宿主机的操作系统本身负责在多个虚拟机之间分配资源,因此系统虚拟化虚拟机与宿主机必须使用同一系统。
  • 桌面虚拟化:对于普通用户来说最常见的是桌面虚拟化。桌面虚拟化主要是将分散的桌面环境集中管理,终端数据可以集中存储在中心机房。

以架构分类

  • 1型虚拟化:hypervisor直接安装在物理机上,多个虚拟机在hypervisor上运行。
  • 2型虚拟化:物理机上首先安装操作系统,hypervisor作为系统上一个程序模块运行。

kvm

kvm全称是基于内核的虚拟机(Kernel-based Virtual Machine),是一个开源软件,实际上是嵌入系统的一个虚拟化模块,通过优化内核来使用虚拟技术。kvm使Linux变成了一个hypervisor,虚拟机使用Linux自身的调度器进行管理。

kvm是一种基于虚拟化扩展(Inter VT 或者 AMD-V)的X86硬件的开源Linux原生的全虚拟化解决方案。在kvm中,虚拟机就是常规的Linux进程,由Linux统一调度;虚拟机的每一个虚拟CPU就是一个Linux进程,因此kvm可以使用Linux内核的功能。

kvm本身不支持硬件模拟,需要qemu程序通过/dev/kvm接口设置一个客户机虚拟服务器的地址空间,向他提供模拟I/O,并将其视频映射到宿主机的显示屏。

libvirt

libvirt是kvm的管理工具,libvirt除了能管理hypervisor,还能管理xen,virtualbox等虚拟化工具,openstark底层也使用了libvirt。

libvirt包含:

  • libvirtd:服务程序,接收和处理API请求
  • API库:通过API库使其他人可以开发基于libvirt的工具
  • virsh:命令行工具

继续阅读