KVM虚拟化基础
虚拟化概述
什么是虚拟化?
虚拟化是一个广泛的计算术语,用于运行软件,通常是多个操作系统,与单个系统上的其他程序隔离。虚拟化是通过使用管理程序完成的。这是一个软件层或子系统,可以控制硬件,并且可以在单个(通常是物理)机器上运行多个操作系统(称为VM(虚拟机)或guests)。这台装有操作系统的机器被称为HOST。有几种虚拟化方法:
-
完全虚拟化
完全虚拟化使用未经修改的客户操作系统版本。访客通过管理程序创建的通道来访问主机的CPU。因为guest虚拟机与CPU直接通信,所以这是最快的虚拟化方法。
-
半虚拟化
半虚拟化使用修改的客户操作系统。访客与管理程序进行通信。虚拟机管理程序将来自guest虚拟机的未修改的调用传递给CPU和其他接口,包括实际的和虚拟的。由于呼叫是通过管理程序路由的,因此此方法比完全虚拟化慢。
-
软件虚拟化(或仿真)
软件虚拟化使用二进制翻译和其他仿真技术来运行未经修改的操作系统。管理程序将来宾呼叫转换为主机系统可以使用的格式。由于所有的调用都被翻译,所以这个方法比虚拟化要慢。请注意,红帽不支持红帽企业Linux上的软件虚拟化。
虚拟化解决方案
红帽提供以下主要的虚拟化解决方案,每个解决方案都有不同的用户焦点和功能:
-
红帽企业Linux
红帽企业版Linux 7中包含了 创建,运行和管理虚拟机以及大量虚拟化工具和功能的能力。该解决方案支持每台主机有限的运行guest 虚拟机数量,以及有限的来宾类型。因此,红帽企业Linux上的虚拟化对于需要在多个环境中进行测试的开发人员,或者对于运行多个服务器的小型企业(没有严格的正常运行时间要求或服务级别协议(SLA))是有用的。重要本指南提供了关于红帽企业Linux上虚拟化的信息,并没有详细介绍其他虚拟化解决方案。
-
红帽虚拟化
红帽虚拟化(RHV)基于基于内核的虚拟机(KVM)技术,如红帽企业Linux上的虚拟化,但提供了一系列增强的功能。专为企业级可扩展性和性能而设计,可以从集中的图形界面管理整个虚拟基础架构,包括主机,虚拟机,网络,存储和用户。注意有关红帽企业版Linux和红帽虚拟化之间的差异的更多信息,请参阅红帽客户门户。运行大型部署或任务关键型应用程序的企业可以使用红帽虚拟化。适用于红帽虚拟化的大型部署的例子包括数据库,交易平台和消息系统,这些系统必须连续运行而不会停机。注意有关红帽虚拟化的更多信息,或下载完全支持的60天评估版本,请参阅http://www.redhat.com/en/technologies/virtualization/enterprise-virtualization。或者,请参阅红帽虚拟化文档套件。
-
红帽OpenStack平台
红帽OpenStack平台为创建,部署和扩展安全可靠的公共或私有OpenStack云提供了一个综合基础。注意有关红帽OpenStack平台的更多信息。
为什么要使用虚拟化?
虚拟化对服务器部署和个人台式电脑都有用。桌面虚拟化提供经济高效的集中管理和更好的灾难恢复。另外,通过使用连接工具(如ssh),可以远程连接到桌面。
当用于服务器时,虚拟化不仅可以使大型网络受益,还可以使用多台服务器进行部署。虚拟化提供实时迁移,高可用性,容错和简化的备份。
虚拟化成本
虚拟化的引入可能很昂贵,但是从长远来看,这往往会节省资金。考虑以下好处:
-
较少的权力
使用虚拟化消除了多个物理平台的需求。这相当于减少了机器运行和冷却的功率,从而降低了能源成本。购买多个物理平台的初始成本,加上机器的功耗和所需的冷却,通过使用虚拟化大幅削减。
-
少维护
如果在将物理系统迁移到虚拟化系统之前进行了适当的规划,则需要更少的时间来维护它们。这意味着需要花费更少的钱在零件和劳动力上。
-
已安装软件的使用寿命延长
老版本的软件可能无法直接在更新的裸机上运行。通过在更大,更快的系统上虚拟运行较旧的软件,可以延长软件的使用寿命,同时利用更新系统的更好性能。
-
可预测的成本
红帽企业Linux订阅以固定的速率提供对虚拟化的支持,使预测成本变得容易。
-
更小的空间
将服务器整合到更少的机器上意味着计算机系统需要更少的物理空间。
性能
较早的虚拟化版本仅支持单个CPU。结果,虚拟机器经历了明显的性能限制。这造成了虚拟化解决方案缓慢的长期误解。
这不再是这种情况。现代虚拟化技术大大提高了虚拟机的速度。基准测试表明,虚拟机可以像裸机系统一样有效运行典型的服务器应用程序:
- 红帽企业Linux 6.4和KVM记录了业界领先的TPC-C基准测试,其中IBM DB2数据库运行在完全虚拟化的x86环境中,提供了88%的裸机性能。由于资源需求,数据库以前只保留用于裸机部署。
- 行业标准的SAP销售和分销(SD)标准应用基准测试发现,与在相同硬件上运行的裸机系统相比,红帽企业Linux 6.2和KVM 的虚拟化效率高达85%。
- 红帽企业Linux 6.1和KVM 在标准性能评估公司(SPEC)记录的SPECvirt_sc2010基准测试中获得了创纪录的虚拟化性能,设置了任何已发布的SPECvirt结果的最佳虚拟性能标志。SPECvirt_sc2010度量度量虚拟化数据中心服务器中系统组件的端到端性能。
迁移
迁移描述了将访客虚拟机从一台主机移动到另一台主机的过程。这是可能的,因为虚拟机在虚拟环境中运行,而不是直接在硬件上运行。有两种迁移虚拟机的方式:在线和离线。
迁移类型
-
离线迁移
脱机迁移会暂停来宾虚拟机,然后将虚拟机内存的映像移动到目标主机。然后在目标主机上恢复虚拟机,释放源主机上虚拟机使用的内存。
-
实时迁移
实时迁移是将活动虚拟机从一台物理主机迁移到另一台物理主机的过程。请注意,这在所有红帽企业Linux版本之间是不可能的。
迁移虚拟机的好处
迁移对于:
-
负载均衡
当主机过载时,可以使用实时迁移将其一个或多个虚拟机迁移到其他主机。同样,可以使用脱机迁移来迁移未运行且倾向于过载的计算机。
-
升级或更改主机
当需要升级,添加或删除主机上的硬件设备时,可以将虚拟机安全地重新分配给其他主机。这意味着客人不会因为对主机所做的更改而遭受任何停机时间。
-
节能
可以将虚拟机重新分配给其他主机,并且卸载的主机系统可以关闭以节省能源并在低使用期间降低成本。
-
地理移民
虚拟机可以移动到其他物理位置以降低延迟或其他原因。
当迁移过程移动虚拟机的内存时,与虚拟机关联的磁盘卷也将被迁移。该过程使用实时块迁移来执行。
虚拟化到虚拟化迁移(V2V)
作为一种特殊类型的迁移,红帽企业Linux 7提供了将虚拟机从其他类型的虚拟机管理程序转换为KVM的工具。该virt-v2v
工具从Xen,其他版本的KVM和VMware ESX转换并导入虚拟机。
安全
KVM虚拟机使用以下功能来提高其安全性:
-
SELinux的
安全增强型Linux或SELinux为所有Linux系统提供强制访问控制(MAC),因此也受益于Linux客户机。在SELinux的控制下,所有的进程和文件都被赋予一个类型,并且通过各种类型的精细控制来限制它们在系统上的访问。SELinux限制了攻击者的能力,可以防止许多常见的安全漏洞,例如缓冲区溢出攻击和特权升级。
-
sVirt
sVirt是Red Hat Enterprise Linux 7中的一项技术,它集成了SELinux和虚拟化技术。它使用强制访问控制(MAC)来提高使用虚拟机时的安全性,并针对可能用于攻击主机或其他虚拟机的虚拟机管理程序错误加强系统。
灾难恢复
当系统虚拟化时,灾难恢复更快,更容易。在物理系统上,如果出现严重错误,通常需要完全重新安装操作系统,导致几个小时的恢复时间。但是,如果系统是虚拟化的,则由于迁移能力而更快。如果遵循实时迁移的要求,则可以在另一个主机上重新启动虚拟机,并且最长的可能延迟是恢复访客数据。而且,因为每个虚拟化系统都是完全独立的,所以一个系统的停机时间不会影响其他任何系统。
红帽虚拟化产品和功能介绍
本章介绍红帽企业版Linux 7中的主要虚拟化产品和功能。
红帽企业Linux中的KVM和虚拟化
KVM(基于内核的虚拟机)是适用于各种架构的Linux的完整虚拟化解决方案。它内置于标准的红帽企业Linux 7内核中,并与Quick Emulator(QEMU)集成在一起,可运行多个客户操作系统。Red Hat Enterprise Linux中的KVM管理程序使用libvirt API进行管理,并为libvirt(例如virt-manager
和virsh
)构建工具。虚拟机作为多线程的Linux进程执行并运行,由这些工具控制。
警告
QEMU和libvirt也支持使用QEMU Tiny Code Generator(TCG)的动态翻译模式,它不需要硬件虚拟化支持。Red Hat不支持这种配置。
有关此限制的更多信息,请参阅“ Red Hat Enterprise Linux 7虚拟化部署和管理指南”。
图3.1。KVM架构
红帽企业版7上的KVM支持的虚拟化功能包括:
-
过量使用
KVM管理程序支持系统资源的过度使用。过度使用意味着分配比系统上可用资源更多的虚拟CPU或内存,这样资源可以在一个guest虚拟机需要时动态交换,而另一个guest虚拟机不使用。这可以提高客户机使用主机资源的效率,并且可以使用户需要更少的主机。重要过度使用涉及系统稳定性的可能风险。有关KVM过度使用的更多信息,以及应采取的预防措施,请参阅“ 红帽企业版Linux 7虚拟化部署和管理指南”。
-
KSM
**KVM虚拟机管理程序使用的*内核相同页面合并(KSM)*使KVM来宾共享相同的内存页面。这些共享页面通常是通用的库或其他相同的,高度使用的数据。通过避免内存重复,KSM允许相同或相似客户操作系统的更高客户密度。注意有关KSM的更多信息,请参阅“ Red Hat Enterprise Linux 7虚拟化调整和优化指南”。
-
QEMU嘉宾代理
该QEMU访客代理客户机操作系统上运行,它使主机发出的来宾操作系统的命令。注意有关QEMU访客代理的更多信息,请参阅“ Red Hat Enterprise Linux 7虚拟化部署和管理指南”。
-
磁盘I / O限制
当多个虚拟机同时运行时,它们会通过使用过多的磁盘I / O来干扰整个系统的性能。KVM中的磁盘I / O限制提供了对从单个虚拟机发送到主机的磁盘I / O请求设置限制的功能。这可以防止虚拟机过度使用共享资源,并影响其他虚拟机的性能。注意有关使用磁盘I / O限制的说明,请参阅“ Red Hat Enterprise Linux 7虚拟化调整和优化指南”。
-
自动NUMA平衡
自动非均匀内存访问(NUMA)平衡移动任务,可以是更接近正在访问的内存的线程或进程。这提高了在非统一内存访问(NUMA)硬件系统上运行的应用程序的性能,而无需Red Hat Enterprise Linux 7 guest虚拟机所需的任何手动调整。注意有关自动NUMA平衡的更多信息,请参阅“ Red Hat Enterprise Linux 7虚拟化调优和优化指南”。
-
虚拟CPU热添加
虚拟CPU(vCPU)热添加功能可根据需要提高运行虚拟机的处理能力,而无需关闭客户机。分配给虚拟机的vCPU可以添加到正在运行的guest虚拟机,以满足工作负载的需求,或维护与工作负载相关的服务级别协议(SLA)。注意有关虚拟CPU热添加的更多信息,请参阅“ 红帽企业版Linux 7虚拟化部署和管理指南”。
-
嵌套的虚拟化
作为一项技术预览,红帽企业Linux 7.2及更高版本提供硬件辅助的嵌入式虚拟化。此功能使KVM客人可以充当管理程序并创建他们自己的客人。例如,这可以用于在虚拟机上调试虚拟机管理程序,或者在有限数量的物理机器上测试更大的虚拟部署。注意有关设置和使用嵌套虚拟化的更多信息,请参阅“红帽企业版Linux 7虚拟化部署和管理指南”。
-
KVM Guest 虚拟机兼容性
红帽企业Linux 7服务器有一定的支持限制。以下URL解释了红帽企业版Linux的处理器和内存量限制:对于主机系统:https://access.redhat.com/site/articles/rhel-limits对于KVM管理程序:https://access.redhat.com/site/articles/rhel-kvm-limits有关受支持的操作系统以及主机和来宾组合的完整图表,请参阅红帽客户门户注意要验证您的处理器是否支持虚拟化扩展,以及有关禁用虚拟化扩展的信息,请参阅“ Red Hat Enterprise Linux 7虚拟化部署和管理指南”。
LIBVIRT和LIBVIRT工具
的libvirt的包提供了管理程序的虚拟化独立API可以与各种操作系统的虚拟化功能进行交互。这包括:
-
一个虚拟化层来安全地管理主机上的虚拟机。
-
用于管理本地和联网主机的界面。
-
调配,创建,修改,监控,控制,迁移和停止虚拟机所需的API。虽然可以同时使用libvirt访问多个主机,但这些API仅限于单节点操作。
注意
只有管理程序支持的操作可以使用libvirt执行。
libvirt专注于管理单个主机,并提供API来枚举,监视和使用受管节点上可用的资源,包括CPU,内存,存储,网络和非一致内存访问(NUMA)分区。管理工具不需要与运行主机的机器在同一台物理机器上。在这种情况下,运行管理工具的机器使用安全协议与运行主机的机器通信。
红帽企业版Linux 7支持libvirt,并且包含基于libvirt的工具作为虚拟化管理的默认方法(如在Red Hat Virtualization Management中)。
该libvirt的包为GNU宽通用公共许可证下的免费软件。该libvirt的项目旨在提供一个长期稳定的C API到虚拟化管理工具,在不同的虚拟机管理程序技术之上运行。的libvirt的包支持红帽企业Linux 5,和KVM红帽企业Linux 5,红帽企业Linux 6和Red Hat企业Linux 7的Xen。
值得注意的是,libvirt的还提供了用于控制红帽企业Linux 7虚拟化的两种主要工具:virsh和virt-manager
虚拟化硬件设备
红帽企业版Linux 7上的虚拟化允许虚拟机将主机的物理硬件用作三种不同类型的设备:
- 虚拟化和仿真设备
- 准虚拟化设备
- 物理共享设备
这些硬件设备都显示为物理连接到虚拟机,但设备驱动程序以不同的方式工作。
虚拟化和仿真设备
KVM作为软件实现了许多虚拟机的核心设备。这些模拟硬件设备对于虚拟化操作系统至关重要。仿真设备是完全以软件存在的虚拟设备。
另外,KVM提供了仿真驱动程序。这些形成了虚拟机和Linux内核(管理源设备)之间的转换层。设备级别的指令完全由KVM管理程序翻译。任何可以被Linux内核识别的相同类型的设备(存储设备,网络设备,键盘或鼠标)都可以用作仿真驱动程序的后备源设备。
-
虚拟CPU(vCPU)
在Red Hat Enterprise Linux 7.2及更高版本上,主机系统最多可以有240个虚拟CPU(vCPU),无论主机CPU的数量如何,都可以呈现给客户使用。这在红帽企业Linux 7.0中是160。
-
仿真的系统组件
仿真以下核心系统组件以提供基本的系统功能:英特尔i440FX主机PCI桥接器PIIX3 PCI到ISA桥接器PS / 2鼠标和键盘EvTouch USB绘图板PCI UHCI USB控制器和虚拟USB集线器仿真的串行端口EHCI控制器,虚拟USB存储器和USB鼠标USB 3.0 xHCI主机控制器(Red Hat Enterprise Linux 7.3中的技术预览)
-
仿真的存储驱动程序
存储设备和存储池可以使用模拟驱动程序将存储设备连接到虚拟机。来宾使用模拟存储驱动程序来访问存储池。请注意,与所有虚拟设备一样,存储驱动程序不是存储设备。驱动程序用于将后备存储设备,文件或存储池卷连接到虚拟机。后备存储设备可以是任何支持的存储设备类型,文件或存储池卷。仿真的IDE驱动程序KVM提供两个仿真的PCI IDE接口。仿真的IDE驱动程序可用于将最多四个虚拟IDE硬盘或虚拟IDE CD-ROM驱动器的任意组合连接到每个虚拟机。仿真的IDE驱动程序也用于虚拟化的CD-ROM和DVD-ROM驱动器。仿真的软盘驱动器驱动程序仿真的软盘驱动器驱动程序用于创建虚拟软盘驱动器。
-
仿真声音设备
intel-hda
以下客户操作系统支持 仿真(Intel)HDA声音设备:红帽企业Linux 7,用于AMD64和Intel 64架构红帽企业Linux 4,5和6,用于32位AMD和Intel架构以及AMD64和Intel 64架构注意以下仿真声音设备也可用,但由于某些客户机操作系统的兼容性问题,因此不推荐使用该设备:ac97
,一个模拟英特尔82801AA AC97音频兼容声卡 -
仿真图形卡
提供以下仿真图形卡。Cirrus CLGD 5446 PCI显卡带有Bochs VESA扩展的标准VGA图形卡(硬件级别,包括所有非标准模式)客人可以使用独立计算环境简单协议(SPICE)协议或虚拟网络计算(VNC)系统连接到这些设备。
-
仿真的网络设备
提供以下两个仿真网络设备:该
e1000
设备模拟英特尔E1000网络适配器(英特尔82540EM,82573L,82544GC)。该rtl8139
设备模拟Realtek 8139网络适配器。 -
仿真看门狗设备
当机器过载或无响应时,可以使用看门狗来自动重启虚拟机。红帽企业版Linux 7提供了以下仿真看门狗设备:
i6300esb
,一个仿真的英特尔6300 ESB PCI看门狗设备。它在客户机操作系统Red Hat Enterprise Linux 6.0及以上版本中受支持,并且是推荐使用的设备。ib700
,一个仿真的iBase 700 ISA看门狗设备。该ib700
监视设备仅在使用红帽企业版Linux 6.2及以上的房间。在来宾操作系统Red Hat Enterprise Linux 6.2及以上版本的i386和x86_64体系结构中,两种看门狗设备均受支持。
半虚拟化设备
半虚拟化为客人在主机上使用设备提供了一种快速有效的通信方式。KVM使用virtio API作为虚拟机管理程序和guest虚拟机之间的一个层,为虚拟机提供半虚拟化设备。
一些准虚拟化设备减少了I / O延迟,并将I / O吞吐量提高到接近裸机级别,而其他半虚拟化设备为虚拟机增加了功能,而这些虚拟机不具备其他功能。建议对运行I / O密集型应用程序的虚拟机使用半虚拟化设备,而不要使用仿真设备。
所有virtio设备都有两部分:主机设备和来宾驱动程序。半虚拟化设备驱动程序允许来宾操作系统访问主机系统上的物理设备。
要使用此设备,必须在来宾操作系统上安装半虚拟化设备驱动程序。默认情况下,半虚拟化设备驱动程序包含在红帽企业Linux 4.7及更高版本,红帽企业Linux 5.4及更高版本以及红帽企业Linux 6.0及更高版本中。
注意
有关使用半虚拟化设备和驱动程序的更多信息,请参阅“ 红帽企业版Linux 7虚拟化部署和管理指南”。**
-
半虚拟化网络设备(virtio-net)
半虚拟化网络设备是一种虚拟网络设备,可为虚拟机提供网络访问,从而提高I / O性能和延迟。
-
半虚拟块设备(virtio-blk)
半虚拟化块设备是一种高性能虚拟存储设备,可为虚拟机提供存储,从而提高I / O性能和延迟。半虚拟化块设备由虚拟机管理程序支持,并且连接到虚拟机(软盘驱动器除外,必须进行仿真)。
-
半虚拟化控制器设备(virtio-scsi)
半虚拟化SCSI控制器设备为virtio-blk提供了更灵活和可扩展的选择。virtio-scsi guest可以继承目标设备的功能集,可以处理数百个设备,而virtio-blk只能处理28个设备。virtio-scsi完全支持以下客户机操作系统:红帽企业Linux 7红帽企业Linux 6.4及以上
-
半虚拟时钟
使用时间戳计数器(TSC)作为时钟源的用户可能会遇到计时问题。KVM通过为客户提供半虚拟化时钟,在没有固定时间戳计数器的主机周围工作。另外,半虚拟时钟协助客户运行睡眠(S3)或暂停RAM操作之后所需的时间调整。
-
准虚拟串行设备(virtio-serial)
半虚拟串行设备是一种面向字节流的字符流设备,在主机的用户空间和客户的用户空间之间提供了简单的通信接口。
-
气球装置(virtio-balloon)
气球设备可以指定虚拟机的一部分RAM没有被使用(一个称为膨胀气球的过程),这样内存就可以释放给主机(或主机上的其他虚拟机)使用。当虚拟机再次需要内存时,可以缩小气球,主机可以将RAM分配回虚拟机。
-
半虚拟随机数发生器(virtio-rng)
半虚拟化随机数生成器使虚拟机能够直接从主机收集熵或随机性,以用于加密数据和安全性。由于典型的输入(如硬件使用)不可用,因此虚拟机通常可能因为熵而不足。采购熵可能是耗时的。virtio-rng通过从主机直接向客户虚拟机注入熵来使得这个过程更快。
-
半虚拟化显卡(QXL)
半虚拟化图形卡与QXL驱动程序配合使用,可以有效地从远程主机显示虚拟机的图形。QXL驱动程序需要使用SPICE。
物理主机设备
某些硬件平台使虚拟机可以直接访问各种硬件设备和组件。虚拟化中的这个过程称为设备分配,或者也称为直通。
-
VFIO设备分配
虚拟功能I / O(VFIO)是红帽企业版Linux 7中的新内核驱动程序,为虚拟机提供了对物理硬件的高性能访问。VFIO将主机系统上的PCI设备直接连接到虚拟机,为客户提供独占访问PCI设备的一系列任务。这使得PCI设备能够以物理方式连接到来宾虚拟机的方式显示和运行。通过将设备分配移出KVM管理程序,VFIO改进了之前的PCI设备分配体系结构,并在内核级别实施设备隔离。VFIO提供更好的安全性,并与安全启动兼容。这是Red Hat Enterprise Linux 7中的默认设备分配机制。VFIO将红帽企业版Linux 7中分配的设备数量从32个增加到32个,而红帽企业版Linux 6中的最多8个设备。VFIO还支持分配NVIDIA GPU。
-
USB,PCI和SCSI直通
KVM管理程序支持将主机系统上的USB,PCI和SCSI设备连接到虚拟机。USB,PCI和SCSI设备分配使设备可以看起来像虚拟机物理连接一样。因此,它为客人提供独占访问这些设备的各种任务。
-
SR-IOV
SR-IOV(单根I / O虚拟化)是一种PCI Express(PCI-e)标准,它扩展了单个物理PCI功能,以共享其独立的虚拟功能(VF)的PCI资源。每个功能都可以通过PCI设备分配由不同的虚拟机使用。支持SR-IOV的PCI-e设备提供单根功能(例如,单个以太网端口),并将多个独立的虚拟设备呈现为唯一的PCI设备功能。每个虚拟设备可能都有自己独特的PCI配置空间,内存映射寄存器和各个基于MSI的中断。。
-
NPIV
N_Port ID虚拟化(NPIV)是一些光纤通道设备可用的功能。NPIV共享单个物理N_Port作为多个N_Port ID。NPIV为SR-IOV为PCIe接口提供的光纤通道主机总线适配器(HBA)提供了类似的功能。借助NPIV,虚拟机可以为存储区域网络(SAN)提供虚拟光纤通道启动器。NPIV可以为企业级存储解决方案提供高密度的虚拟化环境。
客户CPU模型
CPU模型定义哪些主机CPU功能暴露给来宾操作系统。KVM和libvirt包含许多处理器型号的定义,允许用户启用仅在较新CPU型号中可用的CPU功能。可以暴露给guest虚拟机的一组CPU功能取决于主机CPU,内核和KVM代码中的支持。
为确保具有不同CPU特性集的主机之间的虚拟机安全迁移,KVM默认情况下不会将主机CPU的所有功能公开给来宾操作系统。相反,CPU功能是基于所选的CPU模型公开的。如果虚拟机启用了给定的CPU功能,则无法将其迁移到不支持向客户端公开该功能的主机。
存储
虚拟机的存储从分配给虚拟机的物理存储抽象出来。它使用半虚拟化或仿真的块设备驱动程序连接到虚拟机。
存储池
甲存储池是由管理的文件,目录或存储设备libvirt的用于向虚拟机提供存储的目的。存储池分为存储虚拟机映像的存储卷或附加到虚拟机作为附加存储。
-
本地存储池
本地存储池直接连接到主机服务器。它们包括本地目录,直接连接的磁盘,物理分区和本地设备上的逻辑卷管理(LVM)卷组。本地存储池对于不需要迁移或大量虚拟机的开发,测试和小型部署非常有用。本地存储池可能不适合许多生产环境,因为它们不支持实时迁移。
-
联网(共享)存储池
网络存储池包括使用标准协议通过网络共享的存储设备。使用virt-manager在主机之间迁移虚拟机时需要网络存储,但在迁移时为可选
virsh
。网络存储池由libvirt管理。
存储卷
存储池分为存储卷。存储卷是物理分区,LVM逻辑卷,基于文件的磁盘映像以及由libvirt处理的其他存储类型的抽象。存储卷作为本地存储设备呈现给虚拟机,而不管底层硬件如何。
仿真存储设备
虚拟机可以呈现一系列由主机模拟的存储设备。每种类型的存储设备都适合特定的使用情况,从而实现最大的灵活性和与客户操作系统的兼容性。
-
为Virtio-SCSI
对于使用大量磁盘或高级存储功能(如TRIM)的guest虚拟机,virtio-scsi是推荐的半虚拟化设备。在使用Red Hat Enterprise Linux 7以外的操作系统的guest虚拟机上可能需要安装guest虚拟机驱动程序。
-
为Virtio-BLK
virtio-blk是一个半虚拟化的存储设备,适用于向客户展示图像文件。virtio-blk可以为虚拟机提供最佳的磁盘I / O性能,但功能比virtio-scsi少。
-
IDE
对于不支持virtio驱动程序的传统guest虚拟机,建议使用IDE。IDE性能低于virtio-scsi或virtio-blk,但是它与不同的系统广泛兼容。
-
光盘
ATAPI CD-ROM和virtio-scsi CD-ROM是可用的,并且使客人可以使用ISO文件或主机的CD-ROM驱动器。virtio-scsi CD-ROM可以与安装了virtio-scsi驱动程序的guest虚拟机一起使用。ATAPI光盘提供更广泛的兼容性,但性能较低。
-
USB大容量存储设备和软盘
当需要可移动介质时,仿真的USB大容量存储设备和软盘可用。USB大容量存储设备比软盘容量大,因此比软盘更受欢迎。
主机存储
磁盘映像可以存储在连接到主机的一系列本地和远程存储技术上。
-
图像文件
图像文件只能存储在主机文件系统上。映像文件可以存储在本地文件系统(如ext4或xfs)或网络文件系统(如NFS)上。像libguestfs这样的工具可以管理,备份和监视文件。KVM上的磁盘映像格式包括:生的原始图像文件包含没有额外元数据的磁盘的内容。如果主机文件系统允许的话,原始文件可以是预先分配的,也可以是稀疏的。稀疏文件按需分配主机磁盘空间,因此是精简配置的一种形式。预分配的文件已完全配置,但具有比稀疏文件更高的性能。当磁盘I / O性能非常关键,并且很少需要通过网络传输映像文件时,原始文件是可取的。qcow2,qcow2映像文件提供了许多高级磁盘映像功能,包括备份文件,快照,压缩和加密。它们可以用来从模板图像实例化虚拟机。通过网络传输qcow2文件通常效率更高,因为只有虚拟机写入的扇区才被分配到映像中。红帽企业版Linux 7支持qcow2版本3的图像文件格式。
-
LVM卷
逻辑卷(LV)可用于磁盘映像,并使用系统的LVM工具进行管理。LVM提供比文件系统更高的性能,因为其更简单的块存储模型。LVM精简配置为LVM卷提供了快照和高效的空间使用,可以用作迁移到qcow2的替代方案。
-
主机设备
主机设备(如物理CD-ROM,原始磁盘和逻辑单元号(LUN))可以呈现给来宾。这使得SAN或iSCSI LUN以及本地CD-ROM介质能够被客户使用,性能良好。在SAN上而不是在主机上完成存储管理时,可以使用主机设备。
-
分布式存储系统
Gluster卷可以用作磁盘映像。这使得网络上的高性能集群存储成为可能。红帽企业Linux 7包含对GlusterFS磁盘映像的本地支持。这使KVM主机能够从GlusterFS卷启动虚拟机映像,并将来自GlusterFS卷的映像用作虚拟机的数据磁盘。与GlusterFS FUSE相比,KVM的原生支持提供了更高的性能。
虚拟网络
虚拟客户与任何网络的连接使用物理主机的软件网络组件。这些软件组件可以通过使用libvirt
虚拟网络配置来重新安排和重新配置。因此,主机充当虚拟网络交换机,可以以许多不同的方式来配置虚拟网络交换机以适应客户的网络需求。
默认情况下,单个主机上的所有guest虚拟机都连接到同名的libvirt虚拟网络default
。此网络上的访客可以进行以下连接:
-
彼此和虚拟主机
入站和出站流量都是可能的,但受到来宾操作系统的网络堆栈中的防火墙以及连接到访客接口的libvirt网络过滤规则的影响。
-
与虚拟主机之外的网络上的其他主机一起使用
只有出站流量是可能的,受到网络地址转换(NAT)规则以及主机系统的防火墙的影响。
但是,如果需要,可以将访客接口设置为以下模式之一:
-
隔离模式
客户端连接到不允许虚拟化主机之外的任何流量的网络。
-
路由模式
客户端连接到一个网络,该客户端与外部主机之间路由流量,而不执行任何NAT。这将启用传入连接,但需要额外的路由表条目用于外部网络上的系统。
-
桥接模式
客户端连接到桥接设备,该设备也直接连接到连接到本地以太网的物理以太网设备。这使得guest虚拟机在物理网络上直接可见,从而启用传入连接,但不需要任何额外的路由表条目。
对于从虚拟机进行基本出站的网络访问,通常不需要额外的网络设置,因为default
网络与libvirt包一起安装,并在libvirtd
服务启动时自动启动。如果需要更高级的功能,可以使用virsh或virt-manager创建和配置额外的网络,并且可以编辑XML配置文件以使用其中一个新网络。
入门教程
必需的包
在使用虚拟化之前,必须在计算机上安装一套基本的虚拟化软件包。
程序4.1。使用安装虚拟化软件包yum
要在Red Hat Enterprise Linux的,在使用虚拟化qemu-kvm
,qemu-img
以及libvirt
必须安装的软件包。这些在主机系统上提供用户级KVM仿真器,磁盘镜像管理器和虚拟化管理工具。
-
安装qemu-kvm,qemu-img,libvirt和virt-manager软件包:
1
yum install qemu-kvm qemu-img libvirt virt-manager
使用VIRTUAL MACHINE MANAGER创建虚拟机
虚拟机管理器(也称为 virt-manager**)是在红帽企业版Linux中快速部署虚拟机的图形化工具。在本教程中,您将熟悉其基本功能,并能够使用** Virtual Machine Manager创建虚拟机。
虚拟机管理器简介
要打开虚拟机管理器,请单击应用程序 → 系统工具 → 虚拟机管理器 ; 或按超级键→键入virt-manager
→按下Enter键。
下图显示了Virtual Machine Manager界面。该界面使您可以从一个中央位置控制所有虚拟机。
图4.1。虚拟机管理器界面
界面常用的元素包括:
-
创建新的虚拟机:单击以创建新的虚拟机。
-
虚拟机:配置的连接和与之关联的所有访客虚拟机的列表。虚拟机创建时,在此处列出。guest虚拟机正在运行时,动画图表会在** CPU使用率列中显示guest虚拟机的CPU使用情况**。
从此列表中选择虚拟机后,使用以下按钮来控制所选虚拟机的状态:
- 打开:在新窗口中打开访客虚拟机控制台和详细信息。
- 运行:打开虚拟机。
- 暂停:暂停虚拟机。
- 关机:关闭虚拟机。单击箭头将显示一个下拉菜单,其中包含几个关闭虚拟机的选项,包括重新启动,关机,强制重置,强制关闭和保存。
右键单击虚拟机将显示具有更多功能的菜单,其中包括:
- 克隆:克隆虚拟机。
- 迁移:将虚拟机迁移到其他主机。
- 删除:删除虚拟机。
使用Virtual Machine Manager创建虚拟机
按照以下步骤在Virtual Machine Manager上创建一个Red Hat Enterprise Linux 6虚拟机。
程序4.2。使用Virtual Machine Manager创建客户虚拟机
-
打开虚拟机管理器
点击应用程序 → 系统工具 → 虚拟机管理器
要么
按超级键,输入
virt-manager
,然后按Enter键 -
创建一个新的虚拟机
点击 新建VM向导。
-
指定安装方法
通过选择安装新虚拟机的方法来启动创建过程。
图4.2。选择安装方法
对于本教程,请选择本地安装媒体(ISO映像)。此安装方法使用安装盘的映像(在本例中为
.iso
文件)。点击转发继续下一步。 -
找到安装媒体
- 选择该
Use ISO Image
选项。 - 单击浏览 → 浏览本地按钮。
- 在机器上安装虚拟软件包中找到下载的ISO 。
- 选择ISO文件,然后单击打开。
- 确保Virtual Machine Manager正确检测到操作系统类型。如果不是,取消
Automatically detect operating system based on install media
选择的Linux从操作系统类型下拉和红帽企业Linux 6从版本下拉。
图4.3。本地ISO映像安装
- 选择该
-
配置内存和CPU
您可以使用向导的第3步来配置分配给虚拟机的内存量和CPU数量。该向导显示可用于分配的CPU数量和内存量。
在本教程中,保留默认设置,然后单击前进。
图4.4。配置CPU和内存
-
配置存储
使用向导的第4步,可以将存储分配给来宾虚拟机。该向导显示存储选项,包括在主机上存储虚拟机的位置。在本教程中,保留默认设置,然后单击前进。
图4.5。配置存储
-
名称和审查
使用向导的步骤5,可以为虚拟机创建一个名称并配置网络设置。在本教程中,输入虚拟机的名称,验证设置,然后单击完成。Virtual Machine Manager将创建一个具有指定硬件设置的虚拟机。
图4.6。命名和验证
在Virtual Machine Manager创建红帽企业版Linux 6虚拟机之后,虚拟机的窗口将打开,所选操作系统的安装将开始。按照红帽企业版Linux 6安装程序中的说明完成虚拟机操作系统的安装。
探索访客虚拟机
您可以通过在
Virtual Machine Manager
窗口中选择一个虚拟机并单击
Open
来查看虚拟机的控制台。您可以像控制物理系统一样从控制台操作红帽企业版Linux 6虚拟机。
图4.7。来宾虚拟机控制台
- 显示图形控制台:显示虚拟机的显示。虚拟机可以像控制物理机一样从控制台操作。
- 显示虚拟硬件详细信息:显示有关客户正在使用的虚拟硬件的详细信息。其中包括基本系统详细信息,性能,处理器,内存和引导设置以及系统虚拟设备的详细信息。
- 运行:打开虚拟机。
- 暂停:暂停虚拟机。
- 关机:关闭虚拟机。单击箭头将显示一个下拉菜单,其中包含几个关闭虚拟机的选项,包括重新启动,关机,强制重置,强制关闭和保存。
- 管理快照:启用创建,运行和管理虚拟机的快照。
- 发送密钥:向虚拟机发送Ctrl + Alt + Backspace,Ctrl + Alt + Delete,Ctrl + Alt + F1,PrintScreen等组合键。
- 全屏:将虚拟机切换到全屏视图。
虚拟化工具
virsh
virsh是用于管理虚拟机管理程序和来宾虚拟机的命令行界面(CLI)工具,是控制红帽企业版Linux 7虚拟化的主要手段。其功能包括创建,配置,暂停,列出和关闭虚拟机,以及管理虚拟网络,或加载虚拟机磁盘映像。因此,它是创建虚拟化管理脚本的理想选择。没有root权限的用户也可以使用该virsh
命令,但是处于只读模式。 virsh
作为libvirt-client包的一部分进行安装。
VIRT-MANAGER中
虚拟机管理器(也称为virt-manager)是一种用于管理虚拟机的轻量级图形工具,比用户更友好,功能更强大virsh
。它使用户能够使用GUI执行的动作相当于数的virsh
和virt-
的命令,如控制现有机器的生命周期,供应新的机器,管理虚拟网络,访问虚拟机的图形控制台和查看性能统计数据。
VIRT-INSTALL
irt-install是用于配置新虚拟机的命令行工具。它支持基于文本和图形化安装,使用串行控制台,SPICE或VNC客户机 - 服务器对图形。安装介质可以是本地的,也可以远程存在于NFS,HTTP或FTP服务器上。该工具还可以配置为无人值守运行,并使用kickstart方法为guest虚拟机做好准备,从而实现安装的自动化。该工具包含在virt-install软件包中。
GUESTFISH
guestfish是用于检查和修改虚拟机磁盘映像的外壳和命令行实用程序,因为这些操作不能使用virsh
或执行virt-manager
。该guestfish
工具使用libguestfs库并公开guestfs
API 提供的所有功能。
警告
使用guestfish
上运行的虚拟机可能导致磁盘映像损坏。如果正在运行的虚拟机正在使用磁盘映像,请使用guestfish
带有--ro
(只读)选项的命令。
GNOME BOXES
Boxes是一个轻量级的图形桌面虚拟化工具,用于查看和访问虚拟机和远程系统。它可以作为一个更容易使用的替代方案virt-manager,但提供更少的客人管理选项。Boxes提供了一种以最少配置从桌面测试不同操作系统和应用程序的方法。虚拟系统可以手动安装,也可以使用快速安装功能进行安装,该功能可以自动预配置具有最佳设置的虚拟机。这个工具是由gnome-box包提供的。
其他有用的工具
以下工具可用于使用主机上的命令访问和修改客户机虚拟机的磁盘映像。
-
用于在主机上安装虚拟机文件系统和磁盘映像的命令行实用程序。要以这种方式卸载内容,请使用
guestunmount
Both工具作为libguestfs-tools-c软件包的一部分。警告使用guestmount
在--rw
(读/写)模式来访问当前正在使用由客户磁盘可能导致磁盘损坏。不要使用guestmount
在--rw
(读/写)上的虚拟机实时模式。如果正在使用磁盘映像,请使用guestmount
带有--ro
(只读)选项的命令。 -
用于快速构建和定制新虚拟机的命令行实用程序。该工具作为libguestfs-tools软件包的一部分安装在Red Hat Enterprise Linux 7.1及更高版本中。
-
一个命令行实用程序,可用于快速查看指定虚拟机的磁盘或磁盘映像中的一个或多个文件的内容。该工具作为libguestfs-tools软件包的一部分进行安装。
-
用于将文件或目录从主机复制到来宾,以及从来宾到主机的命令行实用程序。这些工具是作为libguestfs-tools包的一部分安装的。警告使用
virt-copy-in
仅关闭未使用的另一个磁盘编辑工具的虚拟机。使用virt-copy-in
活动guest图像或正在编辑可能会导致磁盘损坏在虚拟机中的图像上。 -
用于自定义虚拟机磁盘映像的命令行实用程序。virt-customize可用于安装软件包,编辑配置文件,运行脚本和设置密码。该工具作为libguestfs-tools软件包的一部分安装在Red Hat Enterprise Linux 7.1及更高版本中。
-
一个命令行实用程序,用于显示虚拟机的实际物理磁盘使用情况,与命令行实用程序类似
df
。请注意,该工具在远程连接中不起作用。它作为libguestfs-tools软件包的一部分进行安装。 -
一个命令行实用程序,用于显示两个虚拟机的文件系统之间的差异。这可以用于例如发现哪些文件在快照之间改变。该工具作为libguestfs-tools软件包的一部分安装在Red Hat Enterprise Linux 7.1及更高版本中。
-
用于编辑指定虚拟机上存在的文件的命令行实用程序。该工具作为libguestfs-tools软件包的一部分进行安装。警告使用
virt-edit
活的虚拟机可能会在虚拟机磁盘损坏。尽管该virt-edit
命令将尝试阻止用户在实时虚拟机上编辑文件,但不能保证捕获所有实例。不要virt-edit
在活动的虚拟机上使用。 -
用于发现磁盘映像或虚拟机中的文件系统,分区,逻辑卷及其大小的命令行实用程序。一个常见的用法是在shell脚本中,遍历磁盘映像中的所有文件系统。该工具作为libguestfs-tools软件包的一部分进行安装。注意这个工具取代
virt-list-filesystems
和virt-list-partitions
。 -
一个命令行实用程序,可以格式化来宾图像文件,也可以在主机上逻辑卷。该工具作为libguestfs-tools软件包的一部分进行安装。警告使用
virt-format
仅关闭未使用的另一个磁盘编辑工具的虚拟机。使用virt-format
活动guest图像或正在编辑可能会导致磁盘损坏在虚拟机中的图像上。 -
一个命令行实用程序,可以检查虚拟机或磁盘映像以确定其操作系统的版本和其他信息。它也可以生成XML输出,可以将其输出到其他程序中。请注意,
virt-inspector
一次只能检查一个虚拟机。该工具作为libguestfs-tools软件包的一部分进行安装。 -
用于列出来自虚拟机的日志文件的命令行工具。该工具作为libguestfs-tools软件包的一部分安装在Red Hat Enterprise Linux 7.1及更高版本中。
-
一个列出虚拟机内的文件和目录的命令行工具。该工具作为libguestfs-tools软件包的一部分进行安装。
-
一个命令行实用程序,用于根据tar归档文件或目录中的文件创建文件系统。它类似于像工具
mkisofs
和mksquashfs
,但它可以创建一个通用的文件系统类型,如ext2,ext3和NTFS,创造可以等于或大于它是基于文件的尺寸越大,文件系统的大小。这个工具是作为libguestfs-tools包的一部分提供的。 -
与virt-v2v结合使用时,可以将物理机转换为KVM虚拟机。请注意,virt-p2v仅在Red Hat Enterprise Linux 7.3和更高版本中受支持。
-
一个命令行实用程序,为不可启动的虚拟机和磁盘映像提供了一个rescue shell和一些简单的恢复工具。它可以在已知libvirt的任何虚拟机上运行,也可以直接在磁盘映像上运行。该工具作为libguestfs-tools软件包的一部分进行安装。警告使用
virt-rescue
上运行的虚拟机可能会在虚拟机磁盘损坏。virt-rescue
试图阻止它自己在运行虚拟机上的使用,但不能捕获所有的情况。与--ro
(只读)选项使用该命令不会导致磁盘损坏,但可能会给出奇怪或不一致的结果。避免virt-rescue
在正在运行的虚拟机上使用。 -
一个命令行实用程序来调整虚拟机磁盘的大小,并调整或删除虚拟机磁盘上的所有分区。它通过复制访客映像并保持原始磁盘映像不变。该工具作为libguestfs-tools软件包的一部分进行安装。重要使用
virt-resize
上运行的虚拟机可以给不一致的结果。建议在尝试调整它们的大小之前关闭虚拟机。 -
用于制作虚拟机磁盘(或任何磁盘映像)的精简配置的命令行实用程序。该工具可以将磁盘映像中的可用空间转换为主机上的可用空间。
-
用于重置,自定义或取消配置虚拟机的命令行实用程序,以准备创建克隆的模板。该工具作为libguestfs-tools软件包的一部分进行安装。重要运行之前,必须关闭虚拟机
virt-sysprep
。要保留虚拟机的现有内容,请在运行之前快照,复制或克隆磁盘virt-sysprep
。 -
用于将虚拟机磁盘映像目录打包为tar包的命令行归档工具,以及将未压缩的tarball分别解压缩为虚拟机磁盘映像或指定的libvirt guest虚拟机。这些工具是作为libguestfs-tools包的一部分安装的。警告
virt-tar-in
在活动虚拟机上 使用命令可能会导致虚拟机中的磁盘损坏。在使用此命令之前,必须先关闭虚拟机。 -
virt-top
top
与之 类似的命令行实用程序,显示与来宾虚拟机相关的统计信息。这个工具包含了virt-top包。见man virt-top
细节。 -
用于将虚拟机从外部虚拟机管理程序转换为在由libvirt管理的KVM上运行的命令行实用程序。目前,virt-v2v可以转换运行在Xen和VMware ESX上的红帽企业Linux和Windows客户端。virt-v2v工具作为virt-v2v软件包的一部分安装在Red Hat Enterprise Linux 7.1及更高版本中。
-
一个轻量级实用程序,用于通过VNC和SPICE协议显示虚拟机的图形控制台。这个工具是由virt-viewer包提供的。
-
一个shell脚本,用于检测程序是否在虚拟机中运行。这个工具由virt-what包提供。
-
该VIRT-谁包的是,查询一个红帽企业版Linux主机代理的libvirt为客人的UUID。然后它将这些数据传递给本地权利服务器,用于颁发证书。这个工具由virt-who包提供。
-
virt-xml-validate
一个命令行工具,用于验证libvirt XML文件是否符合发布的模式。该工具作为libvirt-client包的一部分进行安装。见
man virt-xml-validate
细节。