要学习Xen的源码,首先要了解其整体架构,以下即为Xen hypervisor中的一些常用术语。
基本(Basics)
- guest operating system: 能够在Xen环境中运行的OS。
- hypervisor: 运行在比guest operation system的supervisor代码更高的特权层级的代码。
- virtual machine monitor ("vmm"): 在Xen中和hypervisor同义。
- domain: 一个正在运行guest OS的VM。
- domain0 ("dom0"): 随着Xen一起启动的首个domain。Dom0有控制所有硬件的权限,被用作管理hypervisor和其他domain。
- unprivileged domain ("domU"): 一个没有特殊硬件访问权限的domain。
虚拟化方法(Approaches of Virtualization)
-
full virtualization(全虚拟化): 一种不需要修改guest OS内核的虚拟化方法,提供对整个系统真实硬件设备的抽象。
- paravirtualization(准虚拟化): 一种需要修改guest OS内核以使其能够运行在VM中的虚拟化方法。Xen使用准虚拟化但是仍保证user space应用的二进制兼容性。
地址空间(Address Spaces)
- MFN (machine frame number): 处理器可知的真实宿主主机机器地址。
- GPFN (guest pseudo-physical frame number): Guest OS运行在一个抽象连续,但实际上在机器地址空间并不太可能连续的物理地址空间中。
- GMFN (guest machine frame number): 等同于自翻译guest OS的GPFN,或者也等同于准虚拟化guest OS的MFN。表示的是guest“眼中”的MFNs。
- PFN (physical frame number): 一种对任意frame number的统称。这里的“physical ”可以表示“guest-physical ”、“machine-physical ”或者“guest-machine-physical ”。
页表(Page Tables)
- l4 table: 4级页表。
- l3 table: 3级页表。
- l2 table: 2级页表。
- l1 table: 1级页表。
- SPT (shadow page table): Guest OSes页表的影子。有很多用途,比如在live migration过程中跟踪脏页。
- PAE (Physical Addressing Extensions): Intel的物理地址扩展技术,使得x86/32位物理机最大内存跃升至64GB。
- PSE (page size extension): 页面大小扩展技术,使页面大小由4KB跃升至2/4MB。
影子页表模式(Shadow Page Table Modes)
- external: 定义不明。
- translate: 定义不明。
x86架构(x86 Architecture)
- HVM: 由Xen的全虚拟化生成的硬件虚拟机。该模式需要硬件支持,比如Intel的VT和AMD的Pacifica技术。
- SVM: 由Xen的全虚拟化生成的基于AMD Padifica技术的虚拟机。
- VT-x: 由Xen的全虚拟化生成的基于Intel x86 VT技术的虚拟机。
- VT-i: 由Xen的全虚拟化生成的基于IntelIA-64 VT技术的虚拟机。
- shadow mode: 定义不明。
- writable page tables:定义不明。
网络基础设施(Networking Infrastructure)
- backend: domain内部的通信是通过frontend和backend设备模型的交互实现的,交互经过event channel。而backend是通信模型的后台端。
- frontend: 前台,通信模型的前端,提供给guest。
- vif(virtual interface): 网络后端设备的名称,经由event channel与guest上的前端相连。
- event channel: 定义不明。
- vethN: dom0中的本地网络前端;在桥接模式下,由Xen网络脚本重命名为ethN。
- pethN: 经过重命名的真实物理网络设备。
迁移(Migration)
- Live migration: 一种把正在运行的VM迁移到另一台物理主机的技术,期间运行在VM上的服务不会被中断。
调度(Scheduling)
- BVT(Borrowed Virtual Time): 该调度器用作为domain按比例合理共享CPU。
- SEDF(SimpleEarliest Deadline First):该调度器以直观的方式共享加权CPU,并且用实时算法确保时间可分配。