Linux:Day51(上) KVM技术基础

KVM:Kernel-based Virtual Machine,Qumranet公司,依赖于HVM:intel VT-x,ADM ADM-V;

KVM模块载入后的系统的运行模式:

  内核模式:GuestOS执行I/O类操作,或其它的特殊指令的操作;称作“来宾-内核”模式;

  用户模式:代表GuestOS请求I/O类操作;

  来宾模式:GuestOS的非I/O类操作;事实上,它被称作“来宾-用户”模式;

  kvm hypervisor;

KVM的两类组件:

  /dev/kvm:工作于hypervisor,在用户空间可通过ioctl()系统调用来完成VM创建、启动等管理功能;它是一个字符设备,功能:创建VM、为VM分配内存、读写VCPU的寄存器、向VCPU注入中断、运行VCPU等等;

  qemu进程:工作于用户空间,主要用于实现模拟PC机的IO设备;

KVM特性:

  内存管理:

    将分配给VM的内存交换至SWAP;

    支持使用Huge Page;

    支持使用Intel EPT或AMD RVI技术完成内存地址映射;GVA-->GPA--HPA

    支持KSM(Kernel Same-page Merging)

  硬件支持:

    取决于Linux内核;

  存储:

    本地存储;

    网络附加存储;

    存储区域网络;

    分布式存储:例如GlustFS

  实时迁移:

  支持的GuestOS:

    Linux,Windows,OpenBSD,FreeBSD,OpenSolaris;

  设备驱动:

    IO设备的完全虚拟化;模拟硬件

    IO设备的半虚拟化;在GuestOS中安装驱动:virtio

      virtio-blk,virtio-net,virtio-pci,virtio-console,virtio-ballon

KVM局限性:

  一般局限性;

    overcommit

    时间记录难以精确,依赖于时间同步机制

  MAC地址:

    VM量特别大时,存在冲突的可能性;

    实时迁移;

    性能局限性;

KVM的工具栈:

  qemu:

    qemu-img:磁盘映像管理工具;

    qemu-kvm:kvm虚拟机管理工具;

  libvirt:

    GUI:virt-manager,virt-viewer

    CLI:virt-install,virsh

  QEMU主要提供了以下几具部分:

    处理器模拟器

    仿真IO设备

    关联模拟的设备至真实设备;

    调试器

    与模拟器交互的用户接口

安装:

  (1) 确保CPU支持HVM

    grep -E --color=auto "(vmx|svm)" /proc/cpuinfo

  (2) 装载模块

    # modprobe kvm

    # modprobe kvm-intel

  (3) 验正:

    /dev/kvm

管理工具栈:

  # yum grouplist | grep -i "virtualization"

    Virtualization:

      qemu-kvm

    Virtualization Client:

      python-virtinst,virt-manager,virt-viewer

    Virtualization Platform:

      libvirt,libvirt-client

    Virtualization Tools

      libguestfs

    

原文地址:https://www.cnblogs.com/sq5288/p/11690411.html