Тут надо сделать небольшой экскурс в структуру файлов, в которых хранится виртуальная машина (пусть её имя QUQU). Выглядит эта структура примерно так:
C: └─ProgramData └─Microsoft └─Windows └─Hyper-V ├─Snapshots │ └─22222222-2222-2222-2222-222222222222.xml <- символическая ссылка на конфигурацию фотографии ВМ └─Virtual Machines └─11111111-1111-1111-1111-11111111111.xml <- символическая ссылка на конфигурацию ВМ ... D: <- диск для хранения виртуальных машин └─QUQU ├─Snapshots <- папка для хранения фотографий ВМ │ ├─22222222-2222-2222-2222-222222222222 <- фотография виртуальной машины │ │ ├─22222222-2222-2222-2222-222222222222.bin │ │ └─22222222-2222-2222-2222-222222222222.vsv │ └─22222222-2222-2222-2222-222222222222.xml <- конфигурация фотографии ВМ ├─Virtual Machines │ ├─11111111-1111-1111-1111-11111111111 <- пустая папка, не знаю, зачем │ └─11111111-1111-1111-1111-11111111111.xml <- конфигурация ВМ ├─QUQU-c.vhd <- образ диска С: виртуальной машины └─QUQU-c_33333333-3333-3333-3333-333333333333.avhd <- изменения на диске С: виртуальной машины
Насколько я понял, система функционирует следующим образом. До создания фотографий виртуальная машина работает с образом диска - файлом QUQU-c.vhd. При создании фотографии этот файл "замораживается", и создается файл *.avhd, в котором накапливаются дифференциальные изменения диска С: виртуальной машины. И так далее.
Таким образом, чтобы можно было добраться до файлов виртуальной машины, надо как-то скомбинировать файлы дифференциальных накоплений и исходного состояния диска С: виртуальной машины. Говорят, штатным образом это как-то делатся на сервере в гипервизоре Hyper-V, но и без гипервизора можно обойтись.
Оказывается, к решению первой задачи (доступ к файлам ВМ) приводит следующая последовательность действий:
1. Чтобы не порушить структуру ВМ, копируем все QUQU-c.vhd и QUQU-c_33333333-3333-3333-3333-333333333333.avhd в какую-нибудь папку (например, D:\temp)
2. Запускаем с правами администратора утилиту DISKPART.
3. В командной строке diskpart-а выполняем команду:
select vdisk file=D:\temp\QUQU-c_33333333-3333-3333-3333-333333333333.avhdэта команда нацелит diskpart на последний файл дифференциального накопления.
4. В командной строке diskpart-а выполняем команду:
merge vdisk depth=1эта команда скомбинирует файлы дифференциального накопления (тут у нас один файл, поэтому depth=1) с исходным файлом и выдаст в QUQU-c.vhd самый свежий образ диска C: виртуальной машины.
5. Этот образ при помощи оснастки "Управление дисками" (например, так: с правами администратора команда mmc -> меню "Файл" - > пункт "Добавить или удалить оснастку...") подцепляем к системе: меню "Действие" -> пункт "Присоединить виртуальный жесткий диск".
Вторая задача (по переносу виртуальной машины) решается тоже несложно:
1. Останавливаем сервис Hyper-V:
net stop vmms
2. Создаём символические ссылки на конфигурацию виртуальной машины и всех её фотографий в рабочей папке Hyper-V нового сервера:
mklink "C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines\11111111-1111-1111-1111-11111111111.xml" "D:\QUQU\Virtual Machines\11111111-1111-1111-1111-11111111111.xml" mklink "C:\ProgramData\Microsoft\Windows\Hyper-V\Snapshots\22222222-2222-2222-2222-222222222222.xml" "D:\QUQU\Snapshots\22222222-2222-2222-2222-222222222222.xml"
3. Раздаём этим символическим ссылкам нужные права:
icacls "C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines\11111111-1111-1111-1111-11111111111.xml" /grant "ВИРТУАЛЬНАЯ МАШИНА NT\11111111-1111-1111-1111-11111111111":F /T /L icacls "C:\ProgramData\Microsoft\Windows\Hyper-V\Snapshots\22222222-2222-2222-2222-222222222222.xml" /grant "ВИРТУАЛЬНАЯ МАШИНА NT\11111111-1111-1111-1111-11111111111":F /T /L(если операционная система англоязычная, то "ВИРТУАЛЬНАЯ МАШИНА NT" меняем на "NT VIRTUAL MACHINE").
4. Запускаем сервис Hyper-V:
net start vmmsи отправляемся настраивать сетевые адаптеры на восстановленной виртуальной машине.
Литература:
http://itexpertclub.blogspot.com/2015/02/how-to-merge-vhd-and-avdh-files-using.html
http://pyatilistnik.org/kak-vosstanovit-virtualnyie-mashinyi-hyper-v-pri-kopirovanii-na-drugoy-host-v-windows-server-2008r2/
http://forum.oszone.net/thread-214658.html