
虚拟化
文章平均质量分 80
河马虚拟化
这个作者很懒,什么都没留下…
展开
-
IOMMU是如何划分PCI device group的?
IOMMU的一个主要作用就是将IO设备发出的请求地址IOVA(I/O Virtual Address)转化为物理内存地址,如果没有IOMMU,那么所有的IO设备都将使用相同的物理地址空间访问物理内存。引入IOMMU后,就会引入IOVA这个地址空间,IO设备可以通过IOVA虚拟地址访问物理内存。在虚拟化引入之前,IOMMU主要有两个功能:创建IOVA到HPA的映射,让设备能够访问任意物理内存。比如,有些I/O设备的寻址空间只有4G,但是平台的物理内存大于4G,为了让这样的I/O设备能够访问4G空间原创 2021-01-05 08:19:13 · 6455 阅读 · 3 评论 -
AWS Nitro架构简介
AWS(Amazon Web Services)Nitro架构为Amazon的云服务提供了底层的支持。Nitro架构的总体设计思想是:轻量化的hypervisor配合定制化的硬件,让用户无法区分出运行在虚拟机内和运行在裸金属上操作系统的性能差异。为了实现定制化的硬件(ASIC),Amazon和以色列的一家芯片公司——Annapurna实验室合作,并在后面将其收购,其芯片的logo就是Annapurna山(世界第十高峰)。原本基于Xen架构的虚拟化系统中,服务器既要运行提供给客户的虚拟机,也要运行原创 2020-10-31 08:56:28 · 8171 阅读 · 0 评论 -
qemu虚拟机的关机方式
qemu虚拟机的关闭方式主要包括如下几种方式:通过qemu monitor的system_powerdown命令进行关闭, 在libvirt对qemu进行管理的情况下,通过virsh shutdown命令进行关闭。 在虚拟机内使用Guest OS自带的关机按钮进行关闭。 通过qemu monitor的quit命令进行关闭。 在libvirt对qemu进行管理的情况下,通过virsh d...原创 2020-01-31 11:19:08 · 7688 阅读 · 4 评论 -
qcow2文件的snapshot管理
qcow2是qemu虚拟机中特别常用的镜像文件格式,QCOW即Qemu Copy-On-Write写时拷贝,后面的2即为版本,因为在qcow2出现之前还有qcow格式的镜像文件。从字面上理解,qcow/qcow2的文件组织形式应该是建立在Copy-On-Write这个基本的机制上,即当某个数据块被引用多次(两次或两次以上)时,若某个实例尝试写该数据块,为了不让其他实例看到该数据块的变化,就会将该数...原创 2020-01-18 17:43:23 · 1933 阅读 · 0 评论 -
QEMU虚拟机中如何安装Virtio驱动
在计算机虚拟化中,Virtio是一种半虚拟化解决方案,即需要对Guest OS进行一定的修改(安装相应的驱动程序),能够对虚拟机的I/O性能进行大幅的提升。在QEMU+KVM的环境中,Virtio的后端驱动由QEMU程序提供,不需要额外的安装,而前端驱动则位于Guest OS中,需要将相应OS类型的驱动程序安装到Guest OS中。本文以QEMU+KVM为VMM,以Win 7为Guest OS...原创 2018-11-01 20:56:51 · 13906 阅读 · 0 评论 -
Intel VT-d(2)- DMA重定向
DMA重定向硬件一般位于Root Complex中,Root-Complex是PCIe系统中引入的概念,它将CPU、内存子系统和PCIe子系连接起来。如下图所示:而Root Complex则经常被集成到CPU芯片上、MCH(Memory Controller Hub)上或者是IOH(I/O hub)上。DMA重定向硬件将来自于I/O子系统的内存访问请求分为两类:不带地址空间ID的请...原创 2018-11-04 13:22:11 · 4805 阅读 · 0 评论 -
Intel VT-d(3)- 中断重映射
VT-d硬件中除了包含DMA重映射硬件外,也会包含中断重映射硬件,该中断重映射单元让系统软件能够对I/O设备产生的中断(包括从I/O APIC发送过来的中断,I/O设备产生的以MSI、MSI-X形式传递的中断,不包含中断重映射硬件本身产生的中断)的传输进行控制,而不仅仅取决于硬件的连接。对于VT-d硬件而言,中断请求就是从外面发送进来对物理地址范围0xFEEX_XXXXh的写请求。VT-d中,...原创 2018-11-11 08:41:37 · 4582 阅读 · 2 评论 -
Intel VT-d(4)- Interrupt Posting
Interrupt-posting是VT-d中中断重映射功能的一个扩展功能,该功能也是针对可重映射的中断请求。Interrupt-posting功能让一个可重映射的中断请求能够被暂时以一定的数据形式post(记录)到物理内存中,并且可选择性地主动告知CPU物理内存中暂时记录着pending的中断请求。在x86处理器的虚拟化中,Interrupt-posting再加上APIC Virtualiz...原创 2018-11-17 07:53:45 · 2221 阅读 · 0 评论 -
Intel VT-d(5)- DMAR表组织结构
在系统上电的时候,BIOS/UEFI负责检测并初始化重定向硬件(即VT-d硬件),为其分配相应的物理地址,并且以ACPI表中的DMAR(DMA Remapping Reporting)表的形式告知VT-d硬件的存在。DMAR的格式如下所示,先是标准的APCI表的表头,然后是Host Address Width表示该系统中支持的物理地址宽度;标志字节Flag表示VT-d硬件支持的一些功能,最后是...原创 2018-11-24 15:27:11 · 4317 阅读 · 0 评论 -
Intel x86 CPU中断和异常的定义和分类
中断通常被定义为一个打断CPU芯片指令执行的事件,该事件对应到对应到CPU芯片内部或者外部的电路产生的电子信号。中断信号可以被划分为同步中断和异步中断:同步中断,该类型中断由CPU的控制单元在执行指令的时候产生,并且是在当前指令执行完毕下一个指令执行之前产生。 异步中断,该类型中断由其他硬件设备在任意的时间产生,并且遵循CPU的时钟信号传递给CPU。对于Intel的CPU而言,它将同步...原创 2018-12-18 21:23:54 · 2668 阅读 · 2 评论 -
QEMU中VNC Server架构分析
QEMU的入口main函数所在的源文件vl.c中针对QEMU_OPTION_vnc对vnc参数进行解析,vnc选项支持的具体参数在ui/vnc.c中进行定义,如下所示:static QemuOptsList qemu_vnc_opts = { .name = "vnc", .head = QTAILQ_HEAD_INITIALIZER(qemu_vnc_opts.head),...原创 2019-06-18 06:56:11 · 3415 阅读 · 1 评论 -
Intel VT-d(1)- 简介
Intel VT-d的全称是Intel Virtualization Technology for Direct I/O,它是Intel虚拟化技术的一部分,主要针对的是I/O子系统,它的实现主要是通过在硬件上引入重定向单元,该硬件重定向单元用于对I/O子系统的DMA操作和中断传递进行重定向,从而辅助VMM(Virtual Machine Monitor)实现I/O子系统的虚拟化。一般情况下VM...原创 2018-10-28 19:20:53 · 17725 阅读 · 0 评论 -
VMX(3) -- VMXON Region
对于Intel x86处理器,在打开VMX(Virtual Machine Extension),即执行VMXON指令的时候需要提供一个4KB对齐的内存区间,称作VMXON region,该区域的物理地址作为VMXON指令的操作数。该内存区间用于支持逻辑CPU的VMX功能,该区域在VMXON和VMXOFF之间一直都会被VMX硬件所使用。VMXON Region内存区域的要求跟VMCS类...原创 2018-08-23 06:57:06 · 1811 阅读 · 0 评论 -
一个菜鸟对虚拟化的理解
作为一个刚接触桌面虚拟化不就的菜鸟来说说我对虚拟化的理解,这里所说的虚拟化是指计算机系统级别的虚拟化,即为实现虚拟计算机(Virtual Machine)的虚拟化。正常情况下,计算机系统主要由三个部分...原创 2018-07-03 06:34:35 · 5875 阅读 · 4 评论 -
虚拟化中如何实现设备模拟?
在计算机虚拟化领域中,对设备进行模拟是虚拟化实现的基础。设备的模拟主要包括一下三个方面:设备状态的记录;设备的运行逻辑的模拟,包括不同状态之间的转换关系,状态转换时对其他设备的影响(没有的话当然最好);设备跟外界的交互接口,主要是各种总线接口或者I/O地址接口。说白了其实就是复杂一点的状态机。实现设备模拟可有两种方式,即纯软件模拟和硬件辅助的方式。纯软件模拟的方式即借助第三方软件的运行,对设备的状...原创 2018-07-03 06:38:53 · 2206 阅读 · 0 评论 -
如何判断一个硬件平台是否支持虚拟化?
对于一个给定的硬件平台,如何判断该硬件平台是否支持虚拟化呢?为了回答这个问题,需要先了解硬件设备特别是CPU是如何实现虚拟化的。为了理解CPU是如何实现虚拟化的,需要理解两个概念:特权指令和敏感指令。特权指令:现代CPU一般都会有N个执行权限等级,对于普通的指令,CPU都可以正常执行,但是对于一些操作系统硬件资源的指令,如I/O端口的访问,MMIO寄存器的访问等,CPU需要将当前的运行等级提高才能...原创 2018-07-03 06:40:27 · 1585 阅读 · 0 评论 -
SeaBIOS(3) - 启动流程
SeaBIOS程序的各种入口点都在src/romlayout.S这个文件中定义了,启动包括了vCPU上电后开始执行的起点src/romlayout.S:reset_vector,该位置会被QEMU加载...原创 2018-07-13 06:57:00 · 2554 阅读 · 0 评论 -
SeaBIOS(1) - 简介
SeaBIOS是一个开源的16bit x86 BIOS程序,它可以运行在模拟器上,或者是在x86硬件平台上和coreboot一起使用。这里主要介绍其运行在QEMU+KVM这样的虚拟化模拟器上的情况,对coreboot的情况暂时不说明。BIOS程序是计算机上电后,CPU第一个开始运行的程序,完全运行在裸金属上,用于完成对系统硬件的初始化,并且为启动OS做好准备。BIOS程序跟具体的硬件具有很高的耦合...原创 2018-07-07 08:42:34 · 9731 阅读 · 0 评论 -
QEMU和KVM的关系
首先KVM(Kernel Virtual Machine)是Linux的一个内核驱动模块,它能够让Linux主机成为一个Hypervisor(虚拟机监控器)。在支持VMX(Virtual Machine Extension)功能的x86处理器中,Linux在原有的用户模式和内核模式中新增加了客户模式,并且客户模式也拥有自己的内核模式和用户模式,虚拟机就是运行在客户模式中。KVM模块的职责就是打开并...原创 2018-07-30 07:19:49 · 4089 阅读 · 1 评论 -
SeaBIOS(4) - 如何理解shadow BIOS
SeaBIOS运行的一个模拟硬件平台是奔腾时代的PC架构,以Intel 440FX PMC(PCI and Memory Controller)为北桥芯片,PIIX4(PCI ISA IDE Xcelerator)为南桥芯片为基本组成架构。其中PMC可用于连接内存,如下图所示:PMC控制器在系统中是以PCI设备的形式存在的,在该PCI设备中存在着一组PAM(Programmable Attribu...原创 2018-07-27 07:39:12 · 2101 阅读 · 7 评论 -
x86处理器运行环境
任何程序跑在IA-32处理器上都需要一个特定的环境来支持,比如程序代码的读取,数据的存储和状态的保存等。这些资源组成IA-32处理器基本的运行环境,这些资源主要包括:地址空间(Address Space)。任何程序跑在IA-32处理器上的时候都可以看到一个线性地址空间,该地址空间大小为2的32次方。该线性地址空间需要通过分页机制映射到物理地址,该线性地址空间让程序以为自己可以访问到系统中的任何...原创 2018-08-05 07:17:56 · 1124 阅读 · 0 评论 -
VMX(1) -- 简介
VMX(Virtual Machine Extension)是Intel 64和IA-32架构处理器级别的功能,用于支持虚拟化。VMX支持两种类型的软件:Virtual-machine monitor(VMM),VMM对处理器和平台硬件具有完全的控制权限。VMM为客户软件提供虚拟处理器的抽象,从而让客户软件能够直接在逻辑CPU上跑。 客户软件(Guest software)。每个虚拟机(VM...原创 2018-08-14 07:24:09 · 17484 阅读 · 0 评论 -
VMX(2) -- VMCS理解
在虚拟化中,为了实现vCPU,既要模拟CPU的运行,又要记录vCPU的状态(包括对vCPU运行的控制信息),在Intel x86处理器的VMX(Virtual Machine Extension)功能中,通过引入根运行模式(VMX root operation)和非根模式(VMX non-root operation),直接让vCPU运行在逻辑CPU上,在软件上省去了对vCPU运行的模拟,同时也大...原创 2018-08-19 08:57:56 · 3304 阅读 · 0 评论 -
SeaBIOS(2) - 硬件架构
每个BIOS一般都会有自己适配的一套硬件架构,因为不同的硬件资源对于BIOS的要求及操作都会有不同,硬件资源千变万化,BIOS程序不可能考虑到所有的情况。SeaBIOS也不例外。SeaBIOS所针对的硬件平台是奔腾时代的PC架构,以Intel 440FX PMC(PCI and Memory Controller)为北桥芯片,PIIX(PCI ISA Xcelerator)为南桥芯片构成相应的...原创 2018-07-09 07:31:42 · 1990 阅读 · 0 评论