zoukankan      html  css  js  c++  java
  • 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

        

  • 相关阅读:
    mysql数据创建带参的存储过程,并在存储过程中调用另一个存储过程
    python解析.xls/.xlsx文件--openpyxl模块(第三方)
    python使用django开发接口
    Mysql创建存储过程--批量插入数据
    Centos7下安装kafka,并使用python操作kafka的简单使用
    Centos7下安装JDK1.8
    Centos7下docker的安装
    python解析.xml文件-- xmltodict模块(第三方)
    解决:git SSL certificate problem: unable to get local issuer certificate
    AD域是什么意思?
  • 原文地址:https://www.cnblogs.com/sq5288/p/11690411.html
Copyright © 2011-2022 走看看