辛星笔记云计算第五篇即系统虚拟化

虚拟化是表示计算机资源的抽象方法。通过虚拟化,我们可以简化基础设施、系统和软件等计算机资源的表示、访问和管理,并且为这些资源提供标准的接口来接受输入和提供输出。虚拟化技术有很多种,比如网络虚拟化、内存虚拟化、桌面虚拟化和应用虚拟化等等,我们这里主要介绍系统虚拟化。

系统虚拟化通过使用虚拟机管理程序(Virtual  Machine  Monitor,简称VMM)在一台物理机上虚拟和运行一台或者多台虚拟机(Virtual  Machine,简称VM),而且这些虚拟机可以像真实的机器一样运行各种软件,并且在资源占用方面虚拟机之间是相互隔离的,以保证运行的安全和稳定。

在20世纪50年代末,Christopher  Strachey就发表了名为"Time  Sharing  in  Large  Fast  Computes"的论文,它被认为是系统虚拟化的起源。在20世纪60年代中期,IBM推出了世界上第一台支持系统虚拟技术的计算机IBM7044.而在最近,系统虚拟化技术更是得到了业界极大的欢迎和肯定,并且已经成为了一个非常主流的技术。

在运行模式上,系统虚拟化主要有两类虚拟机管理程序。其一是Hypervisor类型,它直接运行在硬件上面,以类似操作系统的形式安装在硬件上,它提供接近于物理机的性能,并且在IO上面做了很多优化,主要用于服务器类的应用,也被称为Type1.其中VMware  ESX和Xen都属于这个类型。其二是托管类型,它安装在传统的操作系统上,虽然本身性能不如Hypervisor(主要是因为它和硬件之间隔了一层操作系统),但是它的使用和安装都非常方便,功能也十分丰富,比如支持三维加速等等,常用于桌面应用,也被称为Type2.这个类型的代表有VMware
 Workstation和VirtualBox等等。

系统虚拟化技术的分类:

(1)硬件仿真。也就是emulation,它属于托管模式,它在物理机的操作系统上新建一个模拟硬件的程序(硬件 VM)来仿真所想要的硬件,并且在这个程序上跑虚拟机,而且虚拟机内部的客户操作系统(Guest OS)无需修改。知名产品有Bochs、QEMU和微软的Vritual  PC 。由于能够模拟硬件,所以硬件仿真非常适合于操作系统的开发,也有利于进行固件和硬件的协作开发。固件开发人员可以使用基于目标硬件的虚拟机在仿真环境中对自己的实际代码进行验证,而不必等到硬件实际可用的时候才能开始测试。由于是模拟的硬件,因此在性能方面比较低。

(2)全虚拟化,也就是Full  Virtualization,它主要是在客户操作系统和硬件之间捕获和处理那些对虚拟化敏感的特殊指令,从而使得客户操作系统无需修改就能运行,速度会根据不同的实现而不同,但是大致能够满足用户的需求。这种方式是业界现金最成熟、最常见的,而且属于托管模式和Hypervisor模式的产品都有,知名的产品有IBM CP/CMS,VirtualBox、KVM、VMware  Workstation和VMware
 ESX。在全虚拟模式下,客户操作系统无需修改,而且速度还可以,使用也很简单。

(3)半虚拟化,也就是Paravirtualization,它和全虚拟化有一定的相似之处。它也利用虚拟机管理程序来实现对底层硬件的共享访问,但是由于在虚拟机管理程序上运行的客户操作系统已经集成了与半虚拟化有关的代码,这使得客户操作系统能够非常好地配合虚拟机管理程序来实现虚拟化。我们无需重新编译或者捕获特权指令,其性能非常接近物理机。最经典的产品就是Xen,当然还有微软的Hyper-V。它的架构比全虚拟化要精简,而且在整体速度上有一定的优势,但是它需要对客户操作系统进行修改,所以在用户体验方面比较麻烦。

(4)硬件辅助虚拟化(Hardware  Assisted  Virtualization)是英特尔/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化来提高性能,由于通过硬件辅助虚拟化能够将大量复杂的虚拟化逻辑从软件中抽离,所以能够极大地简化虚拟化产品的架构。在使用方面,硬件虚拟化通常用于优化全虚拟化和半虚拟化,而不是独创一派。最经典的例子就是VMware  Workstation在6.0版本中引入了硬件虚拟化技术,比如英特尔的VT-x和AMD的AMD-V,我们在使用的时候,可以选择是否开启硬件辅助虚拟化。现在市面上的主流全虚拟化和半虚拟化都支持硬件辅助虚拟化,业界通常使用HVM(Hardware
 Virtual  Machine)来指代硬件辅助虚拟化。

(5)操作系统级虚拟化,也就是Operating  System  Level  Virtualization,它通过对服务器操作系统进行简单的隔离来实现虚拟化,主要用于VPS等服务。这种技术对操作系统只进行少许的修改,实现成本低而且性能不错,但是在资源隔离级别表现欠佳,而且对客户操作系统的型号和版本有限定,这种技术可以用于VPS服务。

系统虚拟化的用处:

(1)软件测试。通过使用VirtualBox和VMware  Workstation来配置测试环境,不仅比物理方式快很多,而且也无需购买过多昂贵的硬件。而且它们自带的快照功能也可以非常方便地将错误发生的状态保存起来,这样将很有利于测试人员和程序员之间的沟通。

(2)桌面应用。比如通过VirtualBox和VMware  Workstation等桌面虚拟化软件让用户使用其他平台的专属软件,比如使用Linux的用户可以通过虚拟的Windows环境来访问基于微软ActiveX技术的网上银行。而且企业可以通过部署成熟的虚拟桌面解决方案,不仅能够统一管理员工的桌面环境来提升安全性,还能够降低和桌面系统的购置成本和能源开支。

(3)服务器整合。通过VMware ESX和Xen,可以将多台物理机上的工作量整合到一台物理机上,它可以降低软硬件、能源和场地等开支,还能够提高服务器的使用率,极大地简化IT架构的复杂度。

(4)自动化管理。使用DRS(Distributed  Resource  Scheduing,分布式资源调度)、Live  Migration(动态迁移)、DPM(Distributed   Power  Management,分布式电源管理)和HA(High  Availability,高可用性)等高级虚拟化管理技术,能够极大地提升数据中心的自动化管理成都,并实现容灾。

(5)加快应用部署。通过引入虚拟化应用发布格式OVF(Open  Virtualization  Format,开放虚拟化格式),不仅能够使得第三方应用供应商更加方便地发布应用,而且能够使系统管理员非常简单地部署这个应用,而且很方便地在多个数据中心之间进行迁移。

时间: 2024-10-08 18:44:37

辛星笔记云计算第五篇即系统虚拟化的相关文章

辛星笔记云计算第四篇即云的四种模式

虽然从技术或者架构角度看,云计算比较单一,但是在实际情况下,为了适应用户不同的需求,它会演变为不同的模式.在NIST(National  Institue  of  Standards  and  Technology,美国国家标准技术研究院)的名为"The  NIST Definition  of  Cloud Computing"的关于云计算概念的文档中,定义了云的四种模式,分别是:公有云.私有云.混合云和行业云. 公有云: (1)公有云是现在最主流也是最受欢迎的云计算模式.它是一

2014年辛星解读css第五节

本小节我们解说css中的"盒模型".即"box model",它通经常使用于在布局的时候使用,这个"盒模型"也有人成为"框模型".事实上原理都一样,它的大致原理是这种,它把一个HTML元素分为了这么几个部分:边距.边框.填充和实际内容,我们通过设置这几个内容能够设置它的一些现实形式. *************盒模型***************** 1.盒模型从内向外依次是实际内容(Content).内边距(Padding)

2014年辛星Javascript解读第五节 break continue 与异常处理

先说一下break和continue的主要用法吧,break用于跳出循环,continue用于跳过该循环中的一个迭代.简单的说,就是break直接从该语句跳出,但是continue不会跳出该循环语句,但是它会重新来过,即本次不会再次执行. ************具体说明************* 1.我们通过举例的形式来说明,首先看代码一: var sum = 0; for(i = 0;i<10;i++){ if(i==5){ break; } sum += i; } alert(sum);

辛星笔记之云计算第三篇之云管理层

与过去的数据中心相比,云最大的优势在于云管理的优越性.云管理层也是三层云服务的基础,并且为这三层提供多种管理和维护等方面的功能和技术. 云管理层一般分为九个模块,这九个模块又可以分为三层,它们分别是用户层.机制层和检测层. 用户层主要包括四个部分: (1)用户管理.对任何的系统而言,用户的管理都是必需的.运方面的用户管理主要有三种功能,其一是账号管理,包括对用户身份及其访问权限进行有效的管理,还包括对用户组的管理.其二是单点登录,英文为Single  Sign On,其意义是在多个应用系统中,用

辛星笔记之Hadoop权威指南第五篇HDFS基本概念

每个磁盘都有默认的数据块大小,这是磁盘进行数据读写的最小单位.构建于单个磁盘上的文件系统通过磁盘块来管理该文件系统中的块,该文件系统块的大小可以是磁盘块的数倍.文件系统一般为几千字节,而磁盘块一般为512字节. HDFS同样也有块的概念,但是它大得多,默认为64MB.与单一磁盘上的文件系统相似,HDFS的文件也被划分为块大小的多个分块(chunk),作为独立的存储单元.但是HDFS中小于一个块大小的文件不会占据整个块的空间. HDFS的块比磁盘块大,它的目的是为了最小化寻址开销.如果块设置的足够

辛星笔记之Hadoop权威指南第一篇即MapReduce

MapReduce是一种可用于数据处理的编程模型,该模型比较简单,但用于编写有用的程序并不简单.Hadoop可以运行由各种语言编写的MapReduce程序.MapReduce程序本质上是并行运行的,因此可以将大规模的数据分析任务交给任何一个拥有足够多机器的运营商.MapReduce的优势在于处理大规模数据集. MapReduce任务过程被分为两个处理阶段:map阶段和reduce阶段.每个阶段都以键/值对作为输入或者输出,并且由程序员选择它们的类型.程序员还需要具体定义两个函数:map函数和re

辛星笔记之Hadoop权威指南第三篇combiner

集群上的可用宽带限制了MapReduce作业的数量,因此最重要的一点是尽量避免map任务和reduce任务之间的数据传输.Hadoop允许用户针对map任务的输出指定一个合并函数,有时候我们也称作combiner,它就像mapper和reducer一样. 合并函数的输出作为reduce函数的输入,由于合并函数是一个优化方案,所以Hadoop无法确定针对map任务输出中任一条记录需要调用多少次合并函数.不管我们调用多少次合并函数,reducer的输出结果都应该一致.合并函数的规则限定了可以使用的函

辛星笔记之Hadoop权威指南第四篇HDFS简介

当数据集的大小超过一台独立物理计算机的存储能力时,就有必要对它进行分区并且存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统被称为分布式文件系统(distributed  filesystem). 分布式文件系统架构于网络智商,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更加复杂,比如文件系统能够容忍节点故障但是不丢失数据就是一个很大的挑战. HDFS的全称是Hadoop  Distributed  Filesystem,在非正式文档或者旧文档以及配置文件中,有

辛星笔记之高质量JavaScript代码书写要点

首先本文章是http://www.zhangxinxu.com/wordpress/?p=1173 的读书笔记,读者可以自己到鑫旭的空间去阅读原文,这里我对其进行了简化. 可维护的代码的一些要求: (1)可读的               (2)一致的             (3)可预测的 (4)看上去就像是同一个人写的    (5)已记录 原则一:最小全局变量 JavaScript通过函数管理作用于,在函数内声明的变量值在这个函数内部,函数外面不可用.而全局变量就是在任何函数外面声明的,或者