内容简介:嵌套虚拟化(nested virtualization)是一种在虚拟机内部继续虚拟化的一种技术,曾经一直认为嵌套虚拟化只支持同类虚拟化技术(例如VMware虚拟机内嵌套部署VMware虚拟机,知乎也有人讨论过只要硬件给力理论上是能够无限嵌套的:NOTE: 本文基于 vSphere 6.0 版本操作,其他版本可类比参考操作。首先,在VMware中创建一台虚拟机,并安装Linux操作系统(本文安装的是CentOS 7.2系统),在虚拟机关机的情况下做如下配置:
嵌套虚拟化(nested virtualization)是一种在虚拟机内部继续虚拟化的一种技术,曾经一直认为嵌套虚拟化只支持同类虚拟化技术(例如VMware虚拟机内嵌套部署VMware虚拟机,知乎也有人讨论过只要硬件给力理论上是能够无限嵌套的: 虚拟机中运行虚拟机中运行虚拟机……如此循环能运行多少个? ),最近在研究KVM虚拟机镜像制作的时候才发现VMware实际上也是支持虚拟化KVM的(当然,前提还是硬件支持),不过实际操作才发现有些过程并不像网上的文章那么简单(主要是由于GDK的bug),这里汇总记录下完整的操作步骤。(本文写作过程参考过多篇文章,详情列于文末以示感谢)
NOTE: 本文基于 vSphere 6.0 版本操作,其他版本可类比参考操作。
1. 开启VMware虚拟机的CPU虚拟化选项
首先,在VMware中创建一台虚拟机,并安装 Linux 操作系统(本文安装的是CentOS 7.2系统),在虚拟机关机的情况下做如下配置:
1)登录VMware桌面客户端 vsphere client,编辑虚拟机属性设置CPU/MMU虚拟化,使用Intel VT-x/AMD-v进行指令集虚拟化并使用Intel EPT/AMD RVI进行MMU虚拟化;
2)登录VMware网页客户端vsphere web client;
3)如果该虚拟机版本较低,还需要升级虚拟机兼容性:在虚机上右键选择”所有vCenter操作”->”兼容性“->”升级虚拟机兼容性“;
4)再次进入虚拟机的编辑设置界面,如下图,打开CPU选项卡,有一行硬件虚拟化:向客户机操作系统公开硬件辅助的虚拟化,将其打钩即可打开虚拟机的CPU虚拟化功能;
5)打开虚拟机,分别执行以下命令检查虚拟机是否支持虚拟化:
- 对于 Intel CPU:
# grep vmx /proc/cpuinfo
- 对于 AMD CPU:
# grep svm /proc/cpuinfo
如果有信息输出,就说明CPU支持虚拟化;如果没有任何的输出,说明CPU不支持,将无法使用KVM虚拟机。
6)查看是否加载KVM模块,执行以下命令:
# lsmod | grep kvm kvm_intel 170086 0 kvm 566340 1 kvm_intel irqbypass 13503 1 kvm
如果没有加载,运行以下命令:
# modprobe kvm # modprobe kvm-intel(针对Intel CPU)或者 modprobe kvm-amd(针对AMD CPU) # lsmod | grep kvm kvm_intel 170086 0 kvm 566340 1 kvm_intel irqbypass 13503 1 kvm
2. 虚拟机环境安装
1)将虚拟机 Python 环境配置为2.7版本,并安装 KVM 与 virt-manager;
yum install qemu qemu-kvm yum install virt-manager libvirt libvirt-Python python-virtinst libvirt-client virt-viewer -y
2)为防止出现GDK图形界面异常:
DEBUG (cli:257) Uncaught exception: Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/createnet.py", line 830, in finish self.set_finish_cursor() File "/usr/share/virt-manager/virtManager/baseclass.py", line 272, in set_finish_cursor cursor = Gdk.Cursor.new_from_name(gdk_window.get_display(), "progress") TypeError: constructor returned NULL
需要编辑 /usr/share/virt-manager/virtManager/baseclass.py
将其中涉及 Gdk.Cursor.new_from_name
行注释掉 (简单粗暴的操作) :
#cursor = Gdk.Cursor.new_from_name(gdk_window.get_display(), "progress") #gdk_window.set_cursor(cursor) #cursor = Gdk.Cursor.new_from_name(gdk_window.get_display(), "default") #gdk_window.set_cursor(cursor)
同样编辑 /usr/share/virt-manager/virtManager/asyncjob.py
将其中涉及 Gdk.Cursor.new_from_name
行注释掉:
#gdk_window.set_cursor( # Gdk.Cursor.new_from_name(gdk_window.get_display(), "progress"))
3)在 Terminal 中运行 virt-manager 命令打开 Virtual Machine Manager:
4)如果没有图中的 connection,可以新建一个connection(QEMU/KVM);
5)对已有的 connection 创建NAT虚拟网络:
6)为了防止打开控制台窗口出现无法连接到图形界面错误:
Error connecting to graphical console: could not get a reference to type class
需要设置显示模式为“vnc server”
随后,就可以按照正常的操作系统安装步骤配置安装虚拟机了。
Tips
virt-manager 的日志位于 /root/.cache/virt-manager/virt-manager.log
,任何问题均可以查询日志。使用参数 --no-fork
打开virt-manager( virt-manager --no-fork
)可以不输出日志。
Reference
[1] https://blog.csdn.net/qq_35611533/article/details/51917141
[4] http://fedoraproject.org/wiki/How_to_debug_Virtualization_problems
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
精益思想
(美)詹姆斯 P.沃麦克(James P.Womack)、(英)丹尼尔 T.琼斯(Daniel T.Jones) / 沈希瑾、张文杰、李京生 / 机械工业出版社 / 2011-4 / 48.00元
打算尝试精益的人,该怎么做? 已经实行精益的人,下一步怎么办? 本书包含了最新的精益理论、方法和工具,一一解答上述问题。 这是目前关于流程再造最好的书,也是最好读的。——《高业周刊》 本书中文简体字版由FreePress通过AiWA授权机械工业出版社在中国大陆独家出版发行。未经出版者书面许可,不得以任何方式抄袭、复制或节录本书中的任何部分。 《精益思想》于1996年秋......一起来看看 《精益思想》 这本书的介绍吧!