A virtual machine (VM) is an operating system (OS) or application environment that is installed on software, which imitates dedicated hardware. The end user has the same experience on a VM as they would on dedicated hardware. A VM provides an isolated environment for running its own OS and applications independently from the underlying host system or from other VMs on that host. The VM's OS is commonly referred to as the guest OS, and it can be the same as or different from the host OS or the other VMs. In this way, a single computer can host multiple VMs, all running different OSes and applications, without affecting or interfering with each other. The VM is still dependent on the host's physical resources, but those resources are virtualized and distributed across the VMs and can be reassigned as necessary, making it possible to run different environments simultaneously, as well as accommodate fluctuating workloads. From the user's perspective, the VM operates much like a bare-metal machine. In most cases, users connecting to a VM won't be able to tell that it's a virtual environment. The guest OS and its applications can be configured and updated as necessary and new applications installed or removed, without affecting the host or other VMs. Resources such as CPUs (central processing units), memory and storage appear much like they do on a physical computer. Although users might run into occasional glitches, such as not being able to run an application in a virtual environment, these types of issues tend to be minimal. A computer that hosts VMs requires specialized software called a hypervisor. The hypervisor emulates the computer's CPU, memory, hard disk, network and other hardware resources, creating a pool of resources that can be allocated to the individual VMs according to their specific requirements. The hypervisor can support multiple virtual hardware platforms that are isolated from each other, enabling VMs to run Linux and Windows Server OSes on the same physical host. The hypervisor manages resources and allocates them to VMs. It also schedules and adjusts how resources are distributed based on how the hypervisor and VMs have been configured, and it can reallocate resources as demands fluctuate. Most hypervisors fall into one of two categories:
Most hypervisors don't require special hardware components, but the computer that runs the hypervisor must have the resources necessary to support VMs, as well as the hypervisor's operations and the host's own operations, no matter how minimal those might be.
Organizations routinely deploy VMs in their data centers to support a wide range of use cases and workloads. They use VMs for several reasons, including:
Organizations often deploy VMs when they want to run multiple applications simultaneously that require different OSes and processing power. For example, a quality assurance (QA) team might want to test multiple web servers and small databases at the same time, or IT might need to use the same server to run graphics-intensive gaming software and a customer service database. DevOps can also take advantage of VMs for their continuous integration and delivery operations, or an organization might need an environment to run legacy applications alongside other workloads. Although containers and other modern application technologies have affected VM usage, VMs continue to be deployed extensively by organizations of all sizes because they offer several important benefits, including:
VMs don't require specialized or hypervisor-specific hardware. However, the host computer needs more bandwidth, storage and processing capacity than a traditional server or desktop if the physical hardware is going to host multiple running VMs. Because VMs on a physical host can consume unequal resource quantities -- one might hog the available physical storage, while another stores little -- IT professionals must balance VMs with available resources. Fortunately, virtualization platforms ease the process. VMs are often categorized by the type of hypervisor that manages them or by the type of workloads they support. However, VMs are also categorized by VM type:
Containers are like VMs, except they virtualize the OS only, rather than the rest of the underlying hardware. Containers include the code, system tools, runtime, system libraries and settings needed to run the containerized applications. That's why containers are often used for multiple applications running on the same OS. Containers are also used for cloud-native, distributed applications and to package legacy applications for increased portability and deployment simplicity. Docker, which entered the market in 2013 as a Linux-based container platform, is one of the leading container developers. Containers have lower overhead than VMs and are much more lightweight. They also boot faster, use fewer server resources and are more portable, making them well suited to modern application technologies such as microservices. However, all containers running on the same host or ported to a different host must support the same OS. VMs can run different OSes and they offer a greater degree of isolation; although, they can be configured to communicate with each other as necessary. VMs are better suited for monolithic applications or for running multiple applications together. They're also handy for legacy applications that require isolated environments. VMs take up more space than containers because they need a guest OS to run. Each container shares the host's OS. Some users deploy containers within VMs to improve container security.Containers and VMs can be used together to provide the best of both worlds. Although this adds overhead, it provides an additional layer of security that containers alone are missing. The combination also makes it possible to deploy infrastructure that can support modern and traditional workloads. Most HCI platforms are based on virtualization technologies, but many have added support for Kubernetes, which is implemented within the VM structure. As a result, all containerized workloads run in VMs, benefiting from the isolation, while operating alongside traditional workloads. The process used to set up a VM depends on the virtualization platform. Many platforms offer wizards and other features that make it easy to create and deploy a VM. For example, in VMware vSphere, an admin can create a VM from a template or clone or create a single VM from scratch. Included with vSphere is the New Virtual Machine wizard, which walks the user through the process of creating the VM, whether a new one or one based on a template or clone. Red Hat Virtualization takes a different approach to setting up a VM. For instance, to install a Linux VM, the user would take the following steps:
Because the process of setting up a VM is specific to the virtualization platform, users should review the platform's documentation before deploying any VMs. Using VMs comes with several important management considerations, many of which can be addressed through general systems administration best practices and tools designed to manage VMs. There are some risks to consolidation, including overtaxing resources or potentially experiencing outages on multiple VMs due to physical hardware failure. Although cost savings increase as more VMs share the same hardware platform, so does the risk. It might be possible to place hundreds of VMs on the same hardware, but if the hardware platform fails, it could take out dozens or hundreds of VMs. However, the use of VM backups or snapshots can help mitigate those risks. Multiple vendors offer virtualization platforms. Four of the most popular platforms come from VMware, Citrix, Microsoft and Red Hat:
Numerous open source virtualization products have also staked their claims in the VM market, including KVM, OVirt and Proxmox VE. In addition, cloud computing makes extensive use of virtualization; however, it layers additional technologies onto the platform, such as self-service provisioning and chargeback. For example, in a virtualized data center, IT staff can spin up new VMs based on user demand or a new project. However, in a cloud environment, an end-user can provision VMs from a self-service catalog and specify resources without interacting with the underlying physical equipment or requiring the help of an admin.
SearchSoftwareQuality SearchAppArchitecture SearchCloudComputing SearchAWS TheServerSide.com SearchDataCenter |