Заметки о Windows и других программных продуктах Microsoft...

Hyper-V в Windows 8.1 (часть 4)

Hyper-V в Windows 8.1 (часть 4)

Итак, представляю вашему вниманию четвертую, завершающую часть статьи о Hyper-V в Windows 8.1. Сегодня мы рассмотрим основные действия, которые можно производить с виртуальными машинами — включение, остановка, сохранение, перенос и прочие издевательства. При написании статьи ни одна виртуальная машина не пострадала 🙂

Управление ВМ

Первое, что нам надо сделать — это включить виртуальную машину, для чего выделяем ее и затем в поле «Действия» жмем «Пуск».

Старт виртуальной машины

 

Текущее состояние виртуальных машин отображается в основном окне диспетчера, в столбце «Состояние». Для управления состоянием ВМ воспользуемся соответствующими пунктами в поле «Действия». С их помощью мы можем производить следующие действия с ВМ:

• Выключить (Turn off) — означает выключение виртуальной машины, аналогичное выключению питания у компьютера;
• Завершение работы (Shut down) — штатное завершение работы операционной системы и выключение виртуальной машины. Для завершения работы необходимы сервисы интеграции, установленные в гостевой ОС;
• Сохранить (Save) — полностью сохраняет состояние виртуальной машины. Содержимое памяти ВМ выгружается на жесткий диск, после чего машина переходит в сохраненное состояние. При выходе из сохраненного состояния машина начинает работать ровно с того места, на котором была остановлена. По сути сохранение является аналогом гибернации в физическом компьютере;
• Приостановить (Pause) — все операции виртуальной машины приостанавливаются. В отличии от сохранения, содержимое памяти ВМ не выгружается на диск, а остается в оперативной памяти, что позволяет моментально возобновить работу в случае необходимости;
• Сбросить (Reset) — сбрасывает текущее состояние и возвращает ВМ на этап загрузки. Этот пункт предназначен на случай аварии и может потребоваться в том случае, если машина была некорректно выключена\сохранена и не может выйти из этого состояния.

Примечание. Здесь стоит упомянуть, что одним из немногих отличий клиентского Hyper-V от серверного является возможность использовать режим сна\гибернации внутри виртуальной машины.

Управление виртуальной машиной

 

Не забываем о PowerShell. Посмотреть состояние виртуальных машин можно командлетом Get-VM. Запущенный без параметров, он выведет состояние и основные параметры всех ВМ на хосте. Вывести состояние конкретной ВМ в более менее удобочитаемом виде можно такой командой:

Get-VM -Name WKS81 | fl

А для вывода всех имеющихся характеристик ВМ можно сделать так:

Get-VM -Name WKS7 | fl *

Выключение виртуальной машины осуществляется командлетом Stop-VM с различными ключами. Например, для завершения работы операционной системы ВМ WKS81 воспользуемся командой:

Stop-VM -Name WKS81

С помощью ключа Force мы принудительно завершим работу ВМ, не смотря на незавершенные процессы:

Stop-VM -Name WKS81 -Force

Для выключения питания используем ключ TurnOff, и ключ Save для сохранение состояния ВМ:

Stop-VM -Name WKS81 -TurnOff
Stop-VM -Name WKS81 -Save

Ну а для включения или восстановления состояния используется командлет Start-VM:

Start-VM -Name WKS81

Контрольные точки

Контрольные точки (Checkpoint) позволяют сделать моментальный снимок виртуальной машины, сохранив ее состояние на определенный момент времени. Работа чекпойнтов основана на разностных виртуальных дисках, принцип такой: при создании чекпойнта создается новый разностный диск и все последующие изменения пишутся уже в него, а родительский диск остается неизменным. При создании следующего чекпойнта создается еще один разностный диск, а текущий диск становится по отношению к нему родительским. Таким образом можно создавать неограниченное количество контрольных точек, а получившаяся конструкция называется деревом чекпойнтов.

Для создания чекпойнта достаточно выбрать виртуальную машину и в поле «Действия» нажать пункт «Контрольная точка». Все имеющиеся у машины контрольные точки отображаются в одноименном поле в виде дерева.

Создание контрольной точки

 

Выбрав чекпойнт, мы можем произвести с ним следующие операции:

• Применить — возврат состояния ВМ на заданную точку, при этом все изменения, произведенные с момента ее создания, будут потеряны;
• Удалить контрольную точку — удаление чекпойнта. При этом происходит объединение разностного диска с родительским, после чего разностный диск удаляется и откатить изменения становится невозможно;
• Удалить поддерево контрольных точек — в этом случае удаляются все чекпойнты, для которых выбранный чекпойнт является родительским;
• Экспорт — возможность экспортировать виртуальную машину по состоянию на время создания чекпойнта. Это новая фича, появившаяся только в Windows Server 2012 R2\Windows 8.1.

Управление контрольными точками

 

Важно. Каждый чекпойнт представляет из себя отдельный виртуальный диск в формате AVHDX, тип и размер которого зависят от родительского диска. К примеру, имея родительский диск фиксированного объема 127Гб, при создании чекпойнта мы получим еще один диск того же размера. Кроме того, при удалении чекпойнта потребуется дополнительное место для маневра, т.к. изменения сначала применяются к родительскому диску, увеличивая его размер, а лишь потом происходит удаление разностного диска. Поэтому при использовании чекпойнтов надо обеспечить для них соответствующее дисковое пространство.

Также для управления чекпойнтами можно воспользоваться командами PowerShell. Для примера создадим для ВМ WKS81 чекпойнт с именем Test:

Checkpoint-VM -VMName WKS81 -Name Test

Просмотрим все имеющиеся у машины чекпойнты:

Get-VMSnapshot -VMName WKS81

Применим созданный чекпойнт

Restore-VMSnapshot -VMName WKS81 -Name Test

И удалим его:

Remove-VMSnapshot -VMName WKS81 -Name Test

Перемещение ВМ

По сравнению с серверным Hyper-V из клиентского убрана технология живой миграции (Live Migration), однако оставлена возможность переноса хранилища виртуальной машины. Это позволяет переносить с места на место файлы работающей виртуальной машины. Для осуществления переноса надо выделить нужную ВМ и в поле «Действия» выбрать пункт «Переместить».

Перемещение ВМ

 

Запускается мастер перемещения.

Мастер перемещения ВМ

 

Выбираем тип перемещения

Перемещение хранилища ВМ

 

И указываем параметры перемещения хранилища. Мы можем переместить всю машину целиком, по частям, либо перенести только виртуальные диски.

Выбор варианта перемещения ВМ

 

В том случае, если выбрано перемещение по частям, надо будет указать какие именно части надо переместить, и для каждой части указать расположение. Можно отдельно переместить виртуальные диски, файлы конфигурации, контрольные точки и файл смарт-пейджинга.

Выбор перемещаемых элементов

 

Для перемещения машины целиком достаточно указать одно расположение, куда и переедет вся виртуальная машина.

Выбор нового расположения ВМ

 

После выбора места остается проверить правильность выбора, нажать «Готово» и продолжать работу. Напомню, что при переносе хранилища машина может быть включена и продолжать работу в штатном режиме.

Запуск перемещения ВМ

 

Также переместить хранилище ВМ можно из консоли PowerShell, например для переноса всех файлов машины WKS81 в одно расположение выполним команду:

Move-VMStorage -VMName WKS81 -DestinationStoragePath ″C:\VM″

Экспорт и импорт ВМ

Экспорт позволяет сделать копию виртуальной машины, которую можно перенести на другой Hyper-V хост, или использовать в качестве шаблона при развертывании ВМ. Для того, чтобы экспортировать машину, нужно выбрать ее, в поле «Действия» нажать «Экспорт» и указать папку, в которую вы хотите сохранить файлы виртуальной машины.

Примечание. По сути операция экспорта — это простое копирование, поэтому для экспорта достаточно просто скопировать все файлы ВМ в одну папку.

Экспорт виртуальной машины

 

Операция импорта немного сложнее. Для импорта ВМ в поле «Действия» выбираем пункт «Импорт виртуальной машины».

Импорт виртуальной машины

 

Запускается мастер импорта виртуальной машины.

Мастер импорта ВМ

 

Указываем папку, в которой находятся файлы виртуальной машины.

Выбор папки с ВМ

 

Затем выбираем машину, которую будем импортировать.

Выбор виртуальной машины для импорта

 

Выбираем тип импорта:

• Регистрировать ВМ по месту — машина просто подключается к Hyper-V, оставаясь в том же месте и с тем же идентификатором;
• Восстановить ВМ — машина копируется в другое место с тем же идентификатором;
• Копировать ВМ — машина копируется в другое место с новым идентификатором.

Здесь надо уточнить, что каждая виртуальная машина при создании получает уникальный идентификатор, который сохраняется при экспорте. Поскольку подключить две машины с одинаковым идентификатором на одном хосте Hyper-V невозможно, то для импорта на том же хосте можно использовать только копирование.

Выбор варианта импорта ВМ

 

При копировании и восстановлении ВМ все файлы будут скопированы в расположение по умолчанию. На следующей странице можно указать сохранение в другом месте и выбрать это место, причем для каждого компонента отдельно.

Выбор места размещения файлов импортируемой машины

 

Отдельным пунктом указываем расположение виртуальных дисков.

Выбор места размещения виртуальных дисков импортируемой машины

 

Дальше проверяем выбранные параметры импорта и жмем «Готово».

Запуск импорта ВМ

 

И то же самое с помощью PowerShell. Экспорт виртуальной машины:

Export-VM -Name WKS81 -Path C:\VM

И импорт (копирование и генерация нового ID). Для импорта указываем XML-файл конфигурации виртуальной машины, находящийся в папке Virtual Machines:

Import-VM -Path ″C:\VM\Virtual Machines\4596AEB4-AB71-43E2-9B1D-4579B7CFC4D1.xml″ -Copy -GenerateNewID

Подключение к ВМ

Подключение к виртуальной машине обеспечивает утилита VMConnect, которая устанавливается вместе с другими средствами управления при развертывании компонента Hyper-V. Назначение VMConnect — предоставление доступа к виртуальной машине с хоста Hyper-V, что по сути является аналогом локального входа в систему для физического компьютера.

Для подключения с помощью VMConnect достаточно дважды кликнуть на выбранной машине в окне диспетчера Hyper-V. Как вариант, в папке C:\Windows\system32 лежит файл VMConnect.exe, вы можете запустить его (обязательно с правами администратора) и выбрать нужную ВМ.

Подключение к виртуальной машине

 

Вот так выглядит стандартное окно подключения к ВМ. Сверху расположена панель инструментов, с помощью которой можно управлять машиной — включать, выключать, сохранять, делать снимки и т.п.  Еще мы можем воспользоваться буфером обмена для копирования текста из основной в гостевую систему или подключить к машине ISO-образ диска. Также обратите внимание на выделенный значок — он отвечает за переключение в расширенный режим подключения, о котором пойдет речь дальше.

Окно подключения к виртуальной машине

 

А теперь о грустном 🙂

Принцип работы VMConnect заключается в том, что она выдает на экран растровое изображение рабочего стола виртуальной машины, генерируемое видеокартой этой машины. Изображение обновляется в режиме реального времени, что позволяет видеть все изменения в гостевой системе. Также VMConnect обеспечивает эмуляцию клавиатуры и мыши в виртуальной машине, давая нам возможность управлять гостевой системой.

Использование растрового изображения накладывает некоторые ограничения на взаимодействие между основной и гостевой системами. К примеру, мы можем скопировать текст в буфер обмена в основной системе и извлечь его в гостевой, но не можем подобным образом скопировать\вставить файл или изображение. Кроме того, при использовании VMConnect нет возможности пробрасывать в виртуальную машину локальные жесткие диски и съемные USB-устройства, что крайне неудобно.

Частично положение спасает режим расширенного сеанса, появившийся в Windows Server 2012 R2\Windows 8.1. Однако для подключения в расширенном режиме необходима поддержка этого режима гостевой операционной системой, которая на данный момент есть только в Windows Server 2012 R2 и Windows 8.1  Pro\Enterprise. Описание расширенного режима можно найти здесь.

Для всех остальных остается только подключение к удаленному рабочему столу виртуальной машины c помощью RDP-клиента. В этом случае мы получим нормальный буфер обмена, проброс локальных ресурсов внутрь гостевой системы и прочие прелести. Однако для этого необходимо обеспечить виртуальной машине подключение к внешней сети, что не всегда возможно.

Сервисы интеграции

Сервисы интеграции (Integration Services) играют очень важную роль в работе виртуальных машин, поэтому о них стоит упомянуть отдельно. Сервисы интеграции выполняют две основные задачи: во первых они являются драйверами для виртуальных устройств, а во вторых обеспечивают работу гостевых служб внутри ВМ. Запущенные в гостевой операционной системе, эти службы обеспечивают связь между основной и гостевой системами и дают возможность управления виртуальной машиной извне. Так например, завершение работы виртуальной машины из консоли Hyper-V Manager возможно только в том случае, если в гостевой системе запущена соответствующая служба.

Для того чтобы увидеть работу этих служб, запустим оснастку «Службы» внутри ВМ и посмотрим их описание.

Сервисы интеграции в гостевой системе

 

Наличие и поддержка служб интеграции зависит от гостевой операционной системы. Так в операционных системах Microsoft, по моему начиная с Windows Vista\Server 2008 интеграционные сервисы входят в состав ОС и не требуют установки. Для более ранних ОС Windows сервисы интеграции необходимо установить вручную, для чего надо в меню «Действие» выбрать пункт «Вставьте установочный диск служб интеграции»

Вставка диска с сервисами интеграции

 

И запустить установку.

Установка сервисов интеграции

 

Отдельно стоит упомянуть об операционных системах Linux. Официально установка на Hyper-V поддерживается для RHEL, CentOS и SLES. Для них необходимо отдельно загрузить образ диска с сервисами интеграции, подключить его к виртуальной машине и установить. На данный момент наиболее свежая версия служб интеграции 3.5 для Linux находится здесь. Также для наиболее свежих версий дистрибутивов, например CentOS\RHEL начиная с версии 6.4, сервисы интеграции уже входят в состав ядра и не требуют отдельной установки.

Заключение

Как я уже говорил, Hyper-V по сути является серверным гипервизором. Основное преимущество клиентского Hyper-V в том, что он работает с аппаратными ресурсами компьютера напрямую, а не через основную систему. Это позволяет достичь гораздо большей производительности и гибкости в управлении, а также дает возможность распределять аппаратные мощности между виртуальными машинами динамически, в зависимости от их загрузки. Также большим плюсом является возможность управления Hyper-V с помощью PowerShell. Ну и конечно же не забываем, что Hyper-V является частью операционной системы не требует загрузки дополнительного ПО.

Однако серверные корни являются причиной и всех недостатков клиентского Hyper-V. Одним из основных минусов является отсутствие встроенного NAT. Для предоставления доступа в Интернет необходимо каждой виртуальной машине выделить внешний IP-адрес и подключить к внешней сети, либо выделять отдельную ВМ под шлюз и поднимать NAT на ней. Для клиентского гипервизора это крайне удобно, поэтому во всех конкурирующих решениях предусмотрена возможность встроенного NAT. Ну и второй минус — это крайне ограниченные возможности при локальном подключении к ВМ в обычном (не расширенном) режиме. Возможно в будущем поддержка расширенного режима подключения появится у большинства ОC, ну а пока для того, чтобы просто передать в ВМ файлы необходимо выставить ее во внешнюю сеть  и использовать подключение по RDP. Сравним с тем же VrtualBox, где для обмена данными с ВМ (независимо от гостевой ОС) мы можем подключать к машине любую папку, диск или съемное USB-устройство на компьютере, а также пользоваться двусторонним буфером обмена.

Использовать ли Hyper-V в Windows 8 для виртуализации, или выбрать один из конкурирующих продуктов, решать конечно же вам. За себя же могу сказать, что для меня Hyper-V стал решающим фактором для перехода на восьмерку, и переходом я весьма доволен. На этом закончу долгое и, надеюсь, не очень скучное повествование о Hyper-V в Windows 8.1.

 
 
Комментарии

Спасибо большое. Все подробно и понятно написано