Файл vhdx в Hyper-V значительно больше содержимого.

Вопрос или проблема

У меня есть виртуальная машина, на которой в качестве диска C установлен динамически расширяемый vhdx. Или “тонко выделенный”, если говорить в терминах других гипервизоров.

На ней работает Windows Server 2016, точнее сказать, в качестве доменного контроллера. За два года файл vhdx увеличился в размерах; размер диска в виртуальной машине указывается как 18 ГБ, в то время как файл vhdx около 128 ГБ. vhdx слишком большой.

Что вызвало это и как можно уменьшить размер файла vhdx.

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

  1. В виртуальной машине: свойства диска, выполнить очистку диска, перезагрузить
  2. Открыть PowerShell от имени администратора и выполнить: Optimize-Volume -DriveLetter C -Defrag -Verbose
  3. В том же PowerShell выполнить: Optimize-Volume -DriveLetter C -ReTrim -Verbose. По какой-то странной причине, мне пришлось повторить эти шаги несколько раз. Однажды это даже привело к сбою.
  4. Выключить виртуальную машину и в менеджере Hyper-V перейти к виртуальной машине, перейти к виртуальному диску. Изменить настройки, выбрать действие: сжать.

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

Лично у меня не получается использовать опцию сжатия диска Hyper-V или командлет Optimize-VHD в PowerShell. Но то, что сработало, это использование анализатора дискового пространства в виртуальной машине, например, gdu в Linux VM, чтобы выяснить, какое общее пространство используется. Затем выключить виртуальную машину и использовать редактор диска Hyper-V, чтобы уменьшить емкость vhdx до одного или двух ГБ больше общего используемого пространства. Теперь он изменит размер файла диска на этот размер. Затем просто снова увеличьте емкость до любого большого значения/предыдущего значения.

.

Ответ или решение

Теория

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

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

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

Пример

Ваша виртуальная машина на базе Windows Server 2016 используется как контроллер домена, и объем данных внутри виртуальной машины составляет 18 Гб, в то время как vhdx файл вырос до 128 Гб. Такое увеличение может происходить из-за случайного хранения, временных файлов, истории журналов и фрагментации, накопившихся в течение двух лет эксплуатации. Решением этой проблемы может быть последовательное выполнение оптимизации и компактирования диска, используя встроенные средства Windows и Hyper-V.

Применение

Для эффективного уменьшения размера VHDX используйте следующие шаги:

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

  2. Оптимизация диска: Откройте PowerShell с правами администратора и выполните оптимизацию диска с помощью команд Optimize-Volume -DriveLetter C -Defrag -Verbose и Optimize-Volume -DriveLetter C -ReTrim -Verbose. Процедуру может понадобиться повторить несколько раз, чтобы добиться наилучшего результата, однако будьте внимательны к возможным сбоям.

  3. Компактирование VHDX: После выполнения вышеуказанных действий, выключите виртуальную машину и в Hyper-V Manager выберите редактирование виртуального диска. Используйте функцию компактирования, чтобы уменьшить фактический размер вашего VHDX.

  4. Использование сторонних инструментов для анализа и управления пространством: Некоторые пользователи сталкивались с неудачами, используя только штатные средства, и в таких случаях, наличие инструментов типа gdu под Linux может помочь детально проанализировать использование диска и перенастроить объем VHDX путем ручного уменьшения и последующего расширения.

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

Оцените материал
Добавить комментарий

Капча загружается...