计算机虚拟化

什么是虚拟化?

  • 物理资源(CPU、硬盘)通过中间的软件层转化成虚拟资源(Vcpu、虚拟内存、虚拟硬盘)虚拟化资源会给虚拟机使用,虚拟化的优势
  • 提高资源利用率
  • 虚拟机可移植性强(实现对虚拟机的迁移也就是去迁移磁盘文件和配置文件)
  • 虚拟级的底层形式文件(主要:磁盘文件、配置文件)
  • 磁盘文件 虚拟机啊的磁盘在底层的存放形式,不同的虚拟化的格式
  • 配置文件 虚拟机的配置信息(网卡信息、cpu信息、系统的信息)

计算虚拟化发展史

虚拟化存储的特点 虚拟化中的存储架构_硬件架构

物理服务器的架构和虚拟机的架构

虚拟化存储的特点 虚拟化中的存储架构_运维_02

虚拟化的分类

  • 1型虚拟化(裸金属型):是在应将之上直接虚拟化层在虚拟化层之上运行虚拟机(vmm(虚拟化层)高于硬件之上),比如Fusioncompute(华为),通常用于服务器上
  • 2型虚拟化(宿主型虚拟化): 虚拟化层是在操作系统之上(软件实现)比如:VMware Workstation virtbox(甲骨文)软件,通常用于个人PC上

虚拟化存储的特点 虚拟化中的存储架构_虚拟化_03

计算虚拟化

CPU虚拟化

  • CPU虚拟化 内存虚拟化 I/O设备的虚拟化
  • CPU虚拟化:硬件–>VMM(虚拟机监视程序)–>Guest os(虚拟机操作系统)–>app
  • 当Guest OS执行到特殊指令的时候,系统会切换到VMM,让VMM来处理特殊指令
  • 经典虚拟化:基于Power pc cpu架构
  • Power pc cpu架构和传统的X86架构不同的是指令集的不同,有部分指令无法被虚拟化层拦截(X86架构的16条指令),没有通过虚拟化层的转译,硬件无法识别指令从而会引发一些错误,因此CPU虚拟化分为:全虚、半虚、硬虚
  • CPU虚拟化分为全需、半虚、硬虚
  • 全需:将所有指令都收集到虚拟化层进行处理
  • 优势:不需要修改Guest os
  • 劣势:虚拟化层开销大,从而导致CPU虚拟化的效率不高
  • 半虚:设计理念是将16条指令,由VMM(虚拟化层)移向Guest OS(虚拟机操作系统)自身

通过主动的方式由Guest OS去处理这些指令,而不是被移交给VMM做处理。在这种设计理念下,就需要修改Guest OS内核。
使其在虚拟化进程中捕捉到特殊指令,并直接通过Guest os内核对CPU进行操作,因为中间少了VMM的虚拟化封装解码等等操作,所以对CPU性能的损耗会非常低从而使虚拟机效率高

  • 优点:虚拟化层的开销小
  • 劣势:需要修改虚拟机操作系统
  • 因为一般Guet os虚拟机操作系统,是不会直接交给虚拟化层,需要修改Guest os内核(目前支持x86、mips、arm这些内核版本)
  • 硬虚(硬件辅助虚拟化):Guest OS执行到特殊指令可以直接下达到计算机系统硬件去处理,而不需要通过VMM去处理
  • 优点:虚拟化效率最高
  • 缺点:需要CPU支持硬件辅助虚拟化
  • 如:Intel基于x86架构的硬件辅助虚拟化技术Intel VT(Intel Virtualization Technology)和Amd的and-v。

内存虚拟化

  • KVM(基于内核的虚拟机)是一种内建于Linux中的开源虚拟化技术,可将Linux转变为虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即虚拟pc机或虚拟机(VM)。
  • 由标准的Linux程序进行调度,并且使用专门的虚拟硬件,如网卡、图形适配器、CPU、内存和磁盘等。
  • 要实现内存虚拟化,让客户机使用一个隔离的、从零开始且具有连续的内存空间,KVM引入一层新的地址空间,即虚拟pc机物理地址空间(GPA)。
  • 这个地址空间并不是真正的物理地址空间,它只是宿主机虚拟地址空间在虚拟PC机地址空间的一个映射。

对虚拟PC机来说,PC机物理地址空间都是从零开始的连续的地址空间,但分布在宿主机上的物理内存来说这并不是连续的

I/o虚拟化

  • I/O设备是可对数据进行输入输出的如:磁盘、网卡
  • I/o虚拟化分为全虚、半虚、I/o透传
  • Qemu I/o虚拟化 是个软件

后续 会继续完善!