精华内容
下载资源
问答
  • 一般情况下,我们是无法在KVM虚拟机里面再去创建虚拟机的,因为我们的KVM虚拟机的CPU默认情况下并不支持虚拟化功能,对于Inter的CPU来说,如果要支持虚拟化功能,必须要有一个叫vmx的特性,以下是一个物理服务器的...

    嵌套虚拟化

    一般情况下,我们是无法在KVM虚拟机里面再去创建虚拟机的,因为我们的KVM虚拟机的CPU默认情况下并不支持虚拟化功能,对于Inter的CPU来说,如果要支持虚拟化功能,必须要有一个叫vmx的特性,以下是一个物理服务器的CPU信息:

    这里写图片描述
    在CPU特性(flags)中包含了vmx这个特性,说明这台服务器是支持虚拟化功能的,也就是说我们可以在这台服务器上创建虚拟机。我们再看看以这台服务器作为宿主机,创建的虚拟机的CPU特性:
    这里写图片描述
    我们可以看到虚拟机的CPU特性(flags)相比起宿主机来说要少很多,并且没有vmx这个特性,所以我们是无法在这台虚拟机上创建虚拟机的。
    那么,我们如何让创建出来的虚拟机的CPU也带有vmx特性呢?这就要用到所谓的嵌套虚拟化的功能了。当宿主机开启嵌套虚拟化功能时,我们在该宿主机上创建的虚拟机的CPU也可以获得vmx特性,从而可以在该虚拟机中再去创建虚拟机:
    这里写图片描述

    检查宿主机机是否开启了嵌套虚拟化功能:
    这里写图片描述
    cat /sys/module/kvm_intel/parameters/nested结果为Y时表示宿主机支持嵌套虚拟化,为N为不支持。如何开启宿主机的嵌套虚拟化功能可参考这篇文章:http://www.cnblogs.com/jython/p/4458807.html

    创建支持虚拟化功能的虚拟机

    当我们有了支持KVM嵌套虚拟化的宿主机后,便可以创建支持虚拟化功能的虚拟机了。我们使用libvirt来创建虚拟机,虚拟机的配置文件可以参考下面的vm01.xml文件:

    <domain type = 'kvm'>
        <name>vm01</name>
        <memory>2096576</memory>
        <vcpu>2</vcpu>
        <os>
            <type arch = 'x86_64' machine = 'rhel6.0.0'>hvm</type>
            <boot dev = 'hd'/>
        </os>
        <features>
            <acpi/>
            <apic/>
            <pae/>
        </features>
        <cpu mode='host-model'> <!--使虚拟机也支持虚拟化 -->
            <model fallback='allow'/>
            <topology sockets='1' cores='2' threads='1'/>
        </cpu>
        <clock offset = 'localtime'/>
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>restart</on_reboot>
        <on_crash>destroy</on_crash>
        <devices>
            <emulator>/usr/libexec/qemu-kvm</emulator>
            <disk type = 'file' device = 'disk'>
                <driver name = 'qemu' type = 'qcow2'/>
                <source file = '/var/lib/libvirt/images/CentOS7.2-20180708.qcow2'/>
                <target dev = 'hda' bus = 'ide'/>
            </disk>
            <interface type='bridge'>
                    <source bridge='virbr0'/>   <!--宿主机的网桥,virbr0为kvm模块提供给连接在该网桥上面的guest使用NAT方式访问外网 -->
                    <target dev='vnet001'/>   <!-- 在virbr0网桥上增加的网口 -->
                    <model type='virtio'/>
                    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
            </interface>
            <input type ='tablet' bus='usb'/>
            <input type = 'mouse' bus = 'ps2'/>
            <graphics type = 'vnc' port = '-1' listen = '0.0.0.0' autoport = 'yes'/>
            <console type='pty'>  <!-- 加上这行设置,否则无法使用virsh console连上虚拟机-->
                  <target port='0'/>
             </console>
        </devices>
    </domain>
    
    

    使用以下命令创建虚拟机:

    virsh define vm01.xml
    virsh start vm01
    

    进入虚拟机,查看CPU特性,可以看到此时虚拟机的CPU已经支持vmx特性:
    这里写图片描述

    我们再参考上面的方式在这个虚拟机中使用libvirt再创建一台虚拟机:
    这里写图片描述

    可以看到虚拟机成功创建出来了。

    展开全文
  • openstack开启kvm虚拟机嵌套

    千次阅读 2018-04-19 21:21:12
    一、 linux kernel开启嵌套 嵌套式虚拟nested是一个可通过内核参数来启用的功能。它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化。关于nested的具体介绍,可以看这里 。该特性需要内核升级到...

    作者:【吴业亮】

    博客:https://wuyeliang.blog.csdn.net/

    一、 linux kernel开启嵌套

    嵌套式虚拟nested是一个可通过内核参数来启用的功能。它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化。关于nested的具体介绍,可以看这里 。该特性需要内核升级到Linux 3.X版本 ,所以在centos6下是需要先升级内核的,而在centos7下已默认支持该特性,不过默认是不开启的,需要通过修改参数支持。
    启用Nested

    # echo 'options kvm_intel nested=1' >/etc/modprobe.d/kvm-nested.conf
    

    卸载模块

    # modprobe -r kvm_intel
    

    重新加载模块

    # modprobe kvm_intel
    

    查看Nested是否启用成功

    # cat /sys/module/kvm_intel/parameters/nested
    Y
    

    二、. 修改openstack配置
    在nova的配置文件修改cpu mode

    vim /etc/nova/nova.conf
    
    [libvirt]
    cpu_mode=host-passthrough
    

    参考:
    https://docs.openstack.org/nova/queens/contributor/testing/libvirt-numa.html

    https://www.server-world.info/en/note?os=CentOS_7&p=kvm&f=7

    展开全文
  • Short answer: You can run 32-bit operating systems nested, but not 64. 可以运行32位,64的运行不了   Below is the excerpt from my book: VirtualBox at warp speed, Book Nested ...

    https://www.quora.com/Can-I-install-Virtualbox-in-a-virtual-machine

     

    Here is a previous question on Quora about it: Is it possible to install Virtual machine inside a virtual machine using virtual box? aka nesting of virtual machines!

    Short answer: You can run 32-bit operating systems nested, but not 64.

    可以运行32位,64的运行不了

     

    Below is the excerpt from my book: VirtualBox at warp speed, Book

    Nested Virtualization

    Nested virtualization is running VM inside a guest VM. This is a fun topic/project to think about and mostly people wonder why this is important or what purpose it serves.

    Understanding if this is possible and why if not, helps us understand virtualization better. For VirtualBox itself the answer to this is “yes” for running 32-bit nested guests and “no” for 64-bit. VirtualBox does NOT have the code for running 64-bit VMs without CPU Extensions (AMD-V, Intel VT-x). So the inner VM that is running on a host VM will not be able to support 64-bit. The parent/host (which is a guest VM) will not have the CPU extension feature. Supposedly VMware and Xen support soft coding the CPU extensions. And then there are possibilities of crossing virtualization technologies such as starting Xen inside VirtualBox, etc.

    The Intel Haswell CPU has a new virtualization technology called Virtual Machine Control Structure (VMCS) Shadowing. VMCS shadowing, accelerates nested virtualization allowing guests to run with minimal impact. VMCS may become mainstream once all virtualization technologies start to implement it. VMCS allows you to run multiple hypervisors on one CPU natively. If there is a need to create nested VMs (or many VMs), consider running container based VMs such as Linux Containers or OpenVZ. Containers should typically run inside another VM without any issues.

    Reasons

    Below are some reasons to use nested virtualization.

    • Cloud infrastructure development work
    • Testing or learning other hypervisors
    • Split off container type machines inside hypervisor type machines where it makes sense
    • If you are already renting a server in the cloud that is virtual and want to have more VMs inside
    展开全文
  • 虚拟机中(Hyper-V)中再建一个虚拟机(Hyper-v虚拟机嵌套) 在虚拟机中再建一个虚拟机这种想法的是可行的,作者在这里呢是在Hyper-V中又用Hyper-v建立了一个虚拟机虚拟机嵌套。 但是默认的在Hyper-v这个程序...

    在虚拟机中(Hyper-V)中再建一个虚拟机(Hyper-v虚拟机嵌套)
    在虚拟机中再建一个虚拟机这种想法的是可行的,作者在这里呢是在Hyper-V中又用Hyper-v建立了一个虚拟机即虚拟机的嵌套。
    但是默认的在Hyper-v这个程序被开启的时候,Hyper-v虚拟化嵌套默认是关闭的。我们需要开启,否则,在虚拟机中打不开Hyper-V的。

    我们需要以管理员的形式来打开cmd,然后运行以下命令:
    Set-VMProcessor -VMName -ExposeVirtualizationExtensions $true
    (注意,VMName是指你所建立的虚拟机的名字,尖括号不需要)

    然后启动虚拟机,在虚拟机中再打开Hyper-v服务或者安装其他虚拟机也可
    (注意,嵌套虚拟机。所嵌套的虚拟机非常卡,需要机器设备过关,建议给第一个虚拟机多分配一点空间,最好建议所嵌套的虚拟机的大小能够达到4G)

    详情可以去官网查看:
    https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/nested-virtualization

    展开全文
  • KVM虚拟机嵌套虚拟化

    2019-09-30 19:01:50
    KVM虚拟机嵌套虚拟化 背景介绍 ​ 在Arch linux的 KVM 虚拟机上启动来部署开源Iaas系统zstack时,需要开启虚拟机嵌套虚拟化。 解决 ​ KVM 嵌套式虚拟 Nested 是一个可通过修改内核参数来启用的功能,它能够使一台...
  • 建立安卓虚拟机时如图右下角提示HAXM doesn’t support nested virtual maxhines.或者建立好后启动虚拟机如下图其实这都是在创建win10虚拟机时没有勾选虚拟化引擎,如下图,虚拟机设置中勾选虚拟化引擎,确定,然后...
  • KVM安装及创建虚拟机

    2021-07-14 16:30:44
    KVM环境创建虚拟机 一、安装tools工具 创建挂载点 root@jianbo:~# mkdir /mnt/cdrom 挂载光驱至/mnt/cdrom目录下 root@jianbo:~# mount /dev/cdrom /mnt/cdrom 把光驱文件复制至/tmp目录下 root@jianbo:~# cp -rvf...
  • Nested Classes定义 在java语言规范里面,嵌套类(Nested Classes)定义是: A nested class is any class whose declaration o
  • 虚拟机嵌套kvm/vmware

    2014-12-10 14:03:00
    虚拟机嵌套kvm/vmware 参考文档: http://www.vpsee.com/2012/09/how-to-run-kvm-nested-vms-on-kvm/ http://www.vpsee.com/?s=kvm+on+kvm ...
  • KVM嵌套虚拟化nested之CPU透传

    千次阅读 2017-01-20 22:46:43
    它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化。该特性需要内核升级到Linux 3.X版本 ,所以在centos6下是需要先升级内核的,而在centos7下已默认支持该特性,不过默认是不开启
  • 原文:http://www.virtuallyghetto.com/2014/04/ovf-template-for-creating-nested-esxi-3-or-32-node-vsan-cluster.html 上周,我创建了几个嵌套 VSAN 环境用于测试,当然,我使用了自己的VSAN 嵌套 ESXi OVF ...
  • 在 proxmox VE 中开启嵌套虚拟nested 在Intel处理器上,KVM使用Intel的vmx(virtul machine eXtensions)来提高虚拟机性能, 即硬件辅助虚拟化技术。如果我们需要搭建一个 OpenStack、proxmox VE集群的教学实验或测试...
  • Nested Classes定义 ...在java语言规范里面,嵌套类(Nested Classes)定义是: A nested class is any class whose declaration occurs within the body of another class or interface. A top level class is a c...
  • 常规情况下,如果在kvm的虚拟机里,又想使用kvm的虚拟机,会报如下的错误信息: [root@host0 nlb]# Could not access KVM kernel module: No such file or directory qemu-system-x86_64: failed to initialize ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,884
精华内容 2,353
关键字:

nested创建嵌套虚拟机