• KVM


    KVM 虚拟化

    KVM 模块是KVM 虚拟机核心部分,其主要功能是初始化CPU 硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟模式下,并对虚拟客户机的运行提供一定的支持。

    QEMU 设备模型,QUMU 本身并不是KVM 一部分,其自身就是一个著名的开源虚拟机软件,与KVM 不同,QEMU 虚拟机是一个纯软件的实现,所以性能不高,但是优点是在支持QEMU 本身编译运行的平台上就可以实现虚拟机的功能,
       甚至虚拟机与宿主机并不是一个同一个架构,QEMU 代码中有整套的虚拟机实现,包括处理器虚拟化,内存虚拟化,以及KVM 使用到的虚拟设备(比如网卡,显卡,存储控制器和硬盘等)
       KVM 在QEMU 的基础上进行了修改,虚拟机运行期间,QEMU 通过KVM 提供的系统调用进入内核,由KVM 模块负责将虚拟机置于处理器的特殊模式。遇到虚拟机进行输入输出操作,KVM 模块会从上次的系统调用出口返回QEMU,
       由QEMU 负责解析和模拟这些设备。
    Intel 虚拟化技术: Intel 虚拟化技术其实是一系列硬件技术的结合,虚拟机监控机软件通过选择利用各项技术,从而提高虚拟化软件的性能或者实现各种不同的功能。

    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 组件

    KVM的组件:
            两类组件:
                /dev/kvm:工作于hypervisor,在用户空间可通过ioctl()系统调用来完成VM创建、启动等管理功能;它是一个字符设备,功能:
                    创建VM、为VM分配内存、读写VCPU的寄存器、向VCPU注入中断、运行VCPU等等;
                qemu进程:工作于用户空间,主要用于实现模拟PC机的IO设备;
        KVM的工具栈:
            qemu:
                qemu-kvm
                qemu-img
            libvirt
                GUI: virt-manager, virt-viewer
                CLI: virt-install, virsh
    
            QEMU主要提供了以下几个部分:
                处理器模拟器
                仿真IO设备
                关联模拟的设备至真实设备;
                调试器
                与模拟器交互的用户接口

    安装

    #检查是否支持虚拟化Intel 系列CPU 支持虚拟化的标志是vmx ,AMD 系列CPU 的标志为svm 。
    [root@localhost
    ~]# grep -E --color "(vmx|svm)" /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm epb tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt dtherm arat pln pts [root@localhost ~]#
    [root@localhost ~]# modprobe kvm #装载模块

    [root@localhost ~]# ls /dev/kvm     #验证
    /dev/kvm
    [root@localhost ~]#

    [root@localhost /]# modinfo kvm   #查看装载的模块
    filename:       /lib/modules/3.10.0-862.el7.x86_64/kernel/arch/x86/kvm/kvm.ko.xz
    license:        GPL
    author:         Qumranet
    retpoline:      Y
    rhelversion:    7.5
    srcversion:     8A3372406CDF0ACF69A0E58
    depends:        irqbypass
    intree:         Y
    vermagic:       3.10.0-862.el7.x86_64 SMP mod_unload modversions 
    signer:         CentOS Linux kernel signing key
    sig_key:        3A:F3:CE:8A:74:69:6E:F1:BD:0F:37:E5:52:62:7B:71:09:E3:2B:96
    sig_hashalgo:   sha256
    parm:           ignore_msrs:bool
    parm:           min_timer_period_us:uint
    parm:           kvmclock_periodic_sync:bool
    parm:           tsc_tolerance_ppm:uint
    parm:           lapic_timer_advance_ns:uint
    parm:           vector_hashing:bool
    parm:           halt_poll_ns:uint
    parm:           halt_poll_ns_grow:uint
    parm:           halt_poll_ns_shrink:uint
    [root@localhost /]# modinfo kvm-amd   #查看装载的模块
    filename:       /lib/modules/3.10.0-862.el7.x86_64/kernel/arch/x86/kvm/kvm-amd.ko.xz
    license:        GPL
    author:         Qumranet
    retpoline:      Y
    rhelversion:    7.5
    srcversion:     D8DE38BB5E913565DEFB99E
    alias:          x86cpu:vendor:*:family:*:model:*:feature:*00C2*
    depends:        kvm
    intree:         Y
    vermagic:       3.10.0-862.el7.x86_64 SMP mod_unload modversions 
    signer:         CentOS Linux kernel signing key
    sig_key:        3A:F3:CE:8A:74:69:6E:F1:BD:0F:37:E5:52:62:7B:71:09:E3:2B:96
    sig_hashalgo:   sha256
    parm:           npt:int
    parm:           nested:int
    parm:           avic:int
    parm:           vls:int
    parm:           vgif:int
    [root@localhost /]# 

    管理工具

    KVM的工具栈:
            qemu:              #管理工具
                qemu-kvm                  
                qemu-img
    libvirt GUI: virt
    -manager, virt-viewer CLI: virt-install, virsh
    #libvirt是一套用于管理硬件虚拟化的开源API、守护进程与管理工具。[3]此套组可用于管理KVM、Xen、VMware ESXi、QEMU及其他虚拟化技术。libvirt内置的API广泛用于云解决方案开发中的虚拟机监视器编排层(Orchestration Layer)。
  • 相关阅读:
    C# savefiledialog 保存文件后 再操作数据库 提示数据库文件路径错误
    转:在C#中使用Nullable类型
    转:Global.asax通过Application_BeginRequest()事件实现访问链接的静态地址映射
    DZ7.0自动伸缩广告
    转:使用HttpModule来实现sql的防注入
    转:System.Web.UI.Page类的构造函数的执行时机
    使用ISAPI_Rewrite做简单实用的301重定向
    IIS7添加ASP.NET网站碰到的问题
    IE9 崩溃的解决方法
    利用ZEND Studio与Zend server对PHP WEB进行调试
  • 原文地址:https://www.cnblogs.com/zy09/p/10796209.html
Copyright © 2020-2023  润新知