




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
服务器虚拟化技术 原理与应用 内容提要 虚拟化技术简介虚拟化实现技术硬件辅助虚拟化原理KVM QEMU实现分析容器虚拟化Libvirt简介 虚拟化简介 虚拟化 Virtualization 的本质虚拟化是资源的逻辑表示 不受物理限制的约束 其技术本质就是由位于下层的软件模块 通过向上一层软件模块提供一个与它原先所期待的运行环境完全一致的接口和方法 抽象出一个虚拟机的软件或硬件接口 是的上层软件可以直接运行在虚拟机的环境上 虚拟化的层面硬件层虚拟化 通过虚拟硬件抽象层来实现虚拟机 为虚拟机操作系统呈现和物理硬件相似或接近的硬件层 操作系统层虚拟化 指操作系统的内核可以提供多个互相隔离的用户态实例 各自有自己独立的文件系统 网络和系统设置 库函数等等 又叫容器虚拟化 内存虚拟化 操作系统通过段式页式管理 提供用户态所有应用程序一个连续完整的内存空间 从而屏蔽物理内存细节 简化应用开发 编程语言层的虚拟化 由虚拟机runtime系统将中间代码动态翻译成硬件的机器语言执行 从而在不同硬件和操作系统上运行 例如java的JVM 虚拟化简介 系统虚拟化 在系统虚拟化中 物理资源通常称为宿主 host 而虚拟出来的资源称为客户 guset 而虚拟化管理软件成为VMM 虚拟化简介 虚拟化的优点封装性 以虚拟机为粒度的封装似的虚拟机运行环境的保存非常便捷 部署 备份和恢复都非常迅速 多实例 在一个计算机上运行多个虚拟机使得硬件资源的利用率更高 通过多态硬件服务器组成的集群资源池 可以根据负载动态启用或关闭服务器 隔离 相比同一操作系统中的多任务 每个应用程序可以在自己的操作系统中独立的运行 不会影响到其他程序 硬件无关性 通过虚拟化模拟出的应用程序所需的硬件资源 从而使得应用和具体硬件关联性大大降低 通过动态迁移技术更是可以将运行状态的虚拟机无缝的迁移到其他服务器上运行 虚拟化实现技术 系统虚拟化的实现方式基于软件完全虚拟化 又称全虚拟化 通过软件的方式完整模拟底层硬件环境 让客户机操作系统完全觉察不到是运行在一个虚拟平台上 这样的虚拟平台可以直接运行现有的操作系统 而无需对操作系统进行任何修改 具体的内容包括对处理器 内存和I O的虚拟化处理 代表是Boches Qemu硬件辅助的全虚拟化 基于软件的完全虚拟化方式中 由于所有的指令执行都需要通过软件去模拟 在性能上会有一定的损失 导致虚拟机运行效率明显低于物理机 如果能把部分硬件 如物理CPU 能处理的指令直接交给硬件执行 而对于硬件不支持的操作则采用软件模拟的方式 这样就会大大提高效率 代表是基于KVM的QEMU VMWare 半虚拟化 通过修改操作系统的代码来解决虚拟化过程中的问题来实现虚拟化 代表是Xen Xen也支持全虚拟化 虚拟化实现技术 异质与同质虚拟化异质虚拟化 在一种指令体系架构的宿主机中虚拟另一种体系架构下的虚拟机 例如 x86虚拟arm 所有指令都需要重新翻译 模拟后执行 效率非常低下 通常不会超过10 同质虚拟化 虚拟机和宿主机是同种指令体系架构 例如 x86虚拟x86 powerpc虚拟powerpc 同质虚拟化中很多指令可以直接在物理硬件上运行 而不需要逐条指令翻译 效率较高 现代实用级别服务器系统虚拟化都是同质虚拟化 敏感指令 同质虚拟化中 那些由于会产生冲突无法直接在物理硬件上运行的指令称作敏感指令 例如 涉及到硬件设备 内存寻址等方面的指令 同质虚拟化的实现本质就是捕获与模拟 即补获敏感指令 模拟实现其行为 虚拟化实现技术 实现同质全虚拟化需要解决的问题CPU虚拟化 实现CPU指令的模拟 中断和异常的模拟和注入内存虚拟化 提供所有虚拟机一个从0开始的连续物理内存空间 在各虚拟机之间有效隔离 调度以及共享内存资源 IO虚拟化 管理有限的外设资源 截获guestos对设备的访问请求 通过软件模拟的方式来模拟真实设备的效果 硬件辅助虚拟化 硬件需求 确定机器有VTgrepvmx proc cpuinfo INTEL芯片 grepsvm proc cpuinfo AMD芯片 确保BIOS里开启VTIntel R VirtualizationTech Enabled 确保内核版本较新 支持KVM用uname r查看内核版本 如果在2 6 20以下的linux版本 需升级内核 硬件辅助虚拟化 虚拟化漏洞与硬件辅助虚拟化基本原理x86硬件支持4个特权级 Ring 一般内核运行在Ring0 用户应用运行在Ring3一些关键操作指令只能在最高特权级别上执行 它们一般被称为特权指令 如果在非特权级别上试图执行特权指令 将生成一个一般保护异常非特权指令则可以在任何一个权限级别执行敏感指令是VMM不可以轻易让客户操作系统执行的指令 如果所有敏感指令都是特权指令 就可以利用保护异常实现虚拟化当一部分敏感指令并不是特权指令 这就出现问题了 非特权指令在Ring1 Ring3上是可以执行 VMM不会处理这些指令 这就是硬件架构上的虚拟化漏洞 硬件辅助虚拟化 VT x引入两种模式 统称VMX模式根模式 VMXRootOperation VMM运行的模式非根模式 VMXNon Root 客户机所运行的模式非根模式的下所有敏感指令的行为被重新定义 他们不经虚拟化就直接运行或通过陷入再模拟的方式运行 在根模式下所有的指令行为没有变化非根模式下敏感指令引起的 陷入 称为VM Exit VM Exit自动从非根模式转换为根模式VM Entry操作由VMM发起 通常是调度某个客户机运行 此时 CPU由根模式切换到非根模式VT x引入了VMCS VMCS保存CPU需要的相关状态 VMCS主要提供CPU使用 CPU发生VM Exit和VM Entry时会自动更新VMCS VMM通过指令配置VMCS 进而影响CPU VMCS Virtual MachineControlStructure VMCS是保存在内存中的数据 包含了虚拟CPU相关寄存器的内容和虚拟CPU相关的控制信息 每个VMCS对应一个虚拟CPU 任何时刻VMCS与物理CPU是一对一的绑定关系VMCS不同时刻可以绑定到不同的物理CPU 这种绑定关系的变化称为VMCS的迁移VT x提供了两条指令用于VMCS的绑定和解除绑定 VMPTRLD 将指定的VMCS与执行该指令的物理CPU绑定VMCLEAR 将执行该指令的物理CPU与他的VMCS解除绑定 该指令将物理CPU缓存中的VMCS结构同步到内存中 保证VMCS和新物理CPU绑定时 内存中的值是最新的VM x提供两条指令用于VMX的打开和关闭VMXON 打开VMX操作模式VMXOFF 关闭VMX操作模式 VMCS格式 VMREAD 读VMCS中 索引 的数据VMWRITE 写VMCS中索引指定的域VMCS数据域包括六大信息 Gueststatearea 虚拟机状态域Hoststatearea 宿主机状态域VM ExecutioncontrolfileldsVM entrycontorlfileldsVM exitcontrolfileldsVM退出信息 VMCS块格式 VM Entry与VM Exit 执行基本的检查来确保VM Entry能开始对VMCS中的宿主机状态有效性检查 以确保下一次VM Exit发生时可以正确的从客户机环境切换到VMM环境检查VMCS中客户机状态域的有效性 根据VMCS中客户机状态域来装载处理器状态根据VMCS中VM EntryMSR load区域装载MSR寄存器根据VMCS中VM Entry事件注入控制的配置 可能需要注入一个事件到客户机中 CPU首先将此次VM Exit的原因记录到VMCS相应的信息域中 VM Entryinterruption information字段有效位 bit31 清零CPU状态被保存到VMCS客户机状态 根据设置 CPU也可能将客户机MSR保存到VM ExitMSR Store区域根据VMCS中宿主机状态和VM Exit控制域中的设置 将宿主机状态加载到CPU相应寄存器 CPU由非根模式切换到根模式 从宿主机状态域中CS RIP指定的VM Exit入口函数开始执行 VM Entry的过程 VM Exit的过程 内存虚拟化 X86体系内存管理架构 内存虚拟化 内存寻址与页表结构 内存虚拟化 虚拟机影子页表技术 客户机页表GVA GPA载入硬件MMU无法访问真正物理内存影子页表GVA HPA载入硬件MMU访问真正物理内存载入硬件MMU TLB缓存影子页表表项两者关系客户机修改客户机页表TLB刷新INVLPG影子页表同步客户机页表VTLB 内存虚拟化 EPT ExtendedPageTable 被用于支持内存虚拟化 EPT在非根模式下将客户机物理地址 gpa 转换为宿主机物理机地址 hpa 客户机的虚拟地址 gva 到客户机的物理地址 gpa 的转换由客户机页表实现CPU同时使用两套页表 在原有的CR3控制器页表的基础上引入了EPT页表的另一次映射 两次页表转换都由CPU硬件自动完成通过VMCS的 VM Execution控制域 中的EnableEPT字段进行激活EPT在VMentry时生效当EPT生效时 EPTbasepointer指向ExtendedPageTable当VMexit时EPT失效 EPT硬件辅助技术 内存虚拟化 使用EPT硬件直接从GVA转换到HPA KVM虚拟机简介 kernel basedVirtualMachine KVM 是一个开源的系统虚拟化模块 自Linux2 6 20之后集成在Linux的各个主要发行版本中 它使用Linux自身的调度器进行管理 KVM的虚拟化需要硬件支持 如IntelVT技术或者AMDV技术 是基于硬件的完全虚拟化kvm由两个部分组成 一个是KVMDriver 已经成为linux内核的一个模块 负责虚拟机的创建 虚拟机内存的分配 虚拟机寄存器的读写以及虚拟CPU的运行等 另外是一个稍微修改过的qemu 用于模拟PC硬件的用户空间组件 提供I O设备模型以及访问外设的途径 qemu是一种模拟处理器 现在运用最多的就是将KVM和QEMU结合起来KVM使用了QEMU的一部分 并稍加改造 就成了可控制KVM的用户空间工具了 KVM基本结构 KVM在Linux内核态与用户态的实现 内核空间代码实现的功能包括以下几个方面 实现硬件辅助的虚拟化的核心功能 提供用户空间对KVM控制 对x86平台设备进行仿真 实现IOPort空间和MMIO空间的仿真 MMU虚拟化的支持 PCI Passthrough相关的功能 KVM在用户态的实现 qemu 包括以下部分 实现与KVM内核接口的用户空间逻辑 各种层次和类型的硬件设备的仿真 虚拟块设备的不同磁盘Image文件格式的支持 VNC SPICE等表示层协议的支持 Virtio设备的后端 QMP协议的支持 KVM在Linux内核态与用户态的实现 内核空间代码实现的功能包括以下几个方面 实现硬件辅助的虚拟化的核心功能 提供用户空间对KVM控制 对x86平台设备进行仿真 实现IOPort空间和MMIO空间的仿真 MMU虚拟化的支持 PCI Passthrough相关的功能 KVM在用户态的实现 qemu 包括以下部分 实现与KVM内核接口的用户空间逻辑 各种层次和类型的硬件设备的仿真 虚拟块设备的不同磁盘Image文件格式的支持 VNC SPICE等表示层协议的支持 Virtio设备的后端 QMP协议的支持 KVM QEMU的执行路径 QEMU的设备虚拟化 设备虚拟化基本原理 1 模拟设备所具有的所有请求和响应的逻辑模块2 从操作系统的角度 模拟目标设备的软件接口 实现相应的功能3 对于真实设备硬件的内部逻辑以及同其他设备的连接 则不需要精确模拟 QEMU的设备虚拟化 设备模型的软件接口 PCI配置空间寻址方式通过平台相关的寄存器访问 由两个寄存器组成 一个指定设备和偏移 一个读取或写入数据 QEMU的设备虚拟化 2 PCI配置空间偏移地址 PCI配置空间的模拟 客户机发现和初始化设备时会访问PCI配置空间 由于客户机使用相同的配置空间寄存器来访问设备的配置空间 因此只要拦截对这些寄存器的访问 就可以用进行相应的模拟 QEMU的设备虚拟化 不同访问设备方式的模拟 端口IO pic dma 通过特定的指令访问IO空间 x86平台包括in out ins outs qemu会事先注册特定端口的读写处理函数 当向这些端口发出IO指令时 就会调用相应的处理函数 完成指定的处理逻辑MMIO 某些内存区域没有被映射到RAM存储器 而是设备的MMIO或寄存器 操作系统通过页表将相应的内存区域映射到虚拟内存空间 并通过类似访问内存的方式访问设备寄存器 和端口IO类似 不同的是页表中并不存在相应的映射 因此会导致缺页异常 KVM拦截这些异常 进行处理或交给qemu进行处理 QEMU的设备虚拟化 DMA和中断的模拟 DMA DirectMemoryAccess 操作系统向特定的硬件寄存器写入DMA地址 然后向另一寄存器地址写入DMA命令来发起DMA操作 由于DAM会读写IO端口或MMIO 因此可以用相应的读写处理函数进行拦截和模拟中断 当设备需要操作系统处理中断时 会通过虚拟中断控制器发出中断 CPU相应中断时 通过读写特定寄存器清除中断QEMU通过模拟中断控制器来进行处理 QEMU的磁盘虚拟化 IDE简介与数据传输模式 IDE是英文IntegratedDriveElectronics的缩写 翻译成中文叫做 集成驱动器电子装置 它的本意是指把控制器与盘体集成在一起的硬盘驱动器 通常我们所说的IDE指的是硬盘等设备的一种接口技术 IDE接口也叫ATA AdvancedTechnologyAttachment 接口 即高级技术附加 PIO模式 ProgrammingInput OutputModel 一种通过CPU执行IO端口指令来进行数据读写的数据交换模式 DMA模式 DirectMemoryAccess 是一种不经过CPU而直接从内存存取数据的数据交换模式 QEMU的磁盘虚拟化 QEMU的PIO模拟 QEMU的磁盘虚拟化 QEMU的DMA模拟 QEMU的磁盘虚拟化 QEMU的磁盘Cache QEMU的磁盘虚拟化 半虚拟化驱动与QEMU中的VirtIO 容器虚拟化技术 什么是容器虚拟化 轻量级的虚拟化仅隔离进程和上下文相关资源模拟操作系统行为而不是硬件行为不需要提供指令解释机制以及全虚拟化的其他复杂特性更少的硬件资源需求 更快的运行速度 相同硬件条件下 可同时支撑虚拟机的数量以及创建 启动虚拟机的速度是全虚拟化的数十到数百倍典型代表 OpenVZ LXC 容器虚拟化技术 传统 硬件辅助 全虚拟化架构 容器虚拟化架构 容器虚拟化技术 LXC简介LXC为LinuxContainer的简写 可以提供轻量级的虚拟化 以便隔离进程和资源 而且不需要提供指令解释机制以及全虚拟化的其他复杂性 提供了在单一可控主机节点上支持多个相互隔离的servercontainer同时执行的机制 LinuxContainer有点像chroot 提供了一个拥有自己进程和网络空间的虚拟环境 但又有别于虚拟机 因为lxc是一种操作系统层次上的资源的虚拟化 除了内核特性之外 LXC提供了一套用户态管理工具 常用的有 lxc execute lxc start lxc kill lxc destroy lxc info lxc ps等等 容器虚拟化技术 LXC的关键技术ControlGroups cgoups cgroups允许定义一个包括一个或多个进程 例如 sshd apache等 然后设置一系列资源控制和记账选项来控制该组和其他子系统分离 包括 文件系统访问 通用设备访问 内存资源 网络设备资源 CPU带宽 块设备IO带宽等POSIXFileCapabilitiesPOSIX文件能力是一种分配权限给一个进程允许更多的特定安全控制而不是传统的 root 对应 user 的常规unix操作系统权限分离 容器虚拟化技术 Docker简介docker是一个基于LXC的高级容器引擎 Docker基于底层的LXC特性基础上 在上层构建了一套更高层次的具备多个强大功能的工具集 Docker定义了一个将应用打包的规范 而它的所有依赖都被封装到了一个简单对象里 它可以被传输到任意一台能运行Docker的机器 并且在这里启动Docker的实例之后 它能够确保承载应用的执行环境将会与之前所定义的完全一致 容器虚拟化技术 Docker的技术实现 LXC Cgroup namespace Chroot veth 用户态控制脚本Docker LXC AUFS 构建与控制工具 容器虚拟化技术 Docker的常用命令示例获取docker 配置好centos extras软件源 yuminstalldocker启动docker servicedockerstart或systemctlstartdocker service下载一个镜像 dockerpullcentos查看确认镜像 dockerimagescentos运行一个容器并进入其bash dockerrun i tcentos bin bash查看正在运行的容器列表 dockerps在容器中安装软件包并退出 yuminstallwget exit保存容器 dockercommitid dockerps查看的id的前2位即可 wget centos 名称 停止容器 dockerstopid dockerkill也类似 但stop发送SIGTERM kill发送SIGKILL 容器虚拟化技术 Docker的常用命令示例续 host与容器之间拷贝文件 dockercpcontain id tmp a txt root 类似scp 也可以反过来从host拷贝到容器里 但需要先停止容器 删除一个容器 dockerrmid删除一个模板 dockerrmiimage name删除所有容器 dockerrm dockerps a q 容器虚拟化技术 容器虚拟化的局限 虚拟机只能部署同类操作系统 Linux 基于相同内核 虚拟机无法加载特定内核模块或驱动隔离性不如全虚拟化 host更容易受到影响 Libvirt简介 什么是libvirtlibvirt是一套免费 开源的支持Linux下主流虚拟化工具的C函数库 其旨在为包括kvm vmware xen lxc等等在内的各种虚拟化平台提供一套方便 可靠的编程接口 支持与C C Ruby Python Java等多种主流开发语言的绑定 Libvirt简介 什么是libvirtlibvirt是一套免费 开源的支持Linux下主流虚拟化工具的C函数库 其旨在为包括kvm vmware xen lxc等等在内的各种虚拟化平台提供一套方便 可靠的编程接口 支持与C C Ruby Python Java等多种主流开发语言的绑定 Libvirt简介 更详细的libvirt架构图 Libvirt简介 Libvirt的优点 提供统一 稳定 开放的源代码的应用程序接口 API 守护进程 libvirtd 和和一个默认命令行管理工具 virsh 提供了对虚拟化客户机和它的虚拟化设备 网络和存储的管理 提供了一套较为稳定的C语言应用程序接口 目前 在其他一些流行的编程语言中也提供了对libvirt的绑定 在P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国学经典解读图书出版行业跨境出海项目商业计划书
- 二手车市场绿色供应链创新创业项目商业计划书
- 人工智能伦理与法律教育企业制定与实施新质生产力项目商业计划书
- 自动化软胶囊填充封装机行业深度调研及发展项目商业计划书
- 书籍节庆策划与创新创业项目商业计划书
- 远程手术指导与协作系统行业跨境出海项目商业计划书
- 药物稳定性提升方案行业深度调研及发展项目商业计划书
- 体育社交平台行业深度调研及发展项目商业计划书
- 六盘水师范学院《自动控制原理俄》2023-2024学年第二学期期末试卷
- 2025-2030年中国动物抗生素和抗菌剂行业市场现状供需分析及投资评估规划分析研究报告
- 2025江苏扬州宝应县“乡村振兴青年人才”招聘67人笔试备考试题及答案详解一套
- 2025年泸州市中考语文试卷真题
- 2025年动漫IP产业链构建与动漫产业产业链协同效应研究报告
- 2025年安全员之A证企业负责人模拟题库及答案(附答案)
- 食管癌全程管理专家共识(2025)解读
- 山东省潍坊安丘市等三县2024-2025学年高一下学期期中考试英语试题(原卷版+解析版)
- 2024-2025学年八年级下册道德与法治期末测试模拟卷(统编版)(含答案)
- 美团入驻协议书
- 电力故障应急演练改进预案
- 胃肠间质瘤规范化外科治疗中国专家共识(2025版)解读
- 公路水运工程生产安全重大事故隐患判定标准2025
评论
0/150
提交评论