KVM虚拟化介绍

  • 虚拟化分类
  1. 1型虚拟化

Hupervisor直接运行在物理机上,多个虚拟化运行在Hypervisor上Hypervisor的实现一般是一个特殊定制的linux系统。比如Xen和VMare的ESXI都属于这种模型

KVM虚拟化介绍

2型虚拟化

物理机上首先安装常规的操系统,如Redha,Ubuntu,windows等,Hypervisor作为OS上的应用一个应用程序运行,并对虚拟机进行管理,KVM Virtaulbox  VMWare workstation搜属于这种类型

KVM虚拟化介绍

两种虚拟化对比

1型虚拟化一般对硬虚拟化进行了优化,性能上比2型虚拟化要高

2型虚拟化基于操作系统实现,会比较灵活,支持虚拟化嵌套。即KVM虚拟机里可以再安装kvm

  • KVM介绍
  1. KVM定义

KVM全程基于内核的虚拟机(kernel-based virtual machine).KVM是基于内核的虚拟化技术,实际上是嵌入系统的一个虚拟化模块,通过优化内核实现虚拟化。该模块使Liunx变成一个Hypervisor,虚拟机使用linux自带的调度器进行管理

KVM是基于虚拟化扩展(intel TV或AMD-V)的linux原生全虚拟化解决方案。KVM中,虚拟机别当做linux的进程,有linux自带的调度器进行管理。虚拟机的每个CPU都呗看做一个linux的进行,这使得kvm能够应用linux内核已有的功能,。但是KVM本身不执行任何硬件模拟的模拟工作,而是有用户空间的程序通过/dev/kvm下的接口设置一个虚拟服务器的地址空间,并向其提供模拟的IO,并将虚拟机的视频显示映射回宿主机上显示,目前使用的这个程序是Qemu

  1. KVM术语

宿主机(Host):物理服务器

客户机(Guest):虚拟机,物理机上KVM创建的虚拟机。包括CPU (Vcpu)、内存、驱动,被kvm置于受限制的CPU下运行

KVM:运行在内核空间。提供cup和内存的虚拟化以及I/O拦截,虚拟机(Guest)的I/O被KVM拦截后,交给Qemu处理

Qemu:修改过的为KVM虚拟机使用的QEMU代码,提供I/O虚拟化,通过IOCTL、/dev/kvm设备与KVM进行家交互

KVM ko:KVM的一个内核模块,用来管理虚拟CPU和内存

Libvirt:KVM的管理工具(还可以管理xen/virtualBox,OpenStack的底层也是Libvirt).包括三个组件:

1,libvirtd:后台服务器程序,负责接受和处理API请求

2,API库:提供基于libvirt开发高级工具的接口,如virt-manager  KVM的图形化管理工具

3,virsh命令行工具(KVM和OpenStack应用必须掌握的工具)

  1. KVM环境支持检查
  1. 确定处理器有 VT

 grep vmx /proc/cpuinfo (INTEL 芯片 )

  grep svm /proc/cpuinfo (AMD 芯片 )

cat /proc/cpuinfo | grep -e vmx -e nx -e svm

2,不知道芯片的生产厂商则输入:

egrep '(vmx|svm)' /proc/cpuinfo

如果 flags: 里有 vmx 或者 svm 就说明支持 VT ;如果没有任何的输出,

说明你的 cpu 不支持,将无法成功安装 KVM 虚拟机。

  1. 当你硬件本身支持虚拟化,但查询相应参数无果时,请检查 BIOS 设定,确认你的 BIOS 中开启了硬件支持虚拟化的功能! (Inteld的将如下选项设为Enabled Intel(R) Virtualization Tech [Enabled])
  • KVM安装
  1. 安装组件包

yum install kvm virt-manager libvirt libvirt-python python-virtinst libvirt-client qemu-kvm qemu-img -y ##其中:

kvm #核心套件

virt-manager #图形化 KVM 管理软件

libvirt #提供虚拟机与宿主相互通信的机制

libvirt-python #允许使用libvirt API

python-virtinst #CLI 下创建 KVM 的工具

libvirt-client #提供client访问kvm服务器的机制,并包含virsh命令进行;管理和控制 VMs

qemu-kvm #提供用户级 KVM 环境

qemu-img #VMs 磁盘管理

  1. 加载模块

modprobe kvm #加载 kvm 模块

lsmod | grep kvm #查看加载成功

systemctl status libvirtd

systemctl start libvirtd

systemctl enable libvirtd

  1. 检查是否安装成功

virsh list --all

出现: Id Name State则安装成功

 

 

 

 

 

 

相关文章: