Virtualization has become a massively important part of almost all server workloads and there are lots of options to choose from. For this article, we will just focus on the two frontrunners, Microsoft Hyper-V and VMware ESXi and why you might choose one over the other.
First I will talk about their similarities and then highlight how they differ. Both of ESXi and Hyper-V are Type I or bare metal hypervisors. This means that you can load VM's directly onto them and do not need a base operating system as well. They both feature live migration, high-availability and failover capabilities and they both can support a large array of guest VM operating systems.
So how do they differ then? Well, for starters, Hyper-V can come in a couple different flavors. You may load Hyper-V Server as it's own standalone setup like you would with ESXi but there is also the option to use Windows Server 2016 and simply add the Hyper-V role. This kind of blurs the line of it being a type I and type II hypervisor, but this can be very handy for many people as it allows virtualization to be built on top of already existing server stacks running other Windows Server services. Anyone already using Windows Server will likely be more comfortable using Hyper-V because it using the same UI and design principles. ESXi being Linux based will likely be quicker to pickup for those more familiar with bash and less GUI heavy interaction.
One other thing that varies between them rather significantly is their licensing. Both of them charge you per physical CPU so if you have a quad socket system then you will have to pay for four licenses. This is very important because the licenses are not cheap. I have to give Hyper-V the advantage on this one though because on ESXi you will have to buy the ESXi license as well as the Microsoft License underneath if you are using their services. If you are using Hyper-V then it can come as a free role bundled in with your Windows Server license.
One huge win that ESXi has over Hyper-V is that it has been around in one form or another for much longer than Hyper-V has been around. This means that lots more support material and guides are available. Many add-ons and additional software tools have been made over the year to aid in almost anything you could want to do with virtualization. This is largely why ESXi is still used in much larger corporations. It has greater flexibility and power when combined with all of the advanced tools that have been created over the years. But then on the flipside, you have the active directory integration with Hyper-V which allows for easier setup of a secure environment.
Last thing to consider is the potential size of your deployment. I won't go into detail on this because there are too many specifics to hash out, but basically, I highly recommend you read through the documentation if you are looking at very packed hosts because you may eventually run into issues where you are exceeding the limits of the hypervisor in terms of RAM or VM's or CPU's/vCPU's.
So finally which one wins? Well, like with most things, it really depends on your use and the current environment you are running and what you are willing to learn. Most people would agree that ESXi is a more complete solution but you are also going to need to learn a new environment if you choose ESXi over Hyper-V and you are giving up some creature comforts as well as likely paying a bit more for licensing.
If you've looked into hypervisors at all you have probably realized that there are a ton of different options and packages, even from one vendor there might be many different options like with Citrix and VMware. All of these can be separated into two groups. Type 1, commonly referred to as a bare-metal or client hypervisor. Or, Type 2, commonly referred to as a hosted hypervisor. Both of these are incredibly valuable, but your use case will greatly determine which you want to use.
Type 1 hypervisors are installed directly onto your system and are a standalone operating system, hence, bare-metal. Once you have installed this kind of hypervisor then you can install OSes onto the hypervisor and it will run that operating system once you spin it up to run. These systems you will typically be accessed by some remote connection or send actions via command prompt. You can have many virtual machines spun up on these kinds of hypervisors at once. Here is a list of type I hypervisors. Here are some type 1 hypervisors to look into(sorted by market share): ESXi , Hyper-V, and Xen.
Type 2 hypervisors, in contrast, do not run directly on the system and instead run inside of the host operating system. This means that if you are already running Windows Server 2016 then you might install a type 2 hypervisor into this environment. This is very handy if you need to run some linux only software or swap between operating systems. This will save you from needing to dual boot and do a restart everytime you want to go back and forth. These can be used in a similar way to how a type 1 is where you load up a few different operating systems and let it run in the background doing server tasks and that was common before everyone had virtualized their infrastructure because that allowed them to leave their current equipment and setup in place and simply take on additional functionality inside of a type 2 hypervisor, but at this point most people go directly for type 1 when they are building out their systems. Type 2 is mainly used now for individual systems needing another environment. Here is a list of type 2 hypervisors you might be interested in VMware Workstation, VirtualBox, QEMU
You may or may not have heard of a hypervisor before, but if you have ever used a virtual machine then you have probably used one. A hypervisor is a layer of software that sits between your hardware and the operating system that allows you to potentially run multiple operating systems off of a single set of hardware simultaneously. This means that when you start your computer up it first loads in your hypervisor and then your hypervisor loads your OS or OSes. These are used for a lot of reasons. One of the major ones is consolidation. A hypervisor letting you run multiple OSes off a single system means that you don't need two separate physical machines if you have them doing different tasks requiring different operating systems. This can save you a lot of money on infrastructure if instead of buying one system for your Active Directory and another for your storage solution and another for that pesky bit of software that still needs to run on Microsoft Server 2003. You can consolidate all of these various systems onto a single machine. This will save you on energy and space and hardware costs. Another potential reason is for security. With a hypervisor it is easier to keep your various operating systems compartmentalized and quarantine anything that may have gotten infected and it is also very easy to revert to a previous state and start again. If your system gets infected then you just spawn another copy of the instance and you're back with a fresh start in seconds.
There are lots of reasons why you might want to set up a virtual environemnt. You might want to run a version of Ubuntu in order to run some Linux only software without needing to dual boot and totally restart your computer to switch back and forth or you may want it to test out some risky software within a sandbox that won't damage any of your normal working environment. Whatever the purpose, it is very simple and quick to setup and can be a powerful trick to have in your arsenal.
1. Visit virtualbox.org
and click on the large download button to look at the various versions. At the top of the page you will find links that mention Windows, OS X, Linux and Solaris. VirtualBox works for all of these operating systems and you can follow the directions under each of the installations but in this guide, I will walk you through how to do it on Windows as that is what most people's base OS is. Once you click Windows Hosts it will start a download of the Virtual Box program. Once this is finished downloading run the executable. Continue through the installation process by hitting next. There are some things along the way you can tweak, but it is likely best to leave everything as default if it is your first time trying out virtualization software and don't know what your needs will be.
When you first open up the program after installation it will look something like this, but probably without the Ubuntu and setup information there.
The first thing you will want to do once you have reached this screen is click the "New" button in the top left so that you may start setting up a VM. Here you will set a name and tell Virtual Box which operating system you are planning on installing. For this tutorial, I will use Ubuntu as an example but all other operating systems should follow the same process after this step. Once you select your operating system click next and then it will ask you how much memory you want to allocate to the virtual machine.
The menu shows a color gradient where it eventually goes red at the right side. You generally won't want to allocate your VM that much RAM as that will end up taking away too many resources from your base operating system. Anywhere in the green region is generally safe, but you might want to experiment with this and check the recommendations for your specific operating system as some want more RAM than others.
Once you have made that decision it will lead you to a screen asking you to make a virtual hard drive. This is just like the memory setup where you set aside some hard drive space for the VM. I recommend you do that in this step and leave it as its default for now. After that screen it will lead you to choosing a virtual hard disk type if you chose to create one. You have the choice between VDI, VHD and VMDK. Most likely it is best to just use VDI as that is the native format for VirtualBox, but if you are interested in testing other virtualization solutions you may want to choose a format that will most easily port to the other solutions you are looking at using. VHD is used by VMWare, Sun xVM, QEMU, SUSE Studio, and .NET DiscUtils. VHD is used by Microsofts virtualization solutions like Hyper-V.
Afte you have completed that you will be asked if you want a dynamically allocated disk or fixed disk. A dynamically allocated disk will start at a small size but continue expanding up to the maximum size so it will not show it has consumed space on the hard drive in your base OS. Fixed on the other hand will automatically reserve all of that space for the VM.
Now it will let you choose the maximum size of your virtual hard disk. This is entirely up to you, just make sure you will have enough room to put your VM OS on there and also make sure you have enough room left for your base OS. You can move and change these settings after setup as well so don't stress if you think you need to expand the VM's storage later.
Ok. So it's all setup, now what? It isn't doing anything. Now what you have to do is go down to the storage tab and assign it an ISO to install the operating system you want. For me, I went to the Ubuntu Desktop Download page and downloaded Ubuntu 17.04. Take note of where it is downloading and then click the storage tab where it says Optical Drive and then assign the ISO you just downloaded. This is simulating putting in the install disk like you would on a physical computer. After this, just hit the green start button in the top and it will start up a window of a system like you just started a physical system and booted to the disc.
There are a plethora of options for storage nowadays. SSD's, Hard Drives, PCIE, SATA3, SAS, SCSI, NVME, M.2, there are all kind of options and things to consider, so what should you really be looking at? I'll run you through the various performance metrics to look at to find the right storage for you.
First thing I will talk about is capacity as that is what most people are familiar with. Capacity is just the amount of data that you can store. This is usally marked in GB(gigabytes) or TB(terabytes). A terabyte is 1000 gigabytes in the hard drive world. So if you see some SSD with a capacity of 500GB then that is half of the capacity of a 1TB hard drive. When looking at capacity you just need to know roughly on what magnitude you plan to be storing away. If you will be backing up all of the video for your media company then you will need much more storage than someone just using some spreadsheets and doing web browsing. Figure out roughly what your need is and make sure you can fit all of your data, either on a single drive or if you have to, you can buy multiple drives. You just have to check to make sure your system has enough slots for additional drives. If you dont have additional drives slots then you can purchase an external NAS or drive.
Next thing on the list is longevity. It's an unfortunate truth that none of our storage options last forever. All of them fail eventually. What you have to consider is how long you plan on using a certain system because likely your next system will have bigger and faster storage so if you are planning on upgrading every couple years then it is not entirely neccesary to buy a drive that has a 5 year warranty. If you are instead, trying to archive your family photos, then you will really want to check out what you can expect from a certain type of drive. Recently SSD's have shown that they can last much longer than hard drives if properly maintained, but if you have a lot of data then they might not be able to store everything you have. If you really do need extreme longevity and capacity then you may even consider a tape based system. Some of these have a warranty of 30 years and capacities of 15+ TB's.
Another thing to consider is type of failure. Hard drives fail mechanically and often the platters inside of them are actually very recoverable given that the read-write head hasn't scratched them or they have been otherwise physically damaged. This means, while the drive may be dead, the data still has a chance to be recovered. With SSD's it is a little more difficult because the flash chips can't be manually read as easily as a hard drive can. Currently we don't have any guaranteed methods to restore your data so a SSD with a good warranty might last longer but it might fail in such a way that you cannot recover your data and if you can it probably won't be cheap.
Finally we can talk about performance. As always you need to figure out what your use case will be. The storage performance for just backing up your files at the end of the day requires something a lot different than one that will make your daily computing experience responsive and enjoyable. The two main things to consider when looking at their performance is their read-write throughput and their IOPS. Read throughput is how much data from the hard drive that it can read per second and write throughput is how much it can write per second. In some scenarios you might need to read the data more often then you will need to write from it and vice versa, so consider that when you are choosing storage. If you are planning out a nightly backup system and need to backup 8TB of data and your drive has a write throughput of 200MB/s then you might not be able to finish the entire backup in a night and may need to look for an alternate solution. On the other hand IOPS is the number of individual operations a storage device can do in a second. This a high number on here will make your Windows load faster, games load faster and when you do a search on your computers files it will help that happen more quickly. This is a very important number for day to day computers rather than just large file storing systems.
Now that you have heard many of the various performance metrics to judge storage by I hope you can make a more informed decision.