VMware虚拟机嵌套部署KVM虚拟机指南

栏目: 服务器 · 发布时间: 5年前

内容简介:嵌套虚拟化(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虚拟化;

VMware虚拟机嵌套部署KVM虚拟机指南

2)登录VMware网页客户端vsphere web client;

3)如果该虚拟机版本较低,还需要升级虚拟机兼容性:在虚机上右键选择”所有vCenter操作”->”兼容性“->”升级虚拟机兼容性“;

VMware虚拟机嵌套部署KVM虚拟机指南

4)再次进入虚拟机的编辑设置界面,如下图,打开CPU选项卡,有一行硬件虚拟化:向客户机操作系统公开硬件辅助的虚拟化,将其打钩即可打开虚拟机的CPU虚拟化功能;

VMware虚拟机嵌套部署KVM虚拟机指南

VMware虚拟机嵌套部署KVM虚拟机指南

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:

VMware虚拟机嵌套部署KVM虚拟机指南

4)如果没有图中的 connection,可以新建一个connection(QEMU/KVM);

5)对已有的 connection 创建NAT虚拟网络:

VMware虚拟机嵌套部署KVM虚拟机指南

6)为了防止打开控制台窗口出现无法连接到图形界面错误:

Error connecting to graphical console: could not get a reference to type class

需要设置显示模式为“vnc server”

VMware虚拟机嵌套部署KVM虚拟机指南

随后,就可以按照正常的操作系统安装步骤配置安装虚拟机了。

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

[2] http://pubs.vmware.com/vsphere-50/index.jsp?topic=%2Fcom.vmware.vsphere.vm_admin.doc_50%2FGUID-36E772F7-3512-49BA-8FA9-60D6DA961560.html

[3] https://www.centos.bz/2018/02/centos7-4%E5%AE%89%E8%A3%85kvm%E8%99%9A%E6%8B%9F%E6%9C%BA%EF%BC%88%E4%BD%BF%E7%94%A8virt-manager%E7%AE%A1%E7%90%86%EF%BC%89/

[4] http://fedoraproject.org/wiki/How_to_debug_Virtualization_problems


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法

数据结构与算法

Michael McMillan / 吕秀峰、崔睿 / 人民邮电出版社 / 2009-5 / 49.00元

《数据结构与算法C#语言描述》是在.NET框架下用C#语言实现数据结构和算法的第一本全面的参考书。《数据结构与算法C#语言描述》介绍的方法非常实用,采用了时间测试而非大O表示法来分析算法性能。内容涵盖了数据结构和算法的基本原理,涉及数组、广义表、链表、散列表、树、图、排序搜索算法以及更多概率算法和动态规则等高级算法。此外,书中还提供了.NET框架类库中的C#语言实现的数据结构和算法。 《数据......一起来看看 《数据结构与算法》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具