发表于 2021-10-21 09:36

申请会员id:放南山

申请ID:放南山
个人邮箱:1103098607@qq.com
原创技术文章:

虚拟化技术

QEMU, KVM及QEMU-KVM介绍
    https://www.cnblogs.com/gzxbkk/p/10116000.html
    > QEMU(Quick emulator)
      QEMU模拟一系列的硬件模型,将 guest os 发出的指令翻译给真正硬件进行操作,使guest os认为自己和硬件直接打交道,
      但由于所有指令都需要经过QEMU来翻译,因而性能会比较差
      
      QEMU可以独立模拟一台完整计算机的所有硬件,只是性能稍差
      
      图:https://blog.csdn.net/whatday/article/details/78445932
                  Guest OS
                     |
                  QEMU
                     |
                qemu-kvm
                     |
               Host System
                     |
                  Hardware      
      
      https://download.qemu.org/
            qemu-2.10       2017-07
            qemu-3.0      2018-07
            qemu-4.0      2019-03
            qemu-4.1      2019-07
            qemu-4.2      2019-11
            qemu-5.2      2020-03
            qemu-6.0      2021-03
               
    > KVM(Kernel Virtual Machine)
      KVM实际是linux内核提供的虚拟化架构,可将内核直接充当hypervisor来使用。
      KVM需要处理器硬件本身支持虚拟化扩展,如intel VT 和AMD AMD-V技术。
      
      KVM主要负责vCPU的创建,虚拟内存的地址空间分配,
      有了KVM以后,guest os的CPU指令不用再经过QEMU来转译便可直接运行,大大提高了运行速度。
      KVM通过/dev/kvm暴露接口,用户态程序可以通过ioctl函数来访问这个接口
      
      >> 查看 CPU 是否支持 虚拟化
            基于 Intel 处理器的系统,运行 grep vmx /proc/cpuinfo 查找 CPU flags 是否包括 vmx 关键词。
            # grep vmx /proc/cpuinfo
   
            基于 AMD 处理器的系统,运行 grep svm /proc/cpuinfo 查找 CPU flags 是否包括 svm 关键词
            # grep svm /proc/cpuinfo
      
      >> 检查BIOS,确保BIOS里开启VT选项:
            Intel(R) Virtualization Tech
            如有必要,还需在BIOS中开启VT并重启机器。

      但KVM的本身【只提供了CPU和内存】的虚拟化,而不能提供其它设备如 Disk 的虚拟化,
      所以它必须结合QEMU才能构成一个完整的虚拟化技术,也就有了 QEMU-KVM
      
    > QEMU-KVM==> QEMU
      目前QEMU-KVM已经与QEMU合二为一,所有特定于KVM的代码也都合入了QEMU,当需要与KVM模块配合使用的时候,
      只需要在QEMU命令行加上 --enable-kvm就可以   
   
      Qemu模拟其他的硬件,如Network, Disk,同样会影响这些设备的性能,
      于是又产生了pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能
      
      图:https://blog.csdn.net/whatday/article/details/78445932
                                                Guest OS----------|
                                    /            |            |
            Host-userspace         /      QEMU   |   passthrough qemu
                                    /                |            |
                               qemu-kvm         drivers         |
                                 |                   |            |
               Host-kernel      kvm               drivers --------- |
                                 |                   |               
               Hardware       cpu, mem         net, disk      
               
      在老版本中有单独的qemu-kvm模块存在,结合qemu一起做虚拟机工作。
      在后续新版本中,已经将qemu-kvm模块完全合并到qemu中去。因此当需要使用kvm特性时候,只需要qemu-system-x86_64
      启动命令中增加参数 –enable-kvm参数使能即可
      
    > libvirt 与 kvm, qemu 的关系
      https://www.cnblogs.com/sammyliu/p/4558638.html
      在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvm
      kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
      qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
      因为用到了上面两个东西,所以一般都称之为qemu-kvm。
      
      直接用qemu-kvm的接口管理虚拟化太繁琐,为了方便,通过libvirt 管理工具来调用qemu-kvm接口来实现虚拟化管理
      libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和API。
      Libvirtd是一个daemon进程,可以被本地的virsh调用,也可以被远程的virsh调用,Libvirtd调用qemu-kvm操作虚拟机。
      
      图:https://blog.csdn.net/whatday/article/details/78445932
      
            virsh,virt-manager, virt-viewer, virt-install, other tools
                                     |
                               libvirt API
                              libvirt daemon   
                              qemu (kvm)
                           /          |          \
                        Xen      KVM       VMWare

Hmily 发表于 2021-10-21 10:21


抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
页: [1]
查看完整版本: 申请会员id:放南山