Difference between revisions of "Introduction to virtualization"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
m (no 'es' suffix)
(Marked this version for translation)
 
(27 intermediate revisions by 15 users not shown)
Line 1: Line 1:
 +
<translate>
 +
<!--T:1-->
 
Virtualization is a framework or methodology of dividing the resources of a computer into multiple execution environments. Virtualization techniques create multiple isolated partitions &mdash; Virtual Machines (VM) or [[Virtual Environment]]s ([[VE]]s) &mdash; on a single physical server.  
 
Virtualization is a framework or methodology of dividing the resources of a computer into multiple execution environments. Virtualization techniques create multiple isolated partitions &mdash; Virtual Machines (VM) or [[Virtual Environment]]s ([[VE]]s) &mdash; on a single physical server.  
  
== Techniques ==
+
== Techniques == <!--T:2-->
 
There are several kinds of virtualization techniques which provide similar features but differ in the degree of abstraction and the methods used for virtualization.
 
There are several kinds of virtualization techniques which provide similar features but differ in the degree of abstraction and the methods used for virtualization.
  
=== Virtual machines (VMs) ===
+
=== Virtual machines (VMs) === <!--T:3-->
'''Virtual machines''' emulate some real or fictional hardware, which in turn requires real resources from the ''host'' (the machine running the VMs). This approach, used by most ''system emulators'', allows the emulator to run an arbitrary ''guest operating system'' without modifications because guest OS is not aware that it is not running on real hardware. The main issue with this approach is that some CPU instructions require additional privileges and may not be executed in user space thus requiring a ''virtual machines monitor'' (VMM) to analyze executed code and make it safe on-the-fly. Hardware emulation approach is used by [http://www.vmware.com/ VMware] products, [http://fabrice.bellard.free.fr/qemu/ QEMU], [http://parallels.com/ Parallels] and [http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx Microsoft Virtual Server].
+
'''Virtual machines''' emulate some real or fictional hardware, which in turn requires real resources from the ''host'' (the machine running the VMs). This approach, used by most ''system emulators'', allows the emulator to run an arbitrary ''guest operating system'' without modifications because guest OS is not aware that it is not running on real hardware. The main issue with this approach is that some CPU instructions require additional privileges and may not be executed in user space thus requiring a ''virtual machines monitor'' (VMM), also called a hypervisor, to analyze executed code and make it safe on-the-fly. Hardware emulation approach is used by [http://www.vmware.com/ VMware] products, [http://www.VirtualBox.org VirtualBox], [http://fabrice.bellard.free.fr/qemu/ QEMU], [http://www.virtuozzo.com/ Virtuozzo] and [http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx Microsoft Virtual Server].
  
=== Paravirtualization ===
+
=== Paravirtualization === <!--T:4-->
This technique also requires a VMM, but most of its work is performed in the ''guest OS'' code, which in turn is ''modified'' to support this VMM and avoid unnecessary use of privileged instructions. The paravirtualization technique also enables running different OSs on a single server, but requires them to be ported, i.e. they should «know» they are running under the hypervisor. The paravirtualization approach is used by products such as [http://www.xensource.com/xen/ Xen] and [http://user-mode-linux.sourceforge.net/ UML].
+
This technique also requires a VMM, but most of its work is performed in the ''guest OS'' code, which in turn is ''modified'' to support this VMM and avoid unnecessary use of privileged instructions. The paravirtualization technique also enables running different OSs on a single server, but requires them to be ported, i.e. they should «know» they are running under the hypervisor. The paravirtualization approach is used by products such as [http://www.xen.org Xen] and [http://user-mode-linux.sourceforge.net/ UML].
  
=== Virtualization on the OS level, a.k.a. containers virtualization ===
+
=== Virtualization on the OS level, a.k.a. containers virtualization === <!--T:5-->
 
Most applications running on a server can easily share a machine with others, if they could be isolated and secured. Further, in most situations, different operating systems are not required on the same server, merely multiple instances of a single ''operating system''. OS-level virtualization systems have been designed to provide the required isolation and security to run multiple applications or copies of the same OS (but different distributions of the OS) on the same server. [http://openvz.org/ OpenVZ], [http://www.swsoft.com/products/virtuozzo Virtuozzo], [http://linux-vserver.org/ Linux-VServer], [http://www.sun.com/bigadmin/content/zones/ Solaris Zones] and [http://www.freebsd.org/doc/en_US.ISO8859-1/books/arch-handbook/jail.html FreeBSD Jails] are examples of OS-level virtualization.
 
Most applications running on a server can easily share a machine with others, if they could be isolated and secured. Further, in most situations, different operating systems are not required on the same server, merely multiple instances of a single ''operating system''. OS-level virtualization systems have been designed to provide the required isolation and security to run multiple applications or copies of the same OS (but different distributions of the OS) on the same server. [http://openvz.org/ OpenVZ], [http://www.swsoft.com/products/virtuozzo Virtuozzo], [http://linux-vserver.org/ Linux-VServer], [http://www.sun.com/bigadmin/content/zones/ Solaris Zones] and [http://www.freebsd.org/doc/en_US.ISO8859-1/books/arch-handbook/jail.html FreeBSD Jails] are examples of OS-level virtualization.
  
== Short comparison ==
+
== Short comparison == <!--T:6-->
 
The three techniques differ in complexity of implementation, breadth of OS support, performance in comparison with standalone server, and level of access to common resources. For example, VMs have wider scope of usage, but poorer performance. Para-VMs have better performance, but can support fewer OSs because one has to modify the original OS.
 
The three techniques differ in complexity of implementation, breadth of OS support, performance in comparison with standalone server, and level of access to common resources. For example, VMs have wider scope of usage, but poorer performance. Para-VMs have better performance, but can support fewer OSs because one has to modify the original OS.
  
 +
<!--T:7-->
 
Virtualization on the OS level provides the best performance and scalability compared to other approaches. Performance difference of such systems can be as low as 1…3%, comparing with that of a standalone server. [[Virtual Environment]]s are usually also much simpler to administer as all of them can be accessed and administered from the host system. Generally, such systems are the best choice for server consolidation of same OS workloads.
 
Virtualization on the OS level provides the best performance and scalability compared to other approaches. Performance difference of such systems can be as low as 1…3%, comparing with that of a standalone server. [[Virtual Environment]]s are usually also much simpler to administer as all of them can be accessed and administered from the host system. Generally, such systems are the best choice for server consolidation of same OS workloads.
  
== Where to go further ==
+
== Where to go further == <!--T:8-->
 
If you've decided to try OpenVZ virtualization solution go to [[Quick installation|OpenVZ installation]] section.
 
If you've decided to try OpenVZ virtualization solution go to [[Quick installation|OpenVZ installation]] section.
  
== External links ==
+
== External links == <!--T:9-->
 
* [http://en.wikipedia.org/wiki/Operating_system-level_virtualization wikipedia: Operating system-level virtualization]
 
* [http://en.wikipedia.org/wiki/Operating_system-level_virtualization wikipedia: Operating system-level virtualization]
 
* [http://www.hpl.hp.com/techreports/2007/HPL-2007-59R1.pdf HP Labs: Performance Evaluation of Virtualization Technologies for Server Consolidation]
 
* [http://www.hpl.hp.com/techreports/2007/HPL-2007-59R1.pdf HP Labs: Performance Evaluation of Virtualization Technologies for Server Consolidation]
  
 +
</translate>
 
[[Category: Technology]]
 
[[Category: Technology]]
 
[[Category: Concepts]]
 
[[Category: Concepts]]

Latest revision as of 08:40, 26 December 2015

<translate> Virtualization is a framework or methodology of dividing the resources of a computer into multiple execution environments. Virtualization techniques create multiple isolated partitions — Virtual Machines (VM) or Virtual Environments (VEs) — on a single physical server.

Techniques

There are several kinds of virtualization techniques which provide similar features but differ in the degree of abstraction and the methods used for virtualization.

Virtual machines (VMs)

Virtual machines emulate some real or fictional hardware, which in turn requires real resources from the host (the machine running the VMs). This approach, used by most system emulators, allows the emulator to run an arbitrary guest operating system without modifications because guest OS is not aware that it is not running on real hardware. The main issue with this approach is that some CPU instructions require additional privileges and may not be executed in user space thus requiring a virtual machines monitor (VMM), also called a hypervisor, to analyze executed code and make it safe on-the-fly. Hardware emulation approach is used by VMware products, VirtualBox, QEMU, Virtuozzo and Microsoft Virtual Server.

Paravirtualization

This technique also requires a VMM, but most of its work is performed in the guest OS code, which in turn is modified to support this VMM and avoid unnecessary use of privileged instructions. The paravirtualization technique also enables running different OSs on a single server, but requires them to be ported, i.e. they should «know» they are running under the hypervisor. The paravirtualization approach is used by products such as Xen and UML.

Virtualization on the OS level, a.k.a. containers virtualization

Most applications running on a server can easily share a machine with others, if they could be isolated and secured. Further, in most situations, different operating systems are not required on the same server, merely multiple instances of a single operating system. OS-level virtualization systems have been designed to provide the required isolation and security to run multiple applications or copies of the same OS (but different distributions of the OS) on the same server. OpenVZ, Virtuozzo, Linux-VServer, Solaris Zones and FreeBSD Jails are examples of OS-level virtualization.

Short comparison

The three techniques differ in complexity of implementation, breadth of OS support, performance in comparison with standalone server, and level of access to common resources. For example, VMs have wider scope of usage, but poorer performance. Para-VMs have better performance, but can support fewer OSs because one has to modify the original OS.

Virtualization on the OS level provides the best performance and scalability compared to other approaches. Performance difference of such systems can be as low as 1…3%, comparing with that of a standalone server. Virtual Environments are usually also much simpler to administer as all of them can be accessed and administered from the host system. Generally, such systems are the best choice for server consolidation of same OS workloads.

Where to go further

If you've decided to try OpenVZ virtualization solution go to OpenVZ installation section.

External links

</translate>