频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Linux系统中虚拟化方法、技术及实现

来源:IBM DW中国 作者: 出处:巧巧读书 2007-01-23 进入讨论组
访问 http://www.qqread.com/linux/2007/01/y294593.html

完全虚拟化

    完全虚拟化(full virtualization),也称为原始虚拟化,是另外一种虚拟化方法。这种模型使用一个虚拟机,它在客户操作系统和原始硬件之间进行协调(参见图 2)。“协调”在这里是一个关键,因为 VMM 在客户操作系统和裸硬件之间提供协调。特定受保护的指令必须被捕获下来并在 hypervisor 中进行处理,因为这些底层硬件并不由操作系统所拥有,而是由操作系统通过 hypervisor 共享。



图 2. 完全虚拟化使用 hypervisor 来共享底层硬件
Linux系统中虚拟化方法、技术及实现(图三)

Linux系统中虚拟化方法、技术及实现(图一)
老硬件上的 hypervisor
有些比较老的硬件,例如 x86,会给完全虚拟化带来一些问题。例如,需要 VMM 处理的一些特定敏感指令并没有捕获。因此,hypervisor 必须要动态扫描并捕获这些特权模式代码来解决这一问题。

    虽然完全虚拟化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因为中间经过了 hypervisor 的协调过程。完全虚拟化的最大优点是操作系统无需任何修改就可以直接运行。惟一的限制是操作系统必须要支持底层硬件(例如 PowerPC)。

超虚拟化

    超虚拟化(paravirtualization)是另外一种流行的虚拟化技术,它与完全虚拟化有一些类似。这种方法使用了一个 hypervisor 来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了操作系统本身中(参见图 3)。这种方法不再需要重新编译或捕获特权指令,因为操作系统本身在虚拟化进程中会相互紧密协作。



图 3. 超虚拟化与客户操作系统共享进程
Linux系统中虚拟化方法、技术及实现(图四)

    正如前面介绍的一样,超虚拟化技术需要为 hypervisor 修改客户操作系统,这是它的一个缺点。但是超虚拟化提供了与未经虚拟化的系统相接近的性能。与完全虚拟化类似,超虚拟化技术可以同时支持多个不同的操作系统。

操作系统级的虚拟化

    我们要介绍的最后一种技术是操作系统级的虚拟化,它使用的技术与前面所介绍的有所不同。这种技术在操作系统本身之上实现服务器的虚拟化。这种方法支持单个操作系统,并可以将独立的服务器相互简单地隔离开来(参见图 4)。



图 4. 操作系统级虚拟化实现服务器的隔离
Linux系统中虚拟化方法、技术及实现(图五)

    操作系统级的虚拟化要求对操作系统的内核进行一些修改,但是其优点是可以获得原始性能。

为什么虚拟化如此重要?

    在了解目前 Linux 可以使用的虚拟化方法之前,让我们先来了解一下虚拟化的优点。

    从商业角度来看,使用虚拟化技术有很多原因。大部分原因都可以归结于服务器的巩固(server consolidation)。简单来说,如果您可以对一个服务器上多个未经充分利用的系统进行虚拟化,由于服务器的数量少了,显然可以节省大量电力、空间、制冷和管理成本。由于很难确定服务器的利用情况,虚拟化技术支持称为动态迁移的技术。动态迁移(Live migration)允许操作系统及其应用程序迁移到新的服务器上,从而实现负载在可用硬件上的均衡。

    虚拟化技术对于开发人员来说也非常重要。Linux 内核占据了一个单一的地址空间,这意味着内核或任何驱动程序的故障都会导致整个操作系统的崩溃。虚拟化技术意味着您可以运行多个操作系统,如果其中一个系统由于某个 bug 而崩溃了,那么 hypervisor 和其他操作系统都依然可以继续运行。这可以使内核的调试非常类似于用户空间应用程序的调试。

与 Linux 有关的虚拟化项目

表 1 给出了几个 Linux 系统上的虚拟化项目,并着重介绍了其中的开源解决方案



表 1. 与 Linux 有关的虚拟化项目

项目 类型 许可证
Bochs 仿真 LGPL
QEMU 仿真 LGPL/GPL
VMware 完全虚拟化 私有
z/VM 完全虚拟化 私有
Xen 超虚拟化 GPL
UML 超虚拟化 GPL
Linux-VServer 操作系统级虚拟化 GPL
OpenVZ 操作系统级虚拟化 GPL

有关其他解决方案的信息,请参看 参考资料 部分。

Bochs(仿真)

Linux系统中虚拟化方法、技术及实现(图一)
库级虚拟化
尽管在正文中没有讨论,库级虚拟化是另外一种可以通过库对操作系统部分进行仿真的虚拟化技术。这种虚拟化技术的例子包括 Wine(Linux 上使用的一个部分 Win32 API)和 LxRun(Solaris 上使用的一个部分 Linux API)。

    Bochs 是一个 x86 计算机仿真器,它在很多平台上(包括 x86、PowerPC、Alpha、SPARC 和 MIPS)都可以移植和运行。使 Bochs 更为有趣的是它不仅可以对处理器进行仿真,还可以对整个计算机进行仿真,包括计算机的外围设备,比如键盘、鼠标、视频图像硬件、网卡(NIC)等。

    Bochs 可以配置作为一个老式的 Intel® 386 或其后继处理器使用,例如 486、Pentium、Pentium Pro 或 64 位处理器。它甚至还可以对一些可选的图形指令进行仿真,例如 MMX 和 3DNow。

    使用 Bochs 仿真器,您可以运行任何 Linux 上的 Linux 发行版、Linux 上的 Microsoft® Windows® 95/98/NT/2000(以及各种应用程序),甚至 Linux 上的 BSD(Berkeley Software Distribution)操作系统(FreeBSD、OpenBSD 等)。

 

更多文章 更多内容请看系统优化大全系统安全设置系统安装手册专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章