网络故障后在 ESXI 主机中重新挂载 iSCSI 数据存储

网络故障后在 ESXI 主机中重新挂载 iSCSI 数据存储

我运行 ESXI 5.1,并且所有虚拟机都位于由 iSCI 数据存储映射的 NAS 中。

我的路由器坏了,显然所有的虚拟机都从其磁盘上断开了。

我的理解是,当发生此类事件时,esxi 会停止虚拟机的所有 I/O 并尝试重新连接到数据存储。如果在一段时间后仍无法连接,它会卸载数据存储,因为它可能已经永远消失了……

我插入了一个新的交换机,然后重启了我的 esxi。我可以看到数据存储在 vCenter 的数据中心视图上在线显示(但当我浏览它时什么都没有出现,我甚至无法创建一个新文件夹...)并且在我的主机的存储视图中没有出现数据存储...如果我尝试向主机添加一个新的数据存储并选择 iSCSI/LUN,也不会出现任何内容。

此外,在 NAS(Synology)上我可以看到我的 LUN 上没有活动连接...

所以最大的问题是:如何恢复我的数据存储和所有虚拟机?

答案1

使用 SSH/本地控制台连接到 ESX,然后尝试以下操作:

esxcfg-volume -l
esxcfg-volume -m <datastorename>

第一个列出你的数据存储及其状态,第二个挂载它

答案2

尽管网络配置导致了这种情况,但这仍然是一个合理的问题:让 ESXi 主机无需重新启动即可再次看到其 iSCSI 存储的最佳方法是什么?

注意:我无法真正让它工作,因为我的整个网络堆栈都乱七八糟了,无论如何我都需要重新启动 ESXi 才能恢复。我把这个作为答案发布出来,因为我发现的内容可能对将来遇到这个问题的人有用。

最有用的链接是这篇 VMware KB 文章,标题为发生意外永久设备丢失 (PDL) 后无法重新挂载数据存储 (2014155)

“不会再回来”似乎是一项旨在保护数据的功能。任何使用消失的存储的虚拟机都已停止使用,无论“永久”设备丢失有多短暂。任何使用消失存储的虚拟机都必须关闭(如果可能)或关闭电源(更有可能)

在尝试让 ESXi 服务器再次看到存储之前,请通过 VMware KB 文章中的过程确保它确实存在,标题为免责声明:本文为 Troubleshooting iSCSI LUN connections issues on ESX/ESXi hosts (1003681) 的翻译版本。您可能会发现整个网络堆栈在此过程中都陷入了混乱。我知道我是这样...

来自第一篇 VMware KB 文章:

(注意:对于 iSCSI,设备可能不是“naa”ID,而是看起来像“t10.IET_”。我强烈建议使用剪切和粘贴,而不是尝试手动输入这些奇怪的字符。)

查找 ID 的命令毫无帮助地埋在了原始文章的中间——在这里是为了您的方便,因为您无疑将需要它来找到选项的正确-d参数esxcli storage core device world list -d <ID>

#esxcfg-scsidevs --uids

这将显示“t10”ID,如下所示:

主要 UID 其他 UID
mpx.vmhba45:C0:T0:L0 vml.0005000000766d68626135353a313a31
naa.60022190becbe0003b3e818108cdf2d5 vml.0200000000600221c0becce0001b3b918108cdf2c550455e4320c6
t10.IET_____0001000000000000000000000000000000000000000000000000 vml.010c000000202020202020202020202020202020202020202020202020202020202020202020202020626561663e30436e6e7f726f
t10.IET_____000100010000000000000000000000000000000000000000000 vml.0100010000202020202020202020202020202020202020202020202020202020202020202020202020626561693131464952545541

运行此命令来查看为 LUN 打开设备的环境:

#esxcli storage core device world list -d <t10_id>

例如:

#esxcli storage core device world list -d t10.IET_____000100010000000000000000000000000000000000000000

您会看到类似以下内容的输出:

设备 世界ID 打开计数 世界名称
------------------------------------------------------------ -------- ---------- ----------
t10.IET_____0001000100000000000000000000000000000000000000000000000000000 2060 1 空闲0

如果 VMFS 卷间接使用该设备,则世界名称包含字符串 idle0。如果虚拟机将该设备用作 RDM,则显示虚拟机世界 ID。如果任何其他进程正在使用原始设备,则显示相应信息。

笔记:

如果主机没有响应,请运行命令esxcfg-scsidevs –-list以获取相应的数据存储名称。确保在 PDL 状态下在卷上注册的所有虚拟机都不需要任何进一步的步骤。如果您的虚拟机处于该状态,则尝试重试或取消操作将不会返回虚拟机世界 ID。单击“取消”,因为除非重新安装卷,否则重试操作无法成功。

运行此命令列出 ESXi 5.x 主机上运行的所有虚拟机并识别在该 LUN 上注册的虚拟机:

#esxcli vm process list

要终止虚拟机 World ID,请运行以下命令:

#esxcli vm process kill --type=force --world-id=World ID

例如:

#esxcli vm process kill --type=force --world-id=12131

使用此命令重新扫描存储:

#esxcfg-rescan -u vmhba#

运行此命令查看设备状态:

#esxcli storage core device list -d <t10-id>

如果问题仍然存在,请重新启动注册了虚拟机的 ESXi 5.x 主机。

相关内容