Лучшие практики для размещения файлов на сервере 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

Аргумент, приведенный для шаблона 1, заключался в том, что при экспорте виртуальной машины экспорт создает папку с именем компьютера, помещает отдельные папки для дисков и vm. Затем вы можете просто указать каталог машины при запуске импорта.

Аргумент ПРОТИВ этого стиля шаблона состоит в том, что нет никакого смысла в том, чтобы существовал каталог с именем Виртуальные машины, если существует только один файл. Другим аргументом против является то, что кажется, что сам сервер Hyper-V ожидает, что все жесткие диски находятся в одной папке, а все виртуальные машины находятся в другой папке. то есть он не создает отдельных папок для каждой виртуальной машины (кроме тех, которые названы GUID в каталоге виртуальных машин)

Шаблон 2

Аргумент FOR Template 2 заключается в том, что Hyper-V ожидает, что именно так и будет выглядеть макет.

Аргумент ПРОТИВ шаблона 2 заключается в том, что вы не можете сказать, какие файлы виртуальной машины связаны с конкретной машиной, если вы не загляните внутрь файлов xml.

Я хотел бы услышать о любых подводных камнях к любой схеме.

Бенджамин Пайкс
источник
2
Похоже, велосипед сарай для меня.
Эван Андерсон
2
Я не согласен. Исходя из опыта, есть несколько веских технических причин иметь соглашение об именах, в котором вы можете определить, какие диски принадлежат каким виртуальным машинам, за пределами инструментов Hyper-V. Один из его вариантов не позволяет вам сделать это легко - или вообще, если XML-файлы hyper-v повреждены, что может произойти.
Грант
2
Ты прав. Шаблон 2 не разделяет виртуальные машины по папкам, что хорошо для начального VHD (X), но может быть проблематичным для последующих VHD (X), если вы не будете добросовестно называть их.
Joeqwerty
1
Как насчет шаблона без пробела в пути?
user2813274
2
@BenjaminPeikes Велосипедный сарай относится к закону тривиальности Паркинсона - en.wikipedia.org/wiki/Parkinson's_law_of_triviality
Грант

Ответы:

12

Вы действительно очень хотите иметь возможность легко определить, какие файлы принадлежат какой виртуальной машине. Даже если вы потеряете доступ к консоли Hyper-V.

Это происходит при попытке восстановить виртуальную машину из резервных копий. Или когда Hyper-V забывает обо всех ваших виртуальных машинах, и вам необходимо импортировать их. Или файлы конфигурации виртуальной машины повреждены, и вам нужно заново создать виртуальную машину и указать на старые файлы жесткого диска (которые вы сейчас не можете идентифицировать, поскольку ваш файл конфигурации поврежден). Или вы просто хотите быстро проверить, сколько дискового пространства занимает каждая виртуальная машина. Или вам нужно восстановить из резервных копий, где вы можете увидеть имена файлов, но не легко прочитать файлы XML, не пройдя весь процесс восстановления.

Учитывая это, я бы пошел к чему-то похожему на шаблон 1, где есть папка для каждой виртуальной машины, но пропустите подпапки «Виртуальные машины» и «Жесткие диски виртуальной машины» - просто поместите все файлы, связанные с виртуальной машиной, в папка с именем виртуальной машины.

Вам также не нужны 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

и т.п.

Или вы можете решить, что вам не нужны имена файлов для соответствия виртуальной машине - достаточно имени папки. Называя его таким образом, можно было бы клонировать виртуальную машину, не беспокоясь о переименовании ее файлов:

D: \ VMs \ Machine A \ GUID_1.xml
D: \ VMs \ Machine A \ OS.vhdx
D: \ VMs \ Machine A \ Data.vhdx

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

Основной вывод здесь состоит в том, чтобы упорядочить файлы так, чтобы, рассматривая только структуру файлов, вы могли определить, к какой виртуальной машине принадлежит каждый файл, и для чего этот файл.

Грант
источник
Я склонялся к макету, который вы предлагаете. Одна вещь, которая мне не нравится, это то, что она использует имя машины как в структуре папок, так и в соглашении об именах файлов. Это означает, что вы не можете просто скопировать папку машины, чтобы создать новую.
Бенджамин Пайкс
Один аргумент, который я слышал, заключается в том, что вы можете определить, какие файлы принадлежат какой виртуальной машине, изучив XML-файлы для каждого GUID. Несмотря на то, что определенно полезно иметь простое для понимания соглашение об именах, оно полностью развалится, если кто-то не будет следовать ему даже один раз. Это похоже на комментарии в коде, которые больше не соответствуют коду. Поскольку вся информация о машине находится в xml-файле, я с осторожностью полагаюсь на именование папок и файлов, чтобы что-то выяснить.
Бенджамин Пайкс
@BenjaminPeikes Полагаться на файлы XML для сопоставления файлов с виртуальными машинами рискованно. У меня были случаи, когда из-за случайного удаления или повреждения данных файлы XML отсутствовали или не читались. Кроме того, это просто быстрее, чем сопоставление идентификаторов GUID. Но я согласен, вам не обязательно использовать имя виртуальной машины в имени файла, просто папку, если вы предпочитаете. Просто убедитесь, что - глядя только на структуру файла - вы можете определить, какие файлы принадлежат какой виртуальной машине и для какой цели они служат.
Грант
2

Мне не нравится ни один.

Потому что ни один из ваших шаблонов не стабилен, если вы перемещаете виртуальную машину.

Я бы - и я делаю это сам - использовал бы структуру папок, идентичную той, которую вы получаете, когда вы перемещаете виртуальную машину между хостами. Таким образом, ничего не меняется, когда вы перемещаете виртуальную машину между хостами.

TomTom
источник
Разве шаблон 1 не получается, когда вы перемещаете виртуальную машину между хостами?
Бенджамин Пайкс
Попробуйте - это не так. Например, диски попадают в папку «Виртуальные жесткие диски» в папке с именем машины.
TomTom
это то, что делает мой шаблон 1. У каждой машины есть своя собственная папка, и в каждой из этих папок есть папка виртуальных машин и папка виртуальных жестких дисков.
Бенджамин Пайкс
1
Есть ли способ заставить Hyper-V использовать структуру, которую вы описали по умолчанию при создании виртуальной машины, @TomTom? Мне нравится помещать мои виртуальные машины в собственную папку. Но каждый раз я заканчивал тем, что создавал виртуальную машину, а затем перемещал ее сразу же, чтобы получить желаемую структуру папок.
Мэтти Браун
1

Вам необходимо сделать шаблон 2, чтобы отделить связь для частей виртуальной машины от проблем хранения. Т.е. один VHDX для виртуальной машины может соответствовать объему производительности, другой VHDX для той же виртуальной машины больше связан с емкостью - и все может быть связано с различиями в отказоустойчивости.

Таким образом, вы не сможете выполнить шаблон 1, если не введете в структуру файловой структуры сложность сопоставления различных мест хранения в соединении для файловых частей виртуальных машин.

Таким образом:

ШАБЛОН 2

Шаблон 2 - Здесь управление хранилищем имеет приоритет над макетом пространств имен (между тем, макет пространства имен обрабатывается в пользовательском интерфейсе для управления виртуальной машиной ... т.е. некоторые части виртуальной машины могут даже не быть локальными, а находиться в облаке и т. Д. С использованием, например, хранилища автобус)

... управление различными проблемами в управлении хранением:

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 - где проблемы пространства имен в файловой системе (так называемый пользовательский интерфейс с псевдообеспечением) имеют приоритет - при сохранении проблем хранения:

D: \ VMs \ xxx-xx-xx-01-Prod \ xxx-xx-xx-System-01-Prod.vhdx> (связано с) D: \ Storage \ Pool1 \ Hyper-V \ Виртуальные жесткие диски \ xxx- хх-хх-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- Восстановление-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

computermensch
источник