3.2 Configure virtual machine (VM) settings
3.2.1 Opprette virtuelle maskiner
3.2.2 Add or remove memory in a running VM
3.2.3 Configure dynamic memory
3.2.4 Configure Non-Uniform Memory Access (NUMA) support
3.2.6 Configure Resource Metering
3.2.7 Manage Integration Services
3.2.8 Create and configure Generation 1 and 2 VMs and determine appropriate usage scenarios
3.2.9 Implement enhanced session mode
3.2.10 Create Linux and FreeBSD VMs
3.2.11 Install and configure Linux Integration Services (LIS)
3.2.12 Install and configure FreeBSD Integration Services (BIS)
3.2.13 Implement Secure Boot for Windows and Linux environments
3.2.14 Move and convert VMs from previous versions of Hyper-V to Windows Server 2016 Hyper-V
3.2.16 Implement Discrete Device Assignment (DDA), Troubleshoot VM configuration versions
3.2.1 Opprette virtuelle maskiner
Man kan opprette virtuelle maskiner i Hyper-V Manager eller PowerShell.
Hyper-V Manager > Høyreklikk på host > New > Virtual Machine...
Skriv inn navn på den:
Velg mellom generasjon 1 og 2:
Velg hvor mye minne den skal ha:
Velg en virtuell svitsj den skal koble seg på:
Og spesifiser om man skal opprette en ny disk, bruke en eksisterende eller om man ikke skal legge til noen disk ennå:
Trykk videre og Finnish. Da er VMen ferdig opprettet. Man kan også opprette VMer i PowerShell:
New-VM -Name VM2 -Generation 2 -MemoryStartupBytes 2GB -NewVHDSizeBytes 60GB -SwitchName Ekstern
Man kan sette mange flere innstillinger etter en VM er opprettet med diverse kommandoer eller med Hyper-V Manager.
I Hyper-V Manager kan man se innstillinger for en VM ved å høyreklikke på den og trykke på Settings...
For å se alle PowerShell cmdlets som er tilgjengelig for Hyper-V:
Get-Command -Module Hyper-V
3.2.2 Add or remove memory in a running VM
I Windows Server 2016 kan man endre allokert minne til en VM mens den kjører, det kunne man ikke i Windows Server 2012. Hvis man har Dynamic Memory aktivert kan man også justere grensene til den.
For å endre minne med PowerShell:
Set-VMMemory -VMName Hyper -StartupBytes 4GB
3.2.3 Configure dynamic memory
For å effektivisere bruken av minne kan man konfigurere VMer med dynamisk minne. Dynamisk minne allokerer automatisk mer/mindre minne for en kjørende VM ettersom det er behov for det. Man konfigurerer et minimum og et maksimumsnivå for dynamisk minne, slik at man sikrer at VMen hverken får for lite minne eller bruker for mye minne (se bildet ovenfor). I tillegg kan man konfigurere en minnebuffer, som er en prosentandel av nåværende kjørende minne som er satt av til fremtidig ekspandering av minne. Det sikrer at minnebruken aldri går i taket og lugger før minnet rekker å utvide seg.
For å aktivere dynamisk minn må man huke av for Memory > Enable Dynamic Memory i innstillingene på VMen. I PowerShell kan man aktivere det slik:
Set-VMMemory -VMName Hyper -DynamicMemoryEnabled
Ikke alle applikasjoner er kompatibel med dynamisk minne. Exchange vil f.eks. alltid bruke alt minnet den har tilgjengelig.
Windows Server 2016 er slik at den krever mer minne under oppstart enn normalt ellers. Det betyr at man kan allokere mindre minne etter oppstart. På grunn av måten Hyper-V de-allokerer minne på kan det oppstå forskjell i hva OS og Hyper-V rapporterer av minnebruk. Da er hovedregel at det som står i Hyper-V er korrekt. For å se nåværende minne i Hyper-V sjekker man fanen Memory i Hyper-V Manager:
3.2.4 Configure Non-Uniform Memory Access (NUMA) support
Non-Uniform Memory Access (NUMA) er en systemarkitektur for å øke effektiviteten av minnet i maskiner med flere prosessorer. NUMA deler inn logiske prosessorer og minne i enheter kalt NUMA noder. En node består av en eller flere logiske prosessorer, og et minneområde i nærheten. Hver node blir skilt ut i en egen bus, og hver node bus er koblet på en felles bus slik at prosessorene har tilgang på alt minnet.
Minne i egen node kalles local memory og minne i en annen node kalles remote memory. Pga. lavere latency yter prosessorer bedre når de aksesserer local memory, og ikke remote memory. Noen applikasjoner er optimalisert til å dra nytte av NUMA arkitektur og bruke samme node om mulig. En slik applikasjon er Microsoft SQL Server.
Node spanning
Hyper-V virtualiserer NUMA hardware for VMer. Standard er at Hyper-V prøver å starte en VM ved å bruke ressursene i samme NUMA node. Er det ikke nok minne i noden vil Hyper-V benytte minne fra andre noder; det kalles NUMA spanning. Det gjør at man kan utnytte hele minnet til hosten, men kan føre til varierende ytelse ved oppstarter grunnet varierende belastning og fordeling på NUMA nodene. Hvis minne må allokeres fra forskjellige noder kan det føre til økt latency for minnet. Man kan konfigurere Hyper-V til å ikke tillate NUMA spanning: Hyper-V Manager > Hyper-V Settings...
Eller med PowerShell:
Set-VMHost -NumaSpanningEnabled $false
Merk at dette påvirker alle VMene på hosten og de blir ikke i stand til å aksessere remote memory.
NUMA topology
Når man oppretter en VM lager Hyper-V en virtuel NUMA arkitektur som speiler den fysiske NUMA arkitekturen. Det er dog mulig å justere på NUMA innstillingene for en VM. Det kan være ønskelig hvis allokert minne til en VM overskrider grensen konfigurert for NUMA (NUMA node boundary). Overskrides NUMA grensen vil det kunne redusere ytelsen til VMen med opp til 8%. Dvs. at hvis et system har NUMA noder på 8GB hver, bør ikke en VM få tildelt mer en 8GB minne for å unngå reduksjon i ytelsen.
Man kan bøte på dette ved å endre størrelsen på de virtuelle NUMA nodene, noe som vil redusere ytelsestapet (kan ikke elimineres helt da det fortsatt kan forekomme NUMA spanning på det fysiske laget).
For å konfigurere NUMA nodene på en virtuell maskin VM > Settings > Processor > NUMA
3.2.5 Configure smart paging
Smart paging er en feature i Hyper-V som lar hosten kompansere for overforbruk av minne. Hvis hosten mangler nødvendig minne for å starte en VM kan den bruke diskplass til virtuelt minne. Merk at dette kun gjelder under oppstart av en VM.
Et vanlig scenario hvor dette er nyttig er hvis man har flere VMer med dynamisk minne og hosten må ta en omstart. Hvis konfigurert slik, vil alle VMene starte samtidig. Siden VMer bruker mer minne under oppstart kan det være at man bruker opp minnet på hosten dersom det ikke var så mye å gå på i utgangspunktet.
Merk at diskplass kan være mye tregere enn faktisk minne, slik at oppstart tar lengre tid. Men når VMen har startet vil den gi slipp på det virtuelle minnet. Man kan konfigurerer hvor smart paging lagrer det virtuelle minnet: Hyper-V Manager > VM > Smart Paging File Location
Standard lokasjon er i VM mappen. Eneste grunne til å måtte ønske å flytte den er hvis man skal flytte den til en tregere/billigere lagringsplass. Hvis VMene kjører på SSD disk kan man vurdere å flytte den til en HDD disk.
3.2.6 Configure Resource Metering
Hyper-V inkluderer en feature kalt Resource metering som lar deg måle hvor mye ressurser VMer bruker. Dette er nyttig hvis man kjører en private cloud hvor man fakturerer for ressursbruk. Da kan man enten fakturere for medgått ressursbruk eller sjekke at man opprettholder vilkårene i avtalen. Man kan administrere resource metering i PowerShell:
# Aktiver resource metering for en VM
Enable-VMResourceMetering -VMName Hyper
# Sjekk målt forbruk for en VM
Measure-VM -VMName Hyper
# Tilbakestille målingen til null
Reset-VMResourceMetering -VMName Hyper
# Deaktivere resource metering for en VM
Disable-VMResourceMetering -VMName Hyper
3.2.7 Manage Integration Services
Integration Services er programvare som kjører på VMene og muliggjør kommunikasjon med Hyper-V hosten. For å konfigurere hvilke features i integration services som er aktivert kan man navigere til: Hyper-V Manager > VM > Settings > Integration Services
- Operating system shutdown: Lar administratorer skru av en VM uten å logge på den, enten i Hyper-V Manager eller med PowerShell: Stop-VM
- Time synchronization: Synkroniserer klokken på VMen med klokken på hosten. Eneste grunn til å deaktivere denne er hvis VMen kjører ADDS som er konfigurert til å synke klokken med en ekstern kilde.
- Data exchange: Også kjent som key-value pair (KVP), er en tjeneste som lar OS på VM dele informasjon med hosten ved å bruke VMBus. Det krever altså ikke nettverk til stede. I Windows er informasjonen lagret i registeret, og i Linux/UNIX er den lagret til en fil. Utviklere kan bruke WMI skript til å lagre instruksjoner eller informasjon i KVP som hosten må se.
- Heartbeat: Får VMen til å generere et signal i regelmessige intervaller som indikerer at den kjører normalt. Stopper heartbeat kan det indikere at VMen ikke er responsiv. Man kan se heartbeat status under VM > Summary (fane nederst).
- Backup (volume shadow copy): Lar administratorer ta backup av VMer med software som kjører på hosten. Backup inkluderer VM konfigurasjon, virtuelle disker og alle checkpoints. Volumene på VM må være formatert med NTFS.
- Guest services: Lar administratorer kopiere filer til og fra kjørende VMer ved å bruke VMBus i stedet for nettverk. Må gjøres med PowerShell:
Copy-VMFile -Name Hyper -SourcePath 'D:\ISO\BIGIP-12.1.3.0.0.378.iso' -DestinationPath C:\temp -FileSource Host
3.2.8 Create and configure Generation 1 and 2 VMs and determine appropriate usage scenarios
Når man oppretter en VM kan man velge mellom Generation 1 og Generation 2. Generasjon 2 er nyere og har en del fordeler over generasjon 1. Generasjon 1 er designet for å emulere hardware funnet i fysiske maskiner, og bruker drivere for spesifikke enheter til dette. Generasjon 2 VMer bruker syntetiske drivere og programvarebaserte enheter i stedet.
Fordeler med generasjon 2
- UEFI boot: I stedet for BIOS, bruker generasjon 2 UEFI, som støtter Secure Boot, som krever at systemet booter fra digitalt signerte drivere, og disker større enn 2 TB med GPT.
- SCSI disks: Generasjon 2 bruker en virtuel SCSI kontroller i kontrast til generasjon 1 som bruker IDE. SCSI er raskere, lar VMer boote fra VHDX disker, støtter opp til 64 disker per controller, og muliggjør hot swap av disker.
- PXE boot: Standard nettverksadaptere i generasjon 2 støtter Preboot Execution Environment (PXE). For å få til PXE i generasjon 1 må man bruke legacy nettverksadaptere.
- SCSI boot: Kan boote fra SCSI enheter. Kan ikke boote fra IDE eller floppy slik som generasjon 1 kan.
- Boot volume size: Kan ha opp til 64TB store boot volum
- VHDX boot volume resizing: Man kan endre størrelse på boot volume mens VMen kjører
- Software-based peripherals: Tastatur, mus og video drivere er software-baserte, ikke emulerte, som gjør at de bruker mindre ressurser og gir et sikrere miljø
- Hot network adapters: Kan legge til eller fjerne nettverksadaptere mens VM kjører
- Enhanced Session Mode: Ekstra funksjonalitet som lyd, clipboard støtte, printertilgang og USB enheter.
- Shielded virtual machines: Generasjon 2 VMer kan være shielded, slik at disk og system er kryptert
- Storage Spaces Direct: Generasjon 2 VMer som kjører Windows Server 2016 Datacenter søtter Storage Spaces Direct.
Begrensninger i Generasjon 2
Generasjon 2 VMer kan ikke kjøre følgende operativsystemer:
- Windows Server 2008
- Windows Server 2008 R2
- Windows 7
- Eldre Linux distribusjoner
- FreeBSD distribusjoner
- 32-bit operativsystemer
NB. Når en VM er opprettet går det ikke an å endre generasjon. Det finnes dog skript som omgår dette og kan konvertere en generasjon 1 VM til en generasjon 2 VM. Skriptet finner man her: https://code.msdn.microsoft.com/ConvertVMGeneration
Valg av VM generasjon
Hovedregelen bør være å bruke generasjon 2, med unntak av de situasjoner hvor det ikke er støttet eller de ikke inkluderer features som du trenger. Du bør velge en generasjon 1 dersom:
- Du vil boote med BIOS
- Du har en eksisterende VHD som ikke støtter UEFI
- Du vil installere et guest OS som ikke støtter generasjon 2
- Du planlegger å migrere VM til en Hyper-V 2008 R2 host (eller annen Hyper-V versjon som ikke støtter det)
- Du planlegger å migrere VM til Windows Azure
3.2.9 Implement enhanced session mode
Hyper-V bruker verktøyet Virtual Machine Connection (VMConnect) til å koble til en kjørende VM og aksessere skrivebordet på den. Man kan også kjøre VMConnect utenom Hyper-V Manager ved å kjøre VMConnect.exe.
Enhanced Session Mode er en Hyper-V feature som lar en VM få tilgang til hostens ressurser gjennom VMConnect. F.eks. sende utskriftsjobb til en printer på hostens nettverk, logge inn med å bruke en smart card reader, dele utklippstavle/clipboard, spille av eller ta opp lyd, justere skjermoppløsningen, eller aksessere diskene til hosten.
For å kjøre med enhanced session mode må operativsystemet på host være:
- Windows Server 2012 eller nyere
- Windows 8 eller nyere
VM må være generasjon 2 og OS på VM må være:
- Windows Server 2012 eller nyere
- Windows 8.1 eller nyere
Enhanced Session Mode er deaktivert som standard. For å aktivere det må man navigere til Hyper-V Manager > Hyper-V Settings > Enhanced Session Mode og huke av for Allow enhanced session mode.
I tillegg må man huke av for Use Enhanced Session Mode under User: Enhanced Session Mode.
Når man så starter en VM får man opp en ekstra boks, hvor man kan justere skjermoppløsningen:
Trykker man på Show Options kan man velge å konfigurere lyd, printer og clipboard. Man kan i tillegg lagre innstillingene.
3.2.10 Create Linux and FreeBSD VMs
Windows Server 2016 Hyper-V støtter mange Linux distribusjoner eller FreeBSD som OS i VMer. Installasjonsrutine og ytelse varierer med distribusjoner. I noen tilfeller må man gjøre tilpassninger i VM Settings, men i de fleste tilfeller går standard oppsett fint.
Først må man sjekke om operativsystemet man ønsker å bruke er støttet. Microsoft har annonsert støtte for flere Linux distribusjoner, som CentOS, Red Hat, Debian, Oracle, SUSE og Ubuntu, i tillegg til FreeBSD. Disse distribusjonene kommer i ulike versjoner, så pass på at du velger en versjon som er støttet, og som støtter Hyper-V funksjoner du trenger.
Mer informasjon om hva som er støttet finner man her: https://docs.microsoft.com/nb-no/windows-server/virtualization/hyper-v/Supported-Linux-and-FreeBSD-virtual-machines-for-Hyper-V-on-Windows
Opprette VMer
Enkelte nyere Linux utgivelser støtter generasjon 2, men de fleste gjør ikke det. For de som støtter generasjon 2 må man verifisere at de støtter Secure Boot. F.eks. er Ubuntu supportertsom en Hyper-V guest, men man bør vurdere følgende:
- For generasjon 1 bør man ikke bruke legacy nettverksadaptere, trenger man PXE bør man bruke generasjon 2
- Ubuntu kan kjøre på en generasjon 2 VM, men for å bruke Secure Boot må man velge Microsoft UEFI Certificate Authority template under Hyper-V Settings > Security.
- Mange Linux filsystemer bruker unaturlig mye diskplass på grunn av at Hyper-V oppretter VHDX disker med standard blokkstørrelse på 32MB. For å konservere lagringsplass kan man velge en mer passende blokkstørrelse:
New-VHD -Path D:\Hyper-V\VHD\Ubuntu.vhdx -SizeBytes 20GB -BlockSizeBytes 1MB
- GRUB boot loader i Ubuntu har en tendens til å time ut når man restarter en VM rett etter installasjon. For å forhindre dette bør man endre GRUB TIMEOUT til 100000 i /etc/default/grub
Installere guest OS
FreeBSD og de fleste av de supporterte Linux distribusjonene er tilgjengelig for nedlastning i forskjellige former. Mange har bootable ISO fil som man kan montere i DVD stasjonen på VMen for å installere OS.
3.2.11 Install and configure Linux Integration Services (LIS)
Hyper-V guests kjører en samling med drivere som kalles Integration Services. Det finnes egne implementeringer for Linux kalt Linux Integration Services (LIS). De fleste nyere Linux distribusjoner har LIS innebygd i operativsystemet (built-in implementation). Grunnet Linux utviklingen sin naturer er det ikke sikkert at alle nye versjoner av distribusjoner har inkludert nyeste LIS, men det er mulig å laste ned nyeste versjon av LIS som en pakke fra Microsoft Download Center. Man har tre valg:
- Gjør ingenting: I eldre Linux versjoner som ikke inkluderer LIS kan man installere OS som en guest med emulerte drivere for virtualisert hardware. Det er imidlertid ikke sikkert det støtter alle Hyper-V features eller yter like bra som Hyper-V spesifikke drivere i LIS pakken.
- Last ned og installer LIS: Hvis LIS mangler, vil det å installere LIS gi bedre ytelse og administrasjonsmuligheter. I distribusjoner som CentOS og Oracle, har man valg mellom å bruke built-in LIS eller laste ned og installere. Som regel er det best å laste ned, da nedlastet versjon ofte støtter features som den innebygde ikke gjør.
- Bruk built-in LIS: I noen distribusjoner er nyeste LIS fult implementert og det er eksplisitt ikke anbefalt å laste ned LIS.
LIS kan lastes ned som en gzipped tar fil eller en ISO image fil.
3.2.12 Install and configure FreeBSD Integration Services (BIS)
Hyper-V guests kjører en samling med drivere som kalles Integration Services. Det finnes egne implementeringer for FreeBSD kalt FreeBSD Integration Services (BIS). Siden versjon 10 har FreeBSD inkludert full støtte for BIS inkludert i operativsystemet. Ønsker man å kjøre versjon 9 eller tidligere kan man laste ned emulator som kan gi BIS funksjonalitet:
3.2.13 Implement Secure Boot for Windows and Linux environments
Generasjon 2 VMer støtter Secure Boot som en del av UEFI implementasjonen. Den er ansvarlig for å verifisere at firmware, bootloader og andre komponenter kommer fra kilder man stoler på. Det er viktig da tradisjonell anti-virus ikke kan fange opp ondsinnet kode i bootloader eller firmware. UEFI bruker verifiserte sertifikater for OS og en plattformnøkkel fra produsent for å sikre at uautorisert kode ikke blir lastet under boot prosessen.
Windows og Secure Boot
Når man oppretter en VM er det Microsoft som er produsent av maskinen og UEFI firmware inkluderer sertifikat for Windows bootloaders. Det betyr at Windows kan boote på VMen fordi man har en sertifikatkjede man stoler på. Prøver man å boote fra et ikke-Windows OS vil systemet bare gå videre og prøve å boote fra neste enheten i boot rekkefølgen.
Secure Boot er aktivert som standard i generasjon 2 VMer. For å deaktivere det: Hyper-V Manager > VM > Settings > Security > Enable Secure Boot (huk vekk)
Med PowerShell:
Set-VMFirmware -VMName Hyper -EnableSecureBoot $false
Linux og Secure Boot
Når man installerer en Linux distribusjon på en generasjon 2 VM har ikke UEFI noen sertifikater for ikke-Windows OS som standard, så den kan ikke kjøre Linux bootloader. En måte å løse dette på, som noen Linux distribusjoner støtter, er å inkludere sertifikater for deres bootloader. Dette ligger i en egen template kalt Microsoft UEFI Certificate Authority som man kan konfigurere VM til å bruke: Hyper-V Manager > VM > Settings > Security > Template: Microsoft UEFI Certificate Authority
Med PowerShell:
Set-VMFirmware -VMName Hyper -SecureBootTemplate MicrosoftUEFICertificateAuthority
3.2.14 Move and convert VMs from previous versions of Hyper-V to Windows Server 2016 Hyper-V
Hver generasjon av Hyper-V oppretter VMer med en spesifikk versjon, som indikerer hvilke features som er tilgjengelig på VMen. Hyper-V i Windows Server 2016 oppretter VMer med versjon 8, mens Windows Server 2012 R2 oppretter VMer av versjon 5. Hvisman oppgraderer Hyper-V fra en tidligere versjon bør man vurdere og oppgradere VMene også. I tidligere utgaver ble VMene også automatisk oppgradert ved oppgradering av Hyper-V, dette skjer ikke lengre i Windows Server 2016. VMer som ikke er oppgradert kan fint kjøre på Hyper-V i Windows Server 2016, men de vil ikke ha alt av features tilgjengelig.
Grunnen til at det ikke skjer automatisk lengre er at Windows Server 2016 støtter migrering av VMer til hoster med andre versjoner av Hyper-V. Det betyr at når man oppgraderer en VM så vil den miste kompabilitet med Windows Server 2012 R2. Man kan se versjon på en VM her: Hyper-V Manager > VM > Summary tab
Eller med PowerShell:
For å migrere en VM kan man eksportere den fra en host og importere den på en annen. For å se hvilke versjoner som støttes på en Hyper-V host kan man bruke PowerShell:
Get-VMHostSupportedVersion
For å oppgradere en VM: Hyper-V Manager > VM > Actions > Upgrade Configuration
Med PowerShell:
Update-VMVersion -VMName OldVM1, OldVM2
3.2.15 Export and import VMs
Man kan eksportere en VM med å angi en mappe hvor alle filer for VMen lagres, inkludert konfigurasjonsfiler, virtuelle disker, og checkpoints. Man kan eksportere VMer både når de er stoppet og når de kjører. For å eksportere en VM: Hyper-V Manager > VM > Høyreklikk og velg Export...
Oppgir så hvor den skal eksporteres:
Når den er ferdig kan man se alle filene som ble eksportert:
For å importere en VM: Hyper-V Manager > Host > Import Virtual Machine...
Velg mappen med den eksporterte VMen:
Velg VM som skal importeres:
Og velg hvordan importen skal utføres:
- Register The Virtual Machine In Place: Oppretter VM uten å flytte på filene til VMen, oppretter VM med samme ID den hadde når den ble eksportert.
- Restore The Virtual Machine: Kopierer de eksporterte filene til standard lokasjon, og bruker samme ID som da den ble eksportert. Etter importen kan man slette eksporteringsfilene.
- Copy The Virtual Machine: Kopierer de eksporterte filene til standard lokasjon, og oppretter VM med en ny ID.
Merk at to VMer med samme ID kan ikke kjøre samtidig.
For å eksportere og importere i PowerShell:
# Eksportere en VM
Export-VM -Name RTR -Path D:\Export
# Importere en VM
# For å importere VM til en annen lokasjon kan man oppgi:
# [-VirtualMachinePath | -VhdDestinationPath | -SnapshotFilePath | -SmartPagingFilePath ]
Import-VM -Path 'D:\Export\RTR\Virtual Machines\B25EAF8A-A603-419D-B579-46EE3300559F.vmcx' [-Register | -Copy | -GenerateNewId]
Når man importerer en VM på en annen server kan det være kompabilitetsproblemer. F.eks. kan man bli bedt om å velge ny svitsj hvis navnet på virtuell svitsj på denne hosten er noe annet. Man kan sjekke inkompabilitet med kommandoen Compare-VM. Denne kommandoen bruker eksakt samme parametre som Import-VM.
3.2.16 Implement Discrete Device Assignment (DDA), Troubleshoot VM configuration versions
Med Hyper-V har man lenge kunne gi en VM tilgang til å aksessere en fysisk disk direkte, ikke via en VHD. Med Discrete Device Assignment (DDA) kan man imidlertid gi en VM tilgang til hvilken som helst PCI Express enhet på hosten. Man kan f.eks. bruke DDA til å tildele et fysisk grafikk kort til en VM, eller et trådløst nettverkskort for å gi VMen Wi-Fi. Man kan kun konfigurere DDA i PowerShell. Det sikrer at kun viderekomne administratorer kan ta det i bruk. Det er en god ide, da enhver direkte forbindelse mellom host og guest anses som en sikkerhetsrisiko. En kompromittert VM har da mulighet til å ta ned hele hosten med en feil på PCI Express bussen.
Man kan tildele en VM en fysisk enhet med PowerShell slik:
# List ut alle tilgjengelige enheter
Get-PnpDevice -PresentOnly
# Finn ID på en enhet
$ID = "PCI\VEN_8086&DEV_10D3&SUBSYS_A01F8086&REV_00\4&97BCED&0&00E1"
# Deaktiver enheten på hosten
Disable-PnpDevice -InstanceId $ID -Confirm:$false
# Finn LocationPath
Get-PnpDeviceProperty -InstanceId $ID -KeyName "DEVPKEY_Device_LocationPaths" | Select -ExpandProperty Data
$LocationPath = "PCIROOT(0)#PCI(1C01)#PCI(0000)"
# Avmonter enheten på hosten
Dismount-VMHostAssignableDevice -LocationPath $LocationPath
# Monter enheten på VMen
Add-VMAssignableDevice -VMName Hyper -LocationPath $LocationPath
Før man kjører Add-VMAssignableDevice må man endre VM innstillingene:
- Automatic Stop Action: Turn off the virtual machine
- Dynamic memory: Startup RAM og minimum RAM må være like
I tillegg er det en del krav BIOS/UEFI og enheten på hosten må møte før man får tildelt en enhet til en VM. Det går riktignok an å ignorere pre-requisites med å bruke Dismount-VmHostAssignableDevice -Force, men det er ikke anbefalt og man bør utvise stor forsiktighet om man gjør det.