硬件虚拟化

在计算机科学中，硬件虚拟化（）是一种对计算机或操作系统的虚拟。虚拟化对用户隐藏了真实的计算机硬件，表现出另一个抽象计算平台。

 简介 

虚拟化这个概念，在1960年为了描述虚拟机（实验性的IBM M44/44X系统）被第一次提出。对虚拟机的架设和管理被称为平台虚拟化，现在也被称为服务器虚拟化。

平台虚拟化表现为在一个给定硬件平台的宿主机上创造一个模拟的计算机环境（虚拟机）提供给客户机。客户机软件对于用户应用程序没有限制;许多宿主机允许运行真实的操作系统。客户机就好像直接运行在计算机硬件上，伴随着几个明显的警告。虚拟机对硬件资源（如网络、显示器、键盘、硬盘）的访问被统一管理在一个比处理器和系统内存更有限制性的层次上。客户软件经常被限制访问计算机周边设备，或者被限制在较低的设备性能上，这取决于宿主机硬件访问策略设定。

 虚拟化的原因 

在计算机集群中，许多小型服务器正在被一个大型服务器取代以增加硬件资源的利用率（如CPU等）。虽然硬件正在被整合，但是典型的操作系统仍然是独立的。取而代之地，每一个运行在独立的服务器上的操作系统被转移到在虚拟机中。大型的服务器可以“寄宿”许多这样的“客户”虚拟机。这就是物理到虚拟（Physical-to-Virtual, P2V）的转换。

虚拟机比真实的机器可以被更容易从外部被控制和检查，并且可以配置更灵活。这在内核开发与操作系统课程教学中尤为有用。Examining VMware  Dr. Dobb’s Journal August 2000 By Jason Nieh and Ozgur Can Leonard

创建一个新的虚拟机不需要预先购买硬件。同时，一个新的虚拟机可以容易地从一台计算机转移到另一台上。举例来说，一个销售员可以复制一个包含试用版软件的虚拟机到他的笔记本电脑去访问他的客户而不用更换电脑。类似的，虚拟机中的故障不会对宿主机产生损害，所以不会令笔记本上的操作系统死机。

由于可以被容易地迁移，虚拟机可以被用于远距离灾难恢复方案。

平台虚拟化的方案有很多。

 全虚拟化 

在全虚拟化（full virtualization）中，虚拟机模拟一个足够强大的硬件使客户机操作系统独立运行。这种方案最早在1966年被虚拟机家族的先锋IBM CP-40与CP-67使用。支持完全虚拟化的虚拟机软件包括Parallels Workstation、 Parallels Desktop for Mac、VirtualBox、Virtual Iron、Oracle VM、Microsoft Virtual PC、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與x86_64:AMD-V (代号Pacifica)， Intel VT-x(代号Vanderpool)，以及後來的SLAT（Second Level Address Translation，Intel稱為EPT）

IOMMU：由AMD和Intel共同开发，Intel稱為VT-d。

Power Architecture (IBM/Power.org)

Virtage (Hitachi)

UltraSPARC T1， T2 及 T2+ (Sun)

 部分虚拟化 

在部分虚拟化（partial virtualization）中（包括地址空间虚拟化），虚拟机模拟数个（但不是全部）底层硬件环境，特别是地址空间。这样的环境支持资源共享和线程独立，但是不允许独立的客户机操作系统。虽然这并不被视为一般意义上的虚拟机，但这在历史上是非常重要的一页。

 平行虚拟化 

在平行虚拟化（paravirtualization）中，虚拟机不需要模拟硬件，而是提供只能被特制的客户机操作系统（或特製的-{zh-cn:驱动程序;zh-tw:驅動程式}-）使用的API。KVM、VMware、Hyper-V都-{zh-tw:支援;zh-cn:支持}-平行虛擬化，如KVM的VirtIO。

 操作系统层虚拟化 

在操作系统层虚拟化（OS-level virtualization）中，独立主机被虚拟化在操作系统层中，这使得多个独立且安全虚拟化的服务器运行在一台计算机上。客户操作系统环境与宿主服务器分享同一个操作系统，例如，相同的系统内核被用来创建客户机环境。程序运行在被视为独立系统的客户机环境中。这种方式由FreeBSD jail首创；类似的例子包括Solaris Containers， OpenVZ， Linux-VServer， AIX Workload Partitions， Parallels Virtuozzo Containers， 以及 iCore Virtual Accounts， LXC。

相关条目
虛擬機器
虚拟设备
x86虛擬化

 参考 

Category:虛擬化軟體
Category:虛擬機器