Натрапив на цікаву статтю вирішив їй поділитися.
В наявності папка з файлами віртуальної машини і снепшот (xml) і файли віртуальних дисків і снапшотов vhd і avhd.
Папка залишилася після втрати системного розділу або після копіювання віртуальної машини замість експорту.
Мета: підключити віртуальну машину з усіма снепшот.
Отже, для початку створюємо нову віртуальну машину з ім'ям DeleteMe в папці c: \ VMs.
Малюнок 1. Створення віртуальної машини
Далі створюємо через консоль Hyper-V Manager кілька снепшот. Зверніть увагу на ім'я файлу для HDD на IDE Controller 0 і параметри мережі.
Малюнок 2. Налаштування віртуальної машини.
Подивимося, що ж ми отримали з папці c: \ VMs після виконання цих операцій.
Для нової віртуальної машини створена папка з ім'ям віртуальної машини. Всередині цієї папки розташовані файли жорстких дисків і снепшот і папки з конфігурацією віртуальної машини Virtual Machines і з конфігурацією снепшот Snapshots.
Малюнок 3. Папка C: \ VMs \ DeleteMe.
Малюнок 4. Папка C: \ VMs \ DeleteMe \ Snapshots.
Малюнок 5. Папка C: \ VMs \ DeleteMe \ Virtual Machines.
Отже, вихідна конфігурація готова.
Пора «втрачати» віртуальну машину.
Для простоти експерименту зупинимо керуючий сервіс гипервизора через консоль Hyper-V Manager і скопіюємо всю папку DeleteMe.
Отже, підстелили соломку, включили керуючий сервіс гипервизора і видаляємо віртуальну машину через консоль Hyper-V Manager.
Малюнок 6. Видалення віртуальної машини DeleteMe.
Після цього порівняємо вміст папки C: \ VMs \ DeleteMe до і після операції.
Кількість файлів зменшилася. Рівно о 2 рази. It's fantastic! Використовуючи Hyper-V Manager Ви можете видалити половину файлів в складній структурі папок однією командою.
Зверніть увагу на значення полів Location і Contains.
Малюнок 7. Папка C: \ VMs \ DeleteMe до і після видалення віртуальної машини.
Отже, настав час приступати до відновлення.
Зупиняємо керуючий сервіс гипервизора. Копіюємо вміст папки DeleteMe назад. У бойовій ситуації цей крок відповідає відновленню / перевстановлення сервера або підключення дисків до іншого сервера.
Ось і починається найцікавіше ... Як пояснити службі гипервизора, що необхідно прочитати конфігурацію віртуальної машини з деякого файлу в файлової системи. За нутрощі роботи Hyper-V відповідає папка прихована C: \ ProgramData \ Microsoft \ Windows \ Hyper-V. У ній міститься файл управління рольовим доступом до Hyper-V InitialStore.xml, а також папки Virtual Machines і Snapshots. Основний фокус в тому, що при створенні віртуальної машини через Hyper-V Manager в цих папках створюються NTFS hardlinks на відповідні конфігураційні файли. Таким чином, завдання зводиться до створення hardlinks.
Створюємо hardlink за допомогою Оманд mklink в адміністративній командному рядку.
Малюнок 8. Створення hardlink для конфігураційного файлу віртуальної машини.
Запускаємо керуючий сервіс гипервизора і бачимо, що в консолі нічого не з'явилося ...
Все пропало ... Гіпс зняли, а діамантів то там давно і немає ...
Зате в журналі подій є лист від засмученого гипервизора:
Малюнок 9. Помилка завантаження конфігурації віртуальної машини.
Перевірте ACL об'єкта hardlink для віртуальної машини, створеної за допомогою Hyper-V Manager. У нашому hardlink відсутня SID віртуальної машини з дозволами Full Control.
SID віртуальної машини за дивним збігом обставин підозріло схожий на GUID, з якого складається ім'я конфігураційного файлу віртуальної машини.
Зупиняємо керуючий сервіс гипервизора.
Модифікацію ACL виконуємо за допомогою cacls.
Малюнок 10. Модифікація ACL для hardlink конфігураційного файлу віртуальної машини.
Зверніть увагу на ім'я Security Principal NT VIRTUAL MACHINE \
Запускаємо керуючий сервіс гипервизора.
Відкриваємо консоль Hyper-V Manager. О, диво. Віртуальна машина тут.
Але без снепшот і з втраченої мережею. Зверніть увагу, що диск підключений до правильного avhd файлу. Тобто віртуальна машина вже знаходиться в останньому активному стані, але без можливості видалити або застосувати потрібний снепшот.
Малюнок 11. Конфігурація віртуальної машини.
Заглянемо знову в журнал подій.
Малюнок 12. Помилка завантаження снапшотов.
І знову закинув старий свій невід ... Темне було синє море ... Давно старий не стирав свій невід ...
У сенсі знову зупиняємо керуючий сервіс гипервизора.
Необхідно створити hardlink для кожного снепшот і додати дозвіл Full Control для SID віртуальної машини в кожен hardlink.
Малюнок 13. Створення hardlink і зміна ACL для снепшот.
Запускаємо керуючий сервіс гипервизора і про чудо ...
Малюнок 14. Консоль Hyper-V Manager. Віртуальна машина з підключеними снапшотов.
Для того, щоб щастя не тільки було видно в консолі, але і можна було використовувати, залишилося надати SID віртуальної машини доступ Full Control до папки з конфігураційними і дисковими файлами віртуальної машини.
Малюнок 15. Зміна ACL папки DeleteMe
Вуаля. Тепер можна змінити конфігурацію віртуальної машини, змінити активний снепшот і почати пошук рішення для автоматичного вибору правильного мережевого інтерфейсу для віртуальної машини ...