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

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

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


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

查看所有标签

猜你喜欢:

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

The Web Application Hacker's Handbook

The Web Application Hacker's Handbook

Dafydd Stuttard、Marcus Pinto / Wiley / 2011-9-27 / USD 50.00

The highly successful security book returns with a new edition, completely updated Web applications are the front door to most organizations, exposing them to attacks that may disclose personal infor......一起来看看 《The Web Application Hacker's Handbook》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具