not formally recognized or admitted. From Medieval Latin virtualis, from Latin virtus (virtue). First known use: 15th century. VM: see Virtual Memory; Virtual Machine VFS: ... VLAN: ... VNC: see VDI VPN: ... VPS: ... See also: Hyper-V, Cloud, AWS, GAE, Microsoft Azure
(optional) partitioning (broadcast domains), equipment re-use = better ROI Alternatives? less flexible more expensive in terms of equipment and labor cost, space used
other), confidentiality policy enforcement, authentication partitioning, authorization, private address spaces Alternatives? yes, but .. let's face e.g. “IP authentication” shortcomings It's “nice to have” public IP on each device, but what do you do with security?
Paging pioneered by Ferranti Atlas in 1952 (with University of Manchester and Plessey) runtime (library functions) or Virtual Machine – Java VM, .Net CLR, Dalvik (Android JVM) filesystem - chroot in Unix – same kernel, network stack, CPU filesystem (in user-mode) (SSHFS, Windows “share” mapping, here and above VFS is in game) filesystem+network (sandbox, FreeBSD jail, Google Chrome sandbox) sandbox + resource slice management/accounting – OpenVZ/Virtuozzo (specific shortcomings – no IPSec, memory management/accounting granularity); Solaris containers, AIX WPARs OS – UML (StrongSWAN IPSec testing), colinux – same CPU Desktop – VDI Periphery – virtual CD / Printer / LAN adapter (common case for VPN) Hardware – also called emulation or simulation Running legacy OS/ Apps – Hercules – run VM/370 or zSystem Linux on PC, MAME, virtualII modelling / verifying future hardware / system products Full (system) virtualization CPU HDD, other storage e.g. CD, tape Network Graphics / video Input – keyboard, mouse USB, whatever is specific to emulated platform (HPET)
state “clean”, “initial”, “fully configured” and ready to go etc. necessity to run incompatible environments legacy apps/OS IE6/7/8/9 Unix/Windows/MacOS X security concerns and security research (sandboxing) computing as utility manageability, accountability requirements equipment / resource re-use to increase efficiency and reduce manual labor
PC for (PowerPC) Mac 1997 VMware – founded 1998 Xen research project; public release 2003; offsprings: Sun xVM, Oracle VM, VirtualIron Ascending kvm (qemu-kvm) runs on Linux, also ported to Illumos (ex-OpenSolaris), FreeBSD Hyper-V Caveat: “paravirtualization”, hypervisor type 1 vs 2 – skip it and forget
Precursors: Text (and later “graphics”) terminals X11 protocol and terminals RFB: VNC – UK Olivetty (& Oracle) Research Lab ca. 1997, before that – Acorn, later AT&T Teleconferencing systems (who knows TELEX? WRU?) Current: Xen – Citrix ICA Hyper-V – RDP(+RemoteFX) Sun xVM (Oracle VM) – ALP AIP. Before Sun – IXI Ltd, Cambridge, UK + Visionware, Leads, UK; then SCO Tarantella, bought by Sun in 2005. kvm – SPICE (and a legacy VNC) VMware – PcoIP (Teradici) Future: HTML 5 ? or 6 ?
Additional complexity, layer of indirection Performance overhead Licensing issues and costs (besides costs of VM Host solution and management tools, e.g. You are not allowed to run W7HB in VM) Hard-to-virtualize architecture (PC and x86, high-speed systems) i/o is always a bottleneck Temporal characteristics (non-linear time in VM, TSC on Pentium+, timekeeping) Not obvious, hard to track problems, e.g. snapshots vs. “rich state” - do not snapshot AD controller!
cross-platform development – development machine - Windows XP, target – RHEL5. Work cycle: check-out code - rebuild C++ pre- requisites from XML templates - index code. Sun VirtualBox 3.0 chosen over Vmware Workstation 6 on performance points. Not to mention cost, acquisition/licensing concerns. Oops, that was not testing. Use case - demo: fire two pre-configured VMs: Windows and Linux deploy “new version of application” under test to both platforms “test” them and display result