Hyper-V服务器中文件布局的最佳做法?


11

我们已经设置了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

FOR模板1的参数是,当您导出VM时,导出会创建一个具有计算机名称的文件夹,并为磁盘和vm放置单独的文件夹。然后,您可以在运行导入时简单地指向计算机目录。

反对这种模板样式的论点是,如果只有一个文件,则没有名为虚拟机的目录是没有意义的。另一个反对意见是,似乎Hyper-V服务器本身似乎期望所有硬盘都在一个文件夹中,而所有虚拟机都在另一个文件夹中。即,它不会为每个VM创建单独的文件夹(虚拟机目录中GUID命名的文件夹除外)

范本2

FOR Template 2的论点是,Hyper-V似乎希望布局如此。

参数AGAINST模板2的意思是,除非查看xml文件,否则您无法确定哪些虚拟机文件与特定计算机相关联。

我很想听听任何一种布局的陷阱。


2
看起来像是一辆自行车流向了我。
伊万·安德森

2
我不同意。根据经验,使用命名约定有一些很好的技术原因,您可以从Hyper-V工具外部识别哪些磁盘属于哪些VM。他的选择之一不允许您轻松地执行此操作-或根本无法完成Hyper-v XML文件损坏的操作。
格兰特(Grant)

2
你是对的。模板2不会按文件夹分隔VM,这对于初始VHD(X)很好,但是对于后续的VHD(X)可能会出现问题,除非您认真地命名它们。
joeqwerty 2014年

1
路径中没有空格的模板怎么样?
user2813274

2
@BenjaminPeikes自行车棚是指帕金森琐碎定理- en.wikipedia.org/wiki/Parkinson's_law_of_triviality
格兰特

Answers:


12

您确实非常希望能够轻松识别哪些文件属于哪个虚拟机。即使您无法访问Hyper-V控制台。

尝试从备份还原虚拟机时出现此问题。或者,当Hyper-V忘记了所有虚拟机而需要导入它们时。或VM配置文件已损坏,您必须重新创建VM并指向旧的硬盘驱动器文件(由于配置文件已损坏,现在无法识别)。或者,您只想快速检查每个VM占用了多少磁盘空间。或者,您需要从可以看到文件名的备份中进行还原,但是如果不先经过整个还原过程就很难读取XML文件。

鉴于此,我将选择类似于模板1的内容,其中每个VM都有一个文件夹-但不包括“虚拟机”和“虚拟机硬盘”子文件夹-只需将与VM相关的所有文件放在具有虚拟机名称的文件夹。

您也不需要Hyper-V \虚拟机-选择其中一个标签,就不需要两个标签。

所以:

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

等等

或者,您可能决定不需要与虚拟机匹配的文件名-文件夹名就足够了。以这种方式命名将使克隆VM更加容易,而不必担心重命名其文件:

D:\ VMs \机器A \ GUID_1.xml
D:\ VMs \机器A \ OS.vhdx
D:\ VMs \机器A \ Data.vhdx

D:\ VMs \机器B \ GUID_2.xml
D:\ VMs \机器B \ OS.vhdx
D:\ VMs \机器B \ SQLData.vhdx
D:\ VMs \机器B \ SQLLog.vhdx

这里的主要要点是组织文件,以便通过仅查看文件结构即可查看每个文件所属的VM,以及该文件的用途。


我一直倾向于您建议的布局。我不喜欢这种特殊布局的一件事是,它在文件夹结构和文件命名约定中都使用了机器名。这意味着您不能简单地复制机器的文件夹来制作一个新的文件夹。
本杰明·派克斯

我听到的一个论点是,可以通过查看每个GUID的xml文件来判断哪些文件属于哪个虚拟机。即使拥有一个易于理解的命名约定绝对有用,但是如果有人不遵守甚至一次,它就会完全瓦解。就像在代码中不再有与代码匹配的注释一样。由于有关该机器的所有信息都在xml文件中,因此我对依靠文件夹和文件的命名来找出任何内容感到谨慎。
本杰明·派克

@BenjaminPeikes依靠XML文件将文件与VM匹配是有风险的。我曾经遇到过这样的情况,即由于意外删除或数据损坏而导致XML文件丢失或无法读取的情况。而且,它比匹配GUID快得多。但是我同意您不一定需要在文件名中使用VM名称,如果您愿意,只需使用文件夹即可。只需确保(仅查看文件结构)即可知道哪些文件属于哪个VM以及它们的用途。
格兰特(Grant)

2

我什么都不喜欢。

因为如果移动VM,所有模板都不稳定。

我会-而且我自己会做-使用与在主机之间迁移VM时获得的文件夹结构相同的文件夹结构。这样,当您在主机之间移动VM时,一切都不会改变。


在主机之间移动VM时,模板1不是吗?
本杰明·派克斯

试试吧-不是。例如,光盘最终位于计算机名称文件夹下的“虚拟硬盘”文件夹中。
TomTom

这就是我的模板1所做的。每台计算机都有其自己的文件夹,并且在每个文件夹中都有一个“虚拟机”文件夹和一个“虚拟硬盘”文件夹。
本杰明·派克斯

1
是否可以通过某种方式使Hyper-V使用创建虚拟机时默认描述的结构@TomTom?我喜欢将我的VM放在自己的文件夹下。但是每次,我最终都会创建VM,然后直接将其移动以获得所需的文件夹结构。
Matty Brown

1

您需要执行模板2,以将虚拟机部件的耦合与存储问题分开。也就是说,一个VM的一个VHDX可能会提高性能,而同一个VM的另一个VHDX则更关心容量-且所有VHDX的弹性都不同。

因此,除非您还将文件结构布局引入将不同存储位置映射到虚拟机文件部分的耦合中的复杂操作,否则您将无法执行模板1。

从而:

模板2

模板2-此处的存储管理优先于名称空间布局(同时,在UI中处理名称空间布局以管理VM ...即,VM的某些部分甚至可能不是本地的,而是在云中等,例如使用存储总线)

...管理存储管理中的不同问题:

D:\ Storage \ Pool1 \ Hyper-V \ Virtual Hard Disks \ xxx-xx-xx-System-01-Prod.vhdx

D:\ Storage \ Pool1 \ Hyper-V \ Virtual Hard Disks \ xxx-xx-xx-Data-01-Prod.vhdx

D:\ Storage \ Pool2 \ Hyper-V \ Virtual Hard Disks \ xxx-xx-xx-Data-02-Prod.vhdx

D:\ Storage \ Pool3 \ Hyper-V \ Virtual Hard Disks \ xxx-xx-xx-Recovery-01-Prod.vhdx

D:\ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_1

D:\ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_1.xml

D:\ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_2

D:\ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ 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 \ Virtual Hard Disks \ xxx-xx-xx-数据01-Prod.vhdx

D:\ VMs \ xxx-xx-xx-01-Prod \ xxx-xx-xx-Data-02-Prod.vhdx> D:\ Storage \ Pool2 \ Hyper-V \ Virtual Hard Disks \ xxx-xx-xx-数据-02-Prod.vhdx

D:\ VMs \ xxx-xx-xx-01-Prod \ xxx-xx-xx-Recovery-01-Prod.vhdx> D:\ Storage \ Pool3 \ Hyper-V \ Virtual Hard Disks \ xxx-xx-xx- Recovery-01-Prod.vhdx

D:\ VMs \ xxx-xx-xx-01-Prod \ GUID_1> D:\ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_1 D:\ VMs \ xxx-xx-xx-01-Prod \ GUID_1.xml > D:\ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_1.xml D:\ VMs \ xxx-xx-xx-01-Prod \ GUID_2> D:\ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_2 D:\ VMs \ xxx-xx-xx-01-Prod \ GUID_2.xml> D:\ Storage \ Pool1 \ Hyper-V \ Virtual Machines \ GUID_2.xml

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.