% LaTeX2e
% `Virtual Machines Presentation, MAS-I1 2007'
% 21. Dezember 2007, Peter Schmid
% RCS-Id: $Id: presentation.tex,v 1.1 2007/10/14 15:29:17 pschmid Exp pschmid $

%\documentclass{beamer}
\documentclass[handout]{beamer}

\mode<presentation>
{
  \usetheme{Warsaw}

  \setbeamercovered{transparent}
}

\usepackage[german]{babel}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}

%\setbeameroption{show notes}

%---------------------------------------------------------------------

\title{Virtual Machines}

\author{Peter Schmid}

\institute[HSZ-T] 
{
  Hochschule f{\"u}r Technik Z{\"u}rich\\
  Master of Advanced Studies, Informatik
}

\date[MAS-I1]{21.12.2007}

\pgfdeclareimage[height=0.5cm]{university-logo}{fig/hsz-logo}
\logo{\pgfuseimage{university-logo}}

%---------------------------------------------------------------------

\begin{document}

\begin{frame}

  \titlepage

\end{frame}

% ---------------------------------------------------------------------

\begin{frame}{Outline}

  \tableofcontents
  % You might wish to add the option [pausesections]
\end{frame}

% ---------------------------------------------------------------------

\section{Einf{\"u}hrung}

\subsection{Definition, Abgrenzung}

\begin{frame}
  \frametitle{Definition, Abgrenzung}
  
  Es gibt zwei Kategorien von VMs:
  \begin{itemize}
  \item<1-> Virtuelle Hosts (Gast-Systeme)
  \item<2-> Laufzeitumgebungen f{\"u}r Programme (z.B. Java Virtual
    Machine)
  \end{itemize}
  
  Wir beschr{\"a}nken uns hier auf Virtuelle Hosts (System Virtual
  Machines, Hardware Virtual Machines).
\end{frame}

% ---------------------------------------------------------------------

\subsection{Geschichtlicher R{\"u}ckblick}

\begin{frame}
  \frametitle{Geschichtlicher R{\"u}ckblick}

  \begin{itemize}
  \item<1-> 1967: IBM CP/CMS auf CP-40
  \item<2-> 1972: IBM VM-CP, CMS (Single User OS) als Gast
  \item<3-> 199x: Virtualisierbare HW auf UNIX Sytemen (Sun, HP, IBM)
  \item<4-> 1997: Virtual PC f{\"u}r Aplle Mac von Connectix
  \item<5-> 1999: Virtual Platform von VMware
  \item<6-> 2002: VMware GSX
  \item<7-> 2003: MS {\"u}bernimmt Connectix und stellt Virtual PC und
    Virtual Server vor
  \item<8-> 2003: Xen Open Source virtual machine monitor
  \item<9-> 2007: Citrix {\"u}bernimmt XenSource
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------

\section{Klassifizierung}

\subsection{Virtualisierungstechnologien}

\begin{frame}
  
  \frametitle{Virtualisierungstechnologien}
  
  \begin{itemize}
  \item<1-> HW Emulation (z.B. Bochs, QEMU) 
  \item<2-> HW Virtualisierung (z.B. VMware)
  \item<3-> Paravirtualisierung (z.B. Xen)
  \item<4-> Betriebssystemvirtualisierung (z.B. Solaris Containers)
  \end{itemize}


\end{frame}

% ---------------------------------------------------------------------

\subsection{Terminologie}

\begin{frame}

 \frametitle{VMM, Hypervisor}

  Die SW die die Virtualisierung vornimmt, nennt man Virtual Machine
  Monitor (VMM) oder Hypervisor.
  
  Der Hypervisor l{\"a}uft auf:

  \begin{itemize}
  \item<1-> direkt auf der HW (Type 1 oder Native VM, Bare Metal Environment)
  \item<2-> auf einem OS (Type 2 oder Hosted VM)
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------


\section{Wie funktioniert's?}

\begin{frame}
  \frametitle{HW Emulation}

  \begin{itemize}
  \item<1-> komplette HW wird emuliert
  \item<2-> Prozessor wird nachgebildet, Prozessor-Instruktionen
    werden emuliert
  \item<3-> sehr schlechte Performance
  \item<4-> nicht f{\"u}r produktive Systeme
  \item<5-> Bekannte Emulatoren: Bochs, QEMU, PearPC, DOSbox
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  \frametitle{HW Virtualisierung}

  \begin{itemize}
  \item<1-> Andere Bezeichnungen: Full, Transparent oder Native
    Virtualization
  \item<2-> die meisten Instruktionen werden direkt auf dem
    Prozessor ausgef{\"u}hrt ``direct execution''
  \item<3-> VMM l{\"a}uft im priviligierten Modus (Kernel, Ring 0 auf x86)
  \item<4-> Gast-OS k{\"o}nnen keine priviligierten Befehle ausf{\"u}hren,
    diese werden vom VMM abgefangen und dem Prozessor {\"u}bergeben
    (Modifikation OS w{\"a}hrend der Laufzeit), Ring 3 auf x86
  \item<5-> Bekannte VMMs: VMware, MS Virtual PC/Server
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  \frametitle{Paravirtualisierung}

  \begin{itemize}
  \item<1-> Gast-OS muss angepasst werden (priviligierte Befehle)
  \item<2-> priviligierte Befehle werden in Hypercalls umgesetzt
  \item<3-> HW Unterst{\"u}tzung durch Prozessoren (AMD-V und Intel VT-x),
    Gast-OS l{\"a}uft auf Ring 0D
  \item<4-> der gr{\"o}sste Teile der Instruktionen wird direkt auf dem
    Prozessor ausgef{\"u}hrt ``direct execution''
  \item<5-> VMM l{\"a}uft im priviligierten Modus (Kernel, Ring 0P auf
    x86)
  \item<6-> Bekannte Paravirtualisierer: Xen (und damit XenSource,
    XenEnterprise, OracleVM, xVM), VirtualIron
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  \frametitle{Virtualisierung auf Betriebssystemebene}

  \begin{itemize}
  \item<1-> Nur ein BS-Kernel
  \item<2-> ist am effizientesten (Leistungseinbusse 1..3 \%)
  \item<3-> Abh{\"a}ngig vom Hostsystem
  \item<4-> Bekannte BS-Virtualisierer: Sun Solaris Container, FreeBSD
    Jails, Virtuozzo, Linux VServer
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  \frametitle{Installation von Gast-BS}

  \begin{itemize}
  \item<1-> VM Umgebungen stellen standardisierte Treiber zur Verf{\"u}gung (Disk, Graphik usw.)
  \item<2-> Disks werden von VMM verwaltet, Snapshots m{\"o}glich
  \item<3-> einfach von Maschine zu Maschine verschiebbar
  \item<4-> Nicht alle HW wird unterst{\"u}tzt (z.B. USB) 
  \item<5-> Aufw{\"a}ndige Management-SW f{\"u}r kommerzielle VMM verf{\"u}gbar
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------


\section{Vorteile und Grenzen der Virtualisierung}
\subsection{Vorteile}


\begin{frame}
  \frametitle{Vorteile und Nutzen der Virualisierung}

  \begin{itemize}
  \item<1-> geringere HW-Investitionen
  \item<2-> weniger HW-Wartungsvertr{\"a}ge
  \item<3-> reduzierter Platzbedarf
  \item<4-> geringerer Energiebedarf (kleinere USV, kleinere Klimaanlage)
  \item<5-> weniger Verkabelung und Netzwerkports
  \item<6-> Steigerung der Flexibilit{\"a}t
  \item<7-> schnelle Bereitstellung
  \item<8-> schnellere Wiederherstellung
  \item<9-> kosteng{\"u}nstige Testumgebung
  \item<10-> Abl{\"o}sung von Legacy Servern (z.B. fehlende Treiber f{\"u}r WinNT4)
  
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------

\subsection{Nachteile}


\begin{frame}
  \frametitle{Grenzen der Virtualisierung}

  \begin{itemize}
  \item<1-> zus{\"a}tzliche Abstraktionsstufe
  \item<2-> Performance-Verlust
  \item<3-> Pferd von hinten aufgez{\"a}umt, BS sollten eigentlich Dienste
    gen{\"u}gend voneinander isolieren.
  \item<4-> HW wird nicht optimal genutzt (v.a. neuere)
  \item<5-> fehlende Treiber
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------


\end{document}
    