Прошлой ночью я обновил свой хост-сервер Windows 2008 Hyper-V до Windows 2008 R2. Обновление прошло гладко, но когда он стал новой версией, я обнаружил, что две виртуальные машины из семнадцати отсутствуют в пользовательском интерфейсе консоли Hyper-V.
Из журнала событий Hyper-V я вижу
Log Name: Microsoft-Windows-Hyper-V-VMMS-Admin
Source: Microsoft-Windows-Hyper-V-VMMS
Date: 6/4/2011 2:31:26 AM
Event ID: 16300
Task Category: None
Level: Error
Keywords:
User: SYSTEM
Computer: elune
Description:
Cannot load a virtual machine configuration: General access denied error (0x80070005) (Virtual machine ID 5185AC13-4148-4AFE-9024-6E74FE3C9754)
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Hyper-V-VMMS" Guid="{6066F867-7CA1-4418-85FD-36E3F9C0600C}" />
<EventID>16300</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000000</Keywords>
<TimeCreated SystemTime="2011-04-05T18:31:26.432942100Z" />
<EventRecordID>641</EventRecordID>
<Correlation />
<Execution ProcessID="1964" ThreadID="2064" />
<Channel>Microsoft-Windows-Hyper-V-VMMS-Admin</Channel>
<Computer>elune</Computer>
<Security UserID="S-1-5-18" />
</System>
<UserData>
<VmlEventLog xmlns:auto-ns2="http://schemas.microsoft.com/win/2004/08/events" xmlns="http://www.microsoft.com/Windows/Virtualization/Events">
<VmName>
</VmName>
<VmId>5185AC13-4148-4AFE-9024-6E74FE3C9754</VmId>
<ErrorMessage>%%2147942405</ErrorMessage>
<ErrorCode>0x80070005</ErrorCode>
</VmlEventLog>
</UserData>
</Event>
К этим «отсутствующим» виртуальным машинам не привязаны какие-либо онлайн-снимки. Даже для тех, кто сделал, я удалил и объединил снимки на основе Совет Microsoft, и они «выжили».
Похоже, что сейчас много дискуссий на тему «Ошибка общего доступа запрещен (0x80070005)», когда дело доходит до начало виртуальные машины. Но в моем случае служба Hyper-V не может даже загрузить конфигурацию, поэтому Hyper-V знает, где находятся эти конфигурации виртуальных машин, но не имеет разрешения на доступ к ним?
Три службы Hyper-V запускаются с учетной записью LOCAL SYSTEM, а папки «Virtual Machines» для этих виртуальных машин предоставляют разрешения на полный доступ. Что я наблюдаю по другим виртуальным машинам, так это то, что в их папках есть дополнительные ACE для группы виртуальных машин и сам GUID виртуальной машины?
Я попытался продублировать эту структуру ACE, но Windows не может найти участников GUID отсутствующих виртуальных машин. Что могло бы вызвать эту проблему?
Что ж, это странное средство.
Ключевым моментом является то, что Windows / Hyper-V обращается к «списку» где-то, чтобы указать, какие виртуальные машины зарегистрированы на сервере. Мои виртуальные машины разбросаны по нескольким дискам, поэтому имеет быть централизованным хранилищем. Что оказывается
C: \ ProgramData \ Microsoft \ Windows \ Hyper-V \ Виртуальные машины
есть символические ссылки, указывающие на физическое расположение реальных XML-файлов конфигурации. Я заметил, что на проблемных ссылках виртуальной машины был значок «замок».
Я отредактировал ACL безопасности проблемной символической ссылки. Разумеется, у него нет учетной записи виртуальной машины NT, как у остальных, поэтому вместо этого я предоставил ей полный доступ группе пользователей. Перезапустили службу управления виртуальными машинами Hyper-V, и она снова может загрузить отсутствующие виртуальные машины. Кажется, работает без Учетные записи виртуальной машины.
До сих пор не получил полных и глубоких ответов, которые я искал, чтобы объяснить, что Hyper-V требует от этих учетных записей виртуальных машин, но по крайней мере исходную конфигурацию виртуальной машины можно использовать повторно.