Инструменты пользователя

Инструменты сайта


service:hyperv

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:hyperv [16.07.2021 07:31] – [Балансировка] viacheslavservice: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
 +</code>
 +https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v\\
 +===== Требования для Linux guests =====
 +  * When creating the VHDX, use 1MB BlockSizeBytes (from the default 32MB) in PowerShell, for example:
 +<code powershell>
 +New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Fixed -BlockSizeBytes 1MB
 +# New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
 +</code>
 +  * Use static MAC addresses with failover clustering
 +  * Use Hyper-V-specific network adapters, not the legacy network adapter
  
 +[[https://docs.microsoft.com/ru-ru/windows-server/virtualization/hyper-v/best-practices-for-running-linux-on-hyper-v|Best Practices for running Linux on Hyper-V]]
 +
 +===== Создание VM =====
 +
 +<code powershell>
 +# Путь в данном случае по умолчанию, файл уже должен быть создан.
 +New-VM -Name Debian04 -VHDPath Debian04.vhdx -SwitchName Internal
 +# Создать новый диск 60 ГБ
 +New-VM -Name Debian04 -NewVHDPath Debian04.vhdx -NewVHDSizeBytes 60GB -SwitchName Internal
 +</code>
 +
 +На VM gen2 на вкладке Security ошибка: //Property 'BindToHostTpm' does not exist in class 'Msvm_SecuritySettingData'.//\\
 +{{:service:pasted:20190716-151700.png}}
 +<code>
 +Set-VMFirmware VM_NAME -EnableSecureBoot off
 +</code>
 +
 +<code powershell>
 +$node = "HV03"
 +$vmName = "t-docker1"
 +$vhd = "C:\ClusterStorage\Volume1\VM\Virtual Hard Disks\t-docker1.vhdx"
 +
 +# Линуксовый диск (-BlockSizeBytes 1MB)
 +New-VHD -Path "$vhd" `
 +-SizeBytes 60GB -Fixed -BlockSizeBytes 1MB -ComputerName $node
 +
 +# Создание ВМ
 +New-VM -Name $vmName `
 +-VHDPath "$vhd" `
 +-MemoryStartupBytes 4GB `
 +-SwitchName "V-Lan" `
 +-Generation 2 `
 +-Path "C:\ClusterStorage\Volume1\VM" `
 +-ComputerName $node
 +
 +# Процессоры, описание
 +Set-VM -VMName $vmName -ComputerName $node `
 +-ProcessorCount 2 `
 +-Notes '[Alpine Linux] Тестовый Docker, IP 192.168.1.100'
 +
 +# Добавить DVD
 +Add-VMDvdDrive -VMName $vmName -ComputerName $node
 +Set-VMDvdDrive -VMName $vmName -ComputerName $node -Path "c:\ISO\alpine-virt-3.14.0-x86_64.iso"
 +
 +# SecureBoot для Linux, загрузка с DVD
 +Set-VMFirmware -VMName $vmName -ComputerName $node `
 +-SecureBootTemplate 'MicrosoftUEFICertificateAuthority' `
 +-FirstBootDevice ((get-VMFirmware -VMName $vmName -ComputerName $node).bootorder |? device -match 'dvddrive')
 +# Либо вообще выключить SecureBoot
 +# Set-VMFirmware -VMName $vmName -ComputerName $node -EnableSecureBoot Off
 +
 +# Добавить машину в кластер
 +Add-ClusterVirtualMachineRole -VMName $vmName -Cluster hvc
 +</code>
 +
 +===== Общие диски (VHD Set) =====
 +Виртуальные диски, которые можно подключить сразу к нескольким ВМ. Появились в Windows 10 / Server 2016.
 +<code powershell>
 +# при указании расширения vhds система понимает, что нужно сделать VHD Set.
 +New-VHD –Path "c:\clusterstorage\vmstorage01\disk.vhds" -SizeBytes 40Gb -Fixed
 +# прицепить VHD Set к ВМ
 +Add-VMHardDiskDrive -VMName VMCL01 -Path "c:\clusterstorage\vmstorage01\disk.vhds" -SupportPersistentReservations # или -ShareVirtualDisk, это алиас
 +</code>
 +
 +https://winitpro.ru/index.php/2017/05/02/vhd-set-novyj-tip-virtualnyx-diskov-v-windows-server-2016/\\
 +https://docs.microsoft.com/en-us/powershell/module/hyper-v/add-vmharddiskdrive
 +===== Активация VM Windows =====
 +https://docs.microsoft.com/ru-ru/windows-server/get-started-19/vm-activation-19#avma-keys
 +===== Миграция между хостами =====
 +При перемещении между некластерными хостами ошибка:
 +
 +{{:service:pasted:20190718-125122.png}}
 +
 +Решение - в AD учётке исходного хоста добавить в делегирование - "доверять делегирование указанных служб" -> "Использовать только Kerberos" службы целевого хоста Microsoft Virtual System Migration Service и cifs.\\
 +[[https://docs.microsoft.com/ru-ru/windows-server/virtualization/hyper-v/deploy/set-up-hosts-for-live-migration-without-failover-clustering|Настройка узлов для динамической миграции без отказоустойчивой кластеризации]]\\
 +[[https://docs.microsoft.com/ru-ru/windows-server/virtualization/hyper-v/manage/Use-live-migration-without-Failover-Clustering-to-move-a-virtual-machine|Использование динамической миграции без отказоустойчивой кластеризации для перемещения виртуальной машины]]
 +
 +<code powershell>
 +$hvHosts = (1..6).foreach({'HV' + ('{0:d2}' -f $_)})
 +$hvServices = $hvHosts.foreach({
 +'Microsoft Virtual System Migration Service/' + $_
 +'cifs/' + $_
 +})
 +
 +foreach ($hvHost in $hvHosts) {
 +# Очистка предыдущих значений
 +Set-ADComputer -Identity $hvHost -clear 'msDS-AllowedToDelegateTo'
 +    # Добавление новых
 +    foreach ($hvservice in $hvservices -notmatch $hvHost) {
 +    Set-ADComputer $hvHost -Add @{'msDS-AllowedToDelegateTo'="$hvservice"}
 +    }
 +}
 +
 +# проверка
 +$hvhosts |% {$_; (Get-ADComputer $_ -Properties 'msDS-AllowedToDelegateTo').'msDS-AllowedToDelegateTo'; ''}
 +</code>
 +https://4sysops.com/archives/how-to-configure-computer-delegation-with-powershell/
 +
 +==== Выгнать все ВМ с ноды кластера и вернуть обратно ====
 +<code powershell>
 +# выгнать
 +Suspend-ClusterNode -Name "node1" -Drain
 +# вернуть
 +Resume-ClusterNode -Name "node1" -Failback Immediate
 +
 +# Динамическая (live) миграция на "лучший из возможных узлов" (best possible node)
 +Get-ClusterGroup -Name "vm-server1" | Move-ClusterVirtualMachineRole # без параметра -Node
 +</code>
 +https://social.technet.microsoft.com/Forums/windowsserver/en-US/0186dd85-52b4-421e-87b0-117051d77db1/live-migration-to-best-possible-node
 +
 +==== Балансировка ====
 +Начиная с Windows Server 2016, есть [[https://techcommunity.microsoft.com/t5/failover-clustering/failover-cluster-vm-load-balancing-in-windows-server-2016/ba-p/372084|встроенный механизм]].
 +<code powershell>
 +get-cluster hvc2 |fl autobalancer*
 +AutoBalancerMode  : 2
 +AutoBalancerLevel : 1
 +</code>
 +
 +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.\\
 +Сертификаты создаются вместе с виртуальной машиной, у которой включён vTPM (Windows 11 и т. п.)\\
 +После создания VM нужно распространить её сертификат на все остальные узлы.\\
 +https://www.hyper-v-server.de/news/live-migration-of-hyper-v-vms-with-a-vtpm-chip-hyperv-tpm/
 +
 +
 +===== Выгнать машину из кластера и перенести на другую ноду =====
 +<code powershell>
 +$vm = "windows7-test"
 +$destHost = "hv03"
 +$storagePath = "C:\ClusterStorage\Volume1\VM"
 +
 +Remove-ClusterGroup -VMId (get-vm "$vm").vmid -RemoveResources -Force -Confirm:$false
 +Move-VM "$vm" -DestinationHost "$destHost" -IncludeStorage -DestinationStoragePath "$storagePath"
 +
 +# Вариант для всех выгнанных из кластера машин, миграция с одной ноды
 +get-vm |? isclustered -ne 'true' |Move-VM -DestinationHost $destHost -IncludeStorage -DestinationStoragePath $storagePath
 +</code>
 +
 +===== Управление Hyper-V 2012R2 c машины на Windows 10 =====
 +<color #ed1c24>get-vm : Модуль Hyper-V, задействованный в этом сеансе Windows PowerShell, не может использоваться для удаленного управления сервером "host03". Загрузите совместимую версию модуля Hyper-V или используйте удаленное взаимодействие Powershell для прямого подключения к удаленному серверу.</color>
 +
 +Решение:
 +<code powershell>
 +Import-Module Hyper-V -RequiredVersion 1.1
 +</code>
 +
 +===== Кластер =====
 +На Hyper-V Server 2019
 +<code powershell>
 +# Поставить компоненты кластера и MPIO
 +Add-WindowsFeature failover-clustering,multipath-io
 +# Вызвать окно MPIO
 +mpiocpl
 +# Разрешить удалённое управление дисками из MMC
 +Enable-NetFirewallRule -DisplayGroup "Удаленное управление томами" # "Disk Management"
 +</code>
 +
 +===== Пересканирование доступных дисков =====
 +Нужно, если настроен доступ к полке через FC, а хост пока дисков не видит.
 +<code powershell>
 +Update-HostStorageCache
 +# Посмотреть
 +Get-disk
 +
 +Number Friendly Name Serial Number                    HealthStatus         OperationalStatus      Total Size Partition Style
 +------ ------------- -------------                    ------------         -----------------      ---------- ----------
 +0      HP LOGICAL... PDNLH0BRH8M0LP                   Healthy              Online                   136.7 GB GPT
 +7      HP P2000 G... 00c0ff1a4c3b00004c6ab66001000000 Healthy              Offline                  13.63 TB RAW
 +5      HP P2000 G... 00c0ff1a4c3b00006b6ab66001000000 Healthy              Offline                 953.62 MB RAW
 +8      HP P2000 G... 00c0ff1a4c3b00004c6ab66001000000 Healthy              Offline                  13.63 TB RAW
 +6      HP P2000 G... 00c0ff1a4c3b00006b6ab66001000000 Healthy              Offline                 953.62 MB RAW
 +3      HP P2000 G... 00c0ff1a4c3b00004c6ab66001000000 Healthy              Offline                  13.63 TB RAW
 +1      HP P2000 G... 00c0ff1a4c3b00006b6ab66001000000 Healthy              Offline                 953.62 MB RAW
 +4      HP P2000 G... 00c0ff1a4c3b00004c6ab66001000000 Healthy              Offline                  13.63 TB RAW
 +2      HP P2000 G... 00c0ff1a4c3b00006b6ab66001000000 Healthy              Offline                 953.62 MB RAW
 +</code>
 +
 +===== Версии конфигураций виртуальных машин =====
 +<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         7.1     False
 +Юбилейное обновление Microsoft Windows 10/Server 2016     8.0     True
 +Предварительная версия                                    254.0   False
 +Экспериментальная                                         255.0   False
 +
 +# Hyper-V Server 2019
 +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              7.1     False
 +Юбилейное обновление Microsoft Windows 10/Server 2016          8.0     False
 +Обновление Microsoft Windows 10 для дизайнеров                 8.1     False
 +Microsoft Windows 10 Fall Creators Update/сервер 1709          8.2     False
 +Обновление Microsoft Windows 10 за апрель 2018 г./Server 1803  8.3     False
 +Обновление Microsoft Windows 10 за октябрь 2018 г./Server 2019 9.0     True
 +</code>
 +
 +Если нужно на 16-м сервере сделать виртуалку, которую может быть нужно переместить на 12-й сервер, то при создании надо указывать параметр -version:
 +<code powershell>
 +New-VM -Name "WindowsCV5" -Version 5.0
 +</code>
 +[[https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/get-started/create-a-virtual-machine-in-hyper-v#create-a-virtual-machine-by-using-windows-powershell|Create a virtual machine by using Windows PowerShell]]
 +
 +[[https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/deploy/upgrade-virtual-machine-version-in-hyper-v-on-windows-or-windows-server#supported-virtual-machine-configuration-versions|Supported virtual machine configuration versions]]
 +
 +===== vmguest.iso =====
 +Для старинных ОС. Взято с Windows Server 2012 R2.
 +
 +{{ :service:vmguest.zip |}} ≈ 25 МБ
 +
 +MD5 (для .iso): E6B5AC48B325D6C56B5857CA4EDAE99C\\
 +SHA1 (для .iso): 56F50A4E5A8825B6E24742FBE598EA50BDFA90C2
 +
 +===== Конвертация дисков VMWare в Hyper-V =====
 +Поставить [[http://download.microsoft.com/download/9/1/E/91E9F42C-3F1F-4AD9-92B7-8DD65DA3B0C2/mvmc_setup.msi|Microsoft Virtual Machine Converter]] (или [[https://www.starwindsoftware.com/tmplink/starwindconverter.exe|Starwind V2V converter]]).
 +<code powershell>
 +# импортировать модуль
 +Import-Module 'C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1'
 +# конвертировать
 +ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath C:\temp\disk.vmdk -DestinationLiteralPath 'C:\temp' -VhdType DynamicHardDisk -VhdFormat Vhdx
 +</code>
 +
 +**Cautious:** If you have downloaded the full VM from Vmware, then it will create two VMDK files. One with “-flat.vmdk” that is the size of the disk and another is with “.vmdk” which is of 1-2 KB. When you type the command to start the conversion use the path of the disk with “.vmdk” extension. Don’t get confused. If you by mistake take the path of “-flat.vmdk”, you will get an error “No suitable drive was found at path”
 +
 +https://www.sysinfotools.com/blog/convert-vmware-to-hyper-v/
 +==== The entry 4 is not a supported disk database entry for the descriptor ====
 +Ошибка при попытке конвертирования:\\
 +<color #ed1c24>ConvertTo-MvmcVirtualHardDisk : The entry 4 is not a supported disk database entry for the descriptor.</color>
 +
 +Решение: скачать [[http://sanbarrow.com/files/dsfok.zip|dsfok toolset]].
 +<code powershell>
 +# Считать дескрипторы в файл
 +dsfo.exe "D:\temp\disk.vmdk" 512 1024 descriptor1.txt
 +# Закомментировать строку
 +#ddb.toolsInstallType = "4"
 +# Загрузить дескрипторы обратно в образ
 +dsfi.exe "D:\temp\disk.vmdk" 512 1024 descriptor1.txt
 +</code>
 +После этого конвертация будет идти нормально.
 +
 +https://techie-trooper.dev/virtualisation/2020/01/23/convert-vmware-to-ms-vm.html
 +==== Ещё один конвертер - qemu-img ====
 +Помог, когда выгруженный из VirtualBox .VHD не открывался в Hyper-V.
 +
 +{{ :service:qemu-img-win-x64-2_3_0.zip |}} (https://cloudbase.it/qemu-img-windows/)
 +<code powershell>
 +& D:\temp\qemu-img\qemu-img.exe convert D:\temp\Win7x64-1.vhd -O vhdx -o subformat=dynamic D:\temp\Win7x64-1.vhdx
 +</code>
 +<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
 +</WRAP>
 +
 +===== Внешний ethernet адаптер уже привязан к протоколу виртуального коммутатора =====
 +<color #ed1c24>External Ethernet adapter XYZ is already bound to the Microsoft Virtual Switch protocol</color>\\
 +Ошибка при попытке создания внешнего виртуального коммутатора.\\
 +Решение - снять в свойствах физического адаптера галку "Расширяемый виртуальный коммутатор Hyper-V" (Microsoft Virtual Switch).
 +
 +===== Медленная скорость передачи данных на сетевом адаптере =====
 +После настройки в Hyper-V внешнего сетевого адаптера скорость интернета (и вообще передачи данных через адаптер) сильно просела - фактически, до нуля. В моём случае скорость была нормальная на скачивание (download), а на закачку (upload) перестало работать.
 +
 +**Решение:** обновить драйвер. [[https://downloadcenter.intel.com/ru/product/99446|Intel Wireless AC 9560]]
 +
 +**Решение 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 'Сетевой мост' -RegistryKeyword '*LsoV2IPv4' -RegistryValue 0
 +Set-NetAdapterAdvancedProperty -Name 'Сетевой мост' -RegistryKeyword '*LsoV2IPv6' -RegistryValue 0
 +</code>
 +
 +https://community.intel.com/t5/Wireless/Hyper-V-External-Virtual-Switch-Bridge-Mode-Slow-download-speeds/td-p/1222149#M31808

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki