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

 Для переноса гостевой ОС будем использовать штатную функцию экспорта/импорта виртуальных машин в Hyper-V. Итак, определяемся с место, куда будем переносить проблемную виртуальную машину, выбираем ее в диспетчере и в контекстном меню ищем пункт “Экспорт”.

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

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

В типе импорта выбираем первый пункт “Регистрировать виртуальную машину по месту”.

Запускаем процесс импорта, видим в диспетчере нашу появившуюся виртуальную машину.

Запускаем ее, в процессе запуска возобновится прерванное слияние снапшотов. По его окончании виртуальная машина запустится. Проверяем ее работоспособность, удаляем (если нужно) оставшиеся контрольные точки и снова выключаем машину. Дожидаемся окончания всех процессов слияния. Проверяем, что в папке с образом жесткого диска действительно остался файл(ы) с расширением vhd(x) . После этого запускаем обратный процесс экспортирования виртуально машины на прежнее место. Как и делали выше:

  1. экспортируем в корень (или в другое место) нашу виртуальную машину;
  2. по окончанию процесса экспортирования проверяем в созданной папке все ли корректно создалось и удаляем из диспетчера виртуальную машину (сами файлы виртуальной машины не удаляются, это нужно будет сделать позже);
  3. импортируем в диспетчере виртуальную машину указав созданную папку на новом диске, указываем тип “Регистрировать виртуальную машину по месту”;
  4. проверяем работоспособность созданной виртуальной машины.
  5. если все в порядке, удаляем директорию с файлами виртуальной машины (из пункта 4), созданной на временном диске.

Процесс восстановления завершен.

Hyper-V: не удалось слияние снапшота из-за отсутствия места на диске.