Avamar. Ручная очистка потерянных групп vmgroup Hyper-V
Summary: В статье базы знаний приведены подробные процедуры удаления потерянных групп томов Hyper-V с помощью различных методов.
Instructions
Резервное копирование Hyper-V может завершиться сбоем из-за того, что vmgroups с сообщениями, подобными следующим:
avhypervvss Info <0000>: Exception! WMI API returned error: 'The method call failed.' avhypervvss Info <0000>: WMI API RemoveMember returned Error! Exception in removing VMGroup Memeber 'PPDM01' from VM Group AvamarBackup_HYPERV10-app-20240301180052-0 and error message is 'The method call failed.'. avhypervvss Info <0000>: Exception in Removing VM 'PPDM01' from group 'AvamarBackup_HYPERV10-app-20240301180052-0' with error 'The method call failed.'. avhypervvss Info <0000>: Failed to RemoveVMGroupMember for groupname AvamarBackup_HYPERV10-app-20240301180052-0.
avhypervvss Info < 43394 >: Checking for Stale entries from previous backup. avhypervvss Error < 43417 >: Failed to cleanup Stale checkpoint entries for the targets
Когда виртуальные машины (ВМ) Live Migrate на другой узел кластера во время резервного копирования могут возникать экстенты отслеживания отказоустойчивых изменений (RCT) и сбои резервного копирования.
Если виртуальная машина (ВМ) Hyper-V находится на определенном узле кластера, она добавляется в группу виртуальных машин этого узла (vmgroup) во время резервного копирования. Если во время резервного копирования виртуальная машина Live Migрируется на другой узел кластера, она по-прежнему существует как член vmgroup на исходном узле. Перед завершением резервного копирования операционная система Windows попытается удалить vmgroups на всех узлах кластера.
Если виртуальная машина, которую Live Migrate выполняла ранее, больше не работает на первоначальном узле, операционной системе Windows не удается удалить группу vmgroup. Этот осиротевший vmgroup Это может привести к сбою последующих операций резервного копирования Hyper-V.
Перед выполнением процедур очистки вручную проверьте следующий URL-адрес Microsoft ниже. В следующей статье базы знаний представлены решения, которые могут способствовать устранению сбоев Live Migration из-за факторов среды:
- https://learn.microsoft.com/en-us/troubleshoot/windows-server/virtualization/troubleshoot-live-migration-issues (Внешняя ссылка)
get-vmgroup
Проверка на наличие потерянных vmgroup На всех узлах кластера одновременно выполните следующую команду в PowerShell (запуск от имени администратора):
Invoke-Command -computername (get-clusternode).name -scriptblock { get-vmgroup }
Если есть какие-либо осиротевшие vmgroups, то вывод должен выглядеть следующим образом:
PS C:\> get-vmgroup
Name : AvamarBackup_Win2019-H4-crash-20240311112148-0
InstanceId : 416dd21c-e8b7-4f9e-8359-c78068cc0c69
GroupType : VMCollectionType
VMMembers : {win7-cl2}
VMGroupMembers :
CimSession : CimSession: .
ComputerName : WIN2019-H1
IsDeleted : False
Name : AvamarBackup_Win2019-H2-crash-20240311112148-0
InstanceId : 88c419c0-ceb8-46d2-af17-6560c55e0d06
GroupType : VMCollectionType
VMMembers : {}
VMGroupMembers :
CimSession : CimSession: .
ComputerName : WIN2019-H1
IsDeleted : False
I. Стандартные процедуры
удаления vmgroupЧтобы удалить все потерянные vmgroups на автономном сервере Hyper-V выполните следующие команды в PowerShell (запуск от имени администратора):
Get-VMGroup | remove-vmgroup Get-VMGroup | remove-vmgroup -Force
vmgroups на всех узлах кластера Hyper-V выполните следующие команды в PowerShell (запуск от имени администратора):
Invoke-Command -computername (get-clusternode).name -scriptblock { get-vmgroup | remove-vmgroup }
Invoke-Command -computername (get-clusternode).name -scriptblock { get-vmgroup | remove-vmgroup -Force }
Если указанные выше команды не помогли, используйте следующий сценарий PowerShell (VMGrpCln.ps1) для автоматизации vmgroup Удаление по всем узлам кластера:
Скачивание сценария:
Сведения о поиске и скачивании сценария см. в следующей статье: Avamar. Как найти и скачать сценарии и инструменты Avamar со страницы Dell Central Avamar
- Скачайте сценарий PowerShell в каталог, например
"C:\temp"на одном из узлов кластера. - Откройте командную строку PowerShell (запуск от имени администратора) и перейдите в каталог, содержащий сценарий PowerShell (PS).
- Убедитесь, что сервер Windows разрешает выполнение сценариев PS, введя следующую команду в PowerShell (запуск от имени администратора):
Get-ExecutionPolicy
Если в выводе отображается "Restricted" или "Allsigned," затем выполните следующую команду PowerShell (запуск от имени администратора), чтобы временно разрешить текущей сессии выполнение сценариев PS:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
4. Запустите сценарий PS из каталога, в котором он находится:
Если с помощью этих команд или сценариев не удается удалить потерянный файл vmgroups, то следующим шагом будет удаление потерянных групп вручную.
II Процедуры удаления vmgroup вручную
vmgroups находятся в локальном каталоге на каждом узле кластера (C:\ProgramData\Microsoft\Windows\Hyper-V\Groups).
Avamar: Подключаемый модуль Hyper-V VSS — настройка и установка последних накопительных исправлений для версии 19.4 и более поздних
Для кластеров Hyper-V, в которых настроен параметр «путь к общему хранилищу», эти процедуры не применимы. Обратитесь в службу поддержки заказчиков за дальнейшими инструкциями по поиску и устранению
неисправностей Шаг # 1. Выполните следующую команду на каждом узле кластера Hyper-V:
get-VMGroup
Кроме того, выполните следующую команду, чтобы получить vmgroups В каждом узле кластера:
Invoke-Command -computername (get-clusternode).name -scriptblock { get-vmgroup }
Шаг#2a: Если поле VMMembers заполнено, выполните следующую команду на каждом узле кластера:
Get-VMGroup | % {Remove-VMGroupMember -VMGroup $_ -VM (Get-VM)}
Шаг#2b: Если VMMembers не заполнен:
- Откройте
C:\ProgramData\Microsoft\Windows\Hyper-V\Groups. Введите местоположение вручную в Проводнике Windows или измените параметры, чтобы просмотреть скрытые файлы и папки. - Изменение файла конфигурации виртуальной машины
"*.vmcx"который совпадает с идентификатором экземпляра группы виртуальных машин с текстовым редактором, например Notepad или Notepad++. Нажмите «Вид» в строке меню, а затем выберите параметр «Перенос по словам» для лучшего чтения. - Скопируйте глобальные уникальные идентификаторы (GUID) виртуальной машины (ВМ) в текстовый редактор. они следуют
'GUID H'текст в поле*.vmcx. - В текстовом редакторе нажмите Редактировать, а затем Заменить. Затем в
'Find what'Нажмите пробел на клавиатуре и нажмите кнопку 'Replace All.'Эта очистка содержит список проблемных идентификаторов GUID виртуальных машин, которые необходимо Live Migrate обратно на предыдущий узел кластера. - Выполните следующую команду PowerShell, чтобы найти виртуальную машину, привязанную к этим идентификаторам GUID, а также узлы кластера, на которых она размещена:
Invoke-Command -ComputerName (Get-ClusterNode).Name -ScriptBlock { Get-VM | ? VMID -eq "VM GUID Previously Collected" }
Например, используйте приведенный ниже синтаксис команды, чтобы найти имя виртуальной машины (ВМ), которое присвоено следующему идентификатору GUID:
Invoke-Command -ComputerName (Get-ClusterNode).Name -ScriptBlock { Get-VM | ? VMID -eq "A6209559-F08F-440E-9AAE-21AEF4AF7E9D" }
Выходные данные команды должны включать имя виртуальной машины и узел кластера, на котором она выполняется. Если вывод пуст, то GUID больше не существует и его можно игнорировать.
6. Выполните перенос виртуальной машины на хост с устаревшей группой виртуальных машин с помощью диспетчера отказоустойчивости кластера.
Повторите эти действия для каждой виртуальной машины, указанной в vmgroup's "*.vmcx" .
7. Выполните следующую команду PowerShell, чтобы удалить виртуальные машины из поля VMMembers в каждой из потерянных групп vm:
Get-VMGroup | % {Remove-VMGroupMember -VMGroup $_ -VM (Get-VM)}
Убедитесь, что параметр «vmmembers' для каждого из vmgroups пусто, выполнив следующую команду на каждом узле кластера:
get-vmgroup
Или выполните следующую команду, чтобы убедиться, что поле «vmmembers» пустое для всех vmgroups На всех узлах:
Invoke-Command -computername (get-clusternode).name -scriptblock { get-vmgroup }
После подтверждения перейдите к шагу #3.
Шаг#3: Выполните следующую команду PowerShell, чтобы удалить потерянный vmgroups на узле кластера или автономном сервере Hyper-V:
get-VMGroup | Remove-VMGroup
Повторите те же процедуры для других узлов кластера, для которых остались бесхозные vmgroups.
Кроме того, используйте следующую команду для удаления потерянных групп vmgroup на всех узлах кластера одновременно:
Invoke-Command -computername (get-clusternode).name -scriptblock { get-vmgroup | remove-vmgroup }
Когда все узлы будут завершены, убедитесь, что все потерянные узлы vmgroups были удалены:
Invoke-Command -computername (get-clusternode).name -scriptblock { get-vmgroup }
Переменная "remove-vmgroupmember" и "remove-vmgroup" Команды на первом узле кластера могут завершаться сбоем с ошибкой, подобной следующей:
Remove-VMGroup : The operation cannot be performed while the object is in its current state
В этом случае попробуйте выполнить команды на остальных узлах кластера. Если процедуры завершены успешно, вернитесь к первому узлу и повторите команды PowerShell.
Если приведенные выше команды завершаются сбоем на всех узлах кластера, перезапустите службу управления виртуальными машинами Hyper-V на затронутом узле. В качестве альтернативы перезагрузите каждый из узлов кластера Hyper-V. После этого повторите команды PowerShell, чтобы удалить члены виртуальной машины, и vmgroups.
Если с помощью стандартных или ручных процедур не удается удалить потерянный vmgroups, то последним вариантом является удаление vmgroup файлов.
Additional Information
Ссылки:
Интерактивная миграция Hyper-V между хостами может завершиться сбоем в результате контрольных точек восстановления.
Сбой инкрементного RCT-тестирования Avamar Hyper-V с ошибкой «Не удалось получить экстенты RCT для дискового файла» и/или «Не удалось создать опорную точку для виртуальной машины»