第二章 虚拟化技术

来源:互联网 发布:php 断点续传 编辑:程序博客网 时间:2024/05/22 13:24

2.1 虚拟化技术简介

     如果把虚拟化技术比作打通任督二脉,那么打通这个"任督二脉"的方法有很多。在开源软件里面,主要是KVM和XEN。尽管OpenStack对KVM和Xen都支持,但是OpenStack对KVM的支持明显要比Xen做得好。

2.1.1 KVM

    基于内核的虚拟机KVM(Kernel-Based Virtual Machine)是2007年问世的开源虚拟化解决方案。KVM需要两个条件:硬件支持全虚拟化;操作系统为Linux。

    基于内核实现虚拟化,KVM包含了一个加载的内核模块kvm.io。此外,由于KVM对硬件x86架构的依赖,会需要一个处理器规范模块。处理器规范模块与处理器类型相关,如果使用的是Intel的CPU,那么就加载kvm-intel.ko;如果使用的是AMD的CPU,就加在kvm-amd.ko模块。当Linux内核加载KVM模块之后,KVM模块只负责对虚拟化的虚拟CPU、虚拟内存进行管理和调度。

     虚拟机只具备虚拟CPU、虚拟内存还是无法完成很多工作。虚拟机还是需要很多的外设,外设分为以下两种:

     (1)真实硬件设备:虚拟机如果要与这些真实的硬件设备交互,就需要利用Linux系统内核来进行管理。

     (2)虚拟的外部设备:虚拟机要与虚拟机的外设交互时,KVM需要借助另外一个虚拟化项目Qemu。同Qemu,KVM就能很好地与虚拟外设交互。实际上,Qemu中,也利用软件编写了很多虚拟机的外部设备。除非特别需要,很多外设都采用了Qemu的虚拟外设。

      从而可以看出,KVM本身只关注与虚拟机调度、内存管理这两大方面。外设的任务交给Linux内核、Qemu。因此,KVM是一个轻量级的Hypervisor,显得小巧灵活。正是由于KVM轻量级的特性,在很多Linux的发行版中,已将KVM加入的虚拟化解决方案中。

2.1.2 Xen

     Xen是2003年有剑桥大学研发的开源Hypervisor。Xen与KVM不同的是:当硬件不具备虚拟化能力的时候,Xen可以采用半虚拟化(Para-Virtualization)的方式来运行虚拟机。

     Xen的开发要比KVM早,因此从技术上而言,Xen更加成熟。也正是由于Xen的成熟性、稳定性以及消耗资源少的特点,在国内外都得到了大规模的使用。

     Xen设计时,为了提高虚拟化的性能,物理部件都可以直接交付给虚拟机使用(称为passthru)。这种处理,却是以牺牲灵活性为代价的:Xen的安装,需要更新或修改Linux内核。由于Xen的虚拟化实现是直接与宿主机的内核绑定,安全性也会有所降低。

     虽然OpenStack也支持Xen虚拟机,但是支持的功能不能与KVM相比。

2.1.3 Libvirt

     在一个数据中心里面,有可能使用了不同的Hypervisor:早一些的服务器使用了Xen;新一批的服务器使用了KVM;也有可能是购置的商业虚拟化软件。由于时间、地域、部门、企业的关系,使用的Hypervisor都不会相同。能有一个统一的管理工具来管理各种各样的Hypervisor,并且能够提供统一的API来支持上层应用。

    Libvirt就是在这种情况下诞生的。Libvirt为多种Hypervisor提供一种统一的管理方式。Libvirt是一个软件的集合,包括API库、后台运行程序(Libvirtd)和命令行工具(virsh)。他为使用者提供了虚拟机管理和其他虚拟机设备管理。这些虚拟化设备包括:磁盘、虚拟网络、虚拟路由器、虚拟光驱等等。目前,Libvirt支持Xen、QEMU、LXC、OpenVZ和VirtualBox等Hypervisor。


2.2 安装Libvirt虚拟化工具

2.2.1 安装KVM

    安装KVM顺序如下。

    (1)BIOS开启VT


注意:除了此项需要设置之外,如果发现VT-d Tech选型,也应该将此项开启。VT-d技术表述表示CPU支持直接I/O访问的虚拟化技术。如果在BIOS中,没有发现Virtualization字样,应该查询相应的CPU型号,已确认使用的CPU是否支持虚拟化。如果BIOS中虚拟化并没有开启,安装KVM之后,KVM模块仍然不能使用。

    (2)检测VT

     在BIOS中设置完毕之后,重新进入ubuntu系统,利用如下命令确认CPU是否支持虚拟化:


注意:如果输出为vmx或svm,就说明CPU支持虚拟化技术。其中vmx说明此CPU是Intel系列,采用了Intel-VT技术;svm则表示CPU是AMD系列,采用了AMD-V技术。

(3)安装KVM

apt-get install qemu-kvm ubuntu-vm-builder bridge-utils

安装完成之后,启用KVM内核模块:

modprobe kvmmodprobe kvm_intelmodprobe kvm_amd

注意:正常情况下,这些命令并不会有任何输出。如果有报错的情况,那么应该检查----BIOS中是否开启VT;CPU型号是否支持VT;某些系统安装完KVM之后,则表明重启才能正常使用。

安装完成之后,可以通过如下命令检查KVM是否安装成功。如果得到相应输出,则表明KVM已经安装成功。


当KVM模块安装完成之后,添加用户root到kvm组。


2.2.2 安装Libvirt