OS Virtualization
Tanenbaum 8.3
See references
Outline
• What is Virtualization?
• Why would we want it?
• Why is it hard?
• How do we do it?
• Choices cs431-cotter 2
What is Virtualization?
• OS virtualization
– Create a platform that emulates a hardware platform and allow multiple instances of an
OS to use that platform, as though they have full and exclusive access to the underlying hardware cs431-cotter 3
What is Virtualization?
Applications Applications Applications Applications
OS 1 OS 4 OS 2 OS 3
Virtualization Platform
Hardware cs431-cotter 4
Virtualization – Why?
• Server Consolidation
– Often many servers support 1 major application
– Strong isolation between VMs
– Virtualization saves on hardware & energy
• Disaster Recovery
• High Availability
• Testing and Deployment cs431-cotter 5
Virtualization – Why?
• Desktop Consolidation
– Support for legacy applications
– Software Development
– Training cs431-cotter 6
The Problem
• OS uses kernel mode / user mode to protect the OS.
– System calls ( privileged instructions ) generate a trap (software interrupt) that forces a switch to kernel mode
– These calls trigger sensitive instructions (I/O,
MMU control, etc.) that must only be executed by the kernel cs431-cotter 7
The Problem
• If our VM now runs in user space, we cannot run sensitive instructions in it, since those must trap to kernel space.
• Solved in 2005 with new CPUs
– Intel Core 2 – VT (Virtualization Technology)
– AMD Pacific – SVM (Secure Virtual Machine)
– Provides new instructions that allow VM to capture traps cs431-cotter 8
Implementation
• Type 1 Hypervisor
• Type 2 Hypervisor
• Paravirtualization cs431-cotter 9
Type 1 Hypervisor
• Runs on “bare metal”
• Virtual machines run in user mode
– VM runs the guest OS (which thinks it is running in kernel mode) – Virtual kernel Mode
– If guest OS calls sensitive instructions, hypervisor will trap and execute the instructions.
– If application on guest OS calls sensitive instructions (system calls), hypervisor traps to guest OS.
cs431-cotter 10
Type 1 Hypervisors
Figure 8-26. When the operating system in a virtual machine executes a kernel-only instruction, it traps to the hypervisor if virtualization technology is present.
cs431-cotter
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-136006639
11
Type 2 Hypervisor
• Runs from within a OS.
• Supports guest OSs above it.
– Boot from CD to load new OS
– Read in code, looking for basic blocks
– Then inspect basic block to find sensitive instructions.
If found, replace with VM call (process called binary translation )
– Then, cache block and execute.
– Eventually all basic blocks will be modified and cached, and will run at near native speed.
cs431-cotter 12
Type 2 Hypervisor
Applications Applications Applications
OS 1 OS 2 OS 3
Virtualization Platform
Base Operating System
Applications
Hardware cs431-cotter 13
Paravirtualization
• Modify Guest OS so that all calls to sensitive instructions are changed to hypervisor calls.
• Much easier (and more efficient) to modify source code than to emulate hardware instructions (as in binary translation).
• In effect, turns the hypervisor into a microkernel.
cs431-cotter 14
Paravirtualization (1)
Figure 8-27. A hypervisor supporting both true virtualization and paravirtualization.
cs431-cotter
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-136006639
15
Problems with Paravirtualization
• Paravirtualized systems won’t run on native hardware
• There are many different paravirtualization systems that use different commands, etc.
– VMware, Xen, etc.
• Proposed solution:
– Modify the OS kernel so that it calls a special set of procedures to execute sensitive instructions ( Virtual Machine Interface )
• Bare metal – link to library that implement code
• On VM – link to VM specific library cs431-cotter 16
Paravirtualization (2)
Figure 8-28. VMI Linux running on (a) the bare hardware (b) VMware (c) Xen.
cs431-cotter
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-136006639
17
Products (partial List)
• Microsoft – Virtual PC, Hyper-V
• QEMU – Processor Emulation & VM
• Sun Microsystems – xVM, VirtualBox
• VMware – ESX Server, Workstation,
Fusion, Player, Server
• Xen – Xen
• VirtualIron cs431-cotter 18
Memory Virtualization
• OS tracks mapping of virtual memory pages to physical memory pages.
• Builds page tables, then update paging register (trap).
• Allow hypervisor to manage page mapping, and use shadow page tables for the VMs cs431-cotter 19
Memory Virtualization
• Changes to page tables do NOT trap!
– One solution: Mark shadow page tables as read only. Then when VM tries to write to table, page fault traps to hypervisor.
– Paravirtualized OS: Since OS has been modified to account for hypervisor, page table updates can be followed by call to hypervisor about changes. cs431-cotter 20
I/O Virtualization
• Each guest OS holds its own “partition”.
– Typically implemented as a file or region on disk
– Hypervisor must convert guest OS address
(block #) into physical address in region
– May convert between storage types.
– Must deal with DMA requests cs431-cotter 21
VM on Multi-core CPUs
• Each core can be configured for multiple virtual machines.
– A Quad-core CPU could be configured as a
32 node multi-computer
– Limiting factor is often memory. Each guest
OS has its own requirements (512 MB?) cs431-cotter 22
Installing a Virtual machine
• Will first install VirtualBox as hypervisor
• Base OS is Windows 7
• Guest OS will be Ubuntu 12.04.1
cs431-cotter 23
cs431-cotter
Installing VirtualBox
24
cs431-cotter
Installing VirtualBox
25
cs431-cotter
Installing VirtualBox
26
cs431-cotter
Installing VirtualBox
27
cs431-cotter
Installing Ubuntu VM
28
cs431-cotter
Installing Ubuntu VM
29
cs431-cotter
Installing Ubuntu VM
30
cs431-cotter
Installing Ubuntu VM
31
Installing
Ubuntu
VM cs431-cotter 32
cs431-cotter
Installing Ubuntu VM
33
cs431-cotter
Installing Ubuntu VM
34
cs431-cotter
Installing Ubuntu VM
35
Summary
• Virtualization provides a way to consolidate OS installations onto fewer hardware platforms
• 3 basic approaches
– type 1 hypervisor
– type 2 hypervisor
– Paravirtualization
• Must also account for virtual access to shared resources (memory, I/O) cs431-cotter 36
References
• Virtual Machine Interface
– http://vmi.ncsa.uiuc.edu/
• VirtualBox
– https://www.virtualbox.org
• Xen Hypervisor (Red Hat Linux)
– http://www.xen.org/
• Virtual PC 2007
– http://www.microsoft.com
cs431-cotter 37
Questions
• In terms of resource allocation does a type 1 hypervisor leave more or less space for guest
OSs than a type 2 hypervisor? Why?
• In terms of a access to a guest OS, what is the difference between a bridged interface and a
NAT interface?
• What changes are needed to convert a guest
OS into a paravirtualized OS?
• Why has virtualization not been available on
PCs until recently (2005)?
cs431-cotter 38