# Install Hyper-V on Windows 10 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Fixed -BlockSizeBytes 1MB # New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
# Путь в данном случае по умолчанию, файл уже должен быть создан. New-VM -Name Debian04 -VHDPath Debian04.vhdx -SwitchName Internal # Создать новый диск 60 ГБ New-VM -Name Debian04 -NewVHDPath Debian04.vhdx -NewVHDSizeBytes 60GB -SwitchName Internal
На VM gen2 на вкладке Security ошибка: Property 'BindToHostTpm' does not exist in class 'Msvm_SecuritySettingData'.
Set-VMFirmware VM_NAME -EnableSecureBoot off
$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
Виртуальные диски, которые можно подключить сразу к нескольким ВМ. Появились в Windows 10 / Server 2016.
# при указании расширения 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, это алиас
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
При перемещении между некластерными хостами ошибка:
Решение - в AD учётке исходного хоста добавить в делегирование - «доверять делегирование указанных служб» → «Использовать только Kerberos» службы целевого хоста Microsoft Virtual System Migration Service и cifs.
Настройка узлов для динамической миграции без отказоустойчивой кластеризации
Использование динамической миграции без отказоустойчивой кластеризации для перемещения виртуальной машины
$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'; ''}
https://4sysops.com/archives/how-to-configure-computer-delegation-with-powershell/
# выгнать Suspend-ClusterNode -Name "node1" -Drain # вернуть Resume-ClusterNode -Name "node1" -Failback Immediate # Динамическая (live) миграция на "лучший из возможных узлов" (best possible node) Get-ClusterGroup -Name "vm-server1" | Move-ClusterVirtualMachineRole # без параметра -Node
Начиная с Windows Server 2016, есть встроенный механизм.
get-cluster hvc2 |fl autobalancer* AutoBalancerMode : 2 AutoBalancerLevel : 1
AutoBalancerLevel:
AutoBalancerMode:
Вкратце - на всех хостах кластера должен быть идентичный набор сертификатов в хранилище 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/
$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
get-vm : Модуль Hyper-V, задействованный в этом сеансе Windows PowerShell, не может использоваться для удаленного управления сервером «host03». Загрузите совместимую версию модуля Hyper-V или используйте удаленное взаимодействие Powershell для прямого подключения к удаленному серверу.
Решение:
Import-Module Hyper-V -RequiredVersion 1.1
На Hyper-V Server 2019
# Поставить компоненты кластера и MPIO Add-WindowsFeature failover-clustering,multipath-io # Вызвать окно MPIO mpiocpl # Разрешить удалённое управление дисками из MMC Enable-NetFirewallRule -DisplayGroup "Удаленное управление томами" # "Disk Management"
Нужно, если настроен доступ к полке через FC, а хост пока дисков не видит.
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
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
Если нужно на 16-м сервере сделать виртуалку, которую может быть нужно переместить на 12-й сервер, то при создании надо указывать параметр -version:
New-VM -Name "WindowsCV5" -Version 5.0
Для старинных ОС. Взято с Windows Server 2012 R2.
vmguest.zip ≈ 25 МБ
MD5 (для .iso): E6B5AC48B325D6C56B5857CA4EDAE99C
SHA1 (для .iso): 56F50A4E5A8825B6E24742FBE598EA50BDFA90C2
Поставить Microsoft Virtual Machine Converter (или Starwind V2V converter).
# импортировать модуль 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
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/
Ошибка при попытке конвертирования:
ConvertTo-MvmcVirtualHardDisk : The entry 4 is not a supported disk database entry for the descriptor.
Решение: скачать dsfok toolset.
# Считать дескрипторы в файл dsfo.exe "D:\temp\disk.vmdk" 512 1024 descriptor1.txt # Закомментировать строку #ddb.toolsInstallType = "4" # Загрузить дескрипторы обратно в образ dsfi.exe "D:\temp\disk.vmdk" 512 1024 descriptor1.txt
После этого конвертация будет идти нормально.
https://techie-trooper.dev/virtualisation/2020/01/23/convert-vmware-to-ms-vm.html
Помог, когда выгруженный из VirtualBox .VHD не открывался в Hyper-V.
qemu-img-win-x64-2_3_0.zip (https://cloudbase.it/qemu-img-windows/)
& D:\temp\qemu-img\qemu-img.exe convert D:\temp\Win7x64-1.vhd -O vhdx -o subformat=dynamic D:\temp\Win7x64-1.vhdx
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
External Ethernet adapter XYZ is already bound to the Microsoft Virtual Switch protocol
Ошибка при попытке создания внешнего виртуального коммутатора.
Решение - снять в свойствах физического адаптера галку «Расширяемый виртуальный коммутатор Hyper-V» (Microsoft Virtual Switch).
После настройки в Hyper-V внешнего сетевого адаптера скорость интернета (и вообще передачи данных через адаптер) сильно просела - фактически, до нуля. В моём случае скорость была нормальная на скачивание (download), а на закачку (upload) перестало работать.
Решение: обновить драйвер. Intel Wireless AC 9560
Решение 2: в Диспетчере устройств зайти в свойства Microsoft Network Adapter multiplexor Driver и в доп. свойствах отключить опции
Powershell:
Set-NetAdapterAdvancedProperty -Name 'Сетевой мост' -RegistryKeyword '*LsoV2IPv4' -RegistryValue 0 Set-NetAdapterAdvancedProperty -Name 'Сетевой мост' -RegistryKeyword '*LsoV2IPv6' -RegistryValue 0