as opposed to a physical environment. • Virtualisation often includes computer-generated versions of hardware, operating systems, storage devices and more. • A VM represents an isolated collection of emulated resources, behaving like an actual physical system. • Virtual Machines are created with the help of a hypervisor, that runs on a host machine. ◦ The hypervisor is a piece of software capable of creating multiple isolated virtual operating environments, each composed of emulated resources.
Type-1 hypervisor (native or bare-metal) runs directly on top of a physical host machine's hardware, without the need for a host OS. Typically, they are found in enterprise settings. Examples of type-1 hypervisors: ◦ IBM z/VM ◦ Microsoft Hyper-V ◦ AWS Nitro • Type-2 hypervisor (hosted) runs on top of the host's OS. Typically, they are for end-users, but they may be found in enterprise settings as well. Examples of type-2 hypervisors: ◦ VirtualBox ◦ VMware Player ◦ Parallels Desktop for Mac. And then there are the exceptions - hypervisors matching both categories. They are Linux kernel modules that act as both. Examples are: • KVM • bhyve
solution for Linux. • Contains virtualization extensions (Intel VT or AMD-V). • KVM is a loadable virtualization module of the Linux kernel and it converts the kernel into a hypervisor capable of managing guest Virtual Machines. • Originally designed for the x86 hardware, but ported: ◦ FreeBSD ◦ S/390 ◦ PowerPC ◦ IA-64 ◦ ARM
as such, free to customize. • Using KVM is efficient from a financial perspective as well, due to the lower costs associated with it. • It provides efficient hardware-assisted virtualization for an array of guest OSes, such as Linux, BSD, Solaris, Windows, Mac OS, ReactOS, and Haiku. • It provides para-virtualization of Ethernet cards, disk I/O controllers, and graphical interfaces for a set of guest OSes, such as Linux, OpenBSD, FreeBSD, and Windows. • It is highly scalable. • KVM employs advanced security features, utilizing SELinux. It provides MAC (Mandatory Access Control) security between Virtual Machines. KVM has received awards for meeting common government and military security standards and for allowing open virtualization for homeland security projects.
product. • Open Source Software under the terms of the GNU General Public License (GPL) version 2. • It is an easy-to-use multi-platform type-2 hypervisor. • Long list of supported guest operating systems. I.e., Windows 10, Linux (2.4, 2.6, 3.x and 4.x), Solaris and OpenSolaris, OS/2, and OpenBSD. • VirtualBox is being actively developed with frequent releases. • VirtualBox is a community effort backed by a dedicated company.
free to use. • It runs on Linux, Windows, Mac OS X, and Solaris. • It provides two virtualization choices: software-based virtualization and hardware-assisted virtualization. • It is an easy-to-use multi-platform type-2 hypervisor.It provides the ability to run virtualized applications side-by-side with normal desktop applications.It provides teleportation - live migration.
the lifecycle of virtual machines. • Using Virtual Machines in a development environment has numerous benefits: ◦ Reproducible environment ◦ Management of multiple projects, each in its isolated and restricted environment ◦ Sharing the environment with other teammates ◦ Keeping the development and deployment environments in sync ◦ Running consistently the same VM on different OSes leveraging hypervisors such as VirtualBox or KVM. • Vagrant is a cross-platform tool, as it can be installed on Linux, Mac OS X, and Windows. • Support for multiple plugins to extend support for custom providers, provisioners, commands, and hosts. • Vagrant has recently added support for Docker
more VMs, which results in saved time, increased productivity, and lower operational costs. • It introduces consistency in infrastructure provisioning through Vagrantfile. • It is a flexible cross-platform tool.It provides support for Docker, thus helping manage Docker containers in addition to VMs. • It is easy to install and to configure.It is very useful in multi-developer teams.