Как исправить отображение диспетчера виртуальных машин System Center при отсутствии объектов
System Center Virtual Machine Manager (VMM) — это рекомендуемый Microsoft инструмент для управления многосерверными развертываниями Hyper-V. Тем не менее, у VMM есть свои проблемы. Самая распространенная проблема — это когда информация, отображаемая в консоли, не соответствует тому, что существует в реальной жизни. Например, вы можете обнаружить, что консоль управления VMM содержит потерянные объекты виртуальных машин, которых больше не существует .
В этой статье я объясню, почему возникает эта проблема. Я также покажу вам, что вы можете сделать, чтобы решить эту проблему.
Почему VMM отображает потерянные объекты?
Когда VMM отображает потерянные объекты, обычно это происходит потому, что администраторы использовали несколько инструментов для управления виртуальными машинами Hyper-V. Взгляните на рисунок ниже, чтобы понять, почему это происходит. Ранее я развернул виртуальную машину с именем VM4. Здесь я удаляю эту виртуальную машину с помощью диспетчера Hyper-V.
После завершения процесса удаления диспетчер Hyper-V показывает, что VM4 больше не существует.
В идеале это был бы конец. Теперь взгляните на консоль управления VMM на следующем рисунке. Он по-прежнему включает VM4 в список виртуальных машин. Тем не менее, в столбце «Состояние» указано, что виртуальная машина отсутствует . Между прочим, некоторым старым версиям Virtual Machine Manager может потребоваться много времени, чтобы подтвердить отсутствие виртуальной машины . В этом случае VMM не подтверждает удаление моей VM4.
Это происходит потому, что VMM хранит инвентаризацию виртуальных машин в своей базе данных SQL Server. Я не использовал консоль управления VMM для удаления виртуальной машины. Вместо этого я использовал диспетчер Hyper-V . Вот почему объект виртуальной машины все еще существует в базе данных, хотя я удалил саму виртуальную машину.
Удаление потерянных объектов
В большинстве случаев проблема легко решается. Просто синхронизируйте дисплей консоли управления VMM и дисплей диспетчера Hyper-V. Вот как это сделать за 2 простых шага :
- Щелкните правой кнопкой мыши узел Hyper-V.
- Выберите параметр «Обновить виртуальные машины» в контекстном меню.
Принудительное удаление из базы данных
Опция «Обновить виртуальные машины» часто решает проблему . Тем не менее, я иногда видел ситуации, когда это не так. В этом случае я рекомендую использовать команду PowerShell, чтобы принудительно удалить виртуальную машину из базы данных Virtual Machine Manager.
Прежде чем я покажу вам, как использовать PowerShell для удаления объекта из базы данных VMM, вам нужно знать пару вещей. Во-первых, я предполагаю, что вы уже удалили саму виртуальную машину. Помните, что этот метод удаляет только объект из базы данных. На самом деле он не удаляет саму виртуальную машину.
Вы также должны знать, что PowerShell изначально не включает модуль, необходимый для этой операции. Вот почему вам нужно использовать командную оболочку диспетчера виртуальных машин , а не необработанный сеанс PowerShell.
Теперь, когда вы готовы к исправлению, откройте командную оболочку диспетчера виртуальных машин. Когда вы это сделаете, введите следующую команду:
Get-ScVirtualMachine <имя виртуальной машины> | Remove-ScVirtualMachine-Force
В моем случае я успешно удалил виртуальную машину с именем VM4, но объект VM4 все еще существует в базе данных VMM . Таким образом, команда, которую мне нужно использовать:
Get-ScVirtualMachine VM4 | Remove-ScVirtualMachine-Force
Когда вы выполните эту команду, PowerShell отобразит множество атрибутов, связанных с виртуальной машиной, которую вы пытаетесь удалить. Это затрудняет определение успешности операции.
Но не волнуйтесь. Самый простой способ проверить статус операции — выполнить эту команду:
Get-SCVirtualMachine | Имя объекта выбора
Это может занять несколько минут, но в конечном итоге консоль управления диспетчера виртуальных машин должна обновиться. Это покажет, что виртуальная машина была удалена. Если это не так, вы всегда можете вручную инициировать обновление консоли.
Удаление сломанных объектов
Как правило, рекомендуется избегать использования диспетчера Hyper-V , если ваша организация использует диспетчер виртуальных машин. Тем не менее, я иногда видел, как диспетчер Hyper-V преуспевает там, где VMM терпит неудачу.
Недавно, например, у меня возникли проблемы с использованием консоли управления VMM для удаления поврежденной виртуальной машины Hyper-V . Мне удалось удалить виртуальную машину через диспетчер Hyper-V. Затем я просто обновил список виртуальных машин VMM, чтобы сообщить VMM, что я удалил поврежденную виртуальную машину.
Последние мысли
В большинстве случаев методы, описанные в этой статье, позволяют успешно удалить потерянную виртуальную машину Hyper-V из базы данных VMM. Я никогда не сталкивался с ситуацией, в которой эти методы не работали. Даже в этом случае вы все равно можете столкнуться с ситуацией, когда PowerShell просто не может удалить потерянный объект из базы данных VMM.
Если это произойдет, у вас есть еще один доступный вариант. Microsoft предоставляет сценарий , который можно запустить из среды SQL Server Management Studio. Он удаляет потерянные объекты из базы данных VMM.
Часто задаваемые вопросы
Будут ли виртуальные машины считаться пропавшими без вести, если сервер Hyper-V отключится без живой миграции виртуальных машин на другой сервер?
Нет. В этом случае VMM в конечном итоге отобразит ошибку «Хост не отвечает». В этой ситуации у системы нет никакой информации о подключении. Это означает, что он не может различать различные проблемы с событиями подключения.
Что отобразит VMM, если произойдет сбой NAS, содержащего файлы виртуальной машины Hyper-V, но сам сервер Hyper-V останется в сети?
Иногда сервер Hyper-V может оставаться в сети даже после сбоя NAS, содержащего машинные файлы . В этом случае сообщение диспетчера виртуальных машин будет зависеть от фактической конфигурации инфраструктуры. Однако обычно VMM отображает виртуальные машины как остановленные, а не как отсутствующие.
Может ли обновление консоли VMM решить проблему потерянных объектов?
Да, в большинстве случаев вы можете обновить виртуальные машины в консоли VMM, чтобы устранить проблему. Если это не так, вам придется принудительно удалить виртуальную машину из базы данных. Это нередкая проблема со многими частями программного обеспечения. Это потому, что вы можете использовать только базовые запросы к базе данных и проверки каталогов.
При каких обстоятельствах следует использовать PowerShell для принудительного удаления виртуальной машины?
Вы должны использовать PowerShell, если обновление консоли не работает. Его также следует использовать, если вы в основном управляете VMM из PowerShell , а не из консоли с графическим интерфейсом. Это потому, что кодирование графического интерфейса могло упасть по многим причинам. Однако Powershell позволяет реализовать удаление с помощью прямых команд. Если вам приходится делать это часто, вы можете создать сценарий.
Почему операция обновления занимает так много времени?
Обновления — это задания, поставленные в очередь, как и любые другие задачи в операционной системе. Если перед заданием обновления в очереди есть другие задания, вы увидите задержку перед запуском задания обновления.