Virtual networks include virtual network interface cards (NICs), virtual switches and uplinks. Virtual switches connect the virtual NICs of the virtual machines to the uplink as we can see from the figure below. And the uplink connects to the physical network.

Virtual switches offer some advanced features:

  • ARP Spoofing Protection
  • DHCP Guard
  • Port ACLs
  • Bandwidth Limiting
  • VLAN Identification
  • SR-IOV
  • Extensibility



It is used for virtual machines that need to talk to the systems on the physical network. These systems on the physical network may be physical servers in the environment or virtual machines running on other Hyper-V servers or various services on the WAN. The virtual machines connected to the external switch can talk to each other, the host they are on, other physical servers in the environment and remote virtual machines. External virtual switches are used for virtual machines that need to talk to the outside world. A physical virtual key must be connected to the physical network connection point so that it can talk to the physical network.

  • Internal

It is used only for virtual machines on a given virtualization server (host), and also only for those virtual machines that need to talk to that host. Virtual machines connected to the Internal Virtual Switch cannot go to the physical network. We do not need a physical network port to bind while creating an Internal Virtual Switch. These networks are like (almost) isolated networks that cannot talk to the outside world. This isolated network may only include the host that virtual machines are working on. For this purpose, when an Internal Virtual Switch is created, a virtual network card connected to that Internal Switch is also added to that Hyper-V host.

  • Private

It is used only for virtual machines that need to talk to themselves on a particular virtualization server (host). You can think of Private Virtual Switches as a (completely) isolated network. It does not need a physical network port as it is in the Internal Switches. The virtual machines connected to this network cannot go to the physical network, talk to the host and remote virtual machines. They just talk to other virtual machines connected to this network on the same host.


To create a new virtual switch, we select the “Virtual Switch Manager” under the “Actions” area.

We can choose the type of our virtual switch which we have just talked about.

We can give it a name, write details about it, change the connection type and enable the VLAN ID in this tab.


Thanks John Howard for the topologies of virtual networks. ( )


Why Should I Use Checkpoints?

It is the process of taking an image of the current state of a virtual machine and reserving that image point that can be returned later. If we want to make changes on the current state of the virtual machine, and want to see the results of that changes, we can create a checkpoint and turn back, if we do not like it. We can change the configurations of the system for some reasons, we can see if it works or not, and revert it back. It is a very useful but space consuming action. Because checkpoint files are stored in our host machine.

Creating Checkpoints in Hyper-V

We can easily create checkpoints by right-clicking the virtual machine and select “Checkpoint“, or just selecting the virtual machine and clicking the “Checkpoint” under the segment that has a name of the selected machine.

Reverting to Previous State

We can easily turn back the state before the checkpoint by right clicking the state we want to see and select “Apply“. And we can export, rename, delete the checkpoint from there.


Checking the Requirements

If we want to check whether Hyper-V role can be installed on our operating system, we should open the command prompt, and write “systeminfo” to the console. If all the requirements have the value “Yes”, then it means the role can be enabled.

The requirements will not be displayed after we install Hyper-V.

Install Hyper-V with Control Panel Settings

To enable Hyper-V role on Windows 10 operating systems, we should enter the “Control Panel“, simply by writing its name into the searching area.

Then we should click “Programs and Features“.

And we should select “Turn Windows features on on off” because we want to turn on the Hyper-V feature.

Then we should click the checkbox named Hyper-V and select OK.

It is necessary to restart our computer after that.

Install Hyper-V with PowerShell

To enable the Hyper-V role, we should open the PowerShell console as an administrator by right-clicking the Start Menu and select Windows PowerShell (Admin).

Then we should write the code below on the console:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Restart is needed normally but it is not necessary in my computer, because it is already installed and restarted before.

Install Hyper-V with DISM

To enable the Hyper-V feature with Deployment Image Servicing and Management Tool (DISM), we should again open the PowerShell console as an administrator, and write the code below:

/Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V

Restart is needed normally but it is not necessary to my computer, because it is already installed and restarted before.


We cannot add Hyper-V role on Windows 10 Home; it has to be Windows 10 Pro, Education or Enterprise.



To access the virtual machine settings, we can right-click on the virtual machine and select ‘Settings‘. Or we can one simple click the virtual machine (VM) and after seeing the name of it in the ‘Action‘ segment, we are clicking the ‘Settings‘.

And the ‘Settings‘ will appear. Now, the components of the Settings will be explained.



The purpose of this part is adding virtual hardware to our virtual machine, as we can understand it from the name. It may differ depending on which generation belongs. The screenshot above is from a Generation 1 virtual machine. Now, let’s talk about the options in this part.

SCSI Controller (Small Computer System Interface):

SCSI connect various hardware devices (for example; hard disk) to the motherboard. SCSI cards can transfer the data very fast.

Network Adapter and Legacy Network Adapter: There are two type of network adapter in VMs. Network Adapter is much faster due to using highspeed VMbus. Otherwise, Legacy Network Adapter is slower because it emulates the physical network adapter, therefore it is not available on Generation 2 virtual machines. It is the only way of the PXE booting by the Generation 1 machines.

Fibre Channel Adapter: Virtual Fibre Channel Adapter provides us to connect our virtual machine directly into fibre channel storage. We can also cluster guest operating systems over fibre channel. On the contrary to SCSI Adapter, Fibre Channel Adapter provides connection between virtual machine and actual hardware that is accessible by the physical adapter.

RemoteFX 3D Video Adapter: It provides virtual machine to take advantage of the high-qualified graphics capabilities of the physical adapter.

BIOS- only for Generation 1 VMs

The only purpose of this section is adjusting the order of the boot devices which should be checked to start the OS.

FIRMWARE- only for Generation 2 VMs

In Generation 2 VMs, there is a “Firmware” Section instead of the “BIOS” section.

  1. Secure Boot:

    This is a control system which ensures that the boot image of a virtual machine’s operating system to remain unchanged.

  2. Boot Order:

    As we can see the picture above, this is the part that determines the order in which the boot entries in the list will be checked to start the operating system.


In the Memory tab, we can assign physical memory to our virtual machine.

  1. Dynamic Memory:

    If we select to enable dynamic memory, the virtual machine will start with the ‘Startup Memory’ we assigned while creating it, and dynamically expand while it will reach the maximum value.

  2. Minimum RAM:

    With this part, we can arrange the value of the lowest point that a virtual machine’s assigned memory can ever be dropped to. When our virtual is running we can reduce the value but we cannot raise it.

  3. Maximum RAM:

    With this part, we can arrange the value of the highest point that a virtual machine’s assigned memory can ever be reached to. When our virtual is running we can raise the value but we cannot reduce it.

  4. Memory Buffer:

    This is the percentage amount of the memory to expand dynamically.

  5. Memory Weight

    The amount of memory weight means the amount of priority. If there is not enough memory to all the virtual machines, the one with a higher memory weight will be turned on primarily. When more memory is available, a virtual machine that has lower memory weight will be activated. It is also adjustment of the priority order of Dynamic Memory Allocation.


On the screen of the primary table, we start by choosing the number of virtual CPUs the guest will have with ‘Number of virtual processors’ part. The maximum number is the maximum number of physical cores. This does not remove them from the physical pool of the host computer. Physical CPU resources are shared among all virtual machines.

  • Virtual machine reserve: Minimum percentage amount of physical CPU that will always be ready for use.

    For example: If we set ’10’ to number of virtual processors and set ‘10%’ to virtual machine reserve, then our virtual machine can use minimum (10 x 10%=1) CPU all the time.

  • Percent of total system resources: It is automatically calculated by our computer with considering the number of physical cores in host machine and number of virtual CPUs we assigned to our VM.

    Calculation: [Number of virtual processors / Number of physical core] * Virtual machine reserve(percentage)

  • Virtual machine limit: This indicates what percentage of every core the VM can consume.
  • Percent of total system resources: Same calculation with virtual machine reserve is done by automatically: [Number of virtual processors / Number of physical core] * Virtual machine limit(percentage)
  • Relative weight: It is for adjusting priority. A virtual machine with a higher weight would get more CPU than a VM with a lower weight.

If we click the “+” sign at the left of the “Processor” tab, two more section appear: “Compatibility” and “NUMA“.


This is a checkbox that allows “Quick” and ”    Live Migration” between virtual machines from different generations. But it does not allow migration between different manufacturers.


NUMA is “Non-Uniform Memory Access“. Non-uniform memory access (NUMA) is used to increase processor speed without increasing the load on the processor bus. NUMA provides a separate memory on each processor basis, so that it prevents the performance degradation that occurs when multiple processors try to access the same memory. The architecture is not uniform, because each processor is close to some parts of the memory and farther than other parts of the memory. The processor quickly accesses the near memory, and it may take longer to access the far memory.

The” Configuration” section demonstrates the current NUMA configuration of our virtual machine. With the “NUMA
topology” section, we can change the “Maximum number of processors“, which allows us to control how many virtual CPUs the guest can have in a single NUMA node. We can select up to 64 CPUs per NUMA node. The “Maximum amount of
memory (MB)” allows us to adjust the maximum size of any given NUMA node. Also, we can select “Maximum NUMA nodes allowed on a socket“. “Use Hardware Topology” button detects the topology of physical NUMA and applies it to the VM in an appropriate method.

Virtual Hard Disk Controller

There are two types of virtual hard disk controllers: IDE Controller and SCSI Controller. We can add virtual or physical hard drives to our virtual machine. While we can attach a DVD drive to the IDE, we cannot add it to SCSI on Generation 1 machines.

  • Hard Drive Settings

From this tab, we can change the controller and location which we attach our hard drive. Under “Media” section, we can add new hard drive, edit the existing one (edit is not available because I have created checkpoints for my virtual machine, but it is available by default.) Editing options are:

  • Compact: Compressing the file size of virtual hard disk.
  • Convert: Converting VHD to VHDX vice and versa.
  • Expand: Expanding the virtual hard disk capacity.


option displays the details about virtual hard disk; its format (VHD/VHDX), type, location, name, current file size, maximum disk size and parent.

“Browse” option is for changing this virtual hard disk to another existing in our computer, and “Remove” option is for removing the hard disk from the controller.

DVD Drive

We can select the controller type and location to attach the virtual or physical CD/DVD drive.

Under the “Media” section, there are 3 options:

  • None: Empty drive.
  • Image file: Selecting an ISO file of CD/DVD drive.
  • Physical drive: The chosen physical drive can be used as virtual machines own drive. This option is only for Generation 1 virtual machines.

And we can remove the CD/DVD drive from our virtual machine with “Remove” selection.


The first part in this tab is selecting “Virtual Switch“; External switches are used for virtual machines that need to talk to systems on the physical network and access to the outside world., Internal connection type is used only for virtual machines on a host that need to talk only between themselves and only with the host machine. Virtual machines connected to the Internal Virtual Switch cannot go to the physical network. Private virtual switch is used only for virtual machines that need to talk to themselves on a host. We can think of Private Virtual Switches as a completely isolated network.

The second part is “VLAN ID” which allows our virtual adapter to enter in a specific virtual LAN (vLAN), we can check the checkbox to enable it. When we enable it, we must specify a number in the textbox for tagging. Then all traffic flows through this network will be tagged the ID we specified, and the virtual network adapter will receive and share frames with that tag. If we do not enable it, transmission will happen with untagged frames. This frame labeling is achieved through the 802.1q standard.

The third part is “Bandwidth Management“. We can set minimum and maximum limits of Mbps that the virtual adapter can pass If there are multiple noisy virtual machines running on a same host and they use a lot of bandwidth. We can set the bandwidth limits and prevent the slowness of host’s connectivity which is caused by that noisy virtual machines.

The last option is “Remove” the network adapter permanently from our virtual machine.

After that primary tab, we can expand the Network Adapter section by clicking the plus (+) sign, and two subtabs will appear: “Hardware Acceleration” and “Advanced Features“.

Hardware Acceleration:

This subtab contains features of physical adapter that provides performance enhacement to our virtual adapter.

  • Virtual machine queue:

    Enabling virtual machine queue provides distributing incoming network traffic into several physical CPUs.

  • IPsec task offloading:

It allows operating system to use processor on the NIC for encryption-decryption work.

Advanced Features:

This subtab is about advanced settings as we can understand from the title.

  • MAC address:

    We can configure our MAC address as dynamic or static. MAC address spoofing allows virtual machines to change the source MAC address in outgoing packets with an unassigned one.

  • DHCP guard:

    Prevents receiving messages from virtual machines pretending like DHCP servers.

  • Router guard:

    Prevents receiving advertisements and messages from virtual machines that acting like routers.

  • Protected network:

    If a failure on the virtual switch is detected, this provides moving this virtual machine to another host (Live migration). This feature is available only for clustered virtual machines.

  • Port mirroring:

    It allows us to define the adapter as one of two ports in a mirror. The default option is None, which means it works as a standard adapter. We can set it to “Source” to make it the ‘sender’ in a pair, or we can make it the ‘recipient‘ adapter in a pair by set it to “Destination“. If the same host contains both Source and Destination port mirror adapter, all packets that appear on the source adapter are replicated to the destination adapter.

  • NIC teaming:

    It allows us to add the adapter in a team which have a multiple NIC ports but pretends like a single NIC port for avoid failure of a single point.


COM Adapters are available only for Generation 1 virtual machines. We can configure the virtual COM port to communicate with the host through named pipe. The pipe is must be on the host computer or a remote computer that host computer can reach.


Virtual diskette drives are only available for Generation 1 virtual machines. It cannot be physical. The file type is “virtual floppy disk file (vfd). ”



We can change the virtual machine’s name and add some notes about it from this tab. That notes appear in the Hyper-V Manager when we select the virtual machine. Adding notes and changing name do not affect the system operation.


Each service provides different functions to virtual machine. They are:

  • Operating System Shutdown: It provides virtual machine to close properly. Without it we can only turn it off, it is a sudden action like plugging a computer out.
  • Time Synchronization: Synchronizes the clock settings of host and guest computers.
  • Data Exchange: Transfers unformatted data among guest and host.
  • Heartbeat: Controls whether the virtual machine is running properly enough to start services. It does not say anything about the details of health. It is same as the heartbeat of humans.
  • Backup: The volume shadow copy service is a mechanism that Windows uses to simplify make crash-consistent and application-consistent backups without stopping the computer.
  • Guest Services: Allows us to copy data between host and guest straightly.


We can enable/disable the checkpoints and select the type and location of them in this tab. Production checkpoints are data-consistent, and they do not say anything about running applications. Otherwise, standard
checkpoints demonstrate the ongoing situation of the applications, so it is application-consistent.


Smart paging allows a virtual machine to use hard disk space temporarily when it restarts and there is no available physical memory. We can change the location of this file in this tab when the machine is not running.


We can control our virtual machine’s state when the host computer starts.

  • Nothing: Do nothing, so the virtual machine will maintain its last condition before the physical computer was powered down (off/saved).
  • Automatically start if it was running when the service stopped: If the virtual machine was running when host was turned off, restore it to a running state when host starts again.
  • Always start this virtual machine automatically: Start the virtual machine anyway, whether it was running or not.

    We can set a delay time to prevent source contention between virtual machines. It also allows us to start virtual machines that are connected to dependency services (like Active Directory) after the virtual machines that have that services.


We can control our virtual machine’s state when the host machine shuts down.

  • Save the virtual machine state: Saves the active state and turns the machine off.
  • Turn off the virtual machine: It is a sudden turn off; like plug out or power off a computer.
  • Shut down the guest operating system: Allows the virtual machine close properly.

Thank you for reading. See you on another article.


How to Create a Virtual Machine?


  1. Assign a name and location
  2. Assign virtual memory to the Virtual Machine
  3. Configure networking
  4. Connect to a virtual hard disk
  5. Define installation options for the operating system

Create a New Virtual Machine

To create a new virtual machine, click “New” which is under the “Actions” area, and select the “Virtual machine” option.


Then, New Machine Wizard, which will be our guide, appears with ‘Before you begin‘ section. You can click ‘Finish‘ to create a new virtual machine with default options or you can click ‘Next‘ to customize the options. We are clicking ‘Next‘ for see the options and understand them.

We can specify the name of our new virtual machine here. Name of my machine will be ‘New Test VM’. And we can change the storage location of your virtual machine by checking the box which says, ‘Store the virtual machine in a different location‘. I will continue with the default option which is: C:ProgramDataMicrosoftWindowsHyper-V

Then we should choose the generation of our virtual machine(VM). Once we create virtual machine, we cannot change its generation.

As you can see in the table below, Generation 2 does not support any 32-bit operating system.

64-Bit Versions

Generation 1

Generation 2

Windows Server 2012 R2



Windows Server 2012



Windows Server 2008 R2



Windows Server 2008



Windows 10



Windows 8.1



Windows 8



Windows 7



32-Bit Versions

Generation 1

Generation 2

Windows 10



Windows 8.1



Windows 8



Windows 7



After we decide the generation, we have to assign memory to our virtual machine. It can be assigned between 32 MB and 125829 MB. It is okay if you do not know how much virtual memory it should be assigned. Application member recommends an approximate amount of memory, but it is better to allocate a little bit more memory than recommended. The memory can be static or dynamic. If we choose to use dynamic memory, it starts from the ‘Startup memory’ and expands dynamically when needed. There are some operation system and application requirements to use dynamic memory. It would be better to read about it before you click the checkbox. I prefer to use dynamic memory, so I click the checkbox then I click Next.

Then, we should configure virtual networking for connect it to network. Usually, it would be a virtual switch which has physical connection to the internet and is shared between the virtual machines. One option is ‘not connected‘ means not connected to any kind of network. The other option is; connect to default virtual switch. This virtual switch was created when Hyper-V Server was enabled. We will talk about the configuring virtual networking more detailed in another article. For now, select the default switch and click Next.

Then, we will connect a virtual hard disk to our new virtual machine. It provides us storage to operating system that we will install. We have three options; we can create a new virtual hard disk, we can use an existing virtual hard disk if we have, or we can postpone virtual disk attachment. We will create a new virtual hard disk. We can rename it from the first blank, its default name is our virtual machine’s name plus the “.vhdx” extension. Vhdx is the new virtual hard disk format. From the second blank, we can change its storage location which is C:UsersPublicDocumentsHyper-VVirtual Hard Disks by default. And we can assign a size of that hard disk. It is 127 GB by default but as it is mentioned above, it will be dynamically expanding. So, the virtual hard disk starts very small, and after we install an operating system, it will able to expand until it will reach 127 GB. We can take the default option and click Next.

Then, the Wizard presents us the installation options of operating system(OS). The first option is postponing it to another time. The second option is installing media for an OS. It can be done by using a physical CD/DVD drive, which would be on the Hyper-V Server, and then inserting a DVD. Or if an ISO (disc image file) is already downloaded, and there is no DVD, select “Image file(.iso)” and click “Browse” for upload the file that it is going to be booted from this new virtual machine. Or it can be booted from a bootable floppy disk. The last option is installing an OS from a network-based installation server. It is useful when we want to install it automated and remotely like PXE boot. I will give details about PXE Booting in another article, so let’s focus on creating a virtual machine. I am choosing the first option and click Next.

And finally, the completing page appears to show us the summarization of our choices about the new virtual machine. Everything looks okay, so I click “Finish” and my new virtual machine “New Test VM” will be created.

Our first Virtual Machine appears in “Virtual Machines” area.

That is all for now. I hope it would help you. See you on another article.