Hyper-V

Hyper-V, codenamed Viridian and formerly known as Windows Server Virtualization, is a native hypervisor that enables platform virtualization on x86-64 systems. A beta version of Hyper-V was shipped with certain x86-64 editions of Windows Server 2008, and a finalized version (automatically updated through Windows Update) was released on June 26, 2008. Hyper-V has since been released in a free stand-alone version, and has been upgraded to Release 2 (R2) status. It was updated in Windows Server 2012. A host server with Hyper-V capability could be accessed remotely by multiple guest computers. Each guest computer could perform as if they are using the host server directly. Users on the guest computers could run applications in the host server remotely, from his computer, even though that application is not available on the guest computer.

Versions and variants
Hyper-V exists in two variants:
 * 1) As a stand-alone product called Hyper-V Server: Four major versions have so far been released: Hyper-V Server 2012 R2 (containing the current release of Hyper-V), Hyper-V Server 2012, Hyper-V Server 2008 R2 and Hyper-V Server 2008.
 * 2) As an installable role in Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2, Windows Server 2008 and the x64 edition of Windows 8 Pro.

The stand-alone versions of Hyper-V are free. Hyper-V Server 2008 was released on October 1, 2008. It is a variant of the core installation of Windows Server 2008 that includes full Hyper-V functionality; other Windows Server 2008 roles are disabled, and there are limited Windows Services. The free Hyper-V Server 2008 variant is limited to a command-line interface (CLI), where configuration of the "Host" or "Parent" (Hyper-V Server 2008) OS, physical hardware and software is done using shell commands. A new menu driven CLI interface does simplify initial configuration considerably, and some freely downloadable script files extend this concept. Administration and configuration of the "Host" (Hyper-V Server 2008 OS) and the "guest" or virtual OSes is generally done by downloading extended Microsoft Management Consoles that are installed onto a Windows 7 PC or Windows 2008 Server (32 or 64 bit) or System Center Virtual Machine.

Alternatively, another Windows Server 2012 (or 2008) computer, with the Hyper-V role installed, can be used to manage Hyper-V Server 2012 (or 2008) by redirecting the management console. Other administration and configuration of Hyper-V Server 2008 can be done using a Remote Desktop RDP session (though still CLI) or redirected standard management consoles (MMC) such as "Computer Management" and "Group Policy (Local)" from a Windows Vista PC or a full installation of Windows Server 2008. This allows much easier "point and click" configuration, and monitoring of the Hyper-V Server 2008. Hyper-V Server 2008 Release 2 (R2) was made available in September 2009, its main feature being the inclusion of Windows PowerShell v2 for greater CLI control, and the updated Windows Server 2008 R2 code base.

Architecture
Hyper-V implements isolation of virtual machines in terms of a partition. A partition is a logical unit of isolation, supported by the hypervisor, in which each guest operating system executes. A hypervisor instance has to have at least one parent partition, running a supported version of Windows Server (2008, 2008 R2, or 2012). The virtualization stack runs in the parent partition and has direct access to the hardware devices. The parent partition then creates the child partitions which host the guest OSs. A parent partition creates child partitions using the hypercall API, which is the application programming interface exposed by Hyper-V.

A child partition does not have access to the physical processor, nor does it handle its real interrupts. Instead, it has a virtual view of the processor and runs in Guest Virtual Address, which, depending on the configuration of the hypervisor, might not necessarily be the entire virtual address space. Depending on VM configuration, Hyper-V may expose only a subset of the processors to each partition. The hypervisor handles the interrupts to the processor, and redirects them to the respective partition using a logical Synthetic Interrupt Controller (SynIC). Hyper-V can hardware accelerate the address translation of Guest Virtual Address-spaces by using second level address translation provided by the CPU, referred to as EPT on Intel and RVI (formerly NPT) on AMD.

Child partitions do not have direct access to hardware resources, but instead have a virtual view of the resources, in terms of virtual devices. Any request to the virtual devices is redirected via the VMBus to the devices in the parent partition, which will manage the requests. The VMBus is a logical channel which enables inter-partition communication. The response is also redirected via the VMBus. If the devices in the parent partition are also virtual devices, it will be redirected further until it reaches the parent partition, where it will gain access to the physical devices. Parent partitions run a Virtualization Service Provider (VSP), which connects to the VMBus and handles device access requests from child partitions. Child partition virtual devices internally run a Virtualization Service Client (VSC), which redirect the request to VSPs in the parent partition via the VMBus. This entire process is transparent to the guest OS.

Virtual devices can also take advantage of a Windows Server Virtualization feature, named Enlightened I/O, for storage, networking and graphics subsystems, among others. Enlightened I/O is specialized virtualization-aware implementation of high level communication protocols like SCSI to take advantage of VMBus directly, that allows bypassing any device emulation layer. This makes the communication more efficient, but requires the guest OS to support Enlightened I/O. Windows Server 2008 R2, Windows Server 2008, Windows 7, Windows Vista, Red Hat Enterprise Linux, and SUSE Linux are currently the only operating systems that support Enlightened I/O, allowing them therefore to run faster as guest operating systems under Hyper-V than other operating systems that need to use slower emulated hardware.

System requirements and specifications

 * Host operating system:
 * To install the Hyper-V role, Windows Server 2008, Windows Server 2008 R2 Standard, Enterprise or Datacenter edition, Windows Server 2012 Standard or Datacenter edition, or Windows 8 (or 8.1) Pro or Enterprise edition is required. Hyper-V is only supported on x86-64 variants of Windows.
 * It can be installed regardless of whether the installation is a full or core installation.
 * Processor:
 * An x86-64 processor
 * Hardware-assisted virtualization support: This is available in processors that include a virtualization option; specifically, Intel VT or AMD Virtualization (AMD-V, formerly code-named "Pacifica").
 * A NX bit-compatible CPU must be available and Hardware Data Execution Prevention (DEP) must be enabled.
 * Although this is not an official requirement, Windows Server 2008 R2 and a CPU with second-level address translation support are recommended for workstations.
 * Second-level address translation is a mandatory requirement for Hyper-V in Windows 8.
 * Memory
 * Minimum 2 GB. (Each virtual machine requires its own memory, and so realistically much more.)
 * Windows Server 2008 Standard (x64) Hyper-V full GUI or Core supports up to 31 GB of memory for running VMs, plus 1 GB for the Hyper-V parent OS.
 * Maximum total memory per system for Windows Server 2008 R2 hosts: 32 GB (Standard) or 2 TB (Enterprise, Datacenter)
 * Maximum total memory per system for Windows Server 2012 hosts: 4 TB
 * Guest operating systems
 * Hyper-V in Windows Server 2008 and 2008 R2 supports virtual machines with up to 4 processors each (1, 2, or 4 processors depending on guest OS-see below)
 * Hyper-V in Windows Server 2012 supports virtual machines with up to 64 processors each.
 * Hyper-V in Windows Server 2008 and 2008 R2 supports up to 384 VMs per system
 * Hyper-V in Windows Server 2012 supports up to 1024 active virtual machines per system.
 * Hyper-V supports both 32-bit (x86) and 64-bit (x64) guest VMs.

Microsoft Hyper-V Server
The stand-alone Hyper-V Server variant does not require an existing installation of Windows Server 2008 nor Windows Server 2008 R2. The standalone installation is called Microsoft Hyper-V Server for the non-R2 version and Microsoft Hyper-V Server 2008 R2. Microsoft Hyper-V server is built with components of Windows and has a Windows Server Core user experience. None of the other roles of Windows Server are available in Microsoft Hyper-V Server. This version supports up to 64 VMs per system. System requirements of Microsoft Hyper-V server are the same for supported guest operating systems and processor, but differ in the following:


 * RAM: Minimum: 1 GB RAM; Recommended: 2 GB RAM or greater; Maximum 1 TB.
 * Available disk space: Minimum: 8 GB; Recommended: 20 GB or greater.

Hyper-V Server 2012 R2 has the same capabilities as the standard Hyper-V role in Windows server 2012 R2 and supports 1024 active VMs.

Supported guests
The following table lists supported guest operating systems on Windows Server 2008 and Windows Server 2008 R2.

Fedora 8 or 9 are unsupported; however, they have been reported to run.

Desktop virtualization (VDI) products from third-party companies (such as Quest Software vWorkspace, Citrix XenDesktop, Systancia AppliDis Fusion and Ericom PowerTerm WebConnect) provide the ability to host and centrally manage desktop virtual machines in the data center while giving end users a full PC desktop experience.

Guest operating systems with Enlightened I/O and a hypervisor-aware kernel such as Windows Server 2008 and later server versions, Windows Vista SP1 and later clients and offerings from Citrix XenServer and Novell will be able to use the host resources better since VSC drivers in these guests communicate with the VSPs directly over VMBus. Non-"enlightened" operating systems will run with emulated I/O; however, integration components (which include the VSC drivers) are available for Windows Server 2003 SP2, Windows Vista SP1 and Linux to achieve better performance. Xen-enabled Linux guest distributions can also be paravirtualized in Hyper-V. Microsoft officially supports only SUSE Linux Enterprise Server 10 SP1/SP2 x86 and x64 Editions in this way, though any Xen-enabled Linux should be able to run. In February 2008, Red Hat and Microsoft signed a virtualization pact for hypervisor interoperability with their respective server operating systems, to enable Red Hat Enterprise Linux 5 to be officially supported on Hyper-V.

Linux support
In July 2009, Microsoft submitted Hyper-V drivers to the kernel, which improve the performance of virtual Linux guest systems in a Windows hosted environment. Microsoft was forced to submit the code when it was discovered that Microsoft had incorporated a Hyper-V network driver with GPL-licensed components statically linked to closed-source binaries. Hyper-V provides basic virtualization support for Linux guests out of the box. Paravirtualization support is, however, available by installing the Linux Integration Components or Satori InputVSC drivers. On July 20, 2009, Microsoft submitted these drivers for inclusion in the Linux kernel under the terms of the GPL, so that kernels from 2.6.32 may include inbuilt Hyper-V paravirtualization support.

Windows Server 2012
Hyper-V in Windows Server 2012 and Windows Server 2012 R2 changes the support list above as follows:
 * 1) Windows 8 (with up to 32 CPUs), Windows 8.1 (32 CPUs), Windows Server 2012 (64 CPUs) and 2012 R2 (64 CPUs) are supported.
 * 2) Minimum supported version of CentOS is 6.0.
 * 3) Minimum supported version of Red Hat Enterprise Linux is 5.7.
 * 4) Maximum number of supported CPUs for Windows Server and Linux operating system is increased from four to 64.

VHD compatibility with Virtual Server 2005 and Virtual PC 2004/2007
Hyper-V, like Microsoft Virtual Server and Windows Virtual PC, saves each guest OS to a single virtual hard disk file with the extension .VHD, except in Windows 8 and Windows Server 2012 where it can be the newer .vhdx. This file contains the entire guest OS, though other files can also be configured to allow "undo information" etc.

Older .vhd files from Virtual Server 2005 and Virtual PC 2004/2007 can be copied and used by Hyper-V, but any old virtual machine integration software (equivalents of Hyper-V Integration Services for other virtualization software) must be removed from the virtual machine. After the migrated guest OS is configured and started using Hyper-V, the guest OS will detect changes to the (virtual) hardware. Installing "Hyper-V Integration Services" installs five services to improve performance, at the same time adding the new guest video and network card drivers. Consequently, Windows guests may require re-activation.

USB passthrough
Hyper-V does not support virtualized USB ports or COM ports. This fact makes it very inconvenient to run software protected by dongles in the guest. A workaround to access USB drives in Windows guest VMs involves using the Microsoft Remote Desktop Client to "share" host drives with guests over a Remote Desktop Connection.

Audio
Audio hardware is not virtualized by Hyper-V although the above Remote Desktop workaround may be used.

Optical drives pass-through
Optical drives virtualized in the guest VM are read-only. Hyper-V does not support the host/root operating system's optical drives to pass-through in guest VMs. As a result, burning to discs, audio CDs, video CD/DVD-Video playback are not supported. However a workaround exists using the iSCSI protocol. Setting up an iSCSI target on the host machine with the optical drive can then be talked to by the standard Microsoft iSCSI initiator. Microsoft produces their own iSCSI Target software or alternative third party products can be used.

Graphics issues on the host
On CPUs without Second Level Address Translation, installation of most WDDM accelerated graphics drivers on the primary OS will cause a dramatic drop in graphic performance. This occurs because the graphics drivers access memory in a pattern that causes the Translation lookaside buffer to be flushed frequently.

In Windows Server 2008, Microsoft officially supported Hyper-V only with the default VGA drivers, which do not support Windows Aero, higher resolutions, rotation, or multi-monitor display. However, unofficial workarounds were available in certain cases. Older non-WDDM graphics drivers sometimes did not cause performance issues, though these drivers did not always install smoothly on Windows Server. Intel integrated graphics cards did not cause TLB flushing even with WDDM drivers. Some NVidia graphics drivers did not experience problems so long as Windows Aero was turned off and no 3D applications were running.

In Windows Server 2008 R2, Microsoft added support for Second Level Address Translation to Hyper-V. Since SLAT is not required to run Hyper-V with Windows Server, the problem will continue to occur if a non-SLAT CPU is used with accelerated graphics drivers. However, SLAT is required to run Hyper-V on client versions of Windows 8.

Live migration
Hyper-V in Windows Server 2008 does not support "live migration" of guest VMs (where "live migration" is defined as maintaining network connections and uninterrupted services during VM migration between physical hosts). Instead, Hyper-V on Server 2008 Enterprise and Datacenter Editions supports "quick migration", where a guest VM is suspended on one host and resumed on another host. This operation happens in the time it takes to transfer the active memory of the guest VM over the network from the first host to the second host.

However, with the release of Windows Server 2008 R2, live migration is supported with the use of Cluster Shared Volumes (CSVs). This allows for failover of an individual VM as opposed to the entire host having to failover (it seems that when a node (Hyper-V server, not a VM) fails then each "VM running on the failed node" may migrate to other live nodes independently of "other VMs on the same LUN running on other nodes that share the LUN with the failed node". In Hyper-V we are clustering the Hyper-V nodes not the VMs.). See also Cluster Shared Volumes.

Windows Server 2012's implementation of Hyper-V (Version 3.0) introduced many new features to increase VM mobility, including the ability to execute simultaneous live migrations (Windows Server 2008 R2 only supported live migrating a single VM at a time, significantly increasing the time required to carry administrative tasks, such as draining a node for scheduled maintenance). The only real limiting factor here is hardware and network bandwidth available. Windows Server 2012 also supports a new "shared nothing live migration" option, where no traditional shared storage is required in order to complete a migration. Also referred to as “Live System Migration”, a shared nothing live migration will move a running VM and its storage from one Hyper-V host to another without any perceived downtime. Live Migration between different host OS versions is not possible, although this is soon to be addressed in Windows Server 2012 R2.

Windows Server 2012 also introduced the ability to use simple SMB shares as a shared storage option (in conjunction with the new Scale out File Services role in Server 2012 for highly available environments), alleviating the need for expensive SANs. This is particularly useful for low budget environments, without the need to sacrifice performance due to the many new improvements to the SMB3 stack. Windows Server 2012 will fully support the live migration of VMs running on SMB shares, whether it be a live or live system migration.

Hyper-V under Windows Server 2012 also supports the ability to migrate a running VM's storage, whereby an active Virtual Machines storage can be moved from one infrastructure to another without the VM's workload being affected, further reducing the limitations associated with VM mobility.

Degraded performance for Windows XP VMs
Windows XP frequently accesses CPU's APIC task-priority register (TPR) when interrupt request level changes, causing a performance degradation when running as guests on Hyper-V. Microsoft has fixed this problem in Windows Server 2003 and later.

Intel adds TPR virtualization (FlexPriority) to VT-x on Intel Core 2 step E onwards to alleviate this problem. AMD has a similar feature on AMD-V but uses a new register for the purpose. This however means that the guest has to use different instructions to access this new register. AMD provides a driver called "AMD-V Optimization Driver" that has to be installed on the guest to do that.

NIC teaming
Network card teaming or link aggregation is only supported if the NIC manufacturer supplied drivers support NIC teaming. However, Windows Server 2012 and thus the version of Hyper-V included with it supports software NIC teaming.

No support for home editions of Windows
The management tools for Hyper-V are not compatible with Windows Vista Home Basic or Windows Vista Home Premium. This is also the case for Windows 7 home editions (Home Premium, Home Basic, and Starter).

Windows 8
64-bit SKUs of Windows 8 Pro or Enterprise edition come with Hyper-V.

Windows Server 2012
Windows Server 2012 introduced many new features in Hyper-V.
 * Hyper-V Extensible Virtual Switch
 * Network virtualization
 * Multi-tenancy
 * Storage Resource Pools
 * .vhdx disk format supporting virtual hard disks as large as 64 TB with power failure resiliency
 * Virtual Fibre Channel
 * Offloaded data transfer
 * Hyper-V replica
 * Cross-premise connectivity
 * Cloud backup