记一次虚拟机无法开启AES的排错经历

我用 VirtualBox 开了个 Debian 的虚拟机,一直用的都还行,但最近突然发现跑加密的时候,CPU 占用极高,于是乎就测试了下机子的性能。结果一测就测出了一个大问题。

使用 Bench.sh 的测试脚本,AES-NI 和 VM-x/AMD-V 两项全红,怪不得 CPU 占用率那么高

排错经历

踩坑

首先,我就想到可能是我前几天装 Docker Desktop 导致的问题,于是乎就把 WSL 相关文件和 Hyper-V 相关文件全部关了

在 Windows 10 系统下,关闭的方式为 设置 –> 应用 –> 程序和功能 –> 启用或关闭 Windows 功能

繁体中文下为 設定 –> 應用程式 –> 程式和功能 –> 開啟或關閉 Windows 功能

但是关闭之后没有用,而且处理器上的 启用套嵌VT-x/AMD-V 还是灰色的

然后就看到了这篇文章,经过修改,虚拟机上终于…还是双红

于是我就装了台全新的 Debian 虚拟机,然后…还是双红

正解

在翻看 VirtualBox 社区的帖子时,有人提到有可能是有其他的 Windows 虚拟机功能没关闭导致的,于是我又打开设置看了下…TMD 怎么会有个这么隐蔽的功能,属实让人蚌埠住了

在简体中文环境中为 “容器”

关闭这个功能并重启之后,再启动虚拟机测试,AES-NI 功能就正常了

但是 VM-x/AMD-V 还是 Disabled。用 PowerShell 修改之后正常了

将虚拟机关机,然后打开 PowerShell

1
2
3
cd "C:\Program Files\Oracle\VirtualBox"

.\VBoxManage.exe list vms

一般情况下,VirtualBox 是安装到 C 盘 Program Files 文件夹中的,如果在安装时修改了安装位置,则需要修改上面的目录

把获取到的虚拟机名称复制下来,例如 “Debian 11”

1
.\VBoxManage.exe modifyvm "Debian 11" --nested-hw-virt on

给虚拟机开机,问题解决。

修复之后,跑加密 CPU 就不再飙高了,妈妈再也不用担心我的虚拟机跑宕机了

参考内容

  1. VirtualBox启用套嵌VT-x/AMD-V – 产品人笔记 (apad.pro)

  2. virtualbox.org • View topic - “Failed to send log host message.” error using Ubuntu on Windows 10 Pro Host