Авамар: Ручне очищення сиротних Hyper-V vmgroups
Summary: У статті KB наведено детальні процедури видалення сиротих Hyper-V vmgroups різними методами.
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
Розширення відстеження стійких змін (RCT) та збої резервного копіювання можуть виникати, коли віртуальні машини (VM) мігрують у інший вузол кластера під час резервного копіювання.
Якщо віртуальна машина Hyper-V (VM) розташована на певному вузлі кластера, вона додається до групи віртуальних машин цього вузла (vmgroup) під час резервного копіювання. Якщо віртуальна машина Live мігрує на інший вузол кластера під час резервного копіювання, вона все одно існує як член vmgroup на вихідному вузлі. Перед завершенням резервного копіювання операційна система Windows намагається видалити vmgroups на всіх вузлах кластера.
Якщо віртуальна машина, яку раніше мігрували Live Migrat, більше не працює на оригінальному вихідному вузлі, операційна система Windows не може видалити vmgroup. Цей сирота vmgroup може призвести до невдачі наступних резервних копій Hyper-V.
Перед тим, як виконувати процедури ручного очищення, перегляньте наступну URL Microsoft нижче. У статті KB наведено рішення, які можуть вирішити проблеми з живою міграцією через вплив навколишнього середовища:
- 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 зі сторінки Dell Central Avamar
- Завантажте скрипт PowerShell у каталог, наприклад
"C:\temp"на одному з вузлів кластера. - Відкрийте запит PowerShell (запустіть як Адміністратор) і перейдіть у каталог, що містить скрипт PowerShell (PS).
- Перевірте, що Windows сервер дозволяє запускати скрипти PS, ввівши таку команду в PowerShell (запуск від імені Administrator):
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).
«спільного шляху зберігання».Авамар: Плагін 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 Explorer або змініть опції, щоб переглядати приховані файли та папки. - Редагувати файл конфігурації віртуальної машини
"*.vmcx"який поєднує InstanceID групи віртуальних машин із текстовим редактором, таким як Notepad або Notepad++. Натисніть «Перегляд» у рядку меню, а потім виберіть опцію «Обгорнути слова» для кращої читабельності. - Копіюйте глобальні унікальні ідентифікатори віртуальної машини (VM) у текстовий редактор; вони слідують за
'GUID H'Текст у*.vmcxСправу. - У текстовому редакторі натисніть «Редагувати», а потім «Замінити». Потім у
'Find what'Натисніть пробіл на клавіатурі, а потім натисніть 'Replace All.'Це очищення надає список проблемних GUID віртуальних машин, які потрібно Live Migated назад до попереднього вузла кластера. - Виконайте наступну команду PowerShell, щоб знайти віртуальну машину, пов'язану з цими GUID, разом із кластерними вузлами, що її розміщують:
Invoke-Command -ComputerName (Get-ClusterNode).Name -ScriptBlock { Get-VM | ? VMID -eq "VM GUID Previously Collected" }
Наприклад, використовуйте наведений нижче синтаксис команд, щоб знайти ім'я віртуальної машини (VM), призначене наступному GUID:
Invoke-Command -ComputerName (Get-ClusterNode).Name -ScriptBlock { Get-VM | ? VMID -eq "A6209559-F08F-440E-9AAE-21AEF4AF7E9D" }
Вихід команди має містити ім'я віртуальної машини та вузол кластера, на якому вона працює. Якщо вихід порожній, то GUID більше не існує і його можна безпечно ігнорувати.
6. Мігруйте віртуальну машину на хост, який має застарілу групу віртуальних машин, за допомогою інструменту Failover Cluster Manager.
Повторюйте кроки для кожної віртуальної машини, визначеної в vmgroup's "*.vmcx" Справу.
7. Виконайте наступну команду PowerShell, щоб видалити віртуальні машини з поля VMMembers у кожній із сиротих груп віртуальних машин:
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.
Альтернативно, використовуйте наступну команду для видалення сиротливих vmgroups на всіх вузлах кластера одночасно:
Invoke-Command -computername (get-clusternode).name -scriptblock { get-vmgroup | remove-vmgroup }
Коли всі вузли завершені, перевіряйте, що всі сиротять vmgroups були видалені:
Invoke-Command -computername (get-clusternode).name -scriptblock { get-vmgroup }
The "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 Live Migration між хостами може не вдатися через контрольні точки відновлення.
Резервне копіювання Avamar Hyper-V Incremental RCT не працює з помилкою «Не вдалося отримати розширення РКД для файлу диска» та/або «Створення точки відліку для віртуальної машини не вдалося»