This portal talks about virtualization. Technical language could be used.
In computing, platform virtualization is a term that refers to the abstraction of computer resources. Virtualization hides the physical characteristics of computing resources from their users (more on Wikipedia)
Note that virtualization is different than emulation, which duplicates (provides an emulation of) the functions of one system using a different system, so that the second system behaves like (and appears to be) the first system (more on Wikipedia)
Use cases and applicable solutions
Local desktop virtualization
A local workstation on a user's desk running two or more operating instances simultaneously.
Example: a Debian host running Microsoft Windows in a virtual machine.
- running applications that don't run on the host OS (e.g. running a Windows application on a GNU/Linux desktop)
- testing changes that may cause instability without disrupting the main host OS
- running a VM that is sandboxed/isolated from LAN or Internet resources
- as everything is local, performance is very high, especially for graphics
- uses spare capacity in workstation-class desktops
VirtualBox provides a nice GUI and accelerated graphics features for the VM
KVM can also do this, but the graphics emulation has performance limitations.
If GPU card passthrough works on your hardware then it is a great way to go
Alternative solutions for graphics acceleration are emerging, including VirGL (813658) and KVMGT (currently supports Intel Haswell-based GPUs only, can be adapted for others in theory). These solutions are discussed and compared in this thread
Remote desktop virtualization
A central server running dozens of virtual workstation instances for different users. Example: a Debian host running 20 virtual workstations.
- centralized management
- accessing a specific desktop or desktop application from multiple locations
- performance is comparable when accessed from multiple locations
- any local workstation can potentially be used as long as there is a remote desktop client such as VNC viewer. Old machines or machines running some other OS can be used for more purposes.
A single physical server running more than one virtual server OS instances. Example: a Debian host running five Debian virtual servers, two virtual Windows servers and ten virtual desktops.
- don't need to buy hardware for every server you want to run
- run just one major process on each virtual server (e.g. mail on one, SQL on another) so that they can be rebooted or upgraded independently of each other, making support and upgrades easier
Cloud is similar to server virtualization, except that instances become more abstract. Server instances can be deployed dynamically from templates for purposes such as horizontal scalability.
- scaling on demand
see the Debian Wiki Cloud page for more options
Using Debian to host Virtual Computers
Open Source solutions
Qemu - Mostly used on Desktops/Laptops.
KVM - Used on servers as well as Desktops/Laptops.
VirtualBox - Mostly used on Desktops/Laptops. Similar to VMWare Workstation. Can be used in headless mode on servers.
Xen - Provides para-virtualization and full-virtualization. Mostly used on servers.
LXC - Linux Containers. Creates multiple isolated containers. Mainline since 2.6.26.
LinuxVserver - Mostly used on servers. Creates multiple isolated containers. DEPRECATED.
OpenVz - Mostly used on servers. Creates multiple isolated containers. DEPRECATED.
UserModeLinux Not really a virtualization. Doesn't need superuser privileges.
libvirt - Manage different virtualization solutions such as KVM and Xen through a common (programming and user) Interface.
?Ganeti - Cluster virtualization manager, for KVM or Xen.
VMware - Virtualization tool.
VirtualBox - There is an Open-Source-Edition (OSE) and a commercial one with enhanced functionality.
Running Debian inside a Virtual computer
Debian inside Microsoft Virtual PC 2007.
Debian inside Microsoft Hyper-V.
Information on how to configure Debian to work with various virtualization methods simultaneously is available on the VirtualNetworking page.
virsh - A command line tool based on libvirt-bin offering complete virtual infrastructure management.
kpartx - convenient utility for accessing partitions in an image file or LV from a virtual machine
xmount - tool to crossmount between multiple input and output harddisk images