Showing posts with label Hyper-V. Show all posts
Showing posts with label Hyper-V. Show all posts

Friday, December 23, 2016

Error 0xE0000100 when installing Server 2016 in a virtual machine

Today I ran into an issue while creating a new VM on a Windows Server 2016 Hyper-V host. The VM will run Server 2016 as well but throws an error message when Windows Setup loads:

image

Windows installation encountered an unexpected error. Verify that the installation sources are accessible, and restart the installation.
Error code: 0xE0000100"

I downloaded a fresh copy of the ISO, deleted and recreated the VM, rebooted but was not able to get rid of this error message. While researching I stumbled on this article: Windows Server 2012 R2 setup may fail on a virtual machine that is configured to use the minimum required memory

This article explains that this error message indicates insufficient memory. Although I assigned 1024 MB and not 512 MB I decided to add some more memory to the VM configuration.

image

To no avail, the same error occurred when I retried. Knowing now that this error indicates a low memory condition I decided to set the amount of RAM back to 1024 and disabled Dynamic Memory.  Started the VM and to my surprise, Windows Setup started and allowed me to install Windows Server 2016 on this VM. image

At this moment I’m not sure why this happened. The Hyper-V documentation for Server 2012 R2 states that in this situation, a cold boot without an OS installed, the VM should have the Startup RAM amount available. This was initially 1024 and later 1500 MB, more than the 512 MB that Windows Setup requires.

When installing or upgrading the operating system of a virtual machine, the amount of memory that is available to the virtual machine during the installation and upgrade process is the value specified as Startup RAM. Even if Dynamic Memory has been configured for the virtual machine, the virtual machine only uses the amount of memory as configured in the Startup RAM setting. Ensure the Startup-RAM value meets the minimum memory requirements of the operating system during the install or upgrade procedure.

However, in my Dynamic Memory enabled VM I had little bit less than 512 MB available.

image

Hint: Pressing shift-F10 during Windows Setup opens a command prompt, allowing you access to tools such as diskpart, chkdsk and copy. Or in this case, allowed me to query WMI.

Now in this specific situation all memory of the VM host was assigned to running VMs. Because a restarting VM requires more than the minimum configured amount of memory during boot the Hyper-V hosts uses a disk-based paging feature called Smart Paging. However, Smart Paging does not work in a cold boot situation where the VM was powered off before booting the VM.

So when these requirements are met:

  • VM with Dynamic Memory enabled
  • All host memory assigned to running VMs
  • Cold VM boot to install an operating system

The Hyper-V host is not able to make the Startup RAM amount of memory available and the VM sees the Minimum RAM amount. In this case this was 512 MB which triggered the low memory condition described in the KB article I mentioned earlier.

After freeing up some resources from this host the VM was booted again, now it showed the expected 1024 MB of memory available.

image

Server 2012 R2 or 2016?

Note that the KB article applies to Server 2012 R2 and I used the Server 2012 R2 Hyper-V documentation to learn more about memory management. From my reading there is no difference in behavior between Server 2012 R2 and Server 2016.

For reference, read:

Tuesday, February 10, 2015

Hyper-V home lab? Deduplication is awesome!

Data deduplication is a Windows feature since Server 2012. Deduplication identifies identical chunks of data, stores a single copy and replaces the remaining copies with a pointer to this copy. Just as with compression, the maximum deduplication rate depends on your data. If every single file is 100% unique and shares no duplicates with other files, then there's not much to deduplicate. However, what if your files are VHDX files and every file contains the same Windows operating system files?

In Server 2012 R2 the Data Deduplication features were improved and deduplication of virtual machine files is now supported. Several limitations apply, for instance this is only supported with VDI workload and the server you enable deduplication on cannot be the Hyper-V server itself. The reason for that is that the actual process of deduplication, which runs as a scheduled task, requires quite a bit of resources and we don't want the performance of the VM's running on the server to be effected.

Microsoft claims that storage savings up to 95% can be achieved.

That's very interesting for business purposes but for my home lab too. My two Hyper-V servers have limited storage capacity and I have to remove unused files now and then to free up disk space. The workload is not VDI and the storage is on the local server so my configuration is not supported. Which is a risk I'm willing to take for my home lab.

A couple of days ago I enabled deduplication on the local data volume of the servers and used the Hyper-V usagetype to enable low-level optimizations for the deduplication of running Hyper-V images. First I had to install the Windows feature:

Add-WindowsFeature FS-Data-Deduplication
Enable-DedupVolume D: -UsageType HyperV

Enabling deduplication added three scheduled tasks under \Microsoft\Windows\Deduplication:

image

The tasks call ddcpicli.exe with various parameters, the Optimization task runs once a day. Ddcpicli.exe is not meant for manual usage, for that we have Get-DedupJob, Start-DedupJob and Stop-DedupJob.

I was patient and checked the result after some days with Get-DedupStatus:

image

After reviewing the full output I noticed that deduplication achieved a whopping 49% savings rate, even 52% on my second server!

So bear in mind, unless you're deduplicating VDI VM files on a remote Server 2012 R2 fileserver you're unsupported. If that's not a problem for your lab, try it for yourself. Before you do, make sure you've read the following articles:

What's New in Data Deduplication in Windows Server

Deploying Data Deduplication for VDI storage in Windows Server 2012 R2

Thursday, June 28, 2012

Server 2012 Hyper-V gebruiken in VMware Workstation

Windows Server 2012 is de nieuwste versie van Microsofts serverbesturingssysteem. Windows Server 2012 is veel meer dan alleen de nieuwste versie, het is misschien wel de eerste versie sinds Windows 2000 Server die zoveel nieuws brengt dat het niet de vraag is óf je gaat upgraden, maar wanneer. Naar verwachting wordt Windows Server 2012 later dit jaar uitgebracht maar je kunt de Windows Server 2012 Release Candidate (RC) nu al downloaden en uitproberen.

Eén van de gebieden waar veel ontwikkeling zit is Hyper-V en ik kan me voorstellen dat veel mensen de nieuwe mogelijkheden willen verkennen in een lab, bijvoorbeeld in VMware Workstation 8. In dit artikel beschrijf ik op welke manier je Hyper-V kunt gebruiken in een VM op VMware Workstation.

Het probleem

Wanneer je Hyper-V wilt inschakelen in een VM kun je tegen de volgende foutmelding aanlopen:

image

Install-WindowsFeature : A prerequisite check for the Hyper-V feature failed.
1. Hyper-V cannot be installed: A hypervisor is already running.

De oorzaak is dat we al in een hypervisor werken, namelijk in VMware Workstation.

De oplossing

Hyper-V is een hypervisor die hardware-asisted virtualisatie vereist, dat wil zeggen dat Hyper-V niet kan werken zonder dat het AMD-V of Intel-VT kan gebruiken. Daarom moeten we VMware Workstation vertellen dat het de nodige CPU features beschikbaar maakt voor onze VM. Ten eerste schakelen we Intel VT aan in de eigenschappen van de virtuele cpu:

image

De tweede aanpassing doen we in het configuratiebestand <naam VM>.vmx, deze vinden we in de werkdirectory waar de bestanden van deze VM staan. Wanneer je die lokatie niet kent kun je deze vinden op het tabblad Options van de VM eigenschappen:

image

In deze directory openen we het .vmx bestand met een text editor. In dit bestand voegen we de volgende regel toe: hypervisor.cpuid.v0 = "FALSE"

image

De exacte plek in het bestand maakt niet uit, de regel mag gewoon onderaan toegevoegd worden. Uiteraard slaan we het bestand op na het toevoegen van deze regel.

Hyper-V inschakelen

We kunnen onze VM nu starten en Hyper-V installeren via Server Manager of in PowerShell. Omdat ik op een server werk zonder GUI start ik PowerShell, in tegenstelling tot oudere versies zijn de verschillende modules al geladen dus kan ik direct het Install-WindowsFeature cmdlet gebruiken.

image

We zien dat we de Hyper-V role nu succesvol hebben ingeschakeld op een virtual machine in VMware Workstation 8.

En Hyper-V in Windows 8 dan?

Het zelfde verhaal geldt ook voor het inschakelen van Hyper-V in een VM met Windows 8, waarvan de Release Preview inmiddels beschikbaar is. Met die aantekening dat er nog een tweede regel benodigd is in het .vmx bestand: mce.enable = "TRUE".

Tot besluit

Ik hoop dat dit artikel je helpt om Hyper-V te gebruiken in een VM op VMware Workstation 8. Meer informatie over Hyper-V in de Windows Server 2012 Release Candidate kun je hier vinden: http://www.microsoft.com/en-us/server-cloud/windows-server/2012-overview.aspx Veel plezier gewenst!

Sunday, February 19, 2012

Howto: CentOS 6.2 virtual machine onder Hyper-V

Hoewel de voordelen van een homogene serveromgeving enorm zijn, komen we ook in de Microsoft-wereld allerlei ‘vreemde eenden’ tegen. Gelukkig hebben de meeste fabrikanten van besturingssystemen ingezien dat we beter samen kunnen leven dan elkaar proberen te bestrijden. Dit geldt ook voor Microsoft en de Linux gemeenschap. Bij beide kanten zien we dat er steeds meer nadruk gelegd wordt op compatibiliteit en interoperabiliteit. Een goed voorbeeld is de ondersteuning van Linux virtual machines op Hyper-V hosts, hiervoor heeft Microsoft speciale Linux-versies van de Hyper-V Integration Services beschikbaar gemaakt.

Die Integration Services zijn zorgen er voor dat de VM betere performance haalt door goede driverondersteuning, maar maakt ook communicatie tussen de VM en de hypervisor mogelijk. Zo kan de hypervisor de heartbeat van de VM volgen, de klok synchroniseren of hem op een nette manier afsluiten vanuit de Hyper-V managment console of VMM.

De Linux-kernel met alle bijbehorende software vinden we terug in honderden verschillende distributies. Voor dit artikel heb ik gekozen voor CentOS. CentOS is een distributie voor serversystemen en is gebaseerd op het commerciële pakket Red Hat Enterprise Linux (RHEL). De huidige versie van CentOS is 6.2 en deze versie gebruik ik ook voor dit artikel. Officieel worden op dit moment alleen nog versies 6.0 en 6.1 ondersteund maar voor dit artikel maakt dat geen verschil. Meer informatie over ondersteunde Virtual Machine besturingssystemen vind je op deze pagina.

Verder ga ik voor dit artikel uit van een minimale server waaraan we alleen componenten toevoegen wanneer we die echt nodig hebben. Deze werkwijze beveel ik ook aan voor wanneer je een Linux server in wilt zetten voor een specifiek doel.

Benodigdheden

Voordat we kunnen starten hebben we het volgende nodig:

  • CentOS 6.2 installatie-cd (ISO)
  • Hyper-V Linux Integration Services 3.2 (ISO)

De CentOS binaries zijn beschikbaar via allerlei HTTP en FTP mirrorservers en via het Torrent P2P netwerk. De mirrorlijst voor Nederland vind je hier. Voor dit artikel gebruiken we het volgende bestand: CentOS-6.2-x86_64-minimal.iso. Dit bestand is 322 MB groot en bevat precies voldoende om een basic server uit te rollen, extra componenten kunnen we later eenvoudig toevoegen over een internetverbinding.

De Linux Integration Services zijn er in twee versies:

  • Versie 3.2 voor RHEL 6.x en CentOS 6.x
  • Versie 2.1 voor RHEL 5.x, CentOS 5.x en SUSE linux Enterprise Server 10/11

Voor CentOS 6.x voegen de Integration Services de volgende functionaliteit aan de VM toe: drivers voor IDE, SCSI, netwerk en muis en ondersteuning voor tijdsynchronisatie, OS shutdown en heartbeat.

In ons geval downloaden we dus versie 3.2 en slaan de ISO op.

Aanmaken van de Virtual Machine

We maken voor deze server een VM aan zoals we dat normaal gesproken ook doen. Er zijn een paar zaken om rekening mee te houden:

  • 1024 MB geheugen. Minder mag maar bij minder dan 652 MB verloopt de installatie text-based in plaats van grafisch.
  • 10 GB disk. Een minimale CentOS 6 installatie kan met veel minder toe, maar we houden rekening met extra capaciteit voor de applicaties.
  • Synthetic network adapter. Na de installatie heeft CentOS nog geen driverondersteuning maar dat lossen we op met de Hyper-V IC. Het is niet nodig om eerst een Legacy adapter toe te voegen, dit maakt het configureren van de synthetic network adapter in CentOS alleen maar ingewikkelder.

Installatie CentOS

Wanneer we de gedownloade CentOS ISO moeten en de VM starten doorlopen we de grafische CentOS installatieprocedure. Deze zal ik scherm voor scherm behandelen:

image

Druk op Enter of wacht om de installatie te starten.

image

We gaan er vanuit dat de ISO tijdens het downloaden niet corrupt is geraakt dus kiezen Skip. Mocht je de ISO toch willen testen, denk er dan aan dat deze procedure vooral bedoeld is voor CD’s en DVD’s en dat de installer na het testen de tray opent om de volgende disk in te leggen. Voor ons Hyper-V gebruikers betekent dit dus dat je de ISO even opnieuw moet mounten om verder te kunnen.

image

Klik op Next om verder te gaan. Wanneer je in een RDP-sessie werkt dan kun je de muis niet gebruiken, gebruik dan tab en F12 (volgende scherm) of F11 (vorige scherm).

image

Klik op Next of druk F12.

image

Kies U.S. International en klik op Next of druk F12.

image

In dit artikel gebruiken we alleen de VHD dus accepteren we de default waarde.

image

Kies Yes, discard any data.

image

Geef de FQDN van de server.

image

Kies de juiste tijdzone.

image

Geef het root-wachtwoord in, dit account is vergelijkbaar met het standaard Administrator account.

image

Aangezien we een lege VHD hebben zullen de bovenste twee opties het zelfde resultaat geven.

image

Nu de installer de nieuwe partitionering voorbereid heeft krijgen we nog een laatste waarschuwing voordat deze naar disk weggeschreven wordt. Kies Write changes to disk.

image

De daadwerkelijke installatie wordt nu gestart. De benodigde componenten en software wordt in de vorm van packages naar disk geschreven. Omdat we gekozen hebben voor een minimale installatie zal dit slechts een paar minuten duren.

image

De installatie van CentOS is nu klaar. Klik Reboot of druk F12 om de server opnieuw op te starten.

Configuratie Integration Services en netwerk

Het eerste deel zit er op, we hebben nu een VM voorzien van CentOS 6.2. De volgende stap is het installeren van de drivers en services voor Hyper-V, waaronder een driver voor de synthetic network adapter. Dit doen we in het volgende deel van dit artikel. Om te beginnen mounten we de Linux Hyper-V IC ISO aan de VM:

image

We loggen de eerste keer in met root, dit is de enige gebruiker op ons systeem. Vervolgens koppelen we de DVD aan een lokale directory en navigeren naar deze directory.

image

mount /dev/cdrom /media
cd /media
ls –l

In deze directory vinden we een aantal .rpm installatiepakketten voor onder andere x86 en x64 platformen en een uitvoerbaar script. Om de juiste componenten te installeren hoeven we alleen het shellscript install.sh maar te starten.

image

./install.sh
reboot

Na de installatie herstarten we de server met het reboot commando en loggen we opnieuw in als root. Omdat onze server tijdens de installatie niet voorzien was van een werkende netwerkadapter is het netwerk niet juist geconfigureerd. Als eerste maken we het network configuratie-bestand aan met de editor vi:

vi /etc/sysconfig/network

Druk i om naar edit-mode te gaan en type:

NETWORKING=yes

Druk op ESC om uit de edit-mode te gaan en type:

:qw

…gevolgd door een druk op Enter. Het bestand is nu opgeslagen en we hebben de editor vi weer verlaten. De volgende stap is om een configuratiebestand voor onze NIC aan te maken, dit bestand heet ifcfg-eth0.

vi /etc/sysconfig/network-scripts/ifcfg-eth0

Druk i om naar edit-mode te gaan en type:

NAME=eth0
HWADDR="00:15:5D:02:FA:1D"
DEVICE="eth0"
ONBOOT=yes
BOOTPROTO="static"
IPADDR=192.168.2.98
NETMASK=255.255.255.0
DNS1=192.168.2.81
GATEWAY=192.168.2.1

Of voor DHCP:

NAME=eth0
HWADDR="00:15:5D:02:FA:1D"
DEVICE="eth0"
ONBOOT=yes
BOOTPROTO="dhcp"

Druk op ESC om uit de edit-mode te gaan en type:

:qw

…gevolgd door een druk op Enter. Het bestand is nu opgeslagen en we hebben de editor vi weer verlaten. Let op: gebruik niet bovenstaande MAC adres maar het echte MAC adres van je synthetic network adapter. Je kunt deze vinden in de instellingen van je VM:

image

Het aanmaken van deze twee configuratiebestanden is hiermee afgerond. Om de configuratie actief te maken moeten we de network service opnieuw starten waarna we de status van de intergaces kunnen opvragen met ifconfig.

image

service network restart
ifconfig

Zoals we in bovenstaand screenshot kunnen zien is onze interface eth0 actief geworden en heeft hij met succes DHCP gegevens opgepikt. We kunnen de werking nu testen met basic netwerktests als ping en tracrt maar ook door het systeem op internet te laten zoeken naar de laatste updates.

image

yum update

Hoe nu verder?

Tot op dit moment hebben we steeds als root gewerkt en net als onder Windows is het best practice om je dagelijkse werkzaamheden als gewone gebruiker uit te voeren. Daarom maken we eerst een gebruiker aan:

image

adduser gebruikersnaam
passwd gebruikersnaam

Wanneer we nu met deze gebruiker inloggen op de server dan zien we dat voor bepaalde werkzaamheden root-toegang vereist is. Wanneer dat nodig is kunnen we met het su commando tijdelijk onder het root-account werken.

image

We zien hier dat het onder mijn normale account niet mogelijk is om software te installeren. Wanneer ik met su tijdelijk als root werk lukt het wel om de installatie van vim te starten.

Een andere voor de hand liggende stap is om niet langer op de console te blijven werken maar om een SSH sessie op te zetten met een client als bijvoorbeeld Putty.

Samenvattend…

In dit artikel hebben we gezien hoe we een Virtual Machine kunnen voorzien van CentOS Linux. We hebben de Linux Integration Services geïnstalleerd zodat de synthetic network adapter ondersteund werd en we de basic netwerkinstellingen door konden voeren. Het feit dat networking niet out-of-the-box werkt maakt het werken met een CentOS Hyper-V guest wat omslachtiger, maar zeker niet onmogelijk.

Wednesday, September 14, 2011

Windows 8 Preview op VMware Workstation of ESX? No can do, sir.

Wie probeert om de Windows Developer Preview, ofwel Windows 8, te installeren op VMware Workstation 7, VMware Player, VMware ESXi of Microsoft Virtual PC ontdekt als snel dat dit niet gaat werken. Onder andere de volgende foutmeldingen komen voor:

*** VMware Player internal monitor error ***
vcpu-0:NOT_IMPLEMENTED vmcore/vmm/intr/apic.c:1903

HAL_INITIALIZATION_FAILED

De reden is dat Windows 8 een aantal ACPI 2.0 feature gebruikt welke niet beschikbaar zijn in deze producten. Wel werkt het prima in VMware Workstation 8, Fusion 4 of in de gratis producten Hyper-V en VirtualBox.

Monday, March 14, 2011

Exchange 2010 en Dynamic Memory

Dynamic Memory is een nieuwe feature van Hyper-V, nieuw sinds Service Pack 1 voor Windows Server 2008 R2. Dynamic Memory zorgt er voor dat je een virtuele machine een kleinere hoeveelheid startgeheugen kunt geven, waarna Hyper-V er voor zorgt dat een VM die het nodig heeft wat meer geheugen toegewezen krijgt. Door het beheer verder aan Hyper-V over te laten kan het geheugen efficiënter verdeeld worden waardoor je meer VM’s op de server kunt draaien.

Klinkt goed, of niet? Als je het aan mij vraagt wel, ik zie dat het voor veel workloads mogelijk is om (veel) minder geheugen te gebruiken. Maar werkt het ook voor Exchange? Het werkt wel, al zul je bij de mailbox rol al snel zien dat hij graag de maximale hoeveelheid geheugen zal willen gebruiken om gegevens in te cachen. Maar belangrijker is dat het niet aanbevolen wordt door Microsoft. Zie voor meer informatie de Exchange 2010 System Requirements onder het kopje Hardware Virtualization:

Exchange Server Memory Requirements and Recommendations

Some hypervisors have the ability to oversubscribe or dynamically adjust the amount of memory available to a specific guest machine based on the perceived utilization of memory in the guest machine as compared to the needs of other guest machines managed by the same hypervisor. This technology makes sense for workloads in which memory is needed for brief periods of time and then can be surrendered for other uses. However, it doesn't make sense for workloads that are designed to use memory on an ongoing basis. Exchange, like many server applications with optimizations for performance that involve caching of data in memory, is susceptible to poor system performance and an unacceptable client experience if it doesn't have full control over the memory allocated to the physical or virtual machine on which it is running.

Many of the performance gains in recent versions of Exchange, especially those related to reduction in I/O, are based on highly efficient usage of large amounts of memory. When that memory is no longer available, the expected performance of the system can't be achieved. For this reason, memory oversubscription or dynamic adjustment of virtual machine memory should be disabled for production Exchange servers.

En passant wordt ook nog even ‘die andere hypervisor’ aangestipt, ook VMware heeft een aantal technieken in huis om geheugen weg te halen bij VM’s die het even niet nodig heeft. Ook die moet je dus niet inschakelen voor een VM met Exchange Server.