在构建虚拟化环境时,了解KVM和Hyper-V之间的区别对于优化组织的硬件资源利用至关重要。在这篇博客文章中,我们将简要解释KVM和Hyper-V是什么,然后比较这两种虚拟化器。
本比较评估的关键点如下:
- 可扩展性和性能
- 管理工具
- 内存配置选项
- 安全特性
- 热迁移能力
什么是KVM虚拟化器?
KVM是Kernel-based Virtual Machine的缩写。它是Linux内核中的一个开源全虚拟化解决方案。KVM运行在x86处理器上,为用户提供虚拟化功能,以构建虚拟化环境。
基于内核的虚拟机虚拟化器最初在2007年作为Linux 2.6.20及更高版本的的一部分发布。KVM支持各种操作系统,如Linux、Windows、macOS和Haiku,提供硬件辅助虚拟化功能。该解决方案还提供了针对Windows、OpenBSD、FreeBSD等系统的 para-虚拟化。
KVM可以在大多数支持硬件辅助虚拟化的Linux机器上使用。要安装KVM,您需要从Linux软件仓库下载所需的包,以及kvm-qemu和一个管理工具(可选)。
最常见的基于KVM的虚拟化管理工具包括Oracle Linux虚拟化管理器、Proxmox VE和Red Hat虚拟化管理器。
什么是Hyper-V?
Hyper-V 是微软推出的一个本地虚拟化平台,它支持虚拟机(VM)的创建和使用。Hyper-V 可以在基于 x86-64 的系统上运行,该系统安装有 Windows 操作系统。
微软的 Hyper-V 最初是在 Windows Server 2008 中作为一部分发布的。这个虚拟化平台是 Windows Server 系统的一个可选择的下载组件。此外,Hyper-V 还有一个独立的免费版,功能有限,只支持命令行界面(CLI)。
使用 Hyper-V,您可以获得一组相互隔离的虚拟机。这得益于特定的父(根)和子分区机制。父分区能够直接访问硬件,并运行虚拟化管理栈。然后,这个分区创建子分区来托管客户机操作系统。
KVM 与 Hyper-V 的详细比较
在我们对 KVM 和 Hyper-V 进行了总体差异的 highlight 之后,我们可以进一步进行更详细的比较。查看下面的信息,以便您可以选择最符合您需求的解决方案。
可扩展性和性能
在 KVM 与 Hyper-V 的比较中,可扩展性和性能可以说是两个最重要的方面。好消息是,在这方面两者竞争的结果是平局——Hyper-V 和 KVM 都具有高性能和出色的可扩展性。
KVM 虚拟化软件基于 Linux 内核,这是一个开源解决方案。这意味着 KVM 可以在广泛的硬件上正确运行。相同的 Linux 内核实现了高效率和操作速度。
另一方面,KVM的开源性质可能导致一些情况问题,解决这些问题需要时间和精力。不过,KVM的在线知识库非常丰富,意味着您很可能快速找到解决方案。
另一方面,Hyper-V是微软的专有虚拟机监控程序,与Windows Server操作系统捆绑在一起,优化以在大多数硬件上提供最大性能。Hyper-V的可扩展性还允许您在主机上运行多个虚拟机,并根据需求垂直和水平扩展虚拟工作负载。
Hyper-V的主要缺点是它对非Windows操作系统的支持有限。结合某些管理复杂性以及潜在的兼容性问题,如果您没有所需的技术经验,Hyper-V也可能具有挑战性。
管理工具
由于Hyper-V和KVM是为不同的底层平台设计的,它们的管理工具也有所不同。
对于Hyper-V的管理,您可以使用Windows PowerShell命令行界面。如果您想要带有图形用户界面的解决方案,您可能想要使用Windows Admin Center或Hyper-V Manager。
此外,组织可以通过微软提供的原生企业级管理工具:System Center Virtual Machine Manager (VMM) 来充分利用Hyper-V的多项优势。管理员通常喜欢使用VMM来管理Hyper-V环境,因为其方便且信息丰富的基础架构视图以及可扩展性能力。不过,使用Virtual Machine Manager需要购买专用的许可证。
你可以仅使用CLI执行所有的KVM管理任务,就像通过PowerShell管理Hyper-V一样。不过,那些更喜欢图形界面来管理KVM基础设施的人可能想尝试像Morpheus、virt-manager或Cloonix等解决方案,等等。
Hyper-V和KVM有一个重要的共同特性:广泛的硬件兼容列表,这提供了很大的灵活性。
对于KVM,你可以有效地使用任何存储(包括直接连接存储和网络连接存储)。相应地,Hyper-V可以与任何支持Windows的存储一起工作。请记住,如果你计划将虚拟机文件存储在NAS或网络文件共享上,你需要配置服务器消息块协议3.0。
内存配置选项
内存使用灵活性是KVM和Hyper-V共享的另一个优点。两个虚拟机管理程序都可以同样良好地使用常规内存或NUMA(非统一内存访问)。
然而,值得注意的是KVM和Hyper-V在动态内存分配方面的区别。在Hyper-V中,动态内存功能使虚拟机能够根据当前的虚拟机需求调节内存使用。需求不会超过设定的内存容量上限。通过动态内存分配,管理员可以通过内存超分配在单个主机上运行更多的虚拟机。
KVM虚拟化器也支持内存超配额。然而,与Hyper-V相比,这一功能的实现方式有所不同。KVM虚拟机是在Linux操作系统下运行的主机上的独立进程。因此,虚拟机没有预分配的内存卷。操作系统根据请求在虚拟机之间分配内存。简单来说,KVM虚拟化软件根据需求为每个虚拟机分配内存块。
如果KVM主机面临物理内存不足的情况,系统会将一些内存页面发送到交换空间。空闲RAM的数量会根据需求增加,从而为主机系统启用内存过承诺。
安全特性
在KVM与Hyper-V的安全特性比较中,两者都具有高效的安全特性,您可以使用它们来确保组织数据和环境的安全。
对于KVM,虚拟机隔离和安全性来自于两个解决方案的能力。第一个,SELinux(安全增强型Linux)在虚拟机周围设置了一个安全边界。sVirt(安全虚拟化)为来宾虚拟机提供了MAC(强制访问控制)安全,增加了SELinux的功能,并减少了人为错误对虚拟安全的影响。
Hyper-V还可以隔离虚拟机,以在单个节点被攻破之前保护环境。此外,与第2代Hyper-V虚拟机一起提供的Secure Boot功能有助于防止在启动时运行未授权的操作系统、驱动程序和固件。Hyper-V的其他安全功能包括整个子网的流量加密、Guarded Fabric(一种反恶意软件安全模型)和受保护的虚拟机。
实时VM迁移能力
实时迁移虚拟机是KVM和Hyper-V都具备的功能。借助这一功能,管理员可以在不中断VM操作的情况下将VM迁移到不同的服务器。
实时迁移可以帮助组织支持生产连续性和服务可用性。例如,当您需要在主虚拟化主机上进行计划好的硬件维护时,您可以将关键VM迁移到辅助服务器。维护将按预期进行,而不会打扰到组织的 workflow 和操作。
此外,有时您的宿主机资源不足,无法运行您最初创建在其上的VM。例如,在使用过程中,VM可能会变得太大,从而导致整个宿主机的性能问题。优化宿主机性能的最有效方法是使用虚拟化器的实时迁移功能,将该虚拟机迁移到不同的宿主机,而不关闭VM。
KVM与Hyper-V之间的转换
必要时,您可以将KVM虚拟机转换为在Hyper-V环境中运行,反之亦然。查看下面关于KVM和Hyper-V之间转换的指南。
从KVM转换到Hyper-V
将KVM虚拟机转换为在Hyper-V环境中使用的虚拟机分为三个步骤:
- 安装qemu-ing。
- 要将KVM虚拟机磁盘映像转换为Hyper-V格式,请使用以下命令:
qemu-img.exe convert sourcefile.qcow2 -O vhdx -o subformat=dynamic destinationfile.vhdx
在此命令中,sourcefile 是源虚拟机磁盘文件名,destinationfile 是转换后你想要得到的新的磁盘文件名。
- 在Hyper-V中创建一个新的虚拟机,然后将转换后的磁盘映像附加到它上面。
从Hyper-V转换到KVM
要将Hyper-V虚拟机转换为KVM环境,请执行以下操作:
- 关闭需要转换的Hyper-V虚拟机。然后选择虚拟机,在Hyper-V管理器中点击导出。
- 为虚拟机文件提供目标存储库。
- 注意导出的虚拟机的处理器核心数、内存和MAC地址。
- 将目标虚拟机的VHDX文件复制到KVM环境。
- 在KVM主机上安装virt-v2v。
- 使用 virt-v2v 命令将 VHDX 转换为 QCOW2,如下所示:
sudo virt-v2v -i disk sourcefile.vhdx -o local -of qcow2 -os targetfile
- 转换完成后,请注意客户操作系统。
- 在 KVM 环境中使用 VMM 创建新的虚拟机。
- 选择 导入现有磁盘镜像,然后点击 前进。
- 找到 vhdx-sda 文件,然后指定您需要安装的操作系统。之后,点击 前进。
- 完成初始的新虚拟机配置:设置内存、CPU、虚拟机名称并指定 KVM 网络设置。然后,点击 应用。
- 在此处配置特定选项,如 MAC 地址。然后,在窗口顶部选择 开始安装。
成本考虑
组织的预算是关于 IT 环境选择的基石,KVM 与 Hyper-V 的决策也不例外。在价格方面,KVM 有明显的优势:作为一个开源解决方案,它是免费使用的。此外,您还可以免费下载和安装管理工具和功能模块。微软 Hyper-V 模块也是免费的。但是,细微之处在于,微软建议升级到 Windows Server 以运行 Hyper-V 虚拟化环境。
结论
最终选择 KVM 还是 Hyper-V,取决于您组织具体的需要和预算。如果您需要在熟悉的生态系统中运行 Windows 虚拟机,并且愿意为获取专有支持解决方案分配资金,那么 Hyper-V 是正确的选择。另一方面,如果您愿意投入额外的努力来配置和调整开源解决方案,那么 KVM 在管理、安全、可扩展性和功能方面可以提供几乎相等的能力和体验,而且完全免费。