zoukankan      html  css  js  c++  java
  • CentOS 7部署KVM之一架构介绍

    ----本文修改整理自网络,非本人原创。

    虚拟化介绍

    虚拟化(Virtualization)是一种资源管理技术,将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来。打破实体结构间的不可切割的障碍,使的用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

    虚拟化技术中大多数人接触的最早且最多的应该就是虚拟机(Virtual Machine),它是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。所谓完整的计算机系统简单点解释就是一台含有CPU、内存、硬盘、显卡、网卡、光驱等设备的电脑,只是对于虚拟机来说这些设备都是通过软件模拟出来的。

    虚拟化分类

    全虚拟化(Full Virtualization)模拟出来的虚拟机中的操作系统是跟底层的硬件完全隔离的,虚拟机中的所有的硬件资源都是通过虚拟化软件基于硬件来模拟的,代表产品有VMware ESXIKVM
    这样的好处就是每台虚拟机有一个完全独立和安全的运行环境,虚拟机中的操作系统也不需要做任何修改,并且易于迁移。在操作全虚拟化的虚拟机的时候,使用者并不知道这是一台虚拟机。
    缺点就是由于虚拟机的资源全部都需要通过虚拟化软件来模拟,会损失一部分的性能。


    半虚拟化(Para Virtualization)架构跟全虚拟化基本一样,但是为了提高性能和效率,需要修改虚拟机中的操作系统来集成一些虚拟化方面的代码,通过这种方法来减小虚拟化软件的负载。代表作有Microsoft的Hyper-VXEN
    这样的好处就是虚拟化整体的性能会更好,因为修改后的虚拟机操作系统承载了部分虚拟化软件的工作,缺点就是由于要修改虚拟机的操作系统,用户知道使用的环境是虚拟化环境,而且兼容性比较差,用户体验也比较麻烦(得去找集成过虚拟化代码的操作系统)。

     

    Hypervisor介绍

    Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。

     

    Hypervisor分类

    通常来讲Hypervisor分为两类:原生型宿主型

    原生型(Native or Bare-metal)又称裸机型,Hypervisor作为一个很薄的操作系统(操作系统也是软件,只不过它是一个比较特殊的软件)直接运行在硬件之上来控制硬件资源并管理虚拟机。比较熟知的有VMwareESXiMicrosoftHyper-V等。

    宿主型(Hosted)又称托管型,Hypervisor运行在传统的操作系统上,同样可模拟出一整套虚拟硬件平台。比较熟知的为VMwareWorkstationOracleVirtual Box等。
    从性能角度来看,不论原生型还是宿主型都会有性能损耗,但宿主型比原生型的损耗更大,所以企业生产环境中基本都使用的是原生型Hypervisor,宿主型的Hypervisor一般都用到实验或测试环境中。

    KVM介绍

    KVM(Kernel-based Virtual Machine)是一种基于Linux x86硬件平台的开源全虚拟化解决方案。KVM需要CPU的虚拟化指令集支持,如Intel的Intel VT(vmx指令集)或AMD的AMD-V(svm指令集)。

    KVM作为Hypervisor,主要涵盖有两个重要组成部分,一个是Linux内核的KVM模块,另外一个是提供硬件仿真的QEMU(Quick Emulator)。 另外为了KVM整个虚拟化环境能够易于管理,还需要Libvirtd服务和基于Libvirt开发出来的管理工具。

    KVM虚拟化体系结构

    KVM基本知识介绍

     

    KVM模块

    严格意义上讲,KVM仅仅只是一个Linux模块,他的主要功能在提供物理CPU到虚拟CPU的一个映射,提供虚拟机的硬件加速来提升虚拟机的性能。

    KVM模块本身没办法作为一个Hypervisor模拟出一个完整的虚拟机,并且我们也没办法直接对Linux内核进行操作,所以需要借助其他的软件来进行,QEMU就扮演着一个这样的角色。

     

    QEMU

    QEMU本身就是一个宿主型的Hypervisor,就算是没有KVM他一样也可以通过模拟来创建和管理虚拟机。但是上面也提到过宿主型的Hypervisor在性能上损耗很大,所以QEMU又借助了KVM的模块来提升虚拟化的整体性能。

     

    Libvirt

    Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的API。libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。Libvirt也支持多种虚拟化平台如KVM, Xen, ESX和QEMU等。

     

    Libvirtd

    Libvirtd是运行的在KVM主机上的一个服务端守护进程,为KVM以及它的虚拟机提供本地和远程的管理功能,基于Libvirt开发出来的管理工具可通过Libvirtd服务来管理整个KVM环境。Libvirt就是一堆标准的库文件,给多种虚拟化平台提供一个统一的编程接口,相当于管理工具需要基于Libvirt的标准接口来进行开发,在开发完成后的工具可支持多种虚拟化平台。而Libvirtd是一个在Host主机上运行着的守护进程,在管理工具和KVM之间起到一个桥梁的作用,管理工具可通过Libvirtd服务来管理整个虚拟化环境。

     

    Virsh

    virsh就是基于Libvirt开发的一个命令行的KVM管理工具,可以使用直接模式(Direct Mode)或交互模式(Interactive Mode)来实现虚拟机的管理,如创建、删除、启动、关闭等。

    Virsh-Manager

    Virt-Manager同样也是一个KVM管理工具,不过它是基于图形界面的。

  • 相关阅读:
    每日一篇文献:Robotic pick-and-place of novel objects in clutter with multi-affordance grasping and cross-domain image matching
    每日一篇文献:Intuitive Bare-Hand Teleoperation of a Robotic Manipulator Using Virtual Reality and Leap Motion
    每日一篇文献:Virtual Kinesthetic Teaching for Bimanual Telemanipulation
    HEBI Robotic Arm VR Teleoperation
    「iQuotient Case」AR device teleoperated robotic arm
    VR and Digital Twin Based Teleoperation of Robotic Arm
    HEBI Robotic Arm VR Teleoperation
    Human Robot Interaction
    Immersive Teleoperation Project
    机器人演示学习
  • 原文地址:https://www.cnblogs.com/ebay/p/6541739.html
Copyright © 2011-2022 走看看