虚拟化:虚拟化的工作原理和虚拟化的类型

  虚拟化概念很早就已出现简单来说虚拟化就是使用某些并使其看起来类似于其他过程

  将这个概念应用到计算机系统中可以让区别用户看到区别单个系统(例如台计算机可以同时运行Linux 和 Microsoft Windows)这通常称为全虚拟化(full virtualization)

  虚拟化也可以使用更加复杂格式其中单个计算机看上去具有多个架构(对于个用户来说它是个标准 x86 平台;对于另外个用户来说它是 IBM Power PC平台)这种虚拟化形式通常被称为 硬件仿真

  最后更加简单种虚拟化是操作系统虚拟化其中台计算机可以运行相同类型多个操作系统这种虚拟化可以将个操作系统多个服务器隔离开来(这意味着全都必须使用相同类型和版本操作系统)

  虚拟化工作原理

  虚拟化解决方案底部是要进行虚拟化机器这台机器可能直接支持虚拟化也可能不会直接支持虚拟化;那么就需要系统管理支持系统管理或称为 VMM可以看作是平台硬件和操作系统抽象化在某些情况中这个系统管理就是个操作系统;此时它就称为主机操作系统

  系统管理的上是客户机操作系统也称为虚拟机(VM)这些 VM 都是些相互隔离操作系统将底层硬件平台视为自己所有但是实际上是系统管理为它们制造了这种假象

  目前使用虚拟化解决方案问题是并非所有硬件都可以很好地支持虚拟化较老 x86 处理器根据执行范围对特定指令会产生区别结果这就产生了个问题系统管理应该只能在个最受保护范围中执行由于这个原因诸如 VMWare 的类虚拟化解决方案会提前扫描要执行代码从而将这些指令替换为些陷阱指令(trap instruction)这样系统管理就可以正确地处理它们Xen 可以支持种协作虚拟化思路方法它不需要任何修改客户机知道自己正在进行虚拟化并已经进行了修改KVM 会简单地忽略这个问题如果您希望进行虚拟化就强制必须在更新硬件上运行

  虚拟化类型

  实现虚拟化思路方法不止实际上有几种思路方法都可以通过区别层次抽象来实现相同结果本节将介绍 Linux 中常用 3 种虚拟化思路方法以及它们相应优缺点业界有时会使用区别术语来描述相同虚拟化思路方法本文中使用是最常用术语同时给出了其他术语以供参考

  硬件仿真

  毫无疑问最复杂虚拟化实现技术就是硬件仿真在这种思路方法中可以在宿主系统上创建个硬件 VM 来仿真所想要硬件

  正如您所能预见使用硬件仿真主要问题是速度会非常慢由于每条指令都必须在底层硬件上进行仿真因此速度减慢 100 倍情况也并不稀奇若要实现高度保真仿真包括周期精度、所仿真 CPU 管道以及缓存Cache行为实际速度差距甚至可能会达到 1000 倍的多

  硬件仿真也有自己优点例如使用硬件仿真您可以在个 ARM 处理器主机上运行为 PowerPC? 设计操作系统而不需要任何修改您甚至可以运行多个虚拟机每个虚拟器仿真个区别处理器

  完全虚拟化

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

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

  超虚拟化

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

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

  操作系统级虚拟化

  我们要介绍最后种技术是操作系统级虚拟化它使用技术和前面所介绍有所区别这种技术在操作系统本身的上实现服务器虚拟化这种思路方法支持单个操作系统并可以将独立服务器相互简单地隔离开来

  操作系统级虚拟化要求对操作系统内核进行些修改但是其优点是可以获得原始性能
Tags:  存储虚拟化 服务器虚拟化 虚拟化技术 虚拟化

延伸阅读

最新评论

发表评论