Настройка Hyper-V Server 2012 R2
В связи с постоянно растущим интересом ИТ-специалистов к сфере серверной виртуализации в целом, так и решениям на базе ПО от Microsoft в частности, сегодня я начинаю цикл статей, посвященных замечательному продукту Microsoft Hyper-V Server 2012 R2. Хочу отметить, что все нижеизложенное основывается на реальном опыте использовании группы серверов Hyper-V Server 2012 R2 в production-среде. В данной статье я максимально подробно расскажу о первоначальной настройке среды Hyper-V Server 2012 R2. Кстати, Hyper-V Server 2012 R2 можно скачать с официального сайта Technet Microsoft.
Содержание:
1. АВТОМАТИЧЕСКИЙ ЗАПУСК POWERSHELL ПРИ ВХОДЕ В СЕАНС
2. НАСТРОЙКА СЕТЕВЫХ АДАПТЕРОВ
3. ОТКЛЮЧАЕМ IPV6 НА СЕТЕВОМ ИНТЕРФЕЙСЕ
4. НАСТРОЙКА МЕЖСЕТЕВОГО ЭКРАНА (ADVANCED FIREWALL)
5. ВЗАИМОДЕЙСТВИЕ С SERVER MANAGER
6. СОЗДАНИЕ ДИСКОВОГО ХРАНИЛИЩА ДЛЯ ВИРТУАЛЬНЫХ МАШИН
7. НАСТРАИВАЕМ ПАРАМЕТРЫ ГИПЕРВИЗОРА
8. СОЗДАЕМ ВИРТУАЛЬНЫЙ КОММУТАТОР
Для удаленного управления Hyper-V Server 2012 R2 можно использовать ОС Windows Server 2012 R2 Standard или Datacenter, а также Windows 8.1.
В случае использования Windows Server 2012 R2 Standard или Datacenter необходимо установить консоль Hyper-V Manager. Это можно сделать в Server Manager или при помощи командлета PowerShell Install-WindowsFeature -Name 'RSAT-Hyper-V-Tools'
В 64 битных версиях ОС Windows 8.1 Pro и Enterprise для установки Hyper-V Manager можно использовать средство настройки компонентов Windows.
Для остальных версий Windows 8.1 необходимо установить Remote Server Administration Tools (RSAT), которую также можно скачать на официальном сайте Microsoft.
Прежде, чем перейти непосредственно к настройке серверов, хочу подробнее остановиться на схеме сети, которая будет использоваться в нашей демонстрации.
В моем случае я буду использовать наипростейший вариант - локальная подсеть 192.168.1.0/24 с двумя машинами: Hyper-V Server 2012 R2 с IP-адресом 192.168.1.5 в качестве хоста виртуализации и Windows Server 2012 R2 Standard R2 с IP 192.168.1.6 в качестве хоста управления. Обе машины не являются участниками домена и входят в рабочую группу TESTLAB.
Итак, после завершения вполне себе интуитивной установки Hyper-V Server 2012 R2 перед нами предстает рабочий стол с двумя окнами, стандартная командная строка cmd.exe и окно скрипта sconfig.cmd:
Данный скрипт позволяет произвести первоначальную настройку сервера:
– сменить имя сервера
– сменить имя рабочей группы или ввести сервер в домен
– добавить локального администратора
– включить удаленный доступ к серверу, что позволить управлять им с помощью Server Manager, консолей MMC, PowerShell, подключаться по RDP, проверить доступность с помощью pingили tracert
– настроить Windows Update и устанавливать обновления
– настроить сетевые карты сервера
– настроить время на сервере
Также настройку времени на сервере можно выполнить с помощью команды controltimedate.cpl, а настройку региональных параметров - с помощью команды control intl.cpl. При этом будут запущены привычные консоли Панели Управления.
АВТОМАТИЧЕСКИЙ ЗАПУСК POWERSHELL ПРИ ВХОДЕ В СЕАНС
Когда вышла первая версия Hyper-V Server 2008, PowerShell в нем официально не поддерживался, и, единственным способом настройки и получения информации с сервера были утилиты командной строки, такие как net, netsh, wmic, и множество других. Они не обладали единообразным интерфейсом и способом использования, что в итоге увеличивало порог вхождения для администратора и влияло на производительность работы. Но время не стоит на месте и, начиная с Hyper-V Server 2008 R2, Microsoft внедряет поддержку PowerShell, а в Hyper-V Server 2012 PowerShell можно использовать сразу после установки системы. Более того, в Hyper-V Server 2012 включен модуль PowerShell для взаимодействия с Hyper-V, а в Hyper-V Server 2012 R2 количество командлетов для работы с Hyper-V превысило значение 170. Точное значение можно посмотреть с помощью Get-Command -ModuleHyper-V | Measure-Object.
Зайдем в оболочку PowerShell и запустим командлет New-ItemProperty, который создаст новый ключ в реестре HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\run.
New-ItemProperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\run -Name PowerShell -Value "cmd /c start /max C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -noExit" -Type string
Теперь при следующем входе в систему будет запускаться окно с оболочкой PowerShell, в которой мы продолжим настройку нашего сервера.
НАСТРОЙКА СЕТЕВЫХ АДАПТЕРОВ
Если сетевые адаптеры до этого не были настроены с помощью sconfig.cmd, сделаем это с помощью командлетов PowerShell.
Смотрим текущую конфигурацию IP на сетевых интерфейсах. В моем случае адресация назначена службой APIPA, так как в сети нет DHCP сервера.
Get-NetIPConfiguration
Назначаем статическую адресацию, маску сети, шлюз по умолчанию и адреса DNS серверов. InterfaceIndex сетевого адаптера берем из вывода предыдущего командлета.
New-NetIPAddress -InterfaceIndex 13 -IPAddress 192.168.1.5 -DefaultGateway 192.168.1.1 -PrefixLength 24
Set-DnsClientServerAddress -InterfaceIndex 13 -ServerAddresses 192.168.1.2,192.168.1.3
ОТКЛЮЧАЕМ IPV6 НА СЕТЕВОМ ИНТЕРФЕЙСЕ
Если использование IPv6 на сетевом интерфейсе пока не планируется, имеет смысл отключить его на интерфейсе для уменьшения «attacksurface».
Проверяем текущую настройку IPv6 на интерфейсе. Имя интерфейса берем из вывода командлетов Get-NetAdapter или Get-NetIPConfiguration.
Get-NetAdapterBinding -InterfaceDescription "Microsoft Hyper-V Network Adapter" | Where-Object -Property DisplayName -Match IPv6 | Format-Table –AutoSize
Отключить поддержку IPv6 на сетевом адаптере можно командлетом Disable-NetAdapterBinding. Данное действие будет аналогично снятию галки «Internet Protocol Version 6 (TCP/IPv6)» в настройках адаптера в графическом интерфейсе Windows.
Disable-NetAdapterBinding -InterfaceDescription "Microsoft Hyper-V Network Adapter" -ComponentID ms_tcpip6
Настройка межсетевого экрана (Advanced Firewall)
С внедрением PowerShell в Hyper-V Server появился удобный способ управления правилами межсетевого экрана, взамен устаревающего netsh. Просмотреть список комадлетов можно с помощью Get-Command.
Get-Command -Noun *Firewall* -Module NetSecurity
В качестве примера включим возможность традиционного управления межсетевым экраном через оснастку MMCс хоста управления. Для начала получим список правил, относящихся к удаленному управлению межсетевым экраном.
Get-NetFirewallRule | Where-Object -Property DisplayName -Match "firewall" | Format-List -Property Name, DisplayName, Enabled
Включаем оба правила.
Enable-NetFirewallRule -Name RemoteFwAdmin-In-TCP,RemoteFwAdmin-RPCSS-In-TCP
Теперь можно попробовать подключиться к оснастке MMC управления межсетевым экраном с хоста управления.
ВЗАИМОДЕЙСТВИЕ С SERVER MANAGER
Если гипервизор и хост управления не являются частью домена, а находятся в рабочей группе, как в нашем случае, то при попытке добавить сервер Hyper-V в Server Manager на удаленном хосте возникнет ошибка согласования WinRM.
Решается проблема довольно просто – достаточно добавить на Hyper-V Server в доверенные узлы WinRM на хосте управления и обновить текущее состояние в ServerManager.
Set-Item wsman:\localhost\Client\TrustedHosts HYPER-V01 -Concatenate –Force
Создание дискового хранилища для виртуальных машин
Теперь настало время создать хранилище файлов виртуальных машин и файлов виртуальных дисков. Для хранения данных будем использовать отдельный раздел на физическом диске. Для начала посмотрим список командлетов PowerShell, которые используются для управления носителями. Как обычно будем использовать для этого командлет Get-Command. Во втором случае мы получим список командлетов, служащих для получения информации.
Get-Command -Module Storage
Get-Command -Verb *Get* -Module Storage
Просмотрим список физических дисков на сервере.
Get-Disk
Создаем новый раздел на диске максимально возможного размера, назначаем букву D. Используем id из Get-Disk. После этого форматируем раздел в NTFS и указываем его метку.
New-Partition -DiskNumber 0 -DriveLetter D –UseMaximumSize
Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel "VMStore"
Убедимся в правильности проделанных нами операций с помощью оснастки MMC Disk Management на удаленном хосте, для этого включим соответствующие правила на межсетевом экране.
Enable-NetFirewallRule RVM-VDS-In-TCP,RVM-VDSLDR-In-TCP,RVM-RPCSS-In-TCP
Как мы видим, наш только что созданный диск прекрасно отображается в Disk Management.
Создадим папку на нашем разделе, где будем хранить настройки и файлы дисков виртуальных машин. Командлет New-Item позволяет создавать вложенные пути, так что нет необходимости запускать его два раза для каждой папки.
New-Item -Path "D:\Hyper-V\Virtual Hard Disks" -Type Directory
Создадим папки D:\Distrib и D:\ImportedVM, которые будем соответственно использовать для хранения дистрибутивов ОС и импортированных ВМ с других хостов виртуализации.
New-Item -Path D:\Distrib -ItemType Directory
New-Item -Path D:\ImportedVM -ItemType Directory
Для создания шары используем командлет New-SmbShare, с помощью которого дадим полный доступ по сети для группы локальных администраторов сервера.
New-SmbShare -Path D:\Distrib -Name Distrib -Description "OS Distributives" -FullAccess "BUILTIN\Administrators"
New-SmbShare -Path D:\ImportedVM -Name ImportedVM -Description "Imported VMs" -FullAccess " BUILTIN\Administrators"
Проверяем с помощью PowerShell и с помощью ServerManager с хоста управления.
Get-SmbShare -Name Distrib,ImportedVM | Format-List
Get-SmbShareAccess -Name Distrib,ImportedVM | Format-List
Общий список командлетов, относящихся к SMB (ServerMessageBlock), как обычно можно получить с помощью командлета Get-Command.
Get-Command -ModuleSmbShare
В заключение этой темы добавлю только то, что если на сервере не используется физический или логический RAID, то для повышения производительности и надежности работы с хранилищем ВМ целесообразно использование технологии Storage Pools (к примеру, такие командлеты, как New-StoragePool, New-Volume). Более подробнее об использовании Storage Pools совместно с Hyper-V я напишу в одной из будущих статей.
НАСТРАИВАЕМ ПАРАМЕТРЫ ГИПЕРВИЗОРА
Приступим к настройке параметров гипервизора. Основные параметры Hyper-V можно получить с помощью командлета Get-VMHost.
Get-VMHost | Format-List
Как мы видим из вывода командлета, пути ВМ и виртуальных дисков сейчас размещаются на одном разделе с ОС, что нас не устраивает ни с точки зрения скорости работы, ни с точки зрения надежности. Пропишем пути к созданным в прошлом разделе папкам с помощью командлета Set-VMHost.
Set-VMHost -VirtualMachinePath D:\Hyper-V -VirtualHardDiskPath 'D:\Hyper-V\Virtual Hard Disks'
Проверим с помощью PowerShell…
Get-VMHost | Format-List
… и с помощью Hyper-V Manager.
Как я упоминал выше, в Hyper-V Server 2012 R2 возможно использование EnhancedSessionMode для ВМ, что позволит пробросить в ВМ локальные диски, принтеры, звук, использовать буфер обмена и многомониторные конфигурации. Давайте включим его.
Set-VMHost -EnableEnhancedSessionMode 1
СОЗДАДИМ ВИРТУАЛЬНЫЙ КОММУТАТОР
Виртуальный коммутатор Hyper-V (Hyper-V Extensible Switch) предназначен для организации сетевого взаимодействия между различными ВМ, между ВМ и хостом виртуализации, между ВМ и внешней средой. На самом деле у Hyper-V Extensible Switch обширное количество возможностей, много вкусного появилось в версии 2012 R2. Так что сейчас не будем углубляться в эту тему, и создадим простейший External Switch, который привязывается к сетевой карте Hyper-V Server, и организует взаимодействие ВМ с физической сетью.
Для начала проверим поддержку SR-IOV (Single-Root Input/Output (I/O) Virtualization).
Get-VMHost | Select-Object -Property "Iov*" | Format-List или
Get-NetAdapterSriov
В моем случае поддержки SR-IOV нет. Это связано с тем, что я немного схитрил, и в данной демонстрации у меня Hyper-V сервер запущен не на живом железе, а в виртуальной среде.
Получим список подсоединенных сетевых адаптеров
Get-NetAdapter | Where-Object -PropertyStatus -eqUp
Привязываем виртуальный свитч к сетевому адаптеру и при наличии SR-IOV включим его поддержку.
Внимание: Включить или отключить поддержку SR-IOV после создания свитча будет невозможно, для изменения этого параметра необходимо будет пересоздавать свитч.
New-VMSwitch -Name "Extenal_network" -NetAdapterName "Ethernet 2" -EnableIov 1
В моем случае Hyper-V выдает ошибку, опять же связанную с тем, что гипервизор сам запущен в виртуальной среде. На живом железе командлет создаст External Switch с именем «External_network» и привяжет его к сетевому адаптеру Ethernet 2. Виртуальный свитч также появится в списке сетевых адаптеров и на него будет перепривязаны все сетевые параметры физического адаптера Ethernet 2
Проверить можно с помощью командлетов Get-VMSwitch и Get-NetIPConfiguration –Detailed.
На этом этапе первоначальная настройка Hyper-V Server 2012 R2 закончена, и все готово для создания нашей первой виртуальной машины. Но об этом мы поговорим в следующей статье, использовать будем, естественно, PowerShell.
До скорых встреч!