Управление Hyper-V из командной строки (часть 3)
- Управление Hyper-V из командной строки (часть 5)
- Управление Hyper-V из командной строки (часть 6)
- Управление Hyper-V из командной строки (часть 7)
- Управление Hyper-V из командной строки (часть 8)
Введение
В предыдущей статье я показал вам, как запускать и останавливать виртуальные машины из командной строки. В этой статье я хочу развить это, показав вам два разных метода подтверждения того, что ваши виртуальные машины работают и что они реагируют.
Прежде чем я начну
Прежде чем я начну, я хочу быстро отметить для всех, кто только присоединяется к этой серии, что команды, которые я буду обсуждать, не являются родными для Hyper-V. Они являются частью библиотеки управления Hyper-V. Кроме того, эту библиотеку необходимо импортировать в PowerShell каждый раз, когда вы планируете использовать какие-либо команды, связанные с Hyper-V. Команда импорта:
Импорт модуля «C:Program FilesModulesHypervHyperv.psd1»
Полные инструкции по загрузке и установке библиотеки управления Hyper-V приведены в части 1 этой серии.
Команды устранения неполадок
Часто администраторы полагаются на команду PING для проверки подключения хоста. Предпосылка проста. Пропингуйте машину и посмотрите, отвечает ли она. Хотя команда PING работает относительно хорошо, существует команда PowerShell под названием Ping-VM, которая специально разработана для проверки связи с виртуальными машинами.
На первый взгляд команда Ping-VM кажется избыточной, а ее синтаксис немного сложнее, чем у обычной команды PING, но у нее есть свои преимущества. Прежде чем я объясню, в чем заключаются эти преимущества, позвольте мне показать вам основной синтаксис.
Команда Ping-VM требует от вас указать имя виртуальной машины, которую вы хотите проверить, и имя хост-сервера. Например, если бы я хотел пропинговать виртуальную машину с именем Lab-DC, которая работала на хосте с именем Hyper-V, тогда команда была бы такой:
Ping-VM «Lab-DC» — сервер Hyper-V
При выполнении этой команды команда Ping-VM использует службы интеграции виртуальной машины для обнаружения полного доменного имени, а затем выполняет обычную проверку связи ICMP.
Итак, почему вы когда-либо использовали Ping-VM, а не PING? Есть две причины. Во-первых, Ping-VM поддерживает виртуализацию. Во-вторых, Ping-VM можно запускать на нескольких виртуальных машинах с помощью подстановочных знаков. Чтобы проиллюстрировать эти концепции, взгляните на рисунок A. На моем хост-сервере есть несколько виртуальных машин, имена которых начинаются с префикса «Lab-». В таком случае я запустил команду против Lab-*. Обратите внимание, что при этом я опустил кавычки. Ping-VM вернул информацию о шести виртуальных машинах и даже смог определить, какие из них были остановлены.
Рисунок A: Ping-VM можно запустить для нескольких виртуальных машин.
Также можно использовать Ping-VM для проверки состояния каждой виртуальной машины, которая находится на хосте. Для этого просто замените имя виртуальной машины звездочками. Вы даже можете сделать еще один шаг и отобразить предупреждающее сообщение для любых виртуальных машин, которые работают, но которые не могут быть пропингованы. Команда для этого:
Get-VM –r | foreach-object {if ((Ping-VM $_).StatusCode –ne 0) {"$($_.elementname) недоступен"} }
Эта команда не производит никакого вывода, если ваши виртуальные машины могут быть успешно пропингованы.
Последний трюк, который я хочу показать вам, прежде чем двигаться дальше, заключается в том, что команду Ping-VM можно использовать для проверки связи с виртуальными машинами на нескольких хостах Hyper-V. Для этого просто укажите имена каждого хоста, который вы хотите пропинговать. Имена должны быть разделены запятыми. Например, если бы я хотел пропинговать все виртуальные машины в Hyper-V1, Hyper-V2 и Hyper-V3, я бы использовал следующую команду:
Ping-VM * -Сервер Hyper-V1,Hyper-V2,Hyper-V3
Тестирование пульсаций виртуальной машины
Так же, как вы можете использовать команду Ping-VM, чтобы определить, отвечает ли виртуальная машина, вы также можете использовать команду Test-VmHeartBeat. Как и Ping-VM, команда Test-VmHeartBeat зависит от служб интеграции, запущенных на тестируемой виртуальной машине.
Синтаксис команды относительно прост. Необходимо указать имя виртуальной машины и время ожидания. Период ожидания выражается в секундах. Команда Test-VmHeartBeat будет искать пульс каждые пять секунд, пока не истечет время ожидания. Например, если вы хотите проверить сердцебиение в течение пяти минут, вы должны установить период тайм-аута равным 300. Чтобы показать вам, что я имею в виду, взгляните на рисунок B. На этом рисунке я ищу сердцебиение на виртуальная машина с именем Lab-DC.
Рисунок B. Команду Test-VmHeartBeat можно использовать для проверки работоспособности и отклика виртуальной машины.
Как и в случае с командой Ping-VM, вы можете использовать подстановочные знаки вместо имен виртуальных машин и указать несколько хост-серверов.
Поскольку Ping-VM и Test-VmHeartBeat можно использовать для проверки скорости отклика виртуальной машины, вам может быть интересно, какой из них следует использовать.
Если вам нужен быстрый отчет о состоянии всех ваших виртуальных машин (включая те, которые не запущены), вам лучше использовать Ping-VM. Причина в том, что Test-VmHeartBeat остановится и будет ждать истечения времени ожидания для каждой виртуальной машины, которая в данный момент остановлена. Например, предположим, что на вашем хост-сервере десять виртуальных машин, но в данный момент работают только пять из них. Теперь представьте, что вы выполнили следующую команду:
Тест-VmHeartBeat * - Тайм-аут 300
Выполнение команды заняло бы целых двадцать пять минут, потому что команда Test-VM ждала целых пять минут при тестировании каждой из остановленных виртуальных машин. Вы можете увидеть пример этого на рис. C. Напротив, команда Ping-VM предоставит ту же базовую информацию о состоянии, но завершится почти мгновенно.
Рисунок C. Выполнение команды Test-VMHeartBeat может занять много времени, если некоторые виртуальные машины не запущены.
Тем не менее, у команды Test-VmHeartBeat есть свое место. Эта команда особенно полезна, когда виртуальные машины необходимо запускать последовательно. Например, на моем тестовом сервере мой контроллер домена (Lab-DC) должен быть запущен до моего сервера Exchange (Lab-E2K10). На самом деле можно использовать команду Test-VmHeartBeat, чтобы убедиться, что контроллер домена работает до запуска сервера Exchange. Чтобы последовательно запустить эти два сервера, я мог бы использовать такую команду:
Старт-вм «Лаборатория-ДЦ» ; Test-VmHeartBeat «Lab-DC» — тайм-аут 300; Старт-ВМ «Лаборатория-Э2К10»
Если вы посмотрите на рисунок D, вы увидите, что PowerShell запускает контроллер домена, а затем останавливается и ждет подтверждения пульса (или истечения периода ожидания). Как только контроллер домена запущен и работает, сервер Exchange запускается, как показано на рисунке E. Можно даже добавить команду Test-VmHeartBeat в конец этой командной строки, чтобы убедиться, что сервер Exchange функциональный.
Рисунок D: PowerShell запускает контроллер домена и ждет такта.
Рисунок E: После обнаружения пульса PowerShell запускает Exchange Server.
Вывод
Теперь, когда я показал вам, как определить состояние виртуальной машины из командной строки, я хочу продолжить серию, показав вам некоторые приемы для настройки распределения памяти виртуальной машины.
- Управление Hyper-V из командной строки (часть 4)
- Управление Hyper-V из командной строки (часть 5)
- Управление Hyper-V из командной строки (часть 6)
- Управление Hyper-V из командной строки (часть 7)
- Управление Hyper-V из командной строки (часть 8)