美文网首页
KVM 高级功能

KVM 高级功能

作者: jeepshen | 来源:发表于2017-01-06 21:28 被阅读0次

    半虚拟化驱动

    1. VirtIO

      • qemu纯软件模拟的I/O设备:回路长,效率低
      • virtio半虚拟化驱动可以获得更好的I/O性能,需要在客户机中安装virtio驱动(linux,windows等)
    2. 直接分配设备
      在kvm/qemu中,虚拟机可以使用的设备分为三种:

      • 纯软件模拟的设备:软驱什么的
      • 半虚拟化设备:virtio的驱动
      • 硬件直通:pci设备直接分配 (intel VT-d的支持)网卡,硬盘,USB设备,VGA显卡,设备直通,但是只允许一个客户机使用。
    3. 热插拔需要

      • BIOS: qemu/kvm默认使用seaBIOS作为虚拟机的BIOS,支持pci的热插拔
      • PCI总线:需要CPU的VT-d支持
      • 操作系统
      • 虚拟机中的驱动程序
    4. 动态迁移

      分为静态迁移和动态迁移,也有人说冷迁移和热迁移。

      静态迁移:
      1. 关闭客户机后复制镜像。问题:不能保存客户机中运行的工作负载,就是内存中的数据。
      2. 暂停客户机后,复制内存镜像到另外的机器中运行,可以保存迁移之前的内存状态和工作负载。
      动态迁移

      动态迁移是指在保证客户机服务的正常运行的同时,让虚拟机在不同的宿主机见迁移。一个成功的动态迁移,需要保证客户机的内存,硬盘,网络迁移之后保持不变,而且迁移过程的服务暂停时候应该很短或者没有。

      动态迁移效率的衡量标准:
      1. 整体的迁移时间
      2. 服务暂停的时间
      3. 对运行中服务的影响
      动态迁移的应用场景:
      1. 负载均衡:一台服务器过载时,将正在运行的虚拟机迁移负载较低的服务器上;
      2. 解除硬件依赖: 服务器需要升级的时候,将该服务器上的虚拟机迁移到别的机器以便升级;
      3. 节约能源:负载普遍过低的时候,集中服务以节省能源;
      4. 远程的迁移。
    5. 动态迁移的例子:基于共享存储的动态迁移。
      如果源宿主机和迁移的目的宿主机共享存储,则只需传输vcpu状态,内存和虚拟内存中的设备状态到目的主机就可以,否则还需要传输存储。
      考虑到平台:后备镜像使用的是共享存储,但是增量镜像不是共享的,因为这是由业务性质决定的,实验教学用的虚拟机不是提供长期和稳定的服务,将网络I/O替换为磁盘I/O提高了性能。
      基于共享存储的动态迁移流程:

      1. 虚拟机在源宿主机上正常运行,迁移开始;
      2. 虚拟机的内存页传输到目的宿主机上,同时QEMU/KVM记录下期间对已传输内存页的所有修改操作;
      3. 估计传输速度,当剩余内存可在一定时间周期内传输完成时(30s?),关闭源宿主机上的虚拟机,完成传输;
      4. 传输保存的内存页修改操作;
      5. 在目的宿主机上恢复虚拟机的运行状态。
        服务暂停的时间:内存页传输时间+虚拟机临时停机时间+修改操作传输的时间+恢复启动的时间?
        这个时间和网络带宽有很大关系,如果虚拟机内存页频繁修改,内存I/O速率大于网络I/O则动态迁移不可能完成。
    6. KSM(共享内存) Kernel Samepage Merging 内存同页合并
      KSM让内核检查正在运行的应用程序,并比较他们的内存,如果多个进程之间共享完全相同的内存页,就合并成一个单一的内存页,并标记为"copy on write",当由进程试图修改cow的内存页的时候,在复制出一个新的内存页。
      在KVM/QEMU中,一个客户机就是一个QEMU进程,当多个虚拟机运行的是一个操作系统的时候,KSM的作用就会很显著。主要由两个方面:

      1. 相同的内存合并,减少了客户机的内存使用量。
      2. 是内存过载使用的一种很好的实现方式。
        但是,KSM需要由进程检测可以合并的内存页,虽然内存使用量降低,但是CPU的使用量会提高。
    7. 其他特性:
      。。。。

    相关文章

      网友评论

          本文标题:KVM 高级功能

          本文链接:https://www.haomeiwen.com/subject/qouxbttx.html