Создание виртуальных дисков в Hyper V VHD и VHDX


05 сентября 2019


Создание в Hyper V виртуальных дисков VHD и VHDX

Виртуальные диски Hyper V заменяют обычные жесткие диски в операционной системе и на виртуальных машинах. В Hyper V есть три типа накопителей:

  • vhd - максимальный размер до 2 ТБ, нет возможности сжимать и расширять диск при работающей машине. Чаще выбирается в случае, когда машины до Windows Server 2012. Размер сектора 512 байт.
  • vhdx - максимальный размер до 64 ТБ, есть возможность уменьшения и увеличения размера у работающей машины, лучше защита данных от повреждения, есть поддержка TRIM. Работает с Windows Server 2012. Размер сектора 4 КБ
  • vhds - работает только в кластере Hyper V на файловой системе CSV. Позволяет работать с одним диском нескольким виртуальным машинам. Доступен с Windows Server 2016.

Перед тем как в Hyper V добавить виртуальный жесткий диск нужно его создать.

Виртуальные жесткие диски Hyper V можно создать несколькими путями. Первый - это через оснастку управления дисками. Так как виртуальные накопитель можно использовать не только для виртуальных машин, но и для подключения как разделов и, установки ОС, такую возможность создания добавили и в эту оснастку:

Создание VHD в оснастке управление дисками

Конечно мы можем создать накопитель и в Powershell, но это будет рассмотрено в конце. И можно создать в оснастке Hyper V:

hyper v виртуальный диск

Если пропустить стартовое окно, то мы увидим форматы дисков Hyper V, которые описаны выше:

hyper v vhdx vhd

В следующем окне мы видим типы накопителей, которые делятся на:

  • Фиксированного размера (Fixed) - если в последующем указать, что его размер 50 Гб, то он сразу их займет. Аналог Lazy zeroed thick disks в VMware
  • Динамического изменяемого размера (Dynamic) - если указать размер в 50 Гб, то диск изначально будет весить 0 Кб и будет заполняться до этого предела. Аналог в VMWare Thin disks.
  • Разностные диски (Differencing) - подразумевает вложенность. По аналогии с дифференциальным бэкапом этот диск отдельно сохраняет только изменения, сделанные в родительском диске. Что бы воспользоваться этим диском в последующем нужно будет указать место основного диска.

Картинка немного описывающая разностный тип:

Разностный диск Hyper V

В тестовых средах используется динамический и дифференциальный, а в рабочей среде фиксированные накопители. В рамках работы Hyper V динамический диск не подходит по нескольким причинам:

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

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

Минусы разностных дисков Hyper V такие:

  1. Если сломается родительский диск, то не будет работать и дочерний.
  2. Медленная работа.
  3. Большая фрагментация.

hyper v добавить диск

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

v hyper жесткий диск

На предпоследнем шаге мы выбираем из трех возможных вариантов:

  1. Создать пустой виртуальный жесткий диск (Create a new blank virtual hard disk) - создаст пустой диск.
  2. Копировать содержимое указанного физического диска (Copy the contents of the specified physical disk) - в случае клонирования содержимого диска он должен быть подключен и не должен использоваться во время всего времени копирования. Это не может быть системный диск хоста, который вы в данный момент используете.
  3. Копировать содержимое указанного виртуального жесткого диска (Copy the contents of the specified virtual hard disk) - виртуальный диск Hyper V должен быть отключен и не использоваться.

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

hyper v клонирование дискаВ финальном окне еще раз проверяем данные и подтверждаем создание. Если был выбран фиксированный тип диска, то он может создаваться долго.

hyper v динамический диск

Этот диск можно подключить во время создания виртуальной машины либо подключить уже к существующей виртуальной машине. Что бы в Hyper V подключить жесткий диск к существующей машине сделайте следующее:

Настройки виртуальной машины Hyper V

Далее выбрать тип контроллера, который вы используете (в большинстве случаем SCSI) и нажать на добавление устройства:

hyper v подключить жесткий диск

В этой вкладке так же можно создать виртуальный диск Hyper V. В отличие от предыдущего способа здесь не будет вопроса о выборе VHD и VHDX. Этот выбор будет сделан автоматически от типа VM.

Через проводник мы можем найти уже созданный диск и импортировать его:

hyper v подключить жесткий диск

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

 

Создание виртуальных дисков Hyper V VHD и VHDX в Powershell

Для создания виртуальных дисков в Powershell есть команда:

New-VHD

Если ее запустить без параметров, то у нас появится опрос по необходимым значениям, но он работает странно и у нас могут появиться ошибки:

Cannot recognize "4GB" as a System.UInt64 due to a format error.
New-VHD : Failed to create the virtual hard disk. The size specified for 'C:\vv.vhdx' is too small.

На примере ниже я создал виртуальный динамический диск VHDX в Powershell размером 1GB:

New-VHD -Path 'C:\centos.vhdx' -SizeBytes 1GB

По умолчанию создается динамический накопитель. Формат виртуального диска определяется в пути, если бы я хотел VHD диск нужно было бы так написать. Размер может указываться и в мегабайтах (MB), терабайтах (TB) и так далее.

Тип накопителя указывается в самом ключе. Если нужно создать фиксированный диск напишите:

New-VHD -Path 'C:\centos.vhdx' -SizeBytes 10GB -Fixed

При создании разностных дисков Hyper V нужно указать и родительский диск:

New-VHD -ParentPath 'c:\parent.vhdx' -Path 'c:\Diff.vhdx' -Differencing

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

Get-Disk

А затем передать этот номер:

New-VHD -Path 'C:\centos.vhdx' -SizeBytes 1GB -SourceDisk 0

VHDX Powershell

Чтобы в Hyper V подключить диск средствами Powershell нужно указать тип контроллера:

Add-VMHardDiskDrive -ControllerType SCSI -VMName 'CentOS' -Path C:\centos.vhdx

Так мы получим имена виртуальных машин:

Get-VM

 

...

Теги: #powershell #hyper-v


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