Виправлення помилки доступу до віртуального диску в Hyper-V
Ситуація наступна: віртуальна машина Hyper-V не може запуститися, видаючи при старті помилку приблизно такого змісту «VM failed to start. Synthetic SCSI controller (Instance ID xxxxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx): Failed to Power on with Error 'General access denied error'. ».
Якщо розгорнути вікно і подивитися детальну інформацію про помилку, то стане зрозуміло, що проблема криється у відсутності доступу до файлу віртуального диска. Справа в тому, що віртуальній машині (як і звичайному користувачеві) для роботи з файлом необхідні NTFS-права на цей файл. У тому випадку, коли у віртуальної машини відсутні необхідні дозволи, то вона не зможе стартувати і випаде з помилкою.
Як видно на малюнку, кожна віртуальна машина має свій унікальний ідентифікатор (Virtual machine ID). Для усунення помилки треба взяти цей ID та додати його в список контролю доступу VHD-файлу. Зробити це можна з командного рядка, за допомогою утиліти з неблагозвучним 🙂 назвою Icacls. У нашому прикладі команда буде виглядати так:
Icacls H: \ Hyper-V \ SRV1.vhdx / grant "NT Virtual Machine \ f72e624c-4cc2-4167-b852-a47d412de8440" :( F)
Цією командою ми видали віртуальній машині права Full Control на файл. У цьому можна переконатися, відкривши властивості файлу і перейшовши на вкладку Security. Як бачите, дозволу в порядку і тепер віртуальна машина повинна успішно запуститися.
Примітка. Подібну операцію необхідно проробити для кожного vhdx, і, якщо у машини є моментальні знімки (checkpoint), то для кожного avhdx файлу, що має відношення до даної ВМ.
На закінчення опишу деякі ситуації, які можуть призвести до втрати прав:
• Перенесення файлу віртуального диска в інше розташування. Нагадаю, що при перенесенні файлу на інший диск дозволу файлової системи видаляються і замінюються успадкованими. Уникнути цього можна, переносячи файли віртуальних машин за допомогою вбудованих засобів Hyper-V, таких як Storage migration або Export \ Import;
• Копіювання файлу віртуального диска. Помилка може виникнути при спробі підсунути віртуальній машині чужій диск. Тому для "розмноження" краще скористатися або експортом, або, при наявності VMM, клонуванням віртуальних машин;
• Відновлення ВМ з резервної копії. Деякі програми резервного копіювання, наприклад той же DPM, при відновленні в інше розташування не виставляють на файли потрібні права.