扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
超虚拟化
超虚拟化(paravirtualization)是另外一种流行的虚拟化技术,它与完全虚拟化有一些类似。这种方法使用了一个 hypervisor 来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了操作系统本身中(参见图 3)。这种方法不再需要重新编译或捕获特权指令,因为操作系统本身在虚拟化进程中会相互紧密协作。
正如前面介绍的一样,超虚拟化技术需要为 hypervisor 修改客户操作系统,这是它的一个缺点。但是超虚拟化提供了与未经虚拟化的系统相接近的性能。与完全虚拟化类似,超虚拟化技术可以同时支持多个不同的操作系统。
操作系统级的虚拟化
我们要介绍的最后一种技术是操作系统级的虚拟化,它使用的技术与前面所介绍的有所不同。这种技术在操作系统本身之上实现服务器的虚拟化。这种方法支持单个操作系统,并可以将独立的服务器相互简单地隔离开来(参见图 4)。
操作系统级的虚拟化要求对操作系统的内核进行一些修改,但是其优点是可以获得原始性能。
为什么虚拟化如此重要?
在了解目前 Linux 可以使用的虚拟化方法之前,让我们先来了解一下虚拟化的优点。
从商业角度来看,使用虚拟化技术有很多原因。大部分原因都可以归结于服务器的巩固(server consolidation)。简单来说,如果您可以对一个服务器上多个未经充分利用的系统进行虚拟化,由于服务器的数量少了,显然可以节省大量电力、空间、制冷和管理成本。由于很难确定服务器的利用情况,虚拟化技术支持称为动态迁移的技术。动态迁移(Live migration)允许操作系统及其应用程序迁移到新的服务器上,从而实现负载在可用硬件上的均衡。
虚拟化技术对于开发人员来说也非常重要。Linux 内核占据了一个单一的地址空间,这意味着内核或任何驱动程序的故障都会导致整个操作系统的崩溃。虚拟化技术意味着您可以运行多个操作系统,如果其中一个系统由于某个 bug 而崩溃了,那么 hypervisor 和其他操作系统都依然可以继续运行。这可以使内核的调试非常类似于用户空间应用程序的调试。
与 Linux 有关的虚拟化项目
表 1 给出了几个 Linux 系统上的虚拟化项目,并着重介绍了其中的开源解决方案。
有关其他解决方案的信息,请参看 参考资料 部分。
库级虚拟化
尽管在正文中没有讨论,库级虚拟化是另外一种可以通过库对操作系统部分进行仿真的虚拟化技术。这种虚拟化技术的例子包括 Wine(Linux 上使用的一个部分 Win32 API)和 LxRun(Solaris 上使用的一个部分 Linux API)。
Bochs(仿真)
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 等
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者