我有一台 ESXi 主机,但它没有本地硬盘。它使用通过光纤通道共享的磁盘。之后,我为光纤通道设置了直通。重新启动 ESXi 主机后,我们找不到任何数据存储。而且我也无法删除直通设置(删除并重新启动后,它仍然存在)。有人知道如何修复它吗?
答案1
以下最佳做法可防止此问题的发生:
Always unmark devices for passthrough before removing them from the server.
以下解决方法描述了如何强制从直通模式更改为非直通模式:
编辑 /etc/vmware/esx.conf 文件,将 PCI 设备的所有者从 passthru 更改为 vmkernel。以下是必要编辑的示例:从:/device/000:02.0/owner = "passthru" 更改为:/device/000:02.0/owner = "vmkernel"
重新引导 ESX/ESXi 主机。
答案2
我今晚遇到了这个问题,因为我有 2 个相同的 SAS 控制器。PhungHV 的信息是正确的,但是当您处于此模式时,您也无法访问磁盘来更改文件以退出此模式。充其量是一个令人讨厌的困境。发生的事情是 VMware 启动并读取设置,然后将设备标记为直通,这导致 VMWARE 失去对它的访问权限。
为了解决这个问题,我启动了 Ubuntu 实时磁盘。我映射了分区 #5
挂载启动驱动器分区 #5
mount /dev/sdX5 /mnt
创建临时文件夹以供使用
mkdir /tmp/vmware
复制 State.tgz
cp /mnt/state.tgz /tmp/vmware
从 state.tgz 中提取 local.tgz
tar -zxf /tmp/vmware/state.tgz
从 local.tgz 中提取等
tar -zxf /tmp/vmware/local.tgz
编辑配置文件
nano -w /tmp/vmware/etc/vmware/esx.conf
找到适当的直通参考(如果不确定则全部找到)并更改为 vmkernel
创建新的local.tgz
cd /tmp/vmware tar czf local.tgz etc/
创建新的 State.tgz
tar czf state.tgz local.tgz
复制到分区
cp state.tgz /mnt/state.tgz
重启
reboot
答案3
使用 Vsphere Client 选择您的主机,然后选择“配置”选项卡,在“硬件”部分中选择“高级设置”,然后配置直通并取消选择您关心的 PCI 设备并重新启动主机。
答案4
我知道这是一篇旧帖子,但对于所有可能最终来到这里的人来说,这可能会有所帮助......
我相信 John Doe 的答案(由 Thomas 编辑)是正确的,但如果您的 ESXi 有机会在启用直通之前创建配置的备份,那么可能会有一个更简单的解决方案。
重新启动 ESXi,在启动屏幕上按 Shift-R 进入 ESXi 恢复模式。如果您有配置备份,您可以在该屏幕上选择它,它应该可以解决问题。
更多详细信息来自http://pleasework.robbievance.net/howto-the-wrong-way-to-use-vmware-directpath/:
当您对 ESXi 进行任何更改时,这些更改仅提交到内存配置,因此在重新启动后不会保留。为了解决这个问题,VMware 有一个名为 /sbin/auto-backup.sh 的 shell 脚本会自动运行。此脚本的作用是获取所有集体配置文件(包括 esx.conf)并将它们存储在一个名为 local.tgz 的压缩文件中。然后再次压缩该文件并保存为 state.tgz。此文件的两个副本存在于本地文件系统的两个不同分区上,每个副本来自不同的时间点。因此,要解决上述问题,似乎我所需要做的就是重新启动服务器,并在 ESXi 启动时按 Shift-R 进入恢复模式并选择备用启动槽。