KVM虚拟化学习一——KVM快速入门

1.KVM简介

KVM虚拟化学习一——KVM快速入门

KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。 是x86架构且硬件支持虚拟化技术(如intel VT 或AMD-V)的Linux全虚拟化解决方案。 它包含一个为处理器提供底层虚拟化可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。KVM 可运行多种无需修改的 Windows 和 Linux 客机操作系统。 Red Hat Enterprise Linux 的 KVM 虚拟机监控程序使用 libvirt API 和 libvirt 的工具程序(如 virt-manager、virsh)进行管理。虚拟机以多线程的 Linux 进程形式运行,并通过上面提到的工具程序进行管理。

KVM虚拟化学习一——KVM快速入门


2.KVM特点及优势

  • 嵌入到Linux正式Kernel(提高兼容性)

  • 代码级资源调用(提高性能)

  • 虚拟机就是一个进程(内存易于管理)

  • 直接支持NUMA技术(提高扩展性)

  • 保持开源发展模式

  • 被红帽收购,更好的商业支持及服务保障

KVM虚拟化学习一——KVM快速入门

Red Hat虚拟化产品架构图


3.qemu、qemu-kvm、libvirt介绍

  • 关于qemu

    Qemu是一个独立的虚拟化解决方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直接模拟出另一个完全不同的系统环境,虚拟机的创建通过qemu-image完成。Qemu是一个模拟器,它向Guest OS模拟CPU和其他硬件,Guest OS认为自己和硬件直接打交道,其实是同Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件。

KVM虚拟化学习一——KVM快速入门

  • 关于qemu-kvm

  • Qemu是一套独立的虚拟化解决方案,KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器(Intel VT, AMDSVM)虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了另一个独立的虚拟化解决方案,不妨称之为:KVM+QEMU。Kvm-qemu可执行程序像普通Qemu一样:分配RAM,加载代码,不同于重新编译或者调用callingKQemu,它创建了一个线程(这个很重要);这个线程调用KVM内核模块去切换到用户模式,并且去执行VM代码。当遇到一个特权指令,它从新切换会KVM内核模块,该内核模块在需要的时候,像Qemu线程发信号去处理大部分的硬件仿真。
    这个体系结构一个比较巧妙的一个地方就是客户代码被模拟在一个posix线程,这允许你使用通常Linux工具管理。如果你需要一个有2或者4核的虚拟机,kvm-qemu创建2或者4个线程,每个线程调用KVM内核模块并开始执行。并发性(若果你有足够多的真实核)或者调度(如果你不管)是被通用的Linux调度器,这个使得KVM代码量十分的小。
    当一起工作的时候,KVM管理CPU和MEM的访问,QEMU仿真硬件资源(硬盘,声卡,USB,等等)当QEMU单独运行时,QEMU同时模拟CPU和硬件。

    KVM虚拟化学习一——KVM快速入门


  • 关于libvirt

  • libvirt 程序包是一个与虚拟机监控程序相独立的虚拟化应用程序接口,它可以与操作系统的一系列虚拟化性能进行交互。

    libvirt 程序包提供:

    • 一个稳定的通用层来安全地管理主机上的虚拟机。

    • 一个管理本地系统和连网主机的通用接口。

    • 在虚拟机监控程序支持的情况下,部署、创建、修改、监测、控制、迁移以及停止虚拟机操作都需要这些 API。尽管 libvirt 可同时访问多个主机,但 API 只限于单节点操作。

    libvirt 程序包被设计为用来构建高级管理工具和应用程序,例如 virt-manager 与 virsh 命令行管理工具。libvirt 主要的功能是管理单节点主机,并提供 API 来列举、监测和使用管理节点上的可用资源,其中包括 CPU、内存、储存、网络和非一致性内存访问(NUMA)分区。管理工具可以位于独立于主机的物理机上,并通过安全协议和主机进行交流。

    KVM虚拟化学习一——KVM快速入门


4.虚拟化工具(virsh、virsh-manager、virsh-install)

  • virsh

    virsh 是一个用于监控系统程序和客户机虚拟机器的命令行接口(CLI)工具。virsh 命令行工具建立在libvirt 管理 API,并作为可选择的一个运行方式来替代 qemu-kvm 命令和图形界面的 virt-manager 应用。无特权的用户以只读的方式使用 virsh 命令;有根用户权限的用户可以使用该命令的所有功能。virsh 是一个对虚拟环境的管理任务进行脚本化的理想工具。另外,virsh 工具是 virsh 客机域的一个主要管理接口,可以用于创造、暂停和关闭“域”,或罗列现有域。这一工具作为 libvirt-client 软件包中的一部分被安装。

  • virsh-manager

    virt-manager 是一个用于管理虚拟机器的简单的图形工具。它所提供的功能用以控制现有机器寿命周期、储备新机器、管理虚拟网络、访问虚拟机器的图形控制台并查看性能数据。这个工具包括在同名的软件包中,称为 virt-manager。

  • virsh-install

    virt-install 是一个用来配置新的虚拟机器的命令行工具。它通过使用连续的控制台、SPICE 或 VNC 客户/服务器成对图形,支持基于文本和图形的安装。安装介质可以是本地的,或已有的远程 NFS、HTTP 或 FTP 服务器。考虑到便捷的自动化安装,还可以通过配置此工具实现在无需人工参与的情况下运行,并在安装完成时快速启动客机。此工具以 python-virtinst 软件包的一部分进行安装。

● 参考

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/1222.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注