![网络故障后在 ESXI 主机中重新挂载 iSCSI 数据存储](https://linux22.com/image/632606/%E7%BD%91%E7%BB%9C%E6%95%85%E9%9A%9C%E5%90%8E%E5%9C%A8%20ESXI%20%E4%B8%BB%E6%9C%BA%E4%B8%AD%E9%87%8D%E6%96%B0%E6%8C%82%E8%BD%BD%20iSCSI%20%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8.png)
我运行 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 主机。