云集技术学社 一文带您了解深信服aSV服务器虚拟化功能及原理( 二 )



文章图片
IO全虚拟:以磁盘或者网络为例 , 当虚拟机有数据需要发送的时候 , 需要通过Qemu模拟所有的硬件寄存器 , 虚拟机OS把这些数据填充到模拟的硬件中 , 然后访问设置这些寄存器 , 触发VM_Exit退出 , Qemu接收到这些数据 , 再把这些数据真实的写入到磁盘、发送到网卡 。这个过程发送一个数据包 , 可能要多次设置寄存器 , 导致多次退出 , 从而性能较差 。
03
超配原理以及限制介绍
虚拟机在Hypervisor看来 , 就是一个配置文件+vDisk文件(配置文件会注明磁盘大小、CPU、内存数量、型号等等基础信息 , 这些信息会在虚拟机启动的时候 , 传递到虚拟机启动参数) , 而每个vDISK实际上在Hypervisor看来就是一个文件 。
KVM的vDISK有两种格式:RAW和QCOW2格式 。RAW格式性能更高些 , 但相比QCOW2 , RAW不支持快照、精简分配等特性 , 故而深信服采用的是QCOW2格式 。
对于QCOW2文件 , 有三种模式:精简分配、动态分配(需要底层存储支持空洞文件)、预分配模式 。其中“预分配”性能最好 , 接近于RAW格式的性能 , “精简分配”性能最差 , “动态分配”居中(注意:目前超融合中动态分配已接近于预分配性能、aSAN有优化) 。
对于精简分配和动态分配 , 假设实际上是配置文件写分配2TB,但实际QCOW2文件占用可能很小(实际大小取决于真实数据) , 因而可以超配 , 即配置的虚拟机总磁盘大小 , 大于实际物理主机的磁盘大小 。
云集技术学社 一文带您了解深信服aSV服务器虚拟化功能及原理
文章图片

文章图片
物理主机虚拟内存包含物理内存(内存条 , 高速)+SWAP(硬盘分区、龟速);物理内存不够时 , 系统会根据配置使用SWAP分区(深信服超融合在平台上默认设置“尽量不用SWAP”的策略) 。vMEM超配本质是假设给虚拟机分配32G内存 , 虚拟机实际占用只了24G , 理论上8G(32G-24G=8G)是可以回收的 , 这回收的部分理论上可以给其他虚拟机用 。此时 , 就需要用到KSM(没有安装aTool的生效)或者气泡内存技术(安装了aTool的生效) 。但内存超配可能会造成系统物理内存耗尽 , 导致系统卡顿的情况 。因此 , 在核心系统上 , 要控制超分内存的比率 , 或者不要超配 。
每个运行中的虚拟机在Hypervisor看来 , 就是一个系统进程 , 而vCPU是该进程的一个线程 。同一时刻 , 每个vCPU线程最多占用一个物理CPU的逻辑核 , 且多个vCPU之间的同步、调度会消耗额外的资源(因此 , 当单个虚拟机的vcpu数量超过物理主机的逻辑核时 , 实际上会让虚拟机的性能反而变低) 。
无论vCPU数量配置多大 , 总的物理主机CPU资源是恒定的 , 因而:
(1)单个虚拟机最大的配置不要超过物理CPU的核心数量;
(2)主机上运行所有虚拟机的总vCPU数量不能太多 , 否则调度消耗会增大 。生产环境最佳实践为不超过CPU的逻辑核心的2倍 , 主要参考真实生产中物理CPU占用一般不超过20%;超配2倍以后 , 物理CPU占用40%左右 , 超配要考虑峰值预留 , 且物理CPU占用超过50%以上 , 已经比较繁忙了 。
04
热迁移基本原理介绍
热迁移分为两种形式 , 一种是共享存储热迁移 , 此种热迁移形式 , 需要虚拟机镜像在共享存储上 , 此种迁移类型 , 只需要通过网络发送客户机的vCPU执行状态、内存中的内容、虚机设备的状态到目的主机上 。另一种是跨主机跨存储热迁移 , 与跨主机不跨存储热迁移类似 。不同的是其需要在目的存储创建相同配置的虚拟机镜像(空白的 , 没有数据) , 之后仍然是在目的宿主机上启动目的端Qemu进程 , 目的端Qemu镜像打开新创建的镜像文件 。另外还需要传送源端虚拟机的磁盘数据到目的端 。