虚拟化
此条目需要精通或熟悉计算机科学的编者参与及协助编辑。 (2012年11月23日) |
在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网路适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑组态环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些电脑硬体资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料储存。
定义
编辑由于目前信息技术领域的很多企业都曾在宣传中将该企业的某种技术称为虚拟化技术,这些技术涵盖的范围可以从Java虚拟机技术到系统管理软件,这就使得准确的界定虚拟技术变得困难。因此各种相关学术论文在谈到虚拟技术时常常提到的便是如前面所提到的那个不严格的定义。
历史
编辑虚拟化技术起源于20世纪60年代末,美国IBM公司当时开发了一套被称作虚拟机监视器(Virtual Machine Monitor)的软件,该软件作为计算机硬件层上面的一层软件抽象层,将计算机硬件虚拟分割成一个或多个虚拟机,并提供多用户对大型计算机的同时、交互访问。
虚拟化技术的类别
编辑按虚拟的对象分类
编辑- 硬件虚拟化
- 虚拟机(Virtual machine或VM),可以像真实机器一样运行程序的计算机的软件实现
- 平台虚拟化,将操作系统和硬件平台资源分割开
- 完全虚拟化,敏感指令在操作系统和硬件之间被捕捉处理,客户操作系统无需修改,所有软件都能在虚拟机中运行,例如IBM CP/CMS,VirtualBox,VMware,QEMU
- 硬件辅助虚拟化,利用硬件(主要是CPU)辅助处理敏感指令以实现完全虚拟化的功能,客户操作系统无需修改,例如VMware,Xen,KVM,Hyper-V
- 部分虚拟化,针对部分应用程序进行虚拟,而不是整个操作系统
- 准虚拟化/超虚拟化(paravirtualization),为作业系统提供与底层硬件相似但不相同的软件接口,客户操作系统需要进行修改。例如Xen的半虚拟化模式,Hyper-V,KVM的VirtIO。
- 操作系统级虚拟化,使操作系统内核支持多用户空间实体,例如Parallels Virtuozzo Containers、OpenVZ、LXC以及类Unix系统上的chroot,Solaris上的Zone,FreeBSD上的FreeBSD jail。
- 应用程序虚拟化,在操作系统和应用程序间建立虚拟环境
- 平台虚拟化,将操作系统和硬件平台资源分割开
- 虚拟内存,将不相邻的内存区,甚至硬盘空间虚拟成统一连续的内存地址
- 存储虚拟化,将实体存储空间(如硬盘)分隔成不同的逻辑存储空间
- 网络虚拟化,将不同网络的硬件和软件资源结合成一个虚拟的整体
- 桌面虚拟化,在本地计算机显示和操作远程计算机桌面,在远程计算机执行程序和储存信息
- 数据库虚拟化
- 软件虚拟化
- 服务虚拟化
- 数据虚拟化 (data virtualization), 数据虚拟化是一种统一来自多个来源的数据的方法,这样应用程序,报告工具和最终用户就可以访问数据,而不需要有关原始来源,位置和数据结构的详细信息。[1]
按照抽象程度分类
编辑按照抽象程度的不同,常常把虚拟技术分为五个层次:
指令集架构的虚拟化是透过软体来模拟不同架构的处理器、记忆体、汇流排、磁碟控制卡、计时器等多个I/O设备,软体会将虚拟机所发出的指令转换为本机可以操作的指令在现有的硬体上执行。这种等级的虚拟化对于模拟相同处理器架构的平台可以提供很好的相容性,例如︰x86架构、Sparc架构、Alpha架构。
若主机处理器可以执行由虚拟机转换出来的指令,或是使用相同的指令集来完成任务,那就表示除了处理器以外的作业系统、I/O设备皆可不受特定平台所绑定,但由于虚拟机的每条指令都必须透过软体来模拟,所以在效能会有较大程度的耗损。
硬体抽象层等级的虚拟化是由虚拟机器监视器来隐藏不同厂商的处理器、记忆体、晶片组…等特征,为这些虚拟机器提供抽象与统一的虚拟平台。运行此平台的电脑称之为主体机器(Host Machine),而在此平台中运作的虚拟机称为客体机器(Guest Machine),
目前大多数x86平台的商业电脑都在使用这种虚拟化,最主要是由于现今处理器厂商提供了硬体辅助虚拟化技术,例如︰第三世代的Intel VT-d、AMD-Vi皆提供虚拟机直接记忆体存取(Direct Memory Access)以及对各种PCI介面的直接存取功能(PCI passthrough)。
这个分类底下代表性的有VMware ESXi、Hyper-V、以及Citrix。
硬体抽象层等级的虚拟化中的全虚拟化与作业系统底层间有非常高的隔离能力,支援不同的作业系统,安装后不须要重新启动主机、或修改开机程式(Boot Loader)以达到双系统的目的,风险低、维护简单。由于此等级的虚拟机可以访问底层作业系统,因此使用者必须花费大量的时间来安装与设定虚拟机器,接著才能开始评估或测试所需运作的软体,这些设定包含了作业系统的安装、安全性或相容性软体的更新、网路、系统调校…等,如果所需的作业系统与底层作业系统相同,那么其实它们所作的跟实际上安装一台实体机器没有什么区别。
作业系统内核虚拟化可以最大限度的减少新增虚拟机的所需,在这个等级的虚拟机器共用实体主机上的硬体以及作业系统,呈现彼此独立且隔离的虚拟机环境。
应用软体的环境是由作业系统、函式库、相依性软体、特定于系统的资料结构或档案系统,例如︰NTFS或Ext4,以及其他环境设定所组成。如果这些都保持不变,应用软体很难发现与真实环境的区别。这是所有作业系统等级虚拟化的关键想法。
传统电脑是由指令集架构所驱动的一种机械语言,硬体的操作由特殊的I/O指令处理,也可以透过区块映射(Mapping)来操作记忆体,此等级的虚拟化会将高阶语言转译成一种名为位元组码的语言,透过虚拟机器转译成为可以直接执行的命令。跨作业系统平台、跨语言皆为其优点。
这个分类底下代表性的有Oracle Java、Microsoft . NET、Parrot。
大部分的应用程式都是使用由许多函式库组成的API(Application Programming Interface)来设计,使用动态连结的方式用于隐藏作业系统的细节,目的是提供程式设计师更简单的工作。这也产生了一种新的虚拟化方式,使用不同的API与不同作业系统底层的ABI(Application Binary Interface)来进行模拟的工作。
虚拟化技术的应用
编辑参考文献
编辑- Susanta Nanda, Tzi-cker Chiueh, "A Survey on Virtualization Technologies";
- R.P.Goldberg, "Survey of Virtual Machine Research", Computer, June 1974, pp.34-45;
- G.J.Popek, R.P.Goldberg, "Formal Requirements for Virtualizable Third Generation Architectures," Comm.ACM, Vol.17, Nr.7, July 1974, pp.412-421;
- Joba Yeh (2018). "Research on Big Data Analysis Platform and Services", NDLTD in Taiwan, August 2018, pp.16-22.
相关条目
编辑外部链接
编辑- 进入美妙的虚拟世界—虚拟系统探秘[永久失效链接]
- An introduction to Virtualization (页面存档备份,存于互联网档案馆)
- VMware虚拟技术白皮书(英文) (页面存档备份,存于互联网档案馆)
- ^ Data Virtualization – dataWerks. www.datawerks.com. [2018-04-12]. (原始内容存档于2018-04-10) (美国英语).