zoukankan      html  css  js  c++  java
  • KVM 开启嵌套虚拟化

    问题

    在 CentOS KVM 上启动虚拟机来部署 OpenStack 测试环境,在启动具有 CPU 绑定、NUMA 亲和的虚拟机时触发错误:

    libvirtError: Requested operation is not valid: cpu affinity is not supported
    

    这是因为 Nova 使用了 qemu virt_type,而 Qemu 是通过模拟来实现 CPU、内存虚拟化的,所以自然也就不支持 cpu affinity 了。要使用 KVM 硬件虚拟化才可以支持 CPU 绑定,于是修改 nova.conf:

    [libvirt]
    ...
    virt_type=kvm
    

    重试,又出现错误:

    libvirtError: invalid argument: could not find capabilities for domaintype=kvm
    

    这是因为我的 HostOS 没有开启 KVM Nested 嵌套虚拟化,即 KVM 虚拟机里面不支持 KVM 虚拟机,因为第一次 KVM 虚拟机没能具有与 HostOS 相同的 CPU 环境。

    解决

    KVM 嵌套式虚拟 Nested 是一个可通过修改内核参数来启用的功能,它能够使一台虚拟机具相同的有物理机 CPU 特性,支持 vmx|svm(AMD) 硬件虚拟化,该特性需要 Linux 内核版本大于 Linux 3.x。

    查看是否启动了 Nested:

    [root@virtualbmc ~]# cat /sys/module/kvm_intel/parameters/nested
    Y
    

    启用 Nested:

    echo 'options kvm_intel nested=1' >/etc/modprobe.d/kvm-nested.conf
    
    # 卸载内核模块
    modprobe -r kvm_intel
    
    # 重新加载内核模块
    modprobe kvm_intel
    

    NOTE:如果无法重载内核模块,可以考虑直接重启

    如果希望已经存在的虚拟机支持嵌套虚拟化,还需要重新编辑虚拟机的 XML 文件,修改其 cpu mode。

    # 关机
    $ virsh shutdown domain-xxx
    
    # 编辑
    $ virsh edit domain-xxx
    
    <cpu mode='host-passthrough'>
    
    # 开机
    $ virsh start domain-xxx
    

    登录入虚拟机检查是否有 CPU 穿透:

    [root@overcloud-ovscompute-0 ~]# egrep '(vmx|svm)' /proc/cpuinfo
    flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms xsaveopt
    
  • 相关阅读:
    [BAT] 通过批处理删除7天前的报告,并删除当前目录下的空文件夹
    Codeforces Round #361 (Div. 2) A
    Codeforces Round #359 (Div. 2) C
    Codeforces Round #359 (Div. 2) B
    Codeforces Round #359 (Div. 2) A
    Codeforces Round #357 (Div. 2) C
    Codeforces Round #357 (Div. 2) B
    Codeforces Round #357 (Div. 2) A
    Codeforces Round #356 (Div. 2) C
    Codeforces Round #356 (Div. 2) B
  • 原文地址:https://www.cnblogs.com/jmilkfan-fanguiju/p/10589716.html
Copyright © 2011-2022 走看看