{"id":54,"date":"2006-07-24T19:50:27","date_gmt":"2006-07-25T00:50:27","guid":{"rendered":"https:\/\/anildesai.net\/?p=54"},"modified":"2007-10-26T20:07:18","modified_gmt":"2007-10-27T01:07:18","slug":"choosing-a-virtualization-approach","status":"publish","type":"post","link":"https:\/\/anildesai.net\/index.php\/2006\/07\/choosing-a-virtualization-approach\/","title":{"rendered":"Managing Virtualization, Part 3: Choosing a Virtualization Approach"},"content":{"rendered":"<p><em>This article was first published on <\/em><a href=\"http:\/\/searchservervirtualization.techtarget.com\/\"><em>SearchServerVirtualization.TechTarget.com<\/em><\/a><em>.<\/em><\/p>\n<p>The term \u201cvirtualization\u201d is a general one, and it can apply to many different technologies. For example, storage systems, databases, and networks can all be virtualized in one way or another. Much of the current buzz about virtualization focuses on \u201cserver virtualization\u201d \u2013 the ability to allow multiple independent operating systems to run on the same hardware at the same time. Products from Microsoft and VMware lead in this area. While this approach can clearly provide tremendous benefits , it\u2019s not the only option out there. In this article, I\u2019ll provide some details related to various approaches to virtualization, along with the pros and cons of each. The goal is to determine the best method for a particular workload.<\/p>\n<h2>An Overview of Virtualization Approaches<\/h2>\n<p>Figure 1 provides a high level overview of when areas of a standard server \u201cstack\u201d can be virtualized. Moving up from the bottom is the hardware layer, followed by the operating system, and finally the applications.  <\/p>\n<p><a href=\"https:\/\/anildesai.net\/wp-content\/uploads\/2007\/10\/image001.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px\" height=\"262\" alt=\"image001\" src=\"https:\/\/anildesai.net\/wp-content\/uploads\/2007\/10\/image001-thumb.png\" width=\"462\" border=\"0\"><\/a>  <\/p>\n<p><em>Figure 1: A diagram showing various virtualization layers.<\/em>  <\/p>\n<p>Before we get into further technical details, let\u2019s quickly review the key goals related to virtualization. The first is to ensure independence and isolation between the applications and operating systems that are running on a particular piece of hardware. The second is to provide access to as much of the underlying hardware system as possible. The third is to do all of this while minimizing performance overhead. That\u2019s no small set of goals, but it can be done (and in more ways than one). Let\u2019s take a look at how.  <\/p>\n<h2>Hardware-Level Virtualization and Hypervisors<\/h2>\n<p>We\u2019ll start the bottom of the \u201cstack\u201d \u2013 the hardware level. Theoretically, virtualization platforms that run directly on the base hardware should provide the best performance by minimizing overhead. An example of this type of solution is VMware\u2019s ESX Server. ESX Server installs directly on a supported hardware platform and includes a minimal operating system. Administration is performed through a web-based application that can be access remotely using a web browser.  <\/p>\n<p>The main concept behind a Hypervisor is that it\u2019s a thin layer that runs directly between operating systems and the hardware itself. Again, the goal here is to avoid the overhead related to having a \u201chost\u201d operating system. Microsoft and other vendors will be moving to a Hypervisor-based model in future versions of their virtualization platforms.  <\/p>\n<p>While the low-level approach might seem like an ideal one, there are some drawbacks. First and foremost is the issue of device compatibility. In order for the platform to work at all, it must support all of the devices that are connected to the main computer. Currently, products such as ESX Server are limited to running only on approved hardware platforms. While many popular server platforms are supported, this clearly is not as compatible as other solutions. Another issue is related to manageability. The dedicated virtualization layers must provide some methods for managing virtualization services. There are various approaches, including operating system \u201chooks\u201d and web-based administration, but they tend to be more complicated than other virtualization options.  <\/p>\n<h2>Server-Level Virtualization<\/h2>\n<p>Perhaps the best known and most readily useful virtualization products are those that operate at the server level. Products such as VMware Server and Microsoft Virtual Server 2005 are examples. These products are installed within a host operating system (such as a supported Linux distribution or the Windows Server platform). In this approach, virtual machines run within a service or application that then communicates with hardware by using the host OS\u2019s device drivers. Figure 2 shows an example of server virtualization using Microsoft Virtual Server 2005.  <\/p>\n<p><a href=\"https:\/\/anildesai.net\/wp-content\/uploads\/2007\/10\/image002.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px\" height=\"271\" alt=\"image002\" src=\"https:\/\/anildesai.net\/wp-content\/uploads\/2007\/10\/image002-thumb.png\" width=\"454\" border=\"0\"><\/a>  <\/p>\n<p><em>Figure 2: An example of a server-level virtualization stack<\/em>  <\/p>\n<p>The benefits of server-level virtualization include ease of administration (since standard management features of the host OS can be used), increased hardware compatibility (through the use of host OS device drivers), and integration with directory services and network security. Overall, whether you\u2019re running on a desktop or a server OS, you can be up and running with these platforms within a matter of minutes.  <\/p>\n<p>The drawbacks include additional overhead caused by the need for the host OS. The amount of memory, CPU, disk, network, and other resources used by the host must be subtracted from what would otherwise be available for use by VMs. Generally, the host OS also requires an operating system license. Finally, server-level virtualization solutions are often not quite as efficient as that of hardware-based virtualization platforms.  <\/p>\n<h2>Application-Level Virtualization<\/h2>\n<p>In some cases, running multiple independent operating systems is overkill. If you only want to create isolate environments that allow multiple users to concurrently run instances of a few applications, there\u2019s no need to create a separate VM for each concurrent user. That\u2019s where application-level virtualization comes in. Such products run on top of a host operating system, and place standard applications (such as those included with Microsoft Office) in isolated environments. Each user that accesses the computer gets what appears to be his or her own unique installation of the products. Behind the scenes, file system modifications, Registry settings, and other details are performed in isolated sandbox environments, and appear to be independent for each user. <a href=\"http:\/\/www.softricity.com\/\">Softricity<\/a> and <a href=\"http:\/\/www.swsoft.com\/\">SWSoft<\/a> are two vendors that provide application-level virtualization solutions.  <\/p>\n<p>The main benefits of this approach include greatly reduced overhead (since only one full operating system is required) and improved scalability (many users can run applications concurrently on the same server). Generally, only one OS license is required (for the host OS). The drawbacks are that only software settings will be independent. Therefore, if a user wants to change hardware settings (such as memory or network details) or operating system versions (through patches or updates) those changes will be made for all users on the system.  <\/p>\n<h2>Thin Clients and Remote Application Execution<\/h2>\n<p>The idea of \u201cthin-clients\u201d has been around since the days of mainframes (when they were less affectionately known as \u201cdumb terminals\u201d). The idea here is that users can connect remotely to a centralized server using minimal software and hardware on the client side. All applications execute on the server, and only keyboard, video, and mouse I\/O are transferred over the wire. Solutions from <a href=\"http:\/\/www.citrix.com\">Citrix<\/a> and <a href=\"http:\/\/www.microsoft.com\/windowsserver2003\/technologies\/terminalservices\/default.mspx\">Microsoft Windows Server 2003 Terminal Services<\/a> are examples of this approach.  <\/p>\n<h2>Selecting the Best Approach<\/h2>\n<p>So now that you know that there are options, how do you decide which is the best one for a particular virtualization workload? Table 1 provides some examples of typical workloads. In general, as you move from Hardware- to Server- to Application-level virtualization, you gain scalability at the cost of overall independence. The \u201cbest\u201d solution will be based on the specific workload and other related details. The bottom line is that you do have options when deciding to go with virtualization, so be sure to consider them all.<\/p>\n<p><a href=\"https:\/\/anildesai.net\/wp-content\/uploads\/2007\/10\/image2.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px\" height=\"267\" alt=\"image\" src=\"https:\/\/anildesai.net\/wp-content\/uploads\/2007\/10\/image-thumb2.png\" width=\"478\" border=\"0\"><\/a> <\/p>\n<p><em>Table 1: Comparing virtualization approaches for various workload types<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article was first published on SearchServerVirtualization.TechTarget.com. The term \u201cvirtualization\u201d is a general one, and it can apply to many different technologies. For example, storage systems, databases, and networks can all be virtualized in one way or another. Much of the current buzz about virtualization focuses on \u201cserver virtualization\u201d \u2013 the ability to allow multiple [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-54","post","type-post","status-publish","format-standard","hentry","category-virtualization"],"_links":{"self":[{"href":"https:\/\/anildesai.net\/index.php\/wp-json\/wp\/v2\/posts\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/anildesai.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/anildesai.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/anildesai.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/anildesai.net\/index.php\/wp-json\/wp\/v2\/comments?post=54"}],"version-history":[{"count":0,"href":"https:\/\/anildesai.net\/index.php\/wp-json\/wp\/v2\/posts\/54\/revisions"}],"wp:attachment":[{"href":"https:\/\/anildesai.net\/index.php\/wp-json\/wp\/v2\/media?parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/anildesai.net\/index.php\/wp-json\/wp\/v2\/categories?post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/anildesai.net\/index.php\/wp-json\/wp\/v2\/tags?post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}