%%
%% Présentaion à Federez 2008 de la virtualisation au ResEl
%%
%%
%% Copyright (C) 2005 Association ResEl <gestion@resel.enst-bretagne.fr>
%% Ce document est un document libre ; vous pouvez le redistribuer et/ou
%% le modifier au titre des clauses de la Licence Publique Générale GNU,
%% telle que publiée par la Free Software Foundation ; soit la version 2
%% de la Licence, ou (à votre discrétion) une version ultérieure
%% quelconque. Ce docuement est distribué dans l'espoir qu'il sera utile,
%% mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de
%% COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE. Voir
%% la Licence Publique Générale GNU pour plus de détails. Vous devriez
%% avoir reçu un exemplaire de la Licence Publique Générale GNU avec ce
%% programme ; si ce n'est pas le cas, écrivez à la Free Software
%% Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA
%% 02110-1301, USA.

%\documentclass[xcolor=pst,compress]{beamer}
\documentclass{beamer}
% xcolor = bst pour pouvoir utiliser PSTricks et Beamer

\usepackage[francais]{babel}
\usepackage[latin1]{inputenc}
\usepackage{pstricks,xspace}
\usepackage{graphicx}

%% Rajoute un \strut pour que la couleur résiste à un \item devant...
\newcommand{\vavers}{\strut{\red$\leadsto$}\xspace}

\mode<presentation>
{
  %\usetheme{Warsaw}

  % Variation sur le thème de Warsaw
  % (principalement à cause du rappel du plan en haut
  %  qui est devenu trop long)
  \useinnertheme{rounded}
  \useoutertheme{infolines}
  \usecolortheme{orchid}
  \usecolortheme{whale}

  \setbeamercovered{transparent}

  % On supprime la barre de navigation
  \setbeamertemplate{navigation symbols}{}
}



\title[Le ResEl et la virtualisation]
{Le ResEl et la Virtualisation : Retour sur le déploiement de Xen}

\author[Association ResEl]
{
  Association ResEl\\
  \texttt{<gestion@resel.fr>}
}

\institute[Réseau des élèves]
{
  Réseau des Élèves de l'ENST Bretagne
}

\date{7 Mars 2008}


\subject{Le ResEl et la Virtualisation : Retour sur le déploiement de Xen}
\keywords{ResEl}


\author[Association ResEl]
{
  Association ResEl\\
  \texttt{<gestion@resel.fr>}
}

\institute[Réseau des Élèves]
{
  Réseau des Élèves de l'ENST Bretagne
}

\date{7 Mars 2008}



% Logo du ResEl
\pgfdeclareimage[height=0.4cm]{resel}{logo_ResEl}
\logo{\pgfuseimage{resel}}


% Delete this, if you do not want the table of contents to pop up at
% the beginning of each subsection:
\AtBeginSection[]
{
  \begin{frame}<beamer>
    \frametitle{Plan}
    \scriptsize
    \tableofcontents[currentsection]
    \normalsize
  \end{frame}
}


% Delete this, if you do not want the table of contents to pop up at
% the beginning of each subsection:
%\AtBeginSubsection[]
%{
%  \begin{frame}<beamer>
%    \frametitle{Plan}
%    \scriptsize
%    \tableofcontents[currentsection,currentsubsection]
%    \normalsize
%  \end{frame}
%}


% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command:
%\beamerdefaultoverlayspecification{<+->}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\begin{frame}
  \titlepage
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Licence}

  \begin{block}{}
    Ces slides sont sous licence GPL (General Public Licence). Ils sont
    disponibles, avec leur code source dans le svn de l'Association ResEl
    (\href{http://svn.resel.fr}{http://svn.resel.fr}).

\vspace{0.8cm}

    Ils ont été créés à partir de logiciels libres (\LaTeX-beamer).
  
   \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
  \frametitle{Plan}
  \scriptsize
  \tableofcontents
  \normalsize
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Introduction}

\subsection{Le ResEl}

\subsection{ Qu'est ce que la virtualisation ?}
\begin{frame}
  \frametitle{Virtualiser pourquoi ?}
  \begin{block}{}
    \begin{itemize}
      \item Pour faire cohabiter différents O.S.
      \item Pour rentabiliser la puissance disponible
      \item Pour séparer les services
      \item Pour la résistance aux pannes (migration)
      \item Parce que c'est la classe !
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Différentes solutions (1)}
  \begin{block}{Virtualisation matérielle}
    \begin{itemize}
      \item Intégré au processeur
      \item Intel VT (Vanderpool), AMD-V, ...
    \end{itemize}
  \end{block}
  \begin{block}{Émulation}
    \begin{itemize}
      \item Pour simuler une plate-forme matérielle complètement différente
      \item Émulateurs console (pcsx, etc) ; PearPC (PowerPC)
    \end{itemize}
  \end{block}
  \begin{block}{Traduction binaire}
    \begin{itemize}
      \item Le plus courant sur une machine personnelle
      \item Translation des instructions (peu de différences avec l'émulation)
      \item QEmu, Bochs, VirtualBox, VMWare, Microsoft VirtualPC, Parallels
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Différentes solutions (2)}
  \begin{block}{Paravirtualisation}
    \begin{itemize}
      \item Pour simuler une plate-forme matérielle complètement différente
      \item Nécessite une modification de l'O.S. hôte
      \item Xen, VMWare ESX
    \end{itemize}
  \end{block}
  \begin{block}{Noyau en espace utilisateur}
    \begin{itemize}
      \item Différents degrés d'isolation et de fonctionnalités
      \item UML
    \end{itemize}
  \end{block}

  \begin{block}{Isolateurs}
    \begin{itemize}
      \item Différents degrés d'isolation et de fonctionnalités
      \item Ce n'est pas de la virtualisation, mais ça en a certains aspects.
      \item Jails BSD, Zones Solaris, Linux VServer, OpenVZ (Virtuozzo), chroot~(?)
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Xen}
   \begin{block}{}
     \begin{itemize}
      \item Xen open Source
      \item Acheté par Citrix
      \item Développé par l'université de Cambridge
    \end{itemize}
  \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{Présentation de l'Architecture du ResEl}
\begin{frame}
  \frametitle{Le Réseau}

  \begin{block}{}
   \begin{itemize}
    \item Réseau en étoile : routeur Central (Cisco 3750) et 11 batiments (cisco 2760)
    \item Mise en place de VLANs : Utilisateurs, Serveurs, Interface publiques des serveurs, VLANs switchs
    \item Vlans séparés entre eux (Vlan Serveurs pas accessibles depuis utilisateurs : besoin de machines passerelles)
  \end{itemize}

  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Les machines}

  \begin{block}{}
   \begin{itemize}
    \item On a profité du prêt de notre DISI de vieux serveurs dont ils ne se servaient plus pour déployer en parallèle avec les machines traditionnelles
    \item Ces machines : Des bicoeurs avec entre 1 et 2 Go de rams et un quadricoeur : au total 5 machines
    \item Achat d'une machine pour faire un NAS : Dell avec 5 disques de 500 Go en raid 5 hardware et 1 go de ram
    \item Machines avec au moins deux cartes réseaux
  \end{itemize}

  \end{block}
\end{frame}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{Le partage Réseau}
\begin{frame}
   \frametitle{Présentation}
   \begin{block}{}
   \begin{itemize}
    \item Notre NAS stocke tous les disques des machines virtuelles sous forme de partitions lvm (même le swap)
    \item Elles sont ensuite exportés sur chacune des dom0. Elles sont ensuites montés sur la machine qui en a besoin.
    \item cela permet de faire des migrations lives.
    \item Plusieurs méthodes de partages ont été utilisées : NFSroot, iscsi, aoe.
    \item A l'heure actuelle on utilise l'aoe.
  \end{itemize}
  \end{block} 
\end{frame}

\begin{frame}
  \frametitle{NFS}
   \begin{block}{NFS}
    \begin{itemize}
    \item Première méthode utilisée
    \item Très mauvaises performances en particulier à cause de l'utilisation du nfsroot
     \item Pas de cache en particulier. Le swap était dans un fichier de swap.
    \item en avantage : on peut monter une machine à deux endroits à la fois sans qu'elle explose.
    \item Toujours utilisé pour partager entre autres les fichiers de confs des machines virtuelles.
  \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
\frametitle{iSCSI}
\begin{block}{iSCSI}
     \begin{itemize}
    \item Deuxième méthode utilisée
    \item On exporte directement des volumes LVM, on ne peux pas les monter à plusieurs endroits en même temps . Meilleures performances
    \item Utilisé en particulier par OVH pour leur offre RPS . Problème avec le swap : pour y accéder il a besoin de ram (car il est partagé en iscsi et que iscsi a besoin de ram pour marcher)
    \item  Fonctionne sur TCP donc  limite la congestion. Malheureusement très compliqué et a nécessité un backport pour le serveur.
     \end{itemize}   
\end{block}
\end{frame}

\begin{frame}
\frametitle{AoE}
    \begin{block}{AoE - Ata over Ethernet}
    \begin{itemize}
     \item Meilleures performances
     \item Directement sur Ethernet 
     \item c'est ce qu'on utilise à l'heure actuelle mais on pourrais aussi utiliser l'iscsi.
     \item Assez simple et subit un développement intensif mais malheureusement risque de congestion si trop gros trafic
     \item Trop simple : il faut faire pas mal de truc à la main (exemple : pas d'outils pour ne plus exporter les volumes)
      \end{itemize}
     \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Administration}
\begin{frame}
   \frametitle{fichier de conf}
   \begin{block}{}
   \begin{itemize}
    \item general :
    \begin{itemize}
     \item name    = 'tracteur'
     \item memory = 256
     \item vcpus = 2
    \end{itemize}
    \item demarrage:
     \begin{itemize}
     \item kernel = "/boot/vmlinuz-2.6.18-5-xen-686"
     \item ramdisk = '/boot/initrd.img-2.6.18-5-xen-686'
     \item root = '/dev/hda1 ro'
     \end{itemize}
    \item export disques :
      \begin{itemize}
       \item \#disk   = [ 'phy:/dev/disk/by-path/ip-172.22.2.4:3260-iscsi-iqn.2007-10.fr.resel:trolls.tracteur-lun-0,hda1,w']
       \item disk   = [ 'phy:/dev/etherd/e0.6,hda1,w']
      \end{itemize}
     \item reseau :
      \begin{itemize}
       \item vif    = [ 'mac=00:16:3e:16:02:56, bridge=xenbr997, ip=172.22.2.86',
       \item    'mac=00:16:3e:16:2a:56, bridge=xenbr994, ip=172.22.42.86' ]
      \end{itemize}
    \end{itemize}
  \end{block} 
\end{frame}

\begin{frame}
\frametitle{}
    \begin{block}{xm}
    \begin{itemize}
     \item L'outil CLI fournit par Xen pour controler les machines virtuelles 
     \item limité à la dom0 .
     \item peut arrêter, défoncer, lancer, migrer, envoyer des sysrq, mettre en pause, entrer en console ...
      \item POur un control plus global, nous avons dévellopé xmg (en python) qui utilise ssh et xm.
      \end{itemize}
     \end{block}
\end{frame}
\begin{frame}

\frametitle{xmg}
    \begin{block}{xmg}
     \begin{itemize}
      \item Développé en python par benoute du ResEl
      \item Sert à intéragir avec les différentes dom0 et domU de façon centralisé sur le serveur NAS.
      \item Permet aussi d'éviter des problèmes comme de monter deux fois la même VM.
      \item Implémente des fonctions utililes comme des rescue-reboot. La migration de toutes les VM d'une dom0, Pause de toutes les VMs...
      \item Se connecte en ssh (via appli python de python) sur toutes les dom0 et executent les commandes correspondantes.
     \end{itemize}
    \end{block}
\end{frame}

\begin{frame}
 \frametitle{Mechanismes de protection}
    \begin{block}{Mechanismes de protections}
     \begin{itemize}
      \item xmg permet d'eviter le montage à plusieurs endroite
      \item l évite aussi qu'au reboot d'une machine il lance automatiquement une VM alors qu'elle est déjà montée
      \item Si la connection est coupé vers le NAS, au bout d'un certains temps les VM se mettent en pause: sinon elle essaie de faire des i/o et elle plante
      \item sauvegarde via backuppc des vm mais aussi dd sur les volumes des machines critiques.
      \item Ces sauvegardes sont copiés sur les différentes dom0 afin de pouvoir les lancer en local si on perd le NAS
     \end{itemize}
   \end{block}
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Difficultés rencontrés}
\begin{frame}
 \frametitle{Réseau}
    \begin{block}{Mechanismes de protections}
     \begin{itemize}
      \item Limite de xen à 3 interfaces réseaux
      \item Problèmes du choix de la MTU 
      \item 
     \end{itemize}
   \end{block}
\end{frame}




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Conclusion}

\begin{frame}
 \frametitle{Les machines physiques}
\includegraphics[width=0.8\textwidth]{Physique.png}

\end{frame}

\begin{frame}
 \frametitle{Les machines virtuelles}
  \includegraphics[width=1\textwidth]{Virtuelle.png}
\end{frame}
\begin{frame}
  \frametitle{Conclusion }
   \begin{itemize}
     \item Ca marche !
     \item Nouvelle façons de repenser les services et le matériel
     \item pleins de problèmatiques de hautes disponibilités et de redondances.
     \item Des questions ?
   \end{itemize}
\end{frame}

\end{document}
