深入探索虚拟化技术:Xen与KVM的比较与实践
1. 虚拟化概述
1.1 云服务与虚拟化
云服务通常配备控制接口,可按需调整容量并实现一键部署新系统。以亚马逊的弹性计算云(EC2)为例,它是第一代此类服务中最成熟的,被众多提供下一代网络平台的公司广泛采用。实用计算作为数据中心和本地服务器基础设施的廉价替代方案,正逐渐受到关注,许多业内人士认为各种形式的云技术是计算的未来。
1.2 实时迁移
实时迁移是指将虚拟机从一台物理机迁移到另一台物理机的过程。大多数虚拟化软件支持在运行的系统之间实时迁移虚拟机,且某些情况下不会中断服务或丢失连接。这一功能对负载均衡、灾难恢复、服务器维护和系统灵活性都非常有帮助。
1.3 虚拟化技术比较
不同的虚拟化选项概念上有所不同,但最终效果相似。管理员访问虚拟系统的方式与访问网络上的普通节点相同。主要区别在于,硬件问题可能同时影响多个系统(因为它们共享硬件),并且资源争用问题必须在虚拟化实现的层面(如管理程序)进行调试。
2. 虚拟化的好处
2.1 成本节约
在新的 IT 项目中,成本是一个重要因素。虚拟化可以让企业立即实现短期成本节约,因为购买的服务器数量减少。管理员可以创建新的虚拟机,而不是为新的生产应用程序购置新服务器,从而节省前期购买成本以及持续的支持和维护费用。此外,由于虚拟服务器不产生热量,冷却需求大幅降低,进一步节省了成本。一些组织可以将多达 30 台物理服务器整合到一个虚拟主机上,仅机架空间的节省就相当可观。
2.2 生态影响降低
数据中心消耗了全球近 1% 的电力,而虚拟化可以提高现代多核 CPU 的使用效率,当多个虚拟机同时运行时,能减少能源消耗,这对企业来说是一个很好的营销亮点。
2.3 业务连续性增强
业务连续性是企业在面对物理和逻辑危机时,以最小的影响维持业务运营的能力。虚拟化简化了灾难恢复过程,通过单一命令即可将虚拟服务器从一个物理位置迁移到另一个物理位置。大多数虚拟化平台支持的迁移技术使应用程序可以独立于位置运行。
2.4 管理自动化
由于管理程序可以独立于其支持的虚拟服务器进行访问,服务器管理变得完全可脚本化。系统管理员可以利用模板驱动的服务器配置快速响应客户对新系统和应用程序的请求。脚本可以自动化和简化常见的虚拟系统管理任务,如虚拟服务器的启动、关闭和迁移等操作可以通过 shell 脚本自动化,甚至可以通过 cron 进行调度。
2.5 提高可用性
实时迁移允许在不中断服务的情况下对物理服务器进行维护和硬件升级。当需要更换老化的机器时,虚拟系统可以立即迁移,无需经历痛苦的升级、安装、测试和切换周期。
2.6 环境分离
虚拟化使开发、测试、预发布和生产环境的严格分离成为可能,即使对于小型企业也是如此。历史上,维护这些独立环境的成本过高,许多企业难以承受,但虚拟化技术改变了这一现状。例如,质量保证测试人员可以轻松将测试环境恢复到基线配置。
3. 虚拟化的实用方法
3.1 系统选择
并非所有应用程序都适合虚拟化,以下是一些不适合虚拟化的服务:
- 资源密集型备份服务器或日志主机
- 高带宽应用程序,如入侵检测系统
- 繁忙的 I/O 密集型数据库服务器
- 具有基于硬件的复制保护的专有应用程序
- 有特殊硬件需求的应用程序,如医疗系统或某些科学数据采集应用程序
适合虚拟化的服务包括:
- 面向互联网的 Web 服务器,用于查询中间件系统或数据库
- 未充分利用的独立应用服务器
- 开发人员系统,如构建或版本控制服务器
- 质量保证测试主机和预发布环境
- 核心基础设施系统,如 LDAP 目录、DHCP 和 DNS 服务器、时间服务器和 SSH 网关
3.2 迁移策略
建议从少量不太关键的系统开始虚拟化,这有助于建立组织的信心并提高管理员的技能。新应用程序是理想的虚拟化目标,因为可以从一开始就为虚拟化进行构建。随着环境的稳定,可以定期迁移更多系统。大型组织每年迁移 25 到 50 台服务器可能是一个可持续的速度。
3.3 基础设施规划
在新环境中,需要规划适当的基础设施支持。存储和网络资源应支持迁移计划。如果同一物理主机上的多个系统将位于不同的物理网络中,需要规划对网络接口进行聚合。对于使用 SAN 空间的系统,应包含适当的附件。合理安排相似系统在同一物理硬件上,以简化基础设施。同时,确保每个虚拟机都有一个备用位置,以便在主系统进行维护或出现硬件问题时进行迁移。
3.4 硬件选择
由于服务器硬件的快速发展,管理员在虚拟化方面有很多不错的选择。多核、多处理器架构是虚拟机的理想选择,因为它们减少了上下文切换的需求并便于分配 CPU 资源。主要制造商推出的新刀片服务器产品专为虚拟环境设计,提供高 I/O 和内存容量。固态硬盘因其快速的访问时间和低功耗,与虚拟化有天然的协同作用。
4. Linux 虚拟化:Xen 与 KVM
4.1 Xen 简介
Xen 最初是剑桥大学的一个研究项目,如今已成为一个强大的虚拟化平台,在性能、安全性和成本方面具有竞争力。作为半虚拟化管理程序,Xen 虚拟机监控器的开销仅为 0.1% - 3.5%,远低于全虚拟化解决方案。Xen 管理程序是开源的,有许多不同功能支持级别的管理工具。Xen 源代码可从 xen.org 获取,许多发行版已经包含了原生支持。
Xen 是一种直接运行在物理硬件上的裸机管理程序。运行的虚拟机称为域,至少有一个域,即域零(dom0)。域零可以完全访问硬件,管理其他域并运行所有设备驱动程序。非特权域称为 domU。所有域(包括 dom0)都由 Xen 管理程序控制,该管理程序负责 CPU 调度和内存管理。一套守护进程、工具和库完善了 Xen 架构,实现了 domU、dom0 和管理程序之间的通信。
以下是 Xen 的一些管理工具:
- Xen Tools:一组 Perl 脚本,简化 domU 的创建。
- MLN(Manage Large Networks):另一个 Perl 脚本,可根据清晰易懂的配置文件创建复杂的虚拟网络。
- ConVirt:一个功能强大的 GUI 工具,用于管理虚拟机,包括拖放式实时迁移、无代理多服务器支持、可用性和配置仪表盘以及模板驱动的新虚拟机部署。
- xm:内置的命令行工具,适合喜欢使用命令行的用户。
不同的 Linux 发行版对 Xen 的支持有所不同。Red Hat 最初在其发行版中投入大量资源支持 Xen,但后来转向了 KVM。SUSE Linux 对 Xen 有很好的支持,特别是在 Enterprise 11 版本中。Ubuntu Linux 对 Xen 的支持不稳定,最终在 8.10 版本中放弃了 Xen,转而支持 KVM。一般来说,对于大规模基于 Xen 的虚拟化部署,建议使用 Red Hat 或 SUSE。
4.2 Xen 基本要素
Linux Xen 服务器需要多个守护进程、脚本、配置文件和工具,以下是一些重要的组件:
| 路径 | 用途 |
| ---- | ---- |
| /etc/xen | 主要配置目录 |
| xend-config.sxp | 顶级 xend 配置文件 |
| auto | 开机时自动启动的来宾操作系统配置文件 |
| scripts | 创建网络接口等的实用脚本 |
| /var/log/xen | Xen 日志文件 |
| /usr/sbin/xend | 主 Xen 控制器守护进程 |
| /usr/sbin/xm | Xen 来宾域管理工具 |
每个 Xen 来宾域的配置文件位于 /etc/xen 中,指定了 domU 可用的虚拟资源,如磁盘设备、CPU、内存和网络接口。每个 domU 有一个配置文件,格式非常灵活,管理员可以对每个来宾施加精细的约束。如果将 domU 配置文件的符号链接添加到 auto 子目录中,该来宾操作系统将在开机时自动启动。
xend 守护进程处理 domU 的创建、迁移和其他管理任务,必须始终运行,通常在开机时启动。其配置文件 /etc/xen/xend-config.sxp 指定了管理程序的通信设置和 dom0 的资源约束,还配置了实时迁移的功能。
来宾域的磁盘通常存储在 dom0 中的虚拟块设备(VBD)中。VBD 可以连接到专用资源,如物理磁盘驱动器或逻辑卷,也可以是使用 dd 创建的回环文件(文件支持的 VBD)。专用磁盘或卷的性能更好,但文件更灵活,可以使用普通的 Linux 命令(如 mv 和 cp)在域零中进行管理。除非系统出现性能瓶颈,否则文件支持的 VBD 通常是更好的选择。如果需要,也可以轻松将 VBD 转移到专用磁盘上。
虚拟网络接口(VIF)可以通过多种方式设置。默认情况下,使用桥接模式,每个来宾域是与主机相同网络上的一个节点。路由和 NAT 模式将来宾域配置在一个私有网络中,彼此之间以及与域零可以访问,但对网络的其他部分隐藏。高级配置包括绑定网络接口和为不同网络上的来宾设置 VLAN。如果这些选项都不适用,Xen 网络脚本可以进行定制以满足几乎任何独特需求。
4.3 使用 virt - install 安装 Xen 来宾
virt - install 是 Red Hat 的 virt - manager 应用程序的一部分,是一个命令行操作系统部署工具,可从多种来源(如 NFS 挂载、物理 CD 或 DVD 或 HTTP 位置)获取安装介质。
以下是一个安装来宾域的示例:
redhat$ sudo virt - install -n chef -f /vm/chef.img -l http://example.com/myos -r 512 --nographics
这是一个名为 “chef” 的典型 Xen 来宾域,磁盘 VBD 位置为 /vm/chef.img,通过 HTTP 获取安装介质。该实例有 512MiB 的 RAM,安装过程中不使用基于 X Windows 的图形支持。virt - install 下载安装所需的文件,然后启动安装程序。安装完成后,来宾域将重新启动并准备使用。要从来宾控制台断开连接并返回 dom0,可输入 。
虽然上述命令提供了基于文本的安装方式,但也可以通过虚拟网络计算(VNC)获得图形支持。
来宾域的配置存储在 /etc/xen/chef 中,示例配置如下:
name = "chef"
uuid = "a85e20f4 - d11b - d4f7 - 1429 - 7339b1d0d051"
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ ]
disk = [ "tap:aio:/vm/chef.dsk,xvda,w" ]
vif = [ "mac=00:16:3e:1e:57:79,bridge=xenbr0" ]
可以看到,NIC 默认使用桥接模式。在这种情况下,VBD 是一个 “块 tap” 文件,比标准回环文件性能更好。可写磁盘映像文件呈现给来宾的设备为 /dev/xvda。Xen 团队推荐使用 tap:aio 这种磁盘设备定义以提高性能。
xm 工具方便日常管理虚拟机,如启动和停止虚拟机、连接到其控制台以及查看当前状态。以下是查看运行的来宾域并连接到 “chef” 控制台的示例:
redhat$ sudo xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain - 0 0 2502 2 r----- 397.2
chef 19 512 1 -b---- 12.8
redhat$ sudo xm console 19
要对来宾域进行任何定制,如附加另一个磁盘或将网络从桥接模式更改为 NAT 模式,需要编辑 /etc/xen 中的来宾配置文件并重启来宾。xmdomain.cfg 手册页包含了来宾域的更多选项细节。
4.4 Xen 实时迁移
域迁移是将 domU 从一个物理主机移动到另一个物理主机的过程,实时迁移可以在不中断服务的情况下完成。这对于系统管理员来说是虚拟化中最实用和神奇的技巧之一,因为它可以保持开放的网络连接,不会丢失任何 SSH 会话或活跃的 HTTP 连接。硬件维护、操作系统升级和物理服务器重启都是使用迁移功能的好机会。
实现迁移的一个重要要求是存储必须共享。domU 所需的任何存储(如虚拟机所在的磁盘映像文件)必须对两个主机服务器都可访问。文件支持的虚拟机最适合实时迁移,因为它们通常包含在一个可移植的文件中。SAN、NAS、NFS 共享或 iSCSI 单元都是在系统之间共享文件的可接受方法。无论 VBD 如何共享,确保同一时间只有一台物理服务器运行 domU,因为 Linux 文件系统不支持多个主机直接并发访问。
此外,由于虚拟机的 IP 和 MAC 地址会随其从一个主机迁移到另一个主机,每个服务器必须位于同一二层和 IP 子网中。当虚拟机开始在网络上发送流量时,网络硬件会学习到 MAC 地址的新位置。
满足这些基本要求后,只需对管理程序配置文件 /etc/xen/xend - config.sxp 进行一些配置更改,即可启用迁移。以下是相关选项:
| 选项 | 描述 |
| ---- | ---- |
| xend - relocation - server | 启用迁移;设置为 yes |
| xend - relocation - port | 用于迁移活动的网络端口 |
| xend - relocation - address | 监听迁移连接的接口。如果未指定,Xen 在 dom0 的所有接口上监听 |
| xend - relocation - hosts - allow | 允许连接的主机列表,此列表不能为空,否则将允许所有主机连接 |
进行更改后,通过运行 /etc/init.d/xend restart 重启 xend。
在主机之间迁移虚拟机的过程中,domU 的内存映像以未加密的格式通过网络传输。如果来宾内存中有敏感数据,管理员应注意安全问题。
在尝试迁移之前,来宾的配置文件必须在源服务器和目标服务器上都存在。如果主机之间磁盘映像文件的位置不同(例如,一台服务器将共享存储挂载在 /xen,另一台挂载在 /vm),应在域的配置文件的 disk = 参数中反映这种差异。
迁移本身很简单:
redhat$ sudo xm migrate --live chef server2.example.com
假设我们的来宾域 chef 正在运行,该命令将其迁移到另一个 Xen 主机 server2.example.com。省略 –live 标志将在迁移之前暂停域。在迁移过程中,对 chef 的 IP 地址进行 ping 操作,可以观察是否有丢包现象。
4.5 KVM 简介
KVM(基于内核的虚拟机)是一种全虚拟化工具,自 Linux 内核 2.6.20 版本起就被包含在主线内核中。它依赖于当前 CPU 上的 Intel VT 和 AMD - V 虚拟化扩展。KVM 是 Ubuntu 的默认虚拟化技术,Red Hat 在收购 KVM 的母公司 Qumranet 后,也从 Xen 转向了 KVM。
由于 KVM 虚拟化得到 CPU 硬件的支持,它支持许多来宾操作系统,包括 Windows。该软件还依赖于修改版的 QEMU 处理器模拟器。
在 KVM 中,Linux 内核本身充当管理程序,内存管理和调度通过主机的内核处理,来宾机器是普通的 Linux 进程。这种独特的虚拟化方法带来了巨大的好处,例如内核可以处理多核处理器带来的复杂性,无需对管理程序进行更改来支持它们。Linux 命令(如 top、ps 和 kill)可以像处理其他进程一样显示和控制虚拟机,与 Linux 的集成非常无缝。
需要注意的是,KVM 是一项相对较新的技术,在推广到生产环境使用之前,需要进行大量测试。KVM 官方网站记录了在运行不同操作系统版本的来宾时存在的许多不兼容性问题,不同版本的 KVM 之间实时迁移失败的报告也很常见。
4.6 KVM 安装与使用
虽然 Xen 和 KVM 的底层技术有根本区别,但安装和管理来宾操作系统的工具相似。与 Xen 一样,可以使用 virt - install 创建新的 KVM 来宾,使用 virsh 命令进行管理。这些工具依赖于 Red Hat 的 libvirt 库。
在开始安装之前,需要配置主机以支持来宾的网络连接。在大多数配置中,使用一个物理接口将网络连接桥接到每个来宾。在 Red Hat 系统中,网络设备配置文件位于 /etc/sysconfig/network - scripts 中,需要两个设备文件,分别用于桥接和物理设备。
以下是一个示例:
# /etc/sysconfig/network - scripts/peth0
DEVICE=peth0
ONBOOT=yes
BRIDGE=eth0
HWADDR=XX:XX:XX:XX:XX:XX
# /etc/sysconfig/network - scripts/eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Bridge
在这个示例中,eth0 设备通过 DHCP 获取 IP 地址。
传递给 virt - install 的标志与 Xen 安装略有不同。首先,–hvm 标志表示来宾应进行硬件虚拟化,而不是半虚拟化。此外,–connect 参数确保选择正确的默认管理程序,因为 virt - install 支持多种管理程序。
总之,虚拟化技术为企业带来了诸多好处,但在实施过程中需要根据实际情况选择合适的技术和方法。Xen 和 KVM 作为 Linux 环境下的两种主要虚拟化技术,各有优缺点,企业可以根据自身需求进行选择和部署。
4.7 KVM 与 Xen 的对比
为了更清晰地了解 KVM 和 Xen 的特点,我们从多个方面对它们进行对比:
| 对比项 | KVM | Xen |
| ---- | ---- | ---- |
| 虚拟化类型 | 全虚拟化 | 半虚拟化 |
| 内核集成 | 自 2.6.20 版本起集成到主线 Linux 内核 | 独立的裸机管理程序 |
| 硬件依赖 | 依赖 Intel VT 和 AMD - V 虚拟化扩展 | 可在多种硬件上运行 |
| 管理程序开销 | 相对较高,因为是全虚拟化 | 较低,仅 0.1% - 3.5% |
| 来宾操作系统支持 | 支持多种操作系统,包括 Windows | 主要支持 Linux 及部分修改过的操作系统 |
| 管理工具 | virt - install、virsh | Xen Tools、MLN、ConVirt、xm |
| 实时迁移 | 存在不同版本间的兼容性问题 | 功能相对成熟,但需注意存储共享和安全问题 |
从这个对比表格中可以看出,KVM 具有更好的硬件兼容性和对多种操作系统的支持,适合需要运行不同类型来宾操作系统的场景。而 Xen 则在性能和管理程序开销方面表现出色,对于对性能要求较高且主要运行 Linux 系统的企业更为合适。
5. 虚拟化技术的未来趋势
5.1 性能提升
随着硬件技术的不断发展,多核处理器、高速存储设备和高性能网络接口的广泛应用,虚拟化技术的性能将得到进一步提升。未来,虚拟化管理程序的开销可能会进一步降低,虚拟机的运行效率将更加接近物理机。
5.2 安全增强
随着虚拟化技术的普及,安全问题变得越来越重要。未来,虚拟化技术将更加注重安全机制的完善,例如提供更强大的隔离技术、加密传输和访问控制等功能,以保护虚拟机中的敏感数据。
5.3 自动化与智能化
自动化和智能化将是虚拟化技术未来的重要发展方向。通过自动化脚本和人工智能算法,系统管理员可以更轻松地管理大量的虚拟机,实现资源的自动分配、故障的自动检测和修复等功能。
5.4 混合云融合
混合云环境将成为企业 IT 架构的主流。虚拟化技术将在混合云环境中发挥重要作用,实现不同云平台之间的资源共享和协同工作。未来,虚拟化技术将更好地支持混合云的部署和管理,帮助企业实现灵活的 IT 资源配置。
6. 总结与建议
6.1 总结
虚拟化技术为企业带来了诸多好处,包括成本节约、生态影响降低、业务连续性增强、管理自动化、提高可用性和环境分离等。在 Linux 环境下,Xen 和 KVM 是两种主要的虚拟化技术,它们各有优缺点。Xen 是一个成熟的半虚拟化平台,具有较低的管理程序开销和丰富的管理工具;KVM 则是一个全虚拟化工具,集成到了 Linux 内核中,支持多种来宾操作系统。
6.2 建议
- 对于对性能要求较高且主要运行 Linux 系统的企业,建议选择 Xen 作为虚拟化平台。在部署时,可以选择 Red Hat 或 SUSE 等对 Xen 支持较好的 Linux 发行版。
- 对于需要运行多种来宾操作系统,尤其是 Windows 系统的企业,KVM 是一个更好的选择。但在使用 KVM 之前,需要进行充分的测试,以确保系统的稳定性和兼容性。
- 在实施虚拟化项目时,应遵循实用方法,从少量不太关键的系统开始,逐步积累经验和信心。同时,要合理规划基础设施,选择合适的硬件和存储方案,以保证虚拟化环境的高效运行。
下面是一个简单的 mermaid 流程图,展示了选择虚拟化技术的基本流程:
graph LR
A[企业需求分析] --> B{是否主要运行 Linux 系统}
B -- 是 --> C{对性能要求是否高}
C -- 是 --> D[选择 Xen]
C -- 否 --> E{是否需要运行 Windows 等多系统}
E -- 否 --> D
E -- 是 --> F[选择 KVM]
B -- 否 --> F
总之,虚拟化技术是企业 IT 架构中的重要组成部分,通过合理选择和应用虚拟化技术,企业可以提高资源利用率、降低成本、增强业务灵活性,从而在激烈的市场竞争中占据优势。无论是选择 KVM 还是 Xen,都需要结合企业的实际需求和技术能力进行综合考虑,以实现最佳的虚拟化效果。
超级会员免费看
2194

被折叠的 条评论
为什么被折叠?



