Восстановление потерянного места на жестком диске на хост-серверах Hyper-V (часть 2)

Опубликовано: 21 Апреля, 2023

Введение

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

Ручное сжатие VHD-файла

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

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

Причина этого связана с тем, как работает процесс сжатия. По сути, Hyper-V проверяет наличие свободного места в конце файла виртуального жесткого диска, а затем усекает пустое пространство. На самом деле, это еще немного, но технические детали не важны для того, что нам нужно сделать.

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

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

Точный метод, который вы будете использовать для выполнения дефрагментации, зависит от гостевой операционной системы, использующей файл виртуального жесткого диска. В случае Windows Server 2008 R2 вы должны загрузить операционную систему, зайти в проводник Windows, щелкнуть правой кнопкой мыши диск, представляющий файл виртуального жесткого диска, а затем выбрать команду «Свойства» в появившемся контекстном меню.

На этом этапе вы должны перейти на вкладку «Инструменты» листа свойств. Как вы можете видеть на рисунке A, эта вкладка содержит кнопку «Дефрагментировать сейчас».

Изображение 27376
Рисунок A: Вы должны дефрагментировать виртуальный жесткий диск перед его сжатием.

На физическом сервере Windows перемещается по блокам и пытается упорядочить их непрерывно. То же самое происходит и в виртуализированной системе, за исключением того, что блоки перемещаются в файле виртуального жесткого диска, а не на физическом диске. Это приводит к перемещению данных в начало файла и смещению пустого пространства в конец файла. Однако, как и в случае с физическим жестким диском, некоторые данные не могут быть перемещены.

После дефрагментации виртуального жесткого диска выключите гостевую операционную систему. Теперь откройте диспетчер Hyper-V, щелкните правой кнопкой мыши виртуальную машину и выберите команду «Настройки» в появившемся контекстном меню. Когда вы это сделаете, Windows отобразит диалоговое окно настроек для виртуальной машины.

Найдите в списке виртуальный жесткий диск, который вы хотите сжать, как показано на рисунке B, и нажмите кнопку «Изменить».

Изображение 27377
Рисунок B: Найдите в списке виртуальный жесткий диск, который вы хотите сжать, и нажмите кнопку «Изменить».

В этот момент Windows перенесет вас на экран, показанный на рисунке C. Как вы можете видеть на рисунке, у вас есть возможность сжать виртуальный жесткий диск. Выбрав параметр «Компактный», нажмите «Далее». Когда вы это сделаете, вы увидите итоговый экран, который подтверждает, что вы собираетесь сжать диск. Предполагая, что все на сводном экране выглядит правильно, нажмите «Далее», чтобы сжать файл виртуального жесткого диска.

Изображение 27378
Рисунок C. Диспетчер Hyper-V позволяет сжать файл виртуального жесткого диска.

Использование сторонней утилиты

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

Одной из таких утилит является V-Locity 2.0 от Diskeeper. V-Locity сообщает, сколько места можно сэкономить за счет сжатия динамически расширяющихся файлов виртуального жесткого диска, а также предоставляет механизм сжатия файлов одним щелчком мыши. Вы можете увидеть, как выглядит V-Locity на рисунке D.

Изображение 27379
Рисунок D. V-Locity 2.0 может сжимать динамически расширяющиеся файлы виртуальных жестких дисков на серверах Hyper-V.

Преобразование в фиксированный размер

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

Фактический процесс преобразования очень прост, но виртуальная машина должна быть отключена, прежде чем вы сможете преобразовать файл. Если вы снова посмотрите на рисунок C, вы заметите, что есть возможность преобразовать динамический виртуальный жесткий диск в фиксированный виртуальный жесткий диск. Выберите этот вариант и нажмите «Далее». Когда вы это сделаете, вам будет предложено выбрать имя и расположение для диска фиксированного размера. Просто убедитесь, что в выбранном вами месте достаточно свободного места на диске для завершения операции. Когда вы закончите, нажмите «Далее», и вы увидите сводную информацию о том, что файл виртуального жесткого диска будет преобразован. Нажмите Готово, чтобы начать процесс. Имейте в виду, что в зависимости от размера файла и возможностей аппаратного обеспечения процесс преобразования может занять много часов.

Вывод

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

Восстановление потерянного места на жестком диске на хост-серверах Hyper-V (часть 1)