硬件虚拟化也称作完全虚拟化
在计算机科学中,硬件虚拟化(英语:Hardware virtualization)是一种对计算机或操作系统的虚拟。虚拟化对用户隐藏了真实的计算机硬件,表现出另一个抽象计算平台。
简介
在计算机集群中,许多小型服务器正在被一个大型服务器取代以增加硬件资源的利用率(如CPU等)。虽然硬件正在被整合,但是典型的操作系统仍然是独立的。取而代之地,每一个运行在独立的服务器上的操作系统被转移到在虚拟机中。大型的服务器可以“寄宿”许多这样的“客户”虚拟机。这就是物理到虚拟(Physical-to-Virtual, P2V)的转换。 虚拟机比真实的机器可以被更容易从外部被控制和检查,并且可以配置更灵活。这在内核开发与操作系统课程教学中尤为有用。[3] 创建一个新的虚拟机不需要预先购买硬件。同时,一个新的虚拟机可以容易地从一台计算机转移到另一台上。举例来说,一个销售员可以复制一个包含试用版软件的虚拟机到他的笔记本电脑去访问他的客户而不用更换电脑。类似的,虚拟机中的故障不会对宿主机产生损害,所以不会令笔记本上的操作系统死机。 由于可以被容易地迁移,虚拟机可以被用于远距离灾难恢复方案。 平台虚拟化的方案有很多。
虚拟化的原因
在计算机集群中,许多小型服务器正在被一个大型服务器取代以增加硬件资源的利用率(如CPU等)。虽然硬件正在被整合,但是典型的操作系统仍然是独立的。取而代之地,每一个运行在独立的服务器上的操作系统被转移到在虚拟机中。大型的服务器可以“寄宿”许多这样的“客户”虚拟机。这就是物理到虚拟(Physical-to-Virtual, P2V)的转换。 虚拟机比真实的机器可以被更容易从外部被控制和检查,并且可以配置更灵活。这在内核开发与操作系统课程教学中尤为有用。[3] 创建一个新的虚拟机不需要预先购买硬件。同时,一个新的虚拟机可以容易地从一台计算机转移到另一台上。举例来说,一个销售员可以复制一个包含试用版软件的虚拟机到他的笔记本电脑去访问他的客户而不用更换电脑。类似的,虚拟机中的故障不会对宿主机产生损害,所以不会令笔记本上的操作系统死机。 由于可以被容易地迁移,虚拟机可以被用于远距离灾难恢复方案。
完全虚拟化和半虚拟化
完全虚拟化提供底层物理系统的全部抽象化,且创建一个新的虚拟系统,客户机操作系统>可以在里面运行。不需要对客户机操作系统或者应用程序进行修改(客户机操作系统或者应用程序像往常一样运行,意识不到虚拟环境的存在)。半虚拟化需要对运行在虚拟机上的客户机操作系统进行修改(这些客户机操作系统会意识到它们运行在虚拟环境里)并提供相近的性能,但半虚拟化的性能要比完全虚拟化更优越。
全虚拟化
在全虚拟化(full virtualization)中,虚拟机模拟一个足够强大的硬件使客户机操作系统独立运行。这种方案最早在1966年被虚拟机家族的先锋IBM CP-40与CP-67使用。支持完全虚拟化的虚拟机软件包括Parallels Workstation、 Parallels Desktop for Mac、VirtualBox、Virtual Iron、Oracle VM、Microsoft Virtual PC、Virtual Server、Hyper-V、VMware Workstation、VMware Server(原GSX Server)、QEMU、Adeos、Mac-on-Linux、Win4BSD、Win4Lin Pro、以及Egenera vBlade technology等
硬件辅助虚拟化
在硬件辅助虚拟化(hardware-assisted virtualization)中,硬件提供结构支持帮助创建虚拟机监视并允许客户机操作系统独立运行。硬件辅助虚拟化在1972年开始运行,它在IBM System/370上运行,使用了第一个虚拟机操作系统VM/370。在2005年与2006年,Intel和AMD为虚拟化提供了额外的硬件支持。支持硬件辅助虚拟化的有 Linux KVM, VMware Workstation, VMware Fusion, Microsoft Virtual PC, Xen, Parallels Desktop for Mac,VirtualBox和Parallels Workstation。 支持完整的虚拟化技术的硬件平台包括: x86 (and x86_64)—AMD-V (代号Pacifica), Intel VT-x(代号Vanderpool) IOMMU 由AMD和Intel共同开发。 Power Architecture (IBM/Power.org) Virtage (Hitachi) UltraSPARC T1, T2 及 T2+ (Sun)
部分虚拟化
在部分虚拟化(partial virtualization)中(包括地址空间虚拟化),虚拟机模拟数个(但不是全部)底层硬件环境,特别是地址空间。这样的环境支持资源共享和线程独立,但是不允许独立的客户机操作系统。虽然这并不被视为一般意义上的虚拟机,但这在历史上是非常重要的一页。这项技术曾被用于CTSS(试验性的IBM M44/44X),以及争议性的系统比如MVS及Commodore 64(两个都是“task switch”程序)。
平行虚拟化
在平行虚拟化(paravirtualization)中,虚拟机不需要模拟硬件,而是提供一个特殊的API只能被特制的客户机操作系统使用。
操作系统层虚拟化
在操作系统层虚拟化(OS-level virtualization)中,独立主机被虚拟化在操作系统层中,这使得多个独立且安全虚拟化的服务器运行在一台计算机上。客户操作系统环境与宿主服务器分享同一个操作系统,例如,相同的系统内核被用来创建客户机环境。程序运行在被视为独立系统的客户机环境中。这种方式由FreeBSD jails首创;类似的例子包括Solaris Containers, OpenVZ, Linux-VServer, AIX Workload Partitions, Parallels Virtuozzo Containers, 以及 iCore Virtual Accounts。
常见的虚拟机
名称 | 作者 | 主CPU | 目标CPU | 主系统 | 目标系统 | 许可 |
---|---|---|---|---|---|---|
名称 | 作者 | 主CPU | 目标CPU | 主系统 | 目标系 |