В этой статье хочу рассказать, как можно убрать из консоли VMM сведения о некорректно удаленных серверах. Например, в моем случае с одного из бывших серверов виртуализации сняли роль Hyper-V, поставили чистую ОС и отдали под другие задачи, а из консоли VMM отключить забыли. В результате чего при попытке удаления штатными средствами получилось вот так:
Собственно, теперь с этим сервером сделать ничего нельзя ни из GUI, ни из PowerShell. Результат будет примерно такой:
Так как все данные о серверах кластерах и прочих виртуальных машинах VMM хранит в базе MS SQL, то ее мы и будем очищать от записей об этом узле. Предварительно стоит сделать бэкап базы VMM.
Для этого нам понадобится Sql Management Studio. Запустив который подключимся к базе VMM и найдем идентификатор нужного нам хоста, выполнив запрос:
Если сразу попробуем удалить запись о хосте:
То получим только сообщение о ошибке из-за зависимостей. Для успешного удаления этой записи нам необходимо сперва удалить все, что связано с определенным нами HostID в следующих таблицах:
dbo.tbl_ADHC_HostBusAdapter — при удалении записи из этой таблицы у меня появилась ошибка ссылающаяся на dbo.tbl_ADHC_HostInternetSCSIHba.
В таблице dbo.tbl_ADHC_HostInternetSCSIHba нету HostID и поэтому придется вывести все записи из нее чтобы определить id нужного нам ISCSIHbaID
И после этого удаляем запись:
Теперь удаление записи из таблицы dbo.tbl_ADHC_HostBusAdapter пройдет успешно.
В завершении выполняем удаление записи из таблицы хостов:
Теперь, перезапустив консоль VMM, мы увидим, что «зависшего» сервера там уже нет.
Собственно, теперь с этим сервером сделать ничего нельзя ни из GUI, ни из PowerShell. Результат будет примерно такой:
Так как все данные о серверах кластерах и прочих виртуальных машинах VMM хранит в базе MS SQL, то ее мы и будем очищать от записей об этом узле. Предварительно стоит сделать бэкап базы VMM.
Для этого нам понадобится Sql Management Studio. Запустив который подключимся к базе VMM и найдем идентификатор нужного нам хоста, выполнив запрос:
use VirtualManagerDB
select HostID, computerName from dbo.tbl_ADHC_Host
Если сразу попробуем удалить запись о хосте:
use VirtualManagerDB
delete from dbo.tbl_ADHC_Host where HostID like 'hostid'
То получим только сообщение о ошибке из-за зависимостей. Для успешного удаления этой записи нам необходимо сперва удалить все, что связано с определенным нами HostID в следующих таблицах:
dbo.tbl_NetMan_InstalledVirtualSwitchExtension
dbo.tbl_ADHC_HostBusAdapter
dbo.tbl_ADHC_VirtualNetwork
dbo.tbl_ADHC_HostVolume
dbo.tbl_ADHC_HostDisk
dbo.tbl_ADHC_HostBusAdapter — при удалении записи из этой таблицы у меня появилась ошибка ссылающаяся на dbo.tbl_ADHC_HostInternetSCSIHba.
В таблице dbo.tbl_ADHC_HostInternetSCSIHba нету HostID и поэтому придется вывести все записи из нее чтобы определить id нужного нам ISCSIHbaID
use VirtualManagerDB
select * from dbo.tbl_ADHC_HostInternetSCSIHba
И после этого удаляем запись:
use VirtualManagerDB
delete from dbo.tbl_ADHC_HostInternetSCSIHba like 'ISCIHbaID'
Теперь удаление записи из таблицы dbo.tbl_ADHC_HostBusAdapter пройдет успешно.
В завершении выполняем удаление записи из таблицы хостов:
use VirtualManagerDB
delete from dbo.tbl_ADHC_Host where HostID like 'hostid'
Теперь, перезапустив консоль VMM, мы увидим, что «зависшего» сервера там уже нет.
Комментарии (6)
Shaz Автор
15.07.2015 19:50Ну в моем случае ресурсы без проблем были отданы под другие цели. Вот только VMM никто об это не уведомил, и как результат:
Удаление гланд через зад ;)
Eklykti
Энтерпрайзненько.
Shaz Автор
В каком смысле?
Krypt
Удаление гланд через зад ;)
Shaz Автор
Ну просто не оставили выбора. И это еще на самый страшный случай.
Krypt
За корпоративными продуктами замечена такая деталь: они почему-то считают, что владеют ками-нибудь ресурсами безраздельно и эксклюзивно, хотя на самом деле это не так. В результате и приходится шаманить.