如何在 Proxmox VE 中启用嵌套虚拟化

Proxmox 是我部署各种容器和虚拟机的首选虚拟机管理程序。 有时,我想在另一个 VM 中创建一个 VM。 含义 – 我只想在我的物理 Proxmox 管理程序中托管一个来宾管理程序(即 VM)。 你有没有想过如何在主机管理程序中设置来宾管理程序? 在本指南中,我将向您展示如何 在 Proxmox 中启用嵌套虚拟化 VE 然后 在来宾中启用 VT-X 管理程序。

内容

  1. 什么是嵌套虚拟化?
  2. 在 Proxmox 中启用嵌套虚拟化
  3. 检查虚拟机中是否启用了 VT-X
  4. 在虚拟机中启用 VT-X
    1. 从命令行为 Proxmox 客户机启用 VT-X
    2. 从 Proxmox Web UI 为访客机器启用 VT-X
  5. 结论

什么是嵌套虚拟化?

嵌套虚拟化 是一项功能,允许您在另一个虚拟机中运行虚拟机,同时仍使用主机系统的硬件加速。

换句话说,嵌套虚拟化是一种在虚拟机 (VM) 内部运行管理程序的机制,该虚拟机本身在管理程序上运行。

在 Proxmox 中启用嵌套虚拟化

必须在物理 Proxmox 主机中执行以下步骤。

首先,让我们确保在物理 Proxmox 管理程序中启用了嵌套虚拟化功能。

如果您的 Proxmox 管理程序是 英特尔处理器,运行以下命令检查是否启用了嵌套虚拟化。

# cat /sys/module/kvm_intel/parameters/nested N

如果是 AMD CPU,运行:

# cat /sys/module/kvm_amd/parameters/nested N

你可能会得到 “N” 或者 “0”“是” 或者 “1” 作为输出。 如果输出是 “N” 或者 “0”,这意味着嵌套虚拟化功能是 未启用. 如果输出是 “是” 或者 “1”,嵌套特征是 启用.

在我的 Proxmox 主机中,尚未启用嵌套虚拟化。 所以我将使用以下命令启用它 root 用户:

# echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf

在 AMD Proxmox 主机上,运行以下命令:

# echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf 

请注意 – 我们追加 为了 英特尔 CPU1 为了 AMD CPU 启用嵌套功能。

现在,重新启动系统或重新加载内核模块以使更改生效:

# modprobe -r kvm_intel
# modprobe kvm_intel

在 AMD Proxmox 主机上,运行:

# modprobe -r kvm_amd
# modprobe kvm_amd

现在再次检查物理 Proxmox 主机中是否启用了嵌套虚拟化:

# cat /sys/module/kvm_intel/parameters/nested Y
检查是否在 Proxmox 中启用了嵌套虚拟化

如果是 AMD CPU,运行:

# cat /sys/module/kvm_amd/parameters/nested Y

正如您在上面的输出中看到的,在 Proxmox 主机中启用了嵌套虚拟化功能。

检查虚拟机中是否启用了 VT-X

您可能已经知道,为了在任何系统中托管客户机器,CPU 应该支持虚拟化技术(VT-X)并且应该启用 VT-X。

有几种方法可以检查 CPU 是否支持 VT-X。 以下教程列出了一些方法来查找系统中是否启用了 VT-X 功能。

如何确定 CPU 是否支持虚拟化技术 (VT)

出于本指南的目的,我将使用 Debian 11 桌面。 让我们检查是否在我们的一台虚拟机中启用了 VT-X。

# egrep --color -i "svm|vmx" /proc/cpuinfo

如果您没有看到任何输出,则表示 VT-X 尚未启用。 让我们现在启用它。

在虚拟机中启用 VT-X

在 Proxmox 主机中启用嵌套虚拟化功能后,您必须在虚拟(来宾)机器中启用虚拟化技术(VT-X)才能使其成为管理程序。

您可以从 CLI 或 Proxmox Web UI 启用 VT-x。

从命令行为 Proxmox 客户机启用 VT-X

关闭虚拟机 您要在其中启用嵌套虚拟化功能。

要在虚拟机中启用虚拟化技术,只需将 VM 的 CPU 类型设置为 “主持人” 使用命令:

# qm set <VMID> --cpu host

例子:

# qm set 105 --cpu host

将“105”替换为您的虚拟机 ID。 现在虚拟机已成为管理程序,因此您现在可以在此 VM 内创建容器和虚拟机。

从 Proxmox Web UI 为访客机器启用 VT-X

确保虚拟机已关闭。

通过访问打开您的 Proxmox 网络用户界面 https://proxmox-ip:8006. Enter 登录 Proxmox Web 仪表板的用户名和密码。

登录到 Proxmox 网页界面

虚拟机(即 Debian 11)-> 硬件. 选择 “处理器” 并点击 编辑 或双击处理器选项。

编辑处理器设置编辑处理器设置

选择 CPU 类型作为“主机”。

将 CPU 类型设置为主机将 CPU 类型设置为主机

现在启动虚拟机。 启动 VM 后,再次检查虚拟机中是否启用了 VT-X。

$ egrep --color -i "svm|vmx" /proc/cpuinfo
检查是否启用了 VT-X 功能检查是否启用了 VT-X 功能

如果你看到 “虚拟机” (英特尔-VT 技术)或 “svm” (AMD-V 支持)在输出中,恭喜! VT-X 功能已启用。

虚拟机现在已成为管理程序。 您可以在虚拟机中安装任何管理程序应用程序,例如 KVM、Proxmox、Quickemu、Virtualbox、VMware 等,并开始在其中托管容器和 VM。

结论

在本指南中,我们讨论了什么是嵌套虚拟化以及如何在 Proxmox 中启用嵌套虚拟化。 我们还学习了如何在 Proxmox 虚拟机中启用 VT-X 功能,以便在其中运行容器和虚拟机。

相关阅读:

  • 如何在 Linux 中的 KVM 中启用嵌套虚拟化
  • 如何启用嵌套虚拟化 VirtualBox

LinuxLinux管理嵌套虚拟化开源ProxmoxProxmox VEProxmox 虚拟化环境Sysadmin