001-虚拟化概览
虚拟化分类
寄居虚拟化架构
寄居虚拟化架构指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理。类似vmware workstation
裸金属虚拟化架构
裸金属虚拟化架构指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。
操作系统虚拟化
容器
比较
比较 | 寄居虚拟化 | 裸金属 | 系统虚拟 |
---|---|---|---|
优点 | 简单、易于实现、开发难度点 | 虚拟化不依赖宿主机操作系统支持多种操作系统性能极强 | 简单、易于实现管理开销低 |
缺点 | 管理开销大、性能损耗大 | 虚拟层内核开发难度大 | 多容器共享同一操作系统 |
厂家 | Vmware workstation、Oracle virtual box | Microsoft hyper-v、Citrix xen、Vmware vsphere ESXI | docker |
计算资源的虚拟化,可以归结为三个方面
- CPU虚拟化
- 内存虚拟化
- IO虚拟化
其中I/O虚拟化,又可以引申出两个重要的分支 存储虚拟化,网络虚拟化
存储虚拟化 -> 1、裸设备.逻辑卷 2、存储设备虚拟化 3、文件系统+主机存储虚拟
网络虚拟化 -> 1、虚拟网卡,端口 2、虚拟交换机
虚拟化技术分类 对象分类
分类 | 目的 |
---|---|
CPU虚拟化 | 目标是使虚拟机上的指令能被正常执行,且效率接近物理机 |
内存虚拟化 | 目标是能做好虚机内存空间之间的隔离,使每个虚机都认为自己拥有了整个内存地址,且效率也能接近物理机 |
IO虚拟化 | 目标是不仅让虚机访问到他们所需要的IO资源,而且要做好它们之间的隔离,更重要的是减轻由于虚拟化所带来的开销 |
虚拟化技术分类 技术过程分类
分类 | 目的 |
---|---|
全虚拟化 | 使用VMM实现CPU、内存、设备IO的虚拟化,而guest OS和计算机系统硬件都不需要进行修改。该方式兼容性好,但会给处理器带来额外的开销 |
半虚拟化 | 使用VMM实现CPU和内存虚拟化,设备IO虚拟化由guest OS实现。需要修改guest OS,使其能够与VMM协同工作。该方式兼容性差,但性能较好。 |
硬件辅助虚拟化 | 借助硬件(主要是处理器)的支持来实现高效的全虚拟化 |
开源虚拟化架构基础
kvm框架
KVM虚拟化的核心主要由以下两个模块组成:
- KVM内核模块,它属于标准Linux内核的一部分.是一个专门提供虚拟化功能的模块,主要负责CPU和内存的虚拟化,包括:客户机的创建、虚拟内存的分配、CPU执行模式的切换、vCPU寄存器的访问、vCPU的执行。
- QEMU用户态工具,它是一个普通的Linux进程,为客户机提供设备模拟的功能. 包括模拟BIOS, PCI/PCIE总线、磁盘、网卡、显卡、声卡、键盘、鼠标等。同时它通过 ioctl系统调用与内核态的KVM模块进行交互。
kVM 工作原理
用户模式的qemu利用libkvm通过ioctl进入内核模式,kvm模块未虚拟机创建虚拟内存,虚拟CPU后执行VMLAUCH指令进入客户模式。加载Guest OS并执行。如果Guest OS 发生外部中断或者影子页表缺页之类的情况,会暂停Guest OS的执行,退出客户模式出行异常处理,之后重新进入客户模式,执行客户代码。如果发生I/O事件或者信号队列中有信号到达,就会进入用户模式处理。
QEMU
QEMU原本就是一个著名的开源虚拟机软件项目,而不是KVM虚拟化软件的一部分。 与KVM不同,QEMU最初实现的虚拟机是一个纯软件的实现,通过二进制翻译来实现虚 拟化客户机中的CPU指令模拟,所以性能比较低 但是,其优点是跨平台,QEMU支持在 Linux、Windows、FreeBSD , Solaris, MacOS等多种操作系统上运行,能支持在QEMU本 身编译运行的平台上就实现虚拟机的功能,甚至可以支持客户机与宿主机并不是同一个架构 (比如在x86平台上运行ARM客户机)。作为一个存在已久的虚拟机监控器软件,QEMU的 代码中有完整的虚拟机实现,包括处理器虚拟化、内存虚拟化.以及KVM也会用到的虚拟 设备模拟(比如网卡、显卡、存储控制器和硬盘等)。
libvirt中的三个重要概念
节点:是一个物理机器,上面可能运行着多个虚拟化客户机。Hypervisor和domain都运行在节点上。
Hypervisor:虚拟机监控器(VMM),如kvm,xen,vmware等,它可以虚拟化一个节点让其运行多个客户机。
域(domain):是在hypervisor上运行的一个客户机操作系统实例。
Virsh工具
一些控制方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构