Windows PowerShell: Создание виртуальных машин Hyper-V

OSzone.net » Microsoft » PowerShell » Windows PowerShell: Создание виртуальных машин Hyper-V
Автор: Нейл Такер
Иcточник: TechNetMagazine
Опубликована: 25.04.2013

Одно из лучших нововведений Windows 8 и Windows Server 2012 — Hyper-V версии 3.0. То, что теперь не приходится ограничиваться Virtual PC (который не поддерживает 64-битные ОС), открывает много новых возможностей, особенно для тех, кто работает на клиентах с Windows 8. Если вам требуется регулярно работать с виртуальными машинами (virtual machine, VM) Hyper-V и запускать их на одном и том же настольном компьютере, на котором вы делаете что-то еще, это веская причина перейти на Windows 8. Еще одним преимуществом будет возможность использовать на клиентском настольном компьютере 64-битные образы.

Теперь для настройки VM и управления ими можно воспользоваться специальным встроенным модулем Windows PowerShell 3.0. Это нововведение Hyper-V 3.0. Чтобы так работать c Hyper-V 2.0 в Windows Server 2008, приходилось скачивать модуль Windows PowerShell из CodePlex. Вы можете найти детальное описание того, как это делалось, в одной из моих прошлых статей в TechNet Magazine — «Create Hyper-V Virtual Machines with Windows PowerShell», а сегодня я покажу, как создавать VM в Windows 8 или Windows Server 2012 с помощью Hyper‑V-модуля для Windows PowerShell 3.0.

При разработке курса Microsoft Learning по этой теме я написал сценарий Windows PowerShell, предназначенный для того, чтобы научить вас создавать VM. Я воспользуюсь упрощенной версией этого сценария, чтобы показать, как можно быстро создавать собственные сценарии такого рода. Кроме того, я расскажу, как обеспечить более высокую производительность VM, используя кое-какие конфигурационные параметры. Прежде всего, требуется установить роль Hyper-V на систему.

Настройка Hyper-V

Чтобы установить роль Hyper-V на Windows 8 или Windows Server 2012, выполните следующие операции. Система должна использовать 64-битный процессор, поддерживать аппаратную виртуализацию (hardware-assisted virtualization) и аппаратную защиту от выполнения данных (Data Execution Prevention, DEP). Эти операции потребуется выполнить в консоли Windows PowerShell, открытой с полными административными правами.

  1. Выполните команду Enable-WindowsOptionalFeature –Online –FeatureName Microsoft-Hyper-V (или Dism /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V /All).
  2. Удостоверьтесь, что не было ошибок.
  3. Выйдите из операционной системы и перезагрузите компьютер.
  4. Снова войдите в систему под учетной записью администратора.

При установке этой роли устанавливается Hyper-V-модуль Windows PowerShell. Чтобы можно было использовать командлеты модуля, добавьте его в консоль Windows PowerShell (Import-Module Hyper-V). Затем потребуется проверить, что командлеты доступны (Get-Command –Module Hyper-V). Кроме того, перед использованием командлетов убедитесь, что запущен сервис «Hyper-V Virtual Machine Management» (Get-Service VMMS). Все Hyper-V-командлеты Windows PowerShell следует выполнять с административными привилегиями.

Настройка ваших VM

Сценарий, показанный на рис. 1, создает и настраивает две VM. Благодаря использованию переменных процесс становится проще адаптировать и стандартизовать. Чтобы ОС устанавливалась автоматически, создайте файл autounattend.xml на диске, который будет использоваться ISO-образом ОС. Если вам не подходит такой метод установки, удалите вызовы командлетов Set-VMDvdDrive и Set-FloppyDiskDrive. Тогда можно просто создать каждую VM командлетом New-VM. Кроме того, сценарий создаст DVD и гибкий диск, даже если их не задавать.

Рис. 1. Сценарий, который создаст и настроит две VM

# This script configures the Hyper-V machines used for the 50331 Course.
# PowerShell 3.0 and Windows Server 2012 or Windows 8 Pro are required to perform this setup.
# The C:\ Drive should have at least 200GB of free space available.
# All the files on the 50331 Student CD should be copied to C:\Labfiles before performing this setup.

# Variables
$CLI1 = "50331-CUSTOM-CLI"		# Name of VM running Client Operating System
$SRV1 = "50331-CUSTOM-SRV"		# Name of VM running Server Operating System
$CRAM = 2GB				                # RAM assigned to Client Operating System
$SRAM = 1GB				                # RAM assigned to Server Operating System
$CLI1VHD = 80GB				                # Size of Hard-Drive for Client Operating System
$SRV1VHD = 40GB				                # Size of Hard-Drive for Server Operating System
$VMLOC = "C:\HyperV"			        # Location of the VM and VHDX files
$NetworkSwitch1 = "PrivateSwitch1"	# Name of the Network Switch
$W7ISO = "C:\Labfiles\Windows7.iso"	# Windows 7 ISO
$W7VFD = "C:\Labfiles\Windows7.vfd"	# Windows 7 Virtual Floppy Disk with autounattend.xml file
$WSISO = "C:\Labfiles\W2K8R2.iso"	        # Windows Server 2008 ISO
$WSVFD = "C:\Labfiles\W2K8R2.vfd"	# Windows Server 2008 Virtual Floppy Disk with autounattend.xml file

# Create VM Folder and Network Switch
MD $VMLOC -ErrorAction SilentlyContinue
$TestSwitch = Get-VMSwitch -Name $NetworkSwitch1 -ErrorAction SilentlyContinue; if ($TestSwitch.Count -EQ 0){New-VMSwitch -Name $NetworkSwitch1 -SwitchType Private}

# Create Virtual Machines
New-VM -Name $CLI1 -Path $VMLOC -MemoryStartupBytes $CRAM -NewVHDPath $VMLOC\$CLI1.vhdx -NewVHDSizeBytes $CLI1VHD -SwitchName $NetworkSwitch1
New-VM -Name $SRV1 -Path $VMLOC -MemoryStartupBytes $SRAM -NewVHDPath $VMLOC\$SRV1.vhdx -NewVHDSizeBytes $SRV1VHD -SwitchName $NetworkSwitch1

# Configure Virtual Machines
Set-VMDvdDrive -VMName $CLI1 -Path $W7ISO
Set-VMDvdDrive -VMName $SRV1 -Path $WSISO
Set-VMFloppyDiskDrive -VMName $CLI1 -Path $W7VFD
Set-VMFloppyDiskDrive -VMName $SRV1 -Path $WSVFD
Start-VM $SRV1
Start-VM $CLI1

В параметрах New-VM можно задать имя каждого образа, местонахождение, количество выделяемой памяти, жесткий диск и сетевое соединение. Вы должны определить виртуальный сетевой коммутатор (New-VMSwitch) перед созданием сетевого соединения для VM. Среда Hyper-V способна поддерживать несколько виртуальных сетевых коммутаторов с одним и тем же именем, поэтому перед созданием нового коммутатора убедитесь, что выбранный вами сетевой коммутатор еще не существует (я использовал для этого переменную $TestSwitch).

Можно осуществить дальнейшую настройку памяти и жесткого диска системы для оптимизации производительности. Выполните команду Set-VMMemory для настройки параметров динамической памяти (например, можно задать минимальное, начальное и максимальное количества памяти). Это очень полезно для систем, поддерживающих несколько образов.

Командлет New-VHD служит для создания фиксированного или динамического диска, позволяет создавать основные (base) и разностные (differencing) диски и задавать размеры блоков и секторов. По умолчанию создаются динамические диски. Они создаются быстрее, зато фиксированные диски обеспечивают лучшую производительность.

Независимо от того, какие параметры жесткого диска вы зададите, следует пользоваться преимуществами нового VHDX-формата. Возможно, вам не понадобится жесткий диск размером 64 Тб — у формата Virtual Hard Disk (VHD) размер ограничен 2 Тб, — однако новые возможности ведения журналов означают, что будет меньше ошибок при отказе системы или питания.

В документации Microsoft утверждается, что VHDX-диски быстрее, чем VHD. (Я подтверждаю это своими тестами, выполненными на двух компьютерах) Кроме того, можно преобразовывать существующие VHD-диски в VHDX или наоборот, используя Convert-VHD или Hyper-V Manager.

Как видите, создание VM из Windows PowerShell с помощью таких сценариев относительно просто и при этом требуется лишь несколько командлетов. Для любого специалиста, работающего с образами на серверной или клиентской платформе, такой подход открывает новые возможности управления средой тестирования, защиты и развертывания виртуальных машин.


Ссылка: http://www.oszone.net/20525/