service:hyperv
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
service:hyperv [05.10.2021 10:52] – [Создание VM] viacheslav | service:hyperv [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Hyper-V ====== | ||
+ | ===== Установка ===== | ||
+ | <code powershell> | ||
+ | # Install Hyper-V on Windows 10 | ||
+ | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All | ||
+ | </ | ||
+ | https:// | ||
+ | ===== Требования для Linux guests ===== | ||
+ | * When creating the VHDX, use 1MB BlockSizeBytes (from the default 32MB) in PowerShell, for example: | ||
+ | <code powershell> | ||
+ | New-VHD -Path C: | ||
+ | # New-VHD -Path C: | ||
+ | </ | ||
+ | * Use static MAC addresses with failover clustering | ||
+ | * Use Hyper-V-specific network adapters, not the legacy network adapter | ||
+ | [[https:// | ||
+ | |||
+ | ===== Создание VM ===== | ||
+ | |||
+ | <code powershell> | ||
+ | # Путь в данном случае по умолчанию, | ||
+ | New-VM -Name Debian04 -VHDPath Debian04.vhdx -SwitchName Internal | ||
+ | # Создать новый диск 60 ГБ | ||
+ | New-VM -Name Debian04 -NewVHDPath Debian04.vhdx -NewVHDSizeBytes 60GB -SwitchName Internal | ||
+ | </ | ||
+ | |||
+ | На VM gen2 на вкладке Security ошибка: | ||
+ | {{: | ||
+ | < | ||
+ | Set-VMFirmware VM_NAME -EnableSecureBoot off | ||
+ | </ | ||
+ | |||
+ | <code powershell> | ||
+ | $node = " | ||
+ | $vmName = " | ||
+ | $vhd = " | ||
+ | |||
+ | # Линуксовый диск (-BlockSizeBytes 1MB) | ||
+ | New-VHD -Path " | ||
+ | -SizeBytes 60GB -Fixed -BlockSizeBytes 1MB -ComputerName $node | ||
+ | |||
+ | # Создание ВМ | ||
+ | New-VM -Name $vmName ` | ||
+ | -VHDPath " | ||
+ | -MemoryStartupBytes 4GB ` | ||
+ | -SwitchName " | ||
+ | -Generation 2 ` | ||
+ | -Path " | ||
+ | -ComputerName $node | ||
+ | |||
+ | # Процессоры, | ||
+ | Set-VM -VMName $vmName -ComputerName $node ` | ||
+ | -ProcessorCount 2 ` | ||
+ | -Notes ' | ||
+ | |||
+ | # Добавить DVD | ||
+ | Add-VMDvdDrive -VMName $vmName -ComputerName $node | ||
+ | Set-VMDvdDrive -VMName $vmName -ComputerName $node -Path " | ||
+ | |||
+ | # SecureBoot для Linux, загрузка с DVD | ||
+ | Set-VMFirmware -VMName $vmName -ComputerName $node ` | ||
+ | -SecureBootTemplate ' | ||
+ | -FirstBootDevice ((get-VMFirmware -VMName $vmName -ComputerName $node).bootorder |? device -match ' | ||
+ | # Либо вообще выключить SecureBoot | ||
+ | # Set-VMFirmware -VMName $vmName -ComputerName $node -EnableSecureBoot Off | ||
+ | |||
+ | # Добавить машину в кластер | ||
+ | Add-ClusterVirtualMachineRole -VMName $vmName -Cluster hvc | ||
+ | </ | ||
+ | |||
+ | ===== Общие диски (VHD Set) ===== | ||
+ | Виртуальные диски, которые можно подключить сразу к нескольким ВМ. Появились в Windows 10 / Server 2016. | ||
+ | <code powershell> | ||
+ | # при указании расширения vhds система понимает, | ||
+ | New-VHD –Path " | ||
+ | # прицепить VHD Set к ВМ | ||
+ | Add-VMHardDiskDrive -VMName VMCL01 -Path " | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | https:// | ||
+ | ===== Активация VM Windows ===== | ||
+ | https:// | ||
+ | ===== Миграция между хостами ===== | ||
+ | При перемещении между некластерными хостами ошибка: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Решение - в AD учётке исходного хоста добавить в делегирование - " | ||
+ | [[https:// | ||
+ | [[https:// | ||
+ | |||
+ | <code powershell> | ||
+ | $hvHosts = (1..6).foreach({' | ||
+ | $hvServices = $hvHosts.foreach({ | ||
+ | ' | ||
+ | ' | ||
+ | }) | ||
+ | |||
+ | foreach ($hvHost in $hvHosts) { | ||
+ | # Очистка предыдущих значений | ||
+ | Set-ADComputer -Identity $hvHost -clear ' | ||
+ | # Добавление новых | ||
+ | foreach ($hvservice in $hvservices -notmatch $hvHost) { | ||
+ | Set-ADComputer $hvHost -Add @{' | ||
+ | } | ||
+ | } | ||
+ | |||
+ | # проверка | ||
+ | $hvhosts |% {$_; (Get-ADComputer $_ -Properties ' | ||
+ | </ | ||
+ | https:// | ||
+ | |||
+ | ==== Выгнать все ВМ с ноды кластера и вернуть обратно ==== | ||
+ | <code powershell> | ||
+ | # выгнать | ||
+ | Suspend-ClusterNode -Name " | ||
+ | # вернуть | ||
+ | Resume-ClusterNode -Name " | ||
+ | |||
+ | # Динамическая (live) миграция на " | ||
+ | Get-ClusterGroup -Name " | ||
+ | </ | ||
+ | https:// | ||
+ | |||
+ | ==== Балансировка ==== | ||
+ | Начиная с Windows Server 2016, есть [[https:// | ||
+ | <code powershell> | ||
+ | get-cluster hvc2 |fl autobalancer* | ||
+ | AutoBalancerMode | ||
+ | AutoBalancerLevel : 1 | ||
+ | </ | ||
+ | |||
+ | AutoBalancerLevel: | ||
+ | * 1 Low - Move when host is more than 80% loaded (default) | ||
+ | * 2 Medium - Move when host is more than 70% loaded | ||
+ | * 3 High - Average nodes and move when host is more than 5% above average | ||
+ | |||
+ | AutoBalancerMode: | ||
+ | * 0 Disabled | ||
+ | * 1 Load balance on node join | ||
+ | * 2 Load balance on node join and every 30 minutes (default) | ||
+ | |||
+ | ==== Миграция виртуальной машины с vTPM ==== | ||
+ | Вкратце - на всех хостах кластера должен быть идентичный набор сертификатов в хранилище Shielded VM Local Certificates.\\ | ||
+ | Сертификаты создаются вместе с виртуальной машиной, | ||
+ | После создания VM нужно распространить её сертификат на все остальные узлы.\\ | ||
+ | https:// | ||
+ | |||
+ | |||
+ | ===== Выгнать машину из кластера и перенести на другую ноду ===== | ||
+ | <code powershell> | ||
+ | $vm = " | ||
+ | $destHost = " | ||
+ | $storagePath = " | ||
+ | |||
+ | Remove-ClusterGroup -VMId (get-vm " | ||
+ | Move-VM " | ||
+ | |||
+ | # Вариант для всех выгнанных из кластера машин, миграция с одной ноды | ||
+ | get-vm |? isclustered -ne ' | ||
+ | </ | ||
+ | |||
+ | ===== Управление Hyper-V 2012R2 c машины на Windows 10 ===== | ||
+ | <color # | ||
+ | |||
+ | Решение: | ||
+ | <code powershell> | ||
+ | Import-Module Hyper-V -RequiredVersion 1.1 | ||
+ | </ | ||
+ | |||
+ | ===== Кластер ===== | ||
+ | На Hyper-V Server 2019 | ||
+ | <code powershell> | ||
+ | # Поставить компоненты кластера и MPIO | ||
+ | Add-WindowsFeature failover-clustering, | ||
+ | # Вызвать окно MPIO | ||
+ | mpiocpl | ||
+ | # Разрешить удалённое управление дисками из MMC | ||
+ | Enable-NetFirewallRule -DisplayGroup " | ||
+ | </ | ||
+ | |||
+ | ===== Пересканирование доступных дисков ===== | ||
+ | Нужно, если настроен доступ к полке через FC, а хост пока дисков не видит. | ||
+ | <code powershell> | ||
+ | Update-HostStorageCache | ||
+ | # Посмотреть | ||
+ | Get-disk | ||
+ | |||
+ | Number Friendly Name Serial Number | ||
+ | ------ ------------- ------------- | ||
+ | 0 HP LOGICAL... PDNLH0BRH8M0LP | ||
+ | 7 HP P2000 G... 00c0ff1a4c3b00004c6ab66001000000 Healthy | ||
+ | 5 HP P2000 G... 00c0ff1a4c3b00006b6ab66001000000 Healthy | ||
+ | 8 HP P2000 G... 00c0ff1a4c3b00004c6ab66001000000 Healthy | ||
+ | 6 HP P2000 G... 00c0ff1a4c3b00006b6ab66001000000 Healthy | ||
+ | 3 HP P2000 G... 00c0ff1a4c3b00004c6ab66001000000 Healthy | ||
+ | 1 HP P2000 G... 00c0ff1a4c3b00006b6ab66001000000 Healthy | ||
+ | 4 HP P2000 G... 00c0ff1a4c3b00004c6ab66001000000 Healthy | ||
+ | 2 HP P2000 G... 00c0ff1a4c3b00006b6ab66001000000 Healthy | ||
+ | </ | ||
+ | |||
+ | ===== Версии конфигураций виртуальных машин ===== | ||
+ | <code powershell> | ||
+ | Get-VMHostSupportedVersion | ||
+ | |||
+ | # Hyper-V Server 2016 | ||
+ | Name Version IsDefault | ||
+ | ---- ------- --------- | ||
+ | Microsoft Windows 8.1/Server 2012 R2 5.0 False | ||
+ | Microsoft Windows 10 1507/Server 2016 Technical Preview 3 6.2 False | ||
+ | Microsoft Windows 10 1511/Server 2016 Technical Preview 4 7.0 False | ||
+ | Microsoft Windows Server 2016 Technical Preview 5 | ||
+ | Юбилейное обновление Microsoft Windows 10/Server 2016 | ||
+ | Предварительная версия | ||
+ | Экспериментальная | ||
+ | |||
+ | # Hyper-V Server 2019 | ||
+ | Name | ||
+ | ---- | ||
+ | Microsoft Windows 8.1/Server 2012 R2 | ||
+ | Microsoft Windows 10 1507/Server 2016 Technical Preview 3 6.2 False | ||
+ | Microsoft Windows 10 1511/Server 2016 Technical Preview 4 7.0 False | ||
+ | Microsoft Windows Server 2016 Technical Preview 5 7.1 False | ||
+ | Юбилейное обновление Microsoft Windows 10/Server 2016 8.0 False | ||
+ | Обновление Microsoft Windows 10 для дизайнеров | ||
+ | Microsoft Windows 10 Fall Creators Update/ | ||
+ | Обновление Microsoft Windows 10 за апрель 2018 г./Server 1803 8.3 False | ||
+ | Обновление Microsoft Windows 10 за октябрь 2018 г./Server 2019 9.0 True | ||
+ | </ | ||
+ | |||
+ | Если нужно на 16-м сервере сделать виртуалку, | ||
+ | <code powershell> | ||
+ | New-VM -Name " | ||
+ | </ | ||
+ | [[https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | ===== vmguest.iso ===== | ||
+ | Для старинных ОС. Взято с Windows Server 2012 R2. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | MD5 (для .iso): E6B5AC48B325D6C56B5857CA4EDAE99C\\ | ||
+ | SHA1 (для .iso): 56F50A4E5A8825B6E24742FBE598EA50BDFA90C2 | ||
+ | |||
+ | ===== Конвертация дисков VMWare в Hyper-V ===== | ||
+ | Поставить [[http:// | ||
+ | <code powershell> | ||
+ | # импортировать модуль | ||
+ | Import-Module ' | ||
+ | # конвертировать | ||
+ | ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath C: | ||
+ | </ | ||
+ | |||
+ | **Cautious: | ||
+ | |||
+ | https:// | ||
+ | ==== The entry 4 is not a supported disk database entry for the descriptor ==== | ||
+ | Ошибка при попытке конвертирования: | ||
+ | <color # | ||
+ | |||
+ | Решение: | ||
+ | <code powershell> | ||
+ | # Считать дескрипторы в файл | ||
+ | dsfo.exe " | ||
+ | # Закомментировать строку | ||
+ | # | ||
+ | # Загрузить дескрипторы обратно в образ | ||
+ | dsfi.exe " | ||
+ | </ | ||
+ | После этого конвертация будет идти нормально. | ||
+ | |||
+ | https:// | ||
+ | ==== Ещё один конвертер - qemu-img ==== | ||
+ | Помог, когда выгруженный из VirtualBox .VHD не открывался в Hyper-V. | ||
+ | |||
+ | {{ : | ||
+ | <code powershell> | ||
+ | & D: | ||
+ | </ | ||
+ | <WRAP round info 80%> | ||
+ | Supported formats: dmg vpc host_device bochs blkverify blkdebug parallels file nbd vmdk vdi qcow2 qed cloop qcow vhdx sheepdog null-aio vvfat raw null-co | ||
+ | </ | ||
+ | |||
+ | ===== Внешний ethernet адаптер уже привязан к протоколу виртуального коммутатора ===== | ||
+ | <color # | ||
+ | Ошибка при попытке создания внешнего виртуального коммутатора.\\ | ||
+ | Решение - снять в свойствах физического адаптера галку " | ||
+ | |||
+ | ===== Медленная скорость передачи данных на сетевом адаптере ===== | ||
+ | После настройки в Hyper-V внешнего сетевого адаптера скорость интернета (и вообще передачи данных через адаптер) сильно просела - фактически, | ||
+ | |||
+ | **Решение: | ||
+ | |||
+ | **Решение 2:** в Диспетчере устройств зайти в свойства Microsoft Network Adapter multiplexor Driver и в доп. свойствах отключить опции | ||
+ | * IPv4: разгрузка операций с отправкой больших пакетов версии 2 (Large Send Offload Version 2 (IPv4)) | ||
+ | * IPv6: разгрузка операций с отправкой больших пакетов версии 2 (Large Send Offload Version 2 (IPv6)) | ||
+ | |||
+ | Powershell: | ||
+ | <code powershell> | ||
+ | Set-NetAdapterAdvancedProperty -Name ' | ||
+ | Set-NetAdapterAdvancedProperty -Name ' | ||
+ | </ | ||
+ | |||
+ | https:// |