服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 学好虚拟化,首先要学Linux

学好虚拟化,首先要学Linux

2023-05-08 18:02未知服务器之家 Linux

上次讲到了虚拟化的基础知识,比如虚拟化的应用、各个厂商都是通过何种技术路径来实现的等等,本篇想记录一下我学习到的 CPU 内存虚拟化和网络虚拟化相关知识,通过记录来制造反馈,让自己更有效地学习。需要注意的是,

上次讲到了虚拟化的基础知识,比如虚拟化的应用、各个厂商都是通过何种技术路径来实现的等等,本篇想记录一下我学习到的 CPU 内存虚拟化和网络虚拟化相关知识,通过记录来制造反馈,让自己更有效地学习。需要注意的是,学习虚拟化就免不了和 打交道了。

在此之前还是回顾一下虚拟化的基础知识。

虚拟化对于我们网络行业来说已经起到了越来越大的作用,从最开始做实验用的 VMware EVE ,到现网运行的各种虚拟网络设备,无一例外都提醒着从业者要多加了解此技术。不仅是技术人员会用到虚拟化,其实大多数人的生活都离不开虚拟化,比如我们所用的 Windows 也是一种虚拟化,因为他是分时复用系统,分时系统最早由 IBM 的工程师研发出来,它会把资源切分成无数的小分片,这样就实现了多任务的同时处理。广义的虚拟化是在一套硬件平台上虚拟出多个系统,来提高硬件的利用效率。

学好虚拟化,首先要学Linux

接下来介绍一下 CPU 硬件辅助虚拟化。这时就要提及 CPU 的两大厂商 Intel AMD 了,其中 Intel 使用 VT-x 技术, AMD 使用 AMD-V 技术来实现。他们的核心思想其实都是通过引入新的指令和运行模式,使 VMM Guest OS 分别运行在 ROOT 模式和非 ROOT 模式之下, Guest OS 运行在 Ring 0 下。通常 Guest OS 核心指令不需要经过 VMM ,可直接下达到计算机硬件被执行,只有当它执行到特殊指令时才会切到 VMM 来处理特殊指令。

学好虚拟化,首先要学Linux

当讲到内存虚拟化时,首先要了解三个概念: VA virtual address )虚拟机逻辑地址,虚拟机中进程使用的逻辑地址; PV phyiscal virtual address )虚拟机物理机地址,虚拟机自己看到自己的物理地址; MA host os 真正的物理机地址。内存虚拟化其实就是由 MA PV 的映射。物理机内存是一段连续的地址空间,虚拟监视器( VMM )上层的各个虚拟机共享物理机的内存地址空间。但由于虚拟机是以随机的方式访问内存,而又需要保证虚拟机内部内存地址的连续,因此 VMM 就需要合理的映射 PV MA 才行。 VMM 对物理机内存进行管理,并对虚拟机的需求进行合理分配。其中的映射是通过内存虚拟化中的内存管理单元来完成,其中的技术分为影子页表法、页表写入法和扩展页表 EPT

影子页表法实现的是内存全虚拟化。其中 VMM 为每个 Guest 维护一个影子页表,表中维护 VA MA 的映射关系,而 Guest 也不维护 VA PV 的映射关系。当 VMM 捕获到 Guest 页表的变化时, VMM 会查找负责 PV MA 映射的 P2M 页表或哈希函数,找到对应的 MA ,再将它填充到真正在硬件上起作用的影子页表,而 Guest 页表无需变动。

页表写入法是一种半虚拟化,通过修改操作系统的代码,剥夺 Guest OS 的写入页表权力,所以 VMM 可直接将及其弟子写入到 Guest OS 的页表而实现页表虚拟化。其细节是当客户机常见页表时, VMM 也会创建一套相同的仪表,其中保存到时虚拟机物理地址和物理机地址的映射,在客户机对页表写操作时, VMM 剥夺客户机操作系统的写操作权限,并对客户机操作系统页表进行更新,是 Guest OS 从它自己的页表中读取真实物理机地址。

扩展页表 EPT 是硬件辅助虚拟化,它在原有页表基础上又加了 EPT 页表,用来记录 PV MA 的映射关系, VMM EPT 页表设置到 CPU 中,就无需 VMM 再干预了,转换时 CPU 自动查找两张页表来完成 Guest 到机器地址的转换,降低整个内存虚拟化的开销。

在网络虚拟化中,通过 SR-IOV 技术实现。 SR-IOV 主要解决 pass-through 只能被一台虚拟机访问的问题,其中 pass-through 模型是让虚拟机直接使用物理设备,使得网络性能最高。 SR-IOV 的实现需要 CPU 、芯片组和 PIC 等协同在硬件上实现,实现了虚拟化的“最后一公里”。支持 SR-IOV 的网卡可以在 VMM 里注册多个网卡,每个设备通过 pass-through 分配给虚拟子机。

在上篇我们介绍了不同厂家的各种虚拟化软件和技术,比如 VMware RedHat QEMU-KVM ,微软的 hyper-V ,还有 Citrix Xen 。本篇介绍了虚拟化中的内存虚拟化和网络虚拟化的基础知识。需要注意的是,学习虚拟化就免不了和 Linux 打交道了,因为大部分时间操作的都是 Linux 系统,在此我对 Linux 基础薄弱的同学推荐 这本书,在线阅读: 网站上有电子版可以阅读,如感觉到有所收获,别忘了买一本实体书支持一下作者。学无止境,希望和大家一起用知识充实自己。


延伸 · 阅读

精彩推荐