Answers:
有一些概念验证的rootkit,例如Blue Pill,它可以拥有一个启用了VT的系统。发现这一点之后,大多数供应商都开始在禁用VT的情况下发货,这是一般安全预防措施。
我们购买的所有刀片服务器均默认启用虚拟化。可能是因为我们的供应商已做出商业决定,以节省大量的支持电话。
不会因为处理器故障而禁用它,而是取决于它的用途。默认情况下,它可能是关闭的,因为启用这些功能可能会影响外围设备访问。
请注意,根据另一个线程,它似乎也对性能有一些影响 https://superuser.com/questions/545101/why-does-hp-recommend-that-i-keep-hardware-virtualization-off
这对我来说似乎很重要,因为减少指令集的效率更高。我只是没有想到更改BIOS选项会直接影响这一点。
我不知道影响是否重大,但考虑到这一点和潜在的安全漏洞,默认情况下禁用这样一个很少使用的功能对我来说是一个不错的选择。
另一个原因是大多数用户内核功能(如gettimeofday)已在VDSO中移动。
有时在虚拟化条件下无法启用此快速路径。
因此系统无法:
快速执行这些功能
避免昂贵的从用户态切换到内核并返回
除了@MDMarra答案中提出的安全问题外,您还应该考虑两点:
任何启用的可选功能都极有可能与其他功能进行某些令人讨厌的意外交互,从而需要进行额外的验证。PC供应商不愿将资源浪费在很少使用的功能上,客户端虚拟化就是其中之一。
我强烈怀疑由于#1的原因,英特尔基本客户端固件/ BIOS blob已禁用VT。因此,运送支持VT的客户端的任何供应商都需要在准备其固件时自定义该选项。
也就是说,我们现在是2019年;我看到更多默认情况下启用了VT的客户端。服务器则完全不同:我不仅总是发现启用了VT,而且还经常激活VT-d。