背景
在一次折腾 ESXi 的时候,我打算把某个硬盘直通给虚拟机使用,因为理解不到位所以将 nvme控制器给直通了。直通nvme 控制器本身是一个很正常的操作,但一定不要直通 ESXi 系统盘所在的那个 nvme 控制器(如果 ESXi 装在 nvme 硬盘上的话),这是一个大坑,我就是因为少想了这一步才踩了这个坑。
我的 ESXi 系统安装在一块 nvme 硬盘上,而那是我机器上唯一的 nvme控制器,直通操作使得 ESXi 系统失去了对所有硬盘的访问,建立在其上的虚拟机也消失了。更糟糕的是 ESXi 的配置文件就保存在那块硬盘上,因此我后续对 ESXi 的操作都无法保存下来,这其中就包括了取消 nvme 控制器直通的操作,所以这还是个大坑。
可能有人会问,既然系统盘都无法访问了,那 ESXi 又是如何启动还让你操作的呢?这的确是个好问题。我理解 ESXi 从硬盘读取了程序和配置文件,将其载入内存并运行起来,然后才生效了直通设置,失去了对硬盘的访问能力。简单说就是 ESXi 在内存中运行,并不依赖硬盘,所以貌似功能上并没受到什么影响,除了关机时真的无法保存任何配置信息……
踩坑
刚开始我尝试在 web 管理界面中将 nvme 控制器设置为非直通,重启后发现设置不生效(原因如前)。
然后我通过 console 初始化 ESXi 的配置,重启后仍然不生效(原因如前)。
这时我才意识到,好像是因为 ESXi 无法访问硬盘所以配置信息无法保存下来。于是我上网搜索解决方案,碰到个靠谱的文章