我有一个正在运行的 5 节点 Hyper-V 集群。
所有 5 台服务器都运行 Server 2012 R2,每个节点都使用 iSCSI 连接了两个设备。我遇到问题的设备有一个用作 CSV 的卷。这在以下服务器中呈现c:\clusterstorage\volume2
我已经将所有虚拟机存储移至新设备,新 CSV 已启动并运行,节点已连接。新设备的一切均正常运行。
然后,我尝试通过执行以下操作将旧设备作为共享存储设备删除。我使用 PowerShell 获取群集上所有 VHD 的路径,但没有一个指向c:\clusterstorage\volume2
我检查了配置路径没有指向c:\clusterstorage\volume2
我还检查了快照路径没有指向c:\clusterstorage\volume2
我开始移除 4 个节点上的 iSCSI 目标(这 4 个节点当前没有“分配”存储资源),并且成功了。然后我进入故障转移群集管理器并将 CSV 设置为脱机。2 个虚拟机立即进入保存状态(幸运的不是关键服务器)。我将资源重新上线并启动机器。我检查了每台虚拟机的设置页面,但都没有提及c:\clusterstorage\volume2\
。然后我开始寻找配置文件,只是为了手动确保它们和设置页面之间没有什么不同。我首先查看了 c:\clusterstorage\volume2\
每个虚拟机的文件夹,但它不在这里。我查看了新位置c:\clusterstorage\volume5\
,c:\clusterstorage\volume6\
每个虚拟机的文件夹都在这里。我检查了配置文件,它们完全符合预期,没有包含任何提及,c:\clusterstorage\volume2\
我检查了C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines
在哪里找到了指向新卷位置的每个虚拟机的快捷方式。
简而言之,我找不到任何线索,c:\clusterstorage\volume2\
但如果我将该 CSV 脱机,则两台机器将进入已保存状态。
更奇怪的是,我在写这篇文章时再次尝试了此操作,是的,这两台机器进入了已保存状态,但我能够重新启动它们,即使 CSV 仍处于离线状态。我现在有两台虚拟机,在每个虚拟机的资源选项卡上,存储都显示为离线,但它们正在“工作”
那么,有人能告诉我一个可能的解决方法吗,也许是一个我找不到的配置文件?或者我最好的做法是删除虚拟机,同时保留 VHD,然后创建一个新的虚拟机并连接原始 VHD。
抱歉,文字太长了。
答案1
我对 2012 R2 中的 Hyper-V 没有太多经验,但对 2008 R2 上的 Hyper-V、群集等有很多经验,所以猜测这里可能存在的问题。
我发现,使用故障转移群集(2008 R2)时,当你将虚拟机添加到故障转移群集时,它将检查附加的 VHD 及其所在的存储,并在簇配置,以便它们可以在故障转移群集管理器(在选择虚拟机时在存储窗格中)中显示为依赖资源。
这并不一定反映当前的VHD 文件的位置 - 如果在将 VM 添加到故障转移群集后,它们已在 Hyper-V 中移动,则依赖关系信息不会更新。因此,您可能有一个可以正常访问其磁盘的 VM,但故障转移群集认为它仍然依赖于您要移除的磁盘。当您将磁盘脱机时,它会将 VM 脱机,这是合乎逻辑的结果。要解决(假设这是问题所在 - 查看 FCM 中 VM 的存储面板),请从群集中移除 VM 并重新添加它。
顺便说一句,作为最佳实践,我通常不会在从 FCM 中删除 CSV 之前开始拆除任何 iSCSI 连接。