嵌套虚拟化—VMware+QEMU/KVM

最近突然对嵌套虚拟化产生兴趣,并且想了解KVM和QEMU之间的关系,于是在本机的VMware中的Ubuntu尝试使用KVM和QEMU分别在Ubuntu虚拟机中再装Ubuntu。实现嵌套虚拟化的同时,在安装过程中了解KVM和QEMU的关系。

本文主要记录在VMware中使用两种方式实现嵌套虚拟化的过程。

qemu-system-x86_64
kvm

实验环境:win10主机系统 + VmwareWorkstation14 + Ubuntu16.04(相对于Qemu的宿主机) + Ubuntu16.04(相对于Qemu的虚拟机)

目录结构:

  1. 创建并启动虚拟机
  2. 问题与收获
  3. 猜想

参考资料:

Ubuntu 14.04 使用qemu创建虚拟机并配置桥接网络

究竟是用qemu-kvm还是qemu-system-x86

一、创建并启动虚拟机

下边是两种方式(qemu-system-x86_64 && kvm)的比较

1.1创建img:

qemu-img create -f qcow2 ubuntu16-64.img 10G

1.2创建虚拟机:

一定要-enable-kvm吗??

qemu-system-x86_64 -m 2048 -enable-kvm -hda ubuntu16-64.img -cdrom  ./ubuntu-16.04.1-desktop-amd64.iso -boot d	#okokokok
kvm -m 2048 -smp 4 -hda ubuntu-non-kvm.img -cdrom ./ubuntu-16.04.1-desktop-amd64.iso -boot dc	#okokokok

1.3启动创建好的虚拟机:

qemu-system-x86_64 -m 2048 -enable-kvm -hda ubuntu16-64.img
kvm -m 2048 -smp 4 -hda ubuntu-non-kvm.img	#okokokok

一些现象:

使用qemu-system-x86_64命令但是不加-enable-kvm选项时现象:

创建时:

qemu-system-x86_64 -m 2048 -hda ubuntu-no-kvm.img -cdrom  ./ubuntu-16.04.1-desktop-amd64.iso -boot d
warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5]
main-loop: WARNING: I/O thread spun for 1000 iterations

正在安装过程中ing…

启动时:

qemu-system-x86_64 -m 204 -hda ubuntu16-64.img
warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5]
main-loop: WARNING: I/O thread spun for 1000 iterations

能启动,但是很慢,看到登陆界面;但是无法(是因为太慢了?)输入用户名的密码。

二、问题与收获

2.1 pc:ram cannot allocate memeory

原因:内存不足;宿主机的内存小于希望分配给虚拟机的内存

解决:于是在vmware中对宿主机(Ubuntu16.04分配更大的处理器内存)

2.2宿主机中使用Qemu的时候,再装虚拟机的时候不能断网。。。?

原因:kill之后再安装还是会出现问题;;;如果格式化可能就会好?

解决:我是新建了一个.img然后再重新安装 ;之前的数据应该是有残留的。

2.3究竟是用qemu-kvm还是qemu-system-x86

在老版本中有单独的qemu-kvm模块存在,结合qemu一起做虚拟机工作。在后续新版本中,已经将qemu-kvm模块完全合并到qemu中去。因此当需要使用kvm特性时候,只需要qemu-system-x86_64 启动命令中增加参数 –enable-kvm参数使能即可

三、猜想

所以QEMU其实是可以单独运行的,只是速度比较慢??

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐