传统PC痛点:数据安全隐患、维护量大,维护成本高、设备更新换代成本高
虚拟化前后对比:
虚拟化前:IT资源独立、操作系统和硬件紧耦合、APP:OS:PHY=1:1:1
虚拟化后:形成抽象资源共享池、上层OS与硬件紧耦合、APP:OS:PHY=N:1:1
目前基本云计算的底层虚拟化都是用的开源虚拟化,因为底层是开源的,所以方便做二次开发,云计算的缺少不了虚拟化技术,虚拟化是云计算的基石,但是虚拟化不等于云计算,虚拟化是云计算的技术支撑手段之一,比如裸金属云计算,物理设备上面直接做容器,比如Oracle RAC集群就需要裸设备。有了虚拟化,云可以更好的提供服务。
虚拟化来源于1999年,Vmware公司基于X86架构做出虚拟化,虚拟化的本质为“解耦合”,硬件与软件分开,互不依赖。
云计算和虚拟化的区别:虚拟化是一种技术 云计算是一种服务
虚拟化使得在一台物理的服务器上面可以跑多台虚拟机,通过软件的方式将物理资源进行,抽象化,切片,将虚拟资源提供给虚拟机使用。虚拟机共享物理机的CPU、内存、IO硬件资源,但逻辑上面虚拟机之间是互相隔离的。虚拟化的实现实在系统中加入一个VMM虚拟化层,好处就是提高资源利用率,降低能耗,系统管理人员减少。
使用虚拟化,我们可以再一台物理服务器上面模拟处多个独立的服务器来,每个模拟出来的服务器都可以有独立的操作系统。
虚拟机:根据虚拟资源按照一定规格创建出来的逻辑主机 逻辑层面的主机
云计算为什么要使用虚拟化:
提高资源利用率,保证业务的可靠性,维护成本低、降低能耗,绿色环保
单机虚拟化:一个业务坏掉整个关联业务全部崩掉
企业级虚拟化:VMWare的vsPhere、微软的Hyper-V、华为的FusionCompute
虚拟化的特点:
资源利用率的提升、与硬件的解耦(与硬件分离变成VMM)、生命周期的提升——解耦后打包封装成为一个文件,寿命提高。
分区(将虚拟资源分割,互不干扰,同一台物理服务器上面可以同时运行多台虚拟机)
隔离(如果有病毒不会影响其他虚拟机,虚机之间相互隔离)
封装(虚拟机的本质是以文件形式存在,可以通过移动文件或者复制粘贴的形式对虚拟机进行迁移,迁移的前提是打包成一个文件)
独立 (相对于硬件独立,在迁移虚拟机后无需对服务器做任何修改即可运行虚拟机)
虚拟化防病毒的价值:
避免杀毒风暴,但虚拟机用户系统负载降低,体验提升10%以上,集中、管理,无需对每个虚拟机安装和升级病毒库,省时、省事、省资源。
Hypervisor 可以理解为虚拟化的操作系统VMM(虚拟化层)物理资源抽为虚拟资源使用,华为的FC,VMware的vsphere
功能:
①、资源虚拟化
②、虚拟环境调度,资源调度
③、提供虚拟化环境的管理接口,用来支持虚拟环境的创建,删除,暂停和迁移等功能
虚拟化的类型:
裸金属虚拟化:Ⅰ型虚拟化,直接在硬件上面安装虚拟化软件,多个虚拟机都在VMM上运行,再在其上面安装操作系统和应用,依赖内核和服务器控制台进行管理,华为的虚拟化使用的是裸金属虚拟化。优点是不依赖于操作系统,支持多种操作系统和多种应用;缺点是虚拟化层内核开发难度大
寄居虚拟化:Ⅱ型虚拟化,在宿主操作系统上安装虚拟化程序,依赖于操作系统对设备的支持和物理资源的管理。优点是简单,易于实现,支持嵌套;缺点是安装和运行应用程序依赖于HostOS对设备的支持,管理开销难度大,性能损耗大。
Ⅰ型虚拟化性能比Ⅱ型虚拟化高,直接安装在物理服务器上面运行
操作系统虚拟化:操作系统虚拟化架构在操作系统层面增加虚拟服务器功能,没有独立的 hypervisor 层。比如Docker,宿主操作系统负责在多个虚拟服务器(即容器)之间分配硬件资源,并且让这些服务器彼此独立。
混合虚拟化:将一个内核级驱动器插入到宿主操作系统内核,这个驱动器作为虚拟硬件管理器来协调虚拟机和宿主操作系统之间的硬件访问,混合虚拟化需要底层硬件支持虚拟化。
虚拟化的实现类型:
半虚拟化Para virtualization:硬件不支持,软件不支持,只能安装Linux进行虚拟化,因为需修改内核,往虚拟机内核中写入Hypercal不修改虚拟机操作系统,支持广泛的操作系统,但是修改GuestOS二进制代码,性能损耗较大。PV Driver是IO的半虚拟化,为IO做优化,使用virtio性能更好
全虚拟化Hardware Virtual Machine:因为CPU有Ring级别,虚拟机在Ring3环,没有办法向内核Ring0环打交道,所以由虚拟化软件作为中间人为虚拟机制造假象以为自己就是内核,作为转换然后找宿主机内核申请调用资源,VMM欺骗虚拟机,可以安装windows。开销大,性能差,速度慢 。目前已经没有全虚拟化,全虚拟化已经被硬件辅助虚拟化取代。
硬件辅助虚拟化:由硬件实现虚拟化,在CPU里面加入指令集,由CPU直接进行转换。在虚拟机内核中只要将标志位设置为虚拟机状态,则可以直接在CPU上面执行大部分的指令,除非遇到特别敏感的指令,才需要将标志位设置为物理机内核态运行。interl和amd在CPU内部加一个标记位,让VM自己知道是VM。
Intel虚拟化技术叫做VT-X,AMD虚拟化技术叫做AMD-V
如何查看是否支持硬件辅助虚拟化:
lscpu 或者
cat /proc/cpuinfo | grep vmx Intel的CPU
cat /proc/cpuinfo | grep svm AMD的CPU