Уменьшение размера фиксированного VHD с помощью VHD Resizer

Я продолжаю перепечатку некоторых статей, относящихся к продуктам Microsoft с блога Максимова Алексея.

На этот раз я перепечатаю статью про уменьшение VHD-диска.

Рассмотрим пример, когда созданный ранее виртуальный диск VHD фиксированного размера потребовалось уменьшить. В нашем примере на одном из виртуальных серверов с Windows Server 2008 R2 имеется NTFS том D:\ занимающий 100% пространства отдельного виртуального VHD диска размером 160Gb. Ранее емкость этого диска использовалась для сетевого файлового ресурса, а теперь на этом диске размещён контент локального сервера WSUS, который занимает гораздо меньше места, и поэтому появилось желание уменьшить размер этого диска.

Для начала через оснастку управления дисками Disk Management (diskmgmt.msc) внутри виртуального сервера выполним сжатие логического тома до того размера который мы хотим получить в конечном счете – в контекстном меню тома выберем пункт Shrink Volume

 

В единственном доступном для редактирования значении введём то количество мегабайт которое мы собираемся отрезать от размера тома. В нашем примере мы укажем значение которое позволит уменьшить размер тома с 160Gb до 100Gb

После запуска операции Shrink консоль управления дисками может на некоторое время “задуматься”. Факт того что операции уменьшения тома выполнились успешно можно отследить в системном журнале событий Application где по окончании процесса будет зарегистрировано несколько событий с кодом 258 и примерно таким содержанием:

  • The disk defragmenter successfully completed shrink estimation on WSUS (D:)
  • The disk defragmenter successfully completed shrink on WSUS (D:)

После успешного окончания процесса сжатия в консоли управления дисками появится соответствующий объём не используемого под логические тома места. Именно это место мы и планируем отсечь от физического файла фиксированного VHD. Но прежде чем приступить к шагу непосредственного изменения VHD будет правильно сделать полную резервную копию всей VM.

 

Для изменения размера VHD в меньшую сторону мы воспользуемся утилитой VHD Resizer версии 1.0.42. Несмотря на то что эта последняя версия утилиты датируется началом 2007 года, она справляется со своими задачами и сегодня. Утилита может работать без предварительной установки, то есть можно один раз её где-то установить и просто при необходимости копировать на тот сервер где надо выполнять манипуляции с VHD файлами. Единственным требованием которое я увидел для работы утилиты является наличие Microsoft .Net 2.0 Framework

Перед началом работы с VHD файлом с этой утилитой, этот самый файл не должен находиться в использовании, то есть виртуальная машина к которой он подключён должна находиться в выключенном состоянии. Стоит так же помнить про то что используемое антивирусное ПО не должно пытаться сканировать VHD файлы. Тех кто не соблюдает эти простые условия, при попытке открытия VHD из утилиты могут получить сообщение “Invalid Vhd file, please select another”

В интерфейсе утилиты в поле Source Vhd to Resize выбираем имеющийся у нас исходный VHD файл, после чего сразу отображается его тип и текущий размер. В поле Destination Vhd вводим имя создаваемого файла VHD и указываем его размер.

В значениях Min и Max указаны значения минимального и максимального размера в который может быть преобразован исходный файл. Не смотря на то, что в моём случае утилита отображала в качестве минимально возможного значения 102401 Mb, мне так и не удалось указать значение меньше чем 102402 Mb

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

Далее в оснастке управления виртуальными машинами Hyper-V Manager открываем свойства нашего виртуального сервера и меняем ссылку на VHD. При этом желательно не изменять Расположение (порядок диска на виртуальном контроллере)

Удостовериться в том что заголовки VHD файла являются читаемыми можно жмакнув по кнопке проверки

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

3 thoughts on “Уменьшение размера фиксированного VHD с помощью VHD Resizer”

  1. Вы забыли упомянуть, что на новый файл, после подключения, необходимо дать разрешения этой виртуальной машине. Иначе она не запустится.
    icacls vrt.vhd /grant “NT VIRTUAL MACHINE\83EDFDC6-4C0B-4F28-8FAA-96B919EAEB68”:(F)
    где-то так

Leave a Reply

Your email address will not be published. Required fields are marked *