我们设置了 Hyper-V 服务器,由于由多人设置,因此文件布局不一致。以下是使用的两个不同“模板”:
模板 1
D:\Hyper-V\Virtual Machines\MACHINE_NAME_1\Virtual Hard Disks\MACHINE_NAME_1.vhdx
D:\Hyper-V\Virtual Machines\MACHINE_NAME_1\Virtual Machines\GUID_1
D:\Hyper-V\Virtual Machines\MACHINE_NAME_1\Virtual Machines\GUID_1.xml
D:\Hyper-V\Virtual Machines\MACHINE_NAME_2\Virtual Hard Disks\MACHINE_NAME_2.vhdx
D:\Hyper-V\Virtual Machines\MACHINE_NAME_2\Virtual Machines\GUID_2
D:\Hyper-V\Virtual Machines\MACHINE_NAME_2\Virtual Machines\GUID_2.xml
....
和
模板 2
D:\Hyper-V\Virtual Hard Disks\MACHINE_NAME_1.vhdx
D:\Hyper-V\Virtual Hard Disks\MACHINE_NAME_2.vhdx
D:\Hyper-V\Virtual Machines\GUID_1
D:\Hyper-V\Virtual Machines\GUID_1.xml
D:\Hyper-V\Virtual Machines\GUID_2
D:\Hyper-V\Virtual Machines\GUID_2.xml
模板 1
模板 1 的论点是,当您导出虚拟机时,导出会创建一个带有计算机名称的文件夹,为磁盘和虚拟机设置单独的文件夹。然后,您可以在运行导入时直接指向计算机目录。
反对这种模板样式的理由是,如果只有一个文件,那么有一个名为虚拟机的目录是没有意义的。另一个反对的理由是,Hyper-V 服务器本身似乎希望所有硬盘都在一个文件夹中,而所有虚拟机都在不同的文件夹中。即它不会为每个虚拟机创建单独的文件夹(虚拟机目录中由 GUID 命名的文件夹除外)
模板 2
支持模板 2 的论点是,这似乎是 Hyper-V 所期望的布局。
反对模板 2 的论点是,除非查看 xml 文件内部,否则您无法分辨哪些虚拟机文件与特定机器相关联。
我很想听听这两种布局的缺陷。
答案1
您确实非常希望能够轻松识别哪些文件属于哪个虚拟机。即使您无法访问 Hyper-V 控制台。
尝试从备份中恢复虚拟机时会出现这种情况。或者当 Hyper-V 忘记了您的所有虚拟机而您需要导入它们时。或者虚拟机配置文件已损坏,您必须重新创建虚拟机并指向旧硬盘文件(由于配置文件已损坏,您现在无法识别这些文件)。或者您只是想快速检查每个虚拟机占用了多少磁盘空间。或者您需要从备份中恢复,这样您可以看到文件名,但无法在不先完成整个恢复过程的情况下轻松读取 XML 文件。
鉴于此,我会选择类似于模板 1 的东西,其中每个 VM 都有一个文件夹 - 但省略“虚拟机”和“虚拟机硬盘”子文件夹 - 只需将所有与 VM 相关文件放在具有 VM 名称的文件夹中。
您也不需要 Hyper-V\Virtual 计算机 - 选择其中一个标签,不需要两者。
所以:
D:\虚拟机\MACHINE_A\GUID_1.xml D:\虚拟机\MACHINE_A\Machine_a_OS.vhdx D:\虚拟机\MACHINE_A\Machine_a_Data.vhdx D:\虚拟机\MACHINE_B\GUID_2.xml D:\虚拟机\MACHINE_B\Machine_b_OS.vhdx D:\虚拟机\MACHINE_B\Machine_b_Data.vhdx
ETC。
或者您可能决定不需要文件名与虚拟机匹配 - 文件夹名称就足够了。以这种方式命名可以更轻松地克隆虚拟机,而不必担心重命名其文件:
D:\VMs\机器 A\GUID_1.xml D:\VMs\计算机 A\OS.vhdx D:\VMs\机器 A\Data.vhdx D:\VMs\计算机 B\GUID_2.xml D:\VMs\Machine B\OS.vhdx D:\VMs\Machine B\SQLData.vhdx D:\VMs\Machine B\SQLLog.vhdx
这里的主要内容是组织文件,这样只需查看文件结构,就可以知道每个文件属于哪个虚拟机,以及该文件的用途。
答案2
我都不喜欢。
因为如果您移动虚拟机,所有模板都不稳定。
我会(我自己也这么做)使用与在主机之间移动虚拟机时相同的文件夹结构。这样,在主机之间移动虚拟机时不会发生任何变化。
答案3
您需要执行模板 2,以将虚拟机部件的耦合与存储问题分开。即,虚拟机的一个 VHDX 可能用于性能卷,而同一虚拟机的另一个 VHDX 更关心容量 - 并且所有 VHDX 都可能存在弹性差异。
因此,除非您还在文件结构布局中引入将不同存储位置映射到虚拟机文件部分的耦合中的复杂性,否则您将无法执行模板 1。
因此:
模板 2
模板 2 - 此处存储管理优先于命名空间布局(同时,命名空间布局在用于管理 VM 的 UI 中处理...即,VM 的某些部分甚至可能不在本地,而是在云中等,例如使用存储总线)
... 处理存储管理中的不同问题:
D:\Storage\Pool1\Hyper-V\虚拟硬盘\xxx-xx-xx-System-01-Prod.vhdx
D:\Storage\Pool1\Hyper-V\虚拟硬盘\xxx-xx-xx-Data-01-Prod.vhdx
D:\Storage\Pool2\Hyper-V\虚拟硬盘\xxx-xx-xx-Data-02-Prod.vhdx
D:\Storage\Pool3\Hyper-V\虚拟硬盘\xxx-xx-xx-Recovery-01-Prod.vhdx
D:\Storage\Pool1\Hyper-V\虚拟机\GUID_1
D:\Storage\Pool1\Hyper-V\虚拟机\GUID_1.xml
D:\Storage\Pool1\Hyper-V\虚拟机\GUID_2
D:\Storage\Pool1\Hyper-V\虚拟机\GUID_2.xml
模板 1
要在模板 1 中执行此映射 - 其中文件系统中的命名空间问题(又名伪配置 UI)优先 - 同时保持存储问题:
D:\VMs\xxx-xx-xx-01-Prod\xxx-xx-xx-System-01-Prod.vhdx >(链接到)D:\Storage\Pool1\Hyper-V\Virtual Hard Disks\xxx-xx-xx-System-01-Prod.vhdx
D:\VMs\xxx-xx-xx-01-Prod\xxx-xx-xx-Data-01-Prod.vhdx > D:\Storage\Pool1\Hyper-V\虚拟硬盘\xxx-xx-xx-Data-01-Prod.vhdx
D:\VMs\xxx-xx-xx-01-Prod\xxx-xx-xx-Data-02-Prod.vhdx > D:\Storage\Pool2\Hyper-V\虚拟硬盘\xxx-xx-xx-Data-02-Prod.vhdx
D:\VMs\xxx-xx-xx-01-Prod\xxx-xx-xx-Recovery-01-Prod.vhdx > D:\Storage\Pool3\Hyper-V\虚拟硬盘\xxx-xx-xx-Recovery-01-Prod.vhdx
D:\VMs\xxx-xx-xx-01-Prod\GUID_1 > D:\Storage\Pool1\Hyper-V\虚拟机\GUID_1 D:\VMs\xxx-xx-xx-01-Prod\GUID_1.xml > D:\Storage\Pool1\Hyper-V\虚拟机\GUID_1.xml D:\VMs\xxx-xx-xx-01-Prod\GUID_2 > D:\Storage\Pool1\Hyper-V\虚拟机\GUID_2 D:\VMs\xxx-xx-xx-01-Prod\GUID_2.xml > D:\Storage\Pool1\Hyper-V\虚拟机\GUID_2.xml