虚拟化与虚拟技术应用
扫描二维码
随时随地手机看文章
引言
虚拟机的概念产生在20世纪60年代,它最早是由IBM提出用来交互式访问主机计算机。每个虚拟机(VM)是一个物理机的虚拟实例,让用户有直接访问物理机的错觉。用户通过同一个硬件平台分享上面的资源。每一个VM是一个底层系统完全保护和隔离的副本。用户可以在上面执行,开发和测试应用程序,而不必担心因为导致系统当机而影响其他正在使用同一台物理机的用户。虚拟化的出现,可以降低硬件购置成本和提高生产力,让更多的用户可以同时在同一个平台上并行工作。随着硬件价格的降低和具有多线程处理能力的操作系统的出现,虚拟机一度在20世纪70年代和20世纪80年代几乎消失。进入20世纪90年代以来,随着对电脑硬件和操作系统需求的日益增加,虚拟化的概念被越来越重视。事实上,在传统的电脑技术中,虚拟技术已经被广泛的应用。虚拟内存技术在现代操作系统中已经不再陌生,它允许一个程序调用远远多于其本机物理内存的容量。同时虚拟内存也实现了让上百个进程同时访问同一个物理内存。同样道理,CPU的多任务处理能力也可以理解为一个CPU被虚拟为多个CPU从而可以分配运行多个进程,或者在另一种模式设置下,多个具有普通时钟速度的CPU可以被虚拟的整合成一个CPU从而具体有很高的时钟速度。后者在现实生活中更为常用。
1虚拟化
虚拟化(Virtualization),顾名思义:虚幻的、虚构的,不是真实存在的。在电脑界,虚拟化泛指创建一个虚拟版本的设备或资源,例如服务器、存储装置、网络或者甚至是一个框架被分割成一个或多个执行环境资源的操作系统。即使像硬盘分区这样一个简单的操作也可以被认为是虚拟化,因为你可以把一个物理硬盘分割成为两个分区后成为两个独立的硬盘存储器。用户能够通过应用软件和设备与所建立的虚拟资源进行互动,就好像它是一个真正的单一存在的逻辑资源。
2虚拟技术的实现
那么虚拟技术是通过什么方法实现的呢?虚拟技术大致分为常见的五个层面:指令集架构层实现虚拟化(VirtualizationattheInstructionSetArchitectureLevel);硬件抽象层实现虚拟化(VirtualizationattheHardwareAbstractionLevel);操作系统层的虚拟化(VirtualizationattheOSLevel);编译语言层虚拟化(VirtualizationattheProgrammingLevel)和系统库层的虚拟化(VirtualizationattheLibraryLevel)。其中,又由硬件抽象层实现虚拟化技术是最为普遍的应用,例如常见的虚拟机(VM)。其实现架构目前大致分为托管(Hosted)和裸机(Bare-Metal)两种架构方式。一般在托管架构下,一个基本的操作系统会首先被安装到主机中,被称为“主操作系统(HostOperatingSystem)”,然后再将VMM(VirtualMachineMonitor)安装到主操作系统上,并允许用户在VMM中安装“来宾操作系统(GuestOperatingSystem)”,这种主宾模式称为Hosted(托管)。在这个虚拟化架构中,每个虚拟机的操作系统通常只具有访问1/0(输入输出)设备的有限子集,主操作系统保留对所安装主机中物理I/O设备的所有权。来宾操作系统需要通过VMM,在可能的情况下(由于VMM对很多非通用的I/O没有记录,例如PCI数据采集卡等,所以在虚拟过程中不会将这些设备提供给虚拟的环境,只有对例如网卡,声卡,光驱这样的通用设备进行模拟),通过对物理硬件的模拟来进行访问。到目前为止,大部分的软件虚拟方案支持直接使用USB设备的功能。允许用户从虚拟操作系统内直接访问USB设备,提供超出以上所提到的I/O模拟方式。例如,用户可以从虚拟操作系统中访问连接到电脑的USB打印机。在实际实现这个过程当中,需要通过多个软件组件合作才能完成对I/O的访问。例如VMware的VMwareWorkstation将虚拟操作系统的I/O请求传输给一个底层VMM组件,通过驱动程序,传输给一个名为VMApp的用户级别的组件,再由这个组件将请求传送给主操作系统。值得强调的一点是,在这个架构中,无论有多少个虚拟系统,所有对I/O的请求都必须通过主操作系统。这也就导致了这种虚拟架构虽然方便配置和安装,但是由于对主操作系统请求的增加,虚拟系统越多,主系统的性能及稳定性就会大幅度下降。而裸机的架构则通过直接安装在系统硬件上虚拟机管理程序(Hypervisor)与系统硬件进行访问,而不是依赖于主操作系统。这个方案为虚拟系统提供了多种I/O访问的选项。虚拟系统之间则通过虚拟机管理程序中所包含的底层驱动程序来共享同一个I/O资源,例如网卡,硬盘等。而裸机虚拟架构的另一个特点就是通过分配指定的I/O资源供所需要的虚拟系统独享,此虚拟系统即可通过指定I/O设备的原生驱动直接访问,这类方法的虚拟机管理程序将最小化地参与到其中,从而更好的提升访问速度。
3虚拟技术的应用
虚拟化技术应用到实践中比较常见的有:服务器整合(ServerConsolidation)-将一些工作能力较低的服务器整合,从而节省基础设施投资和管理精力以及充分利用硬件资源;应用程序整合(ApplicationConsolidation)-一些传统的程序可能需要独自享用一个硬件环境或系统环境,现在通过虚拟化,可以在一些新的设备上通过虚拟使这类程序运行在单独的环境里;沙盒技术(Sandboxing)-虚拟机可以通过提供一个独立的,封闭的环境来运行一些不被信任的软件,也可以认为虚拟技术可以帮助建立一个安全可靠的计算机平台;多执行环境(MultipleExecutionEnvironment)-虚拟技术可以用来在最大可能条件下创建多个可执行环境,并在同时增加QoS(服务质量)以确保每个环境的资源量;虚拟硬件(VirtualHardware)-可以虚拟一个在物理机中不存在的硬件,例如虚拟SCSI驱动器,虚拟网卡,虚拟网络交换机或集线器等等;多个并行操作系统(MultipleSimultaneousOS)-可以在同一个设备上同时运行多个操作系统,且运行不同的应用程序;调试(Debug)-允许用户在一个虚拟的电脑环境内通过享有完全软件调度权来调试复杂的操作系统或是驱动软件;软件合并(SoftwareMigration)-简化的软件合并的过程并且方便软件转移的过程;测试(Testin/QA)-通过模拟各种现实中很难出现场景来确保软件的质量并简化测试过程。
这些虚拟技术的应用已经慢慢的渗透到很多企业的日常应用当中。一个传统的企业在部署IT方案的时候,会将所有的企业应用程序直接运行在专有服务器硬件上,且大部分时间将由特殊需要的应用程序分散到独立的服务器上,使数据中心的服务器运行最小的工作负载。如果在日后公司有需求使用新的应用程序,那么IT部门将不得不制定新硬件计划,购置或更新硬件并部署到网络中。而现在,只需要根据需要划分一个新的虚拟服务器或在原有虚拟服务器的基础上划分更多硬件资源就可实现更新计划,整个操作很多时间只需要几个鼠标点击即可完成。甚至于现在很多基于云端的企业方案,在后台实际上都是通过虚拟的方式实现,企业只需要根据随时实际的需要,向供应商提供所需要服务的硬件需求,无需等待漫长的采购过程,无需等待设备的安装过程,马上就能投入使用(当然对虚拟设备的软件配置还是需要企业按照自己的需求搭建软件环境)。随着各个企业业务的飞速发展,数据中心的数据也在与日俱增,传统存储管理模式已经不足以跟上更新的速度,且管理员需要掌握各种管理工具才能在复杂结构的存储环境进行管理。存储虚拟化可以统一的管理数据中心的数据,将所有可用资源虚拟为一个庞大资源,管理员可以根据需要动态的分配资源,并且整合结构相异的存储坏境以达到更高的存储利用率和降低企业成本,并且虚拟技术还提供快照,磁盘镜像,数据保护等特有功能。
4结语
实际上,由于虚拟技术的特殊内涵,它与业界流行的云技术密切相关,企业向云生态发展,实际上就是向虚拟化发展。通过硬件节省成本往往得不偿失,企业更关心如何整合各种资源,以加快应用部署速度,通过简化IT管理,为企业创造更有利的价值。因此虚拟技术必将成为未来的发展趋势。