一.什么是虚拟化
- 虚拟化是一个抽象层,它打破了物理硬件和操作系统之间的硬性连接。
- 虚拟基础结构是一种企业级解决方案,可提供流畅、强大的计算能力,从而最大限度地利用资源和节约成本。
- 虚拟机是虚拟基础结构的重要元素。虚拟化可以让您在同一台物理机上独立、并行运行安装不同操作系统和应用程序的多台虚拟机。
- 使用虚拟化,您可以根据需要动态移动资源和处理能力。
虚拟化前:1.IT资源独立;2.操作系统必须与硬件紧耦合。
虚拟化后:1.资源抽像成共享资源池;2.上层操作系统与硬件解耦,操作系统从资源池中分配资源。
二.虚拟化的本质
- 分区:在单一物理服务器上同时运行多个虚拟机
- 隔离:在单一物理服务器上的多个虚拟机之间相互隔离
- 封装:整个虚拟机执行环境封装在独立文件中,可以通过移动文件的方式来迁移该虚拟机。
- 相对硬件独立:虚拟机无需修改,即可在任何服务器上运行
三.CPU虚拟化
- CPU虚拟化需要解决两个问题:
A.如何模拟CPU指令 (所有敏感指令)
- 敏感指令:可以读写系统关键资源的指令叫做敏感指令。
- 特权指令:决大多数的敏感指令是特权指令,特权指令只能在处理器的最高特权级 (内核态)执行。
B.如何让多个VM共享CPU
- 利用与Native操作系统类似的机制—通过定时器中断,在中断触发时陷入VMM,从而根据调度机制进行调度。
2.FusionCompute计算虚拟化技术采用的是KVM技术。KVM的CPU虚拟化是基于CPU辅助的全虚拟化方案,它需要CPU虚拟化特性的支持。
- 虚拟机VM共享CPU
- 利用与原始操作系统类似的机制—通过定时器中断,在中断触发时陷入VMM,从而根据调度机制进行调度。
四.内存虚拟化
1.Native操作系统对内存的认识与管理达成以下两点认识:
- 内存都是从物理地址0开始的
- 内存都是连续的
2.内存虚拟化需要解决两个的问题:
- 从物理地址0开始的:物理地址0只有一个,无法同时满足所有客户机从0开始的要求;
- 地址连续:虽然可以分配连续的物理地址,但是内存使用效率不高,缺乏灵活性。
3.内存虚拟化:把物理机的真实物理内存统一管理,包装成多个虚拟机的内存给若干虚拟机使用。KVM 通过内存虚拟化共享物理系统内存,动态分配给虚拟机。
4.KVM中,虚机的物理内存即为qemu-kvm进程所占用的内存空间。KVM使用CPU 辅助的内存虚拟化方式。在Intel平台,其内存虚拟化的实现方式为EPT (Extended Page Tables)技术。
五.I/O虚拟化
1.I/O虚拟化需要解决两个问题
- 设备发现: 需要控制各虚拟机能够访问的设备;
- 访问截获: 通过I/O端口或者MMIO对设备的访问;设备通过DMA与内存进行数据交换;
- I/O虚拟化可以被看作是位于服务器组件的系统和各种可用I/O处理单元之间的硬件中间件层,使得多个guest可以复用有限的外设资源。
- 设备虚拟化(I/O虚拟化)的过程,就是模拟设备的这些寄存器和内存,截获Guest OS对IO端口和寄存器的访问,通过软件的方式来
- 在QEMU/KVM中,客户机可以使用的设备大致可分为三类:
- 模拟设备:完全由 QEMU 纯软件模拟的设备
- Virtio 设备:实现 VIRTIO API 的半虚拟化设备
- PCI 设备直接分配 (PCI device assignment)
5.用软件完全模拟一个特定的设备
- 保持一样的软件接口,如:PIO、MMIO、DMA、中断等
- 可以模拟出跟系统中的物理设备不一样的虚拟设备
6.每次I/O操作需要多次上下文切换
- VM Hypervisor
- Qemu Hypervisor
7.软件模拟的设备对不影响虚拟机中的软件栈
- 原生驱动
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!