嵌套虚拟化

win11系统vmware虚拟机报错“不支持嵌套虚拟化”问题解决汇总 相信各位在系统升级win11之后也遇到了各种各样的问题,如果本机虚拟化已开启,但是遇到虚拟机内嵌套有虚拟机的情况,可能会与本机的Hyper-V功能产生冲突。4、然后系统自动进行Windows命令处理,我们等待处理完成以后,在最末处输入:Y,电脑自动重启,进行配置更新。一定要勾选虚拟化Inter VT-x/EPT或AMD-V/RVI(V),否则虚拟机内的设备无法开启。2、右键单击【Hyper-V.bat】文件图标,在右键菜单中点击:以。加速3D图形记得关闭,否则部分设备无法使用。命令行关闭hyper -V。 阅读详情

https://wiki.archlinux.org/index.php/KVM_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

在宿主机启用kvm_intel模块的嵌套虚拟化功能:

# modprobe -r kvm_intel
# modprobe kvm_intel nested=1

使嵌套虚拟化永久生效(请参考Kernel modules#Setting module options):

/etc/modprobe.d/modprobe.conf
options kvm_intel nested=1

检验嵌套虚拟化功能是否已被激活:

$ systool -m kvm_intel -v | grep nested
    nested              = "Y"

使用以下命令来运行guest虚拟机:

$ qemu-system-x86_64 -enable-kvm -cpu host

启动虚拟机并检查是否有vmx标志:

$ grep vmx /proc/cpuinfo


Live snapshots

Tango-two-arrows.png

Tango-two-arrows.png

This article or section is a candidate for merging with libvirt.

Notes: virsh is part of libvirt (Discuss)

A feature called external snapshotting allows one to take a live snapshot of a virtual machine without turning it off. Currently it only works with qcow2 and raw file based images.

Once a snapshot is created, KVM attaches that new snapshotted image to virtual machine that is used as its new block device, storing any new data directly to it while the original disk image is taken offline which you can easily copy or backup. After that you can merge the snapshotted image to the original image, again without shutting down your virtual machine.

Here's how it works.

Current running vm

# virsh list --all
Id    Name                           State
----------------------------------------------------
3     archey                            running

List all its current images

# virsh domblklist archey 
Target     Source
------------------------------------------------
vda        /vms/archey.img

Notice the image file properties

# qemu-img info /vms/archey.img
image: /vms/archey.img
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 2.1G
cluster_size: 65536

Create a disk-only snapshot. The switch --atomic makes sure that the VM is not modified if snapshot creation fails.

# virsh snapshot-create-as archey snapshot1 --disk-only --atomic

List if you want to see the snapshots

# virsh snapshot-list archey
Name                 Creation Time             State
------------------------------------------------------------
snapshot1           2012-10-21 17:12:57 -0700 disk-snapshot

Notice the new snapshot image created by virsh and its image properties. It weighs just a few MiBs and is linked to its original "backing image/chain".

# qemu-img info /vms/archey.snapshot1
image: /vms/archey.snapshot1
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 18M
cluster_size: 65536
backing file: /vms/archey.img

At this point, you can go ahead and copy the original image with cp -sparse=true or rsync -S. Then you can merge the original image back into the snapshot.

# virsh blockpull --domain archey --path /vms/archey.snapshot1

Now that you have pulled the blocks out of original image, the file /vms/archey.snapshot1 becomes the new disk image. Check its disk size to see what it means. After that is done, the original image /vms/archey.imgand the snapshot metadata can be deleted safely. The virsh blockcommit would work opposite to blockpull but it seems to be currently under development in qemu-kvm 1.3 (including snapshot-revert feature), scheduled to be released sometime next year.

This new feature of KVM will certainly come handy to the people who like to take frequent live backups without risking corruption of the file system.




KVM虚拟化之嵌套虚拟化nested

本文测试物理机为centos6.5

物理机使用Intel-V虚拟化架构,安装qemu-kvm版本0.12

我们知道,在Intel处理器上,KVM使用Intel的vmx(virtul machine eXtensions)来提高虚拟机性能, 即硬件辅助虚拟化技术, 现在如果我们需要测试一个openstack集群,又或者单纯的需要多台具备"vmx"支持的主机, 但是又没有太多物理服务器可使用, 如果我们的虚拟机能够和物理机一样支持"vmx",那么问题就解决了,而正常情况下,一台虚拟机无法使自己成为一个hypervisors并在其上再次安装虚拟机,因为这些虚拟机并不支持"vmx"

嵌套式虚拟nested是一个可通过内核参数来启用的功能。它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化,关于nested的具体介绍,可以看这里

1.首先查看一台普通的KVM虚拟机CPU信息
复制代码
[root@localhost ~]# lscpu 
Architecture:          x86_64
...
Vendor ID:             GenuineIntel
Hypervisor vendor:     KVM
Virtualization type:   full
...

[root@localhost ~]# cat /pro/cpuinfo
processor    : 1
vendor_id    : GenuineIntel
cpu family    : 6
model        : 13
model name    : QEMU Virtual CPU version (cpu64-rhel6)
...
flags        : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
复制代码
可以看到,这个虚拟机使用为全虚拟化,使用的CPU为QEMU模拟出来的CPU,并且不支持硬件虚拟化(flags中没有vmx)
2.物理服务器上开启nested支持

要使物理机内核支持nested,第一步需要升级系统内核到Linux 3.X版本,第二步要为内核添加新的引导参数

默认情况下,系统并不支持nested

#查看当前系统是否支持nested
systool -m kvm_intel -v | grep -i nested
nested              = "N" #或者这样查看
cat /sys/module/kvm_intel/parameters/nested N

第一步升级内核,用3.18内核做测试,升级内核很简单,下载编译好的内核rpm包,这里是下载地址,安装,然后修改grub.conf默认引导内核为新内核

第二步添加引导参数同样很简单,只需要在 kernel 那一行的末端加上 "kvm-intel.nested=1"

复制代码
#升级内核
rpm -ivh kernel-ml-3.18.3-1.el6.elrepo.x86_64.rpm

#修改grub.conf
default=0              #使用新内核
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (3.18.3-1.el6.elrepo.x86_64)
    root (hd0,0)
    kernel /vmlinuz-3.18.3-1.el6.elrepo.x86_64 ro root=UUID=9c1afc64-f751-473c-aaa6-9161fff08f6f rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcy
rheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet kvm-intel.nested=1
...
复制代码

上面修改之后,重启系统,用"uname -r"查看系统内核,并检查nested是否支持

3. 建立一台支持"vmx"的虚拟机
如果你使用libvirt管理虚拟机,需要修改虚拟机xml文件中CPU的定义,下面三种定义都可以
复制代码
#可以使用这种
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>core2duo</model>
    <feature policy='require' name='vmx'/>
  </cpu>
#这种方式为虚拟机定义需要模拟的CPU类型"core2duo",并且为虚拟机添加"vmx"特性
#也可以使用这种
<cpu mode='host-model'> <model fallback='allow'/> </cpu>
#或者这样 <cpu mode='host-passthrough'> <topology sockets='2' cores='2' threads='2'/> </cpu>
#CPU穿透,在虚拟机中看到的vcpu将会与物理机的CPU同样配置,这种方式缺点在于如果要对虚拟机迁移,迁移的目的服务器硬件配置必须与当前物理机一样
复制代码
 如果你使用qemu-kvm命令行启动虚拟机,那么可以简单的添加
-enable-kvm -cpu qemu64,+vmx
#设置虚拟机CPU为qemu64型号,添加vmx支持
然后启动虚拟机,查看配置
复制代码
#下面虚拟机CPU定义为"host-model"
cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 26 model name : Intel Core i7 9xx (Nehalem Class Core i7)
...
wp : yes 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 unfair_spinlock pni vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic ...
复制代码

本文出自http://www.cnblogs.com/jython/p/4458807.html,转载请注明出处

参考文章

http://kashyapc.com/2012/01/14/nested-virtualization-with-kvm-intel/

http://networkstatic.net/nested-kvm-hypervisor-support/



在CentOS上安装KVM/QEMU+实现嵌套虚拟化 本文讲述了如何在centos上安装KVM/QEMU,包含对宿主机的配置,如启动硬件虚拟化扩展、关闭Hype-v、更改虚拟机设置等。在正式部署时,步骤依次是安装KVM/QEMU、启动libvirtd服务、检查运行状态、安装virt-install和virt-manager等。最后还讲述了如何配置KVM嵌套虚拟化实现,包括配置kvm-nested.conf和编辑虚拟机的XML配置文件等。 阅读详情

相关推荐

KVM配置嵌套虚拟化

1、 英特尔 1 1.1检查嵌套虚拟化在您的主机系统上是否可用 1 1.2卸载kvm_intel模块: 1 1.3激活嵌套功能: 1 2、AMD 2 2.1检查嵌套虚拟化是否在您的系统上可用: 2 2.2卸载kvm_amd模块 2 2.3激活嵌套功能 2 3、嵌套虚拟化配置虚拟机: 2 3.1 使用图形化管理工具配置 2 3.2 通过XML文件配置 4 3.3 进入虚拟机确认 4

beck_li的博客 1552

基于KVM虚拟化嵌套(nested)虚拟化技术研究

本文主要介绍借助嵌套虚拟化,您可以在其他 虚拟机中运行虚拟机 (VM)。在物理主机上运行的标准 虚拟机 还可以充当第二个虚拟机管理程序并创建自己的 虚拟机。

qq_27815483的博客 2276

kvm虚拟化嵌套

嵌套虚拟化是指在虚拟化的客户机中运行一个Hypervisor,从而再虚拟化运行一个客户机。 嵌套虚拟化不仅包括相同Hypervisor的嵌套(如KVM嵌套KVM、Xen嵌套Xen等),也包括不同Hypervisor的相互嵌套(如KVM嵌套嵌套Xen等)根据嵌套虚拟化的概念可知,其不仅包括两层嵌套(如KVM嵌套KVM),还包括多层的嵌套(如KVM嵌套KVM再嵌套KVM) 。 嵌套虚拟化的五大应用场

swimming_in_IT_的博客 6033

嵌套虚拟化_下一代云的嵌套虚拟化

十年前,当首次引入“云”主题时,重点是公共基础架构中的简单服务。 但是,正如技术中的典型特征一样,这些服务随其使用模型一起发展。 同样,在商用硬件上引入虚拟化也着眼于最简单的使用模型,但是随着对潜力的更好地理解,它逐渐发展。 随着硬件提供商看到虚拟化和云的增长,他们还发展了其产品以更有效地满足需求。 早期的x86处理器不是虚拟化的理想选择,但是处理器内部却将重点放在这些新的使用模型上,并为...

cusi77914的博客 1769

什么是嵌套虚拟化技术

什么是嵌套虚拟化技术 定义 嵌套虚拟化技术是指在一个虚拟机(VM)中运行另一个虚拟机,即在一层虚拟化环境中创建另一层虚拟化环境的技术。这种技术在云计算、容器技术等领域被广泛应用。 流程 下面是嵌套虚拟化技术的实现流程: 登录后复制 | 步骤 | 操作 | | ---- | ---- | | 1 | 配置物理服务器支持虚拟...

weixin_36874872的博客 628

如何启用嵌套 KVM 虚拟化

KVM 是一种集成到 Linux 内核中的虚拟化技术。如果处理器支持,启用 KVM 的系统可以充当类型 1 管理程序。有几种方法可以使用 KVM 创建虚拟机。QEMU可以使用 KVM 和libvirt,它的Virtual Machine Manager UI 提供了一个方便的界面。KVM 可用于在兼容硬件上创建嵌套虚拟机。这使您可以在 VM 内创建 VM,以适应更复杂的用例。考虑在您的主机上运行的虚拟化开发环境。您可能需要在该环境中运行虚拟设备模拟器,在裸机硬件深处嵌套两层。

学海无涯苦作舟的博客 4556

proxmox嵌套虚拟化

嵌套虚拟化 内容 [隐藏] 1什么是 2要求 3个PVE作为嵌套的Hypervisor 4启用嵌套的硬件辅助虚拟化 5示例:PVE托管一个PVE guest虚拟机管理程序 5.1设置自嵌套PVE的群集 5.2vm / ct性能,无需硬件辅助的虚拟化扩展 什么是 嵌套虚拟化是指在虚拟机(当然是在另一个虚拟机监控程序上运行)中运行虚拟机监控程序...

allway2的博客 3015

嵌套虚拟化整理

一、关于虚拟化概念 cpu支持虚拟化, 虚拟机软件(例如kvm)是全虚拟化,仅需要模拟一部分硬件指令,虚机性能更高。 cpu不支持虚拟化, 虚拟机软件(例如xen)是半全虚拟化,需要模拟全部硬件指令,虚机性能要差些。 半虚拟化(Para-Virtualization),全虚拟化  1、KVM的虚拟化需要硬件支持(如IntelVT技术或者AMDV技术)。是基于硬件的完全虚拟化。 2、Xen

wn_hello的小宇宙 4803

[ kvm ] 嵌套虚拟化

1. 前言   在学习 kvm 的过程中,需要在虚拟机中再次开启虚拟机,这里就需要使用到嵌套虚拟化,做个记录吧。 2. 配置嵌套虚拟化 2.1 查看物理机是否支持嵌套虚拟化 cat /sys/module/kvm_intel/parameters/nested Y ##结果为Y表示当前的操作系统已经支持了嵌套虚拟化,使用跑虚拟化的程序直接使用就ok了 N ##那当然...

weixin_30439031的博客 377

KVM嵌套虚拟化实现

虚拟机重启后,查看虚拟机CPU,发现直接使用的物理CPUCPU(s): 16Model: 63然后就可以在虚拟机中继续创建kvm虚拟机了。

wsq的博客 1396

KVM虚拟化嵌套虚拟化nested

本文测试物理机为centos6.5 物理机使用Intel-V虚拟化架构,安装qemu-kvm版本0.12 我们知道,在Intel处理器上,KVM使用Intel的vmx(virtul machine eXtensions)来提高虚拟机性能, 即硬件辅助虚拟化技术, 现在如果我们需要测试一个openstack集群,又或者单纯的需要多台具备"vmx"支持的主机, 但是又没有太多物理服务器可使...

weixin_34054931的博客 865

vmware中创建qemu的嵌套虚拟化问题

在控制面板---程序---启用或关闭Windows功能,然后将所有关于Hyper-V的功能全部关闭。以下图片的红框部分以及继续下滑的虚拟机平台选项。打开 Windows 安全中心 --- 设备安全性 --- 内核隔离 --- 内核隔离详细信息,然后将内存完整性保持关闭。问题发生场景为在虚拟机中嵌套使用虚拟机,因此不光物理机要支持虚拟化,同时虚拟机也要支持虚拟化,即嵌套虚拟化问题。

嵌入式记录 3523

VMWare Workstation不支持嵌套

https://blog.csdn.net/qq_29752857/article/details/131409452?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-5-131409452-blog-123486570.235^v38^pc_relevant_sort_base1&spm=1001.2101.3001.4242.4&utm_relevant_index=8

weixin_45495501的博客 1万+

Hyper-V 虚拟机实现嵌套KVM虚拟化及KVM安装

首先Hyper-V 上安装Centos虚拟机 安装完成后查看是否支持虚拟化 egrep -o 'vmx|svm' /proc/cpuinfo 没有输出说明不支持 下面进行设置,参考Hyper-v 开启嵌套虚拟化的方法 hyber-V 机器开启嵌套虚拟化: 关闭虚拟机,管理员权限打开powershell Get-VM ##列出虚拟机 Get-VMProcessor -VMName KVM主机 | fl ##查看虚拟化选项参数 Set-VMProcessor -ExposeVirt...

rockstics的博客 8453

启用Hyper-V的虚拟化嵌套

在物理机上以管理员身份打开 PowerShell,输入Set-VMProcessor -VMName YourVMName -ExposeVirtualizationExtensions $true,将 “YourVMName” 替换为实际的虚拟机名称。进入 BIOS 设置界面,找到与 CPU 相关的选项,将 “Intel VT” 或 “AMD-V” 功能设置为启用,保存并退出 BIOS。目前可以在物理机上使用Hyper-V管理器创建虚拟机了。此时,就可以在虚拟机里再创建虚拟机了。

leeds_leeds的博客 1144

MicrosoftDocs/Virtualization-Documentation:深入理解Hyper-V嵌套虚拟化技术

MicrosoftDocs/Virtualization-Documentation:深入理解Hyper-V嵌套虚拟化技术 什么是嵌套虚拟化嵌套虚拟化(Nested Virtualization)是一项允许在Hyper-V虚拟机内部运行Hyper-V的技术。这种技术打破了传统虚拟化环境中"虚拟机内部不能再虚拟化"的限制,为开发和测试场景提供了极大的灵活性。 典型应用场景 ...

gitblog_01165的博客 544

嵌套虚拟化与 OpenStack:我为什么能在虚拟机中再创建虚拟机?

最近在使用 OpenStack 部署虚拟机时,我碰到了一些有意思的问题。先是我在虚拟机中用 DevStack 部署 OpenStack 后,居然可以再通过 OpenStack 创建虚拟机,这让我不禁好奇:既然 OpenStack 是跑在虚拟机上的,那它是怎么在虚拟机中再创建虚拟机的呢?于是,我查阅了一些资料,发现了一个叫嵌套虚拟化的概念。嵌套虚拟化,就是在虚拟机里再运行虚拟机的技术。听起来有点像“虚拟机套娃”,但它确实是可以实现的。

weixin_41004518的博客 1710
上一篇: qemu,kvm,qemu-kvm,xen,libvirt的区别
下一篇: RHCS集群理论暨最佳实践
David_Beckdong
博客等级 码龄14年 94粉丝 2原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值