openstackOpenStack程序猿阵线联盟-汇总各类技术干货

OpenStack之计算虚拟化介绍

2017-11-14  本文已影响25人  慕慕她爸
  1. 是Intel VT和AMD-V技术
  2. 虚拟机可以直接使用Ring 0而不需要修改
  3. 查看CPU是否支持虚拟化可以使用下面的命令:
# grep "vmx" /proc/cpuinfo
# grep "svm" /proc/cpuinfo

其实现方式如下图所示。


全虚拟化

第三种是操作系统虚拟化,有以下特点:

  1. 允许操作系统内核拥有彼此隔离和分割的多用户空间实例,我们也把它叫做容器
  2. 基于linux内核中的namespace、chroot、cgroup实现
    其实现方式如下图所示。


    容器
名称 厂商 主CPU 目标CPU 主系统 目标系统
qemu Fabrice Bellard Intel,AMD,ARM x86,x86-64,ARM Windows,Linux,Mac OSX Linux
kvm Red Hat Intel,AMD x86,x86-64 Linux Linux,Windows
Xen 剑桥大学,Intel,AMD Intel,AMD x86,x86-64 Linux,Solaris,Windows Linux,Windows
Hyper-V 微软 Intel,AMD x86,x86-64 Windows Linux,Windows
Vmware ESXi Server VMware Intel,AMD x86,X86-64 裸机安装 Linux,Windows
Oracle VM Oracle Intel,AMD x86,x86-64 裸机安装 Linux,Windows

其中,qemu和kvm是虚拟化软件在开源领域实现的佼佼者,我们主要介绍这两款软件。
qemu有如下特点:

  1. 它是一种一种架构下(比如PC)下面运行另一种架构(如ARM)下的操作系统和程序
  2. 是x86架构,支持半虚拟化技术
  3. 可以实现让多个虚拟机是用同一个镜像,并为每一个虚拟机配置个性化硬件环境(比如网卡、磁盘、图形适配器)
    kvm的特点有以下几个方面:
  4. 是一款开源软件,全称是kernel-based vritual machine(基于内核的虚拟机)
  5. 是x86架构并且硬件支持虚拟化技术的Linux全虚拟化解决方案
  6. kvm还需要一个经过修改的的qemu软件(qemu-kvm),作为虚拟机上层控制和假面
  7. kvm能让多个虚拟机是用同一个镜像,并为每一个虚拟机配置个性化硬件环境(比如网卡、磁盘、图形适配器)
  8. 主流Linux内核中,比如2.6.20以上版本已经包含了kvm
    在实际使用当中,上述软件更多的作为驱动,针对kvm进行调用和管理时,我们就不得不用到大名鼎鼎的libvirt,libvirt库用C(支持 C++)实现,且包含对Python的直接支持,libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和应用程序接口(API),并且一些常用的虚拟机管理工具(如virsh、virt-install、virt-manager等)和OpenStack都在底层使用libvirt的应用程序接口。
    libvirt作为中间适配层,对上层用户空间屏蔽了底层技术的实现细节,它交互实现的基本框架如下所示


    libvirt交互架构图

    在涉及到libvirt时,有两个非常重要的概念需要清楚:

  9. 节点(Node),可以简单理解成一台物理机
  10. 域(Domain),可以理解成运行的一个客户操作系统实例,或者是叫做虚拟机
    而这基本关系如下所示


    节点和域的关系
上一篇 下一篇

猜你喜欢

热点阅读