Virtualisation sur une grille de calcul et support de cours



Documents pareils
Installation et prise en main d UBUNTU

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Rapport de stage. Développement d un logiciel de vidéoconférence : Enjeux 3. Guillaume DOTT 2009

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Chapitre 02. Configuration et Installation

Atelier Le gestionnaire de fichier

Retrouver de vieux programmes et jouer sur VirtualBox

Virtual Box Mettez un PC dans votre... PC

Manuel de System Monitor

TD/TP 1 Introduction au SDK d Android

Comment installer la configuration des salles sur son ordinateur personnel?

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

Comment se connecter au dossier partagé?

Compte Rendu d intégration d application

Préparation à l installation d Active Directory

Tutoriel : Utilisation du serveur de calcul à distance de PSE

But de cette présentation. Bac à sable (Sandbox) Principes. Principes. Hainaut P

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Tutoriel XBNE Connexion à un environnement XBMC distant

Première édition en format électronique. Parallels Desktop 7 pour Mac OS X.

Le stockage. 1. Architecture de stockage disponible. a. Stockage local ou centralisé. b. Différences entre les architectures

Présentation Utilisation. VirtualBox. Firas Kraïem. 22 février 2014

Mise en œuvre des serveurs d application

Mise en place des TPs Réseau en machines virtuelles. Utilisation de VmPlayer

PROFIL EXPERIENCE ARCHITECTE LINUX, OPEN SOURCE, COORDINATEUR SÉCURITÉ EMEA

Séquencer une application

Accéder à ZeCoffre via FTP

Administration de Parc Informatique TP07 : Installation de Linux Debian

BIRT (Business Intelligence and Reporting Tools)

Vade mecum installation et configuration d une machine virtuelle V5.1.0

TP Déploiement de réseaux IP sous Linux et MS Windows sur une infrastructure virtualisée

TP01: Installation de Windows Server 2012

Manuel d administration de Virtual Box MANUEL D UTILISATION VIRTUAL BOX

Eclipse atelier Java

LiveUSB clefisn. Meilland jean claude et Kbida Abdellatif. 16 septembre 2012

Les dossiers compressés (ou zippés)

FileMaker Server 14. Aide FileMaker Server

Connexion à SQL server

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Quick Start Installation de MDweb version 2.3

Atelier Administration

A Libre Ouvert. Médiathèque Jacques Ellul. le

Protéger une machine réelle derrière une machine virtuelle avec pfsense

NiceLabel pour Services Microsoft Windows Terminal Serveur et Citrix MetaFrame

Fiche Technique Windows Azure

Virtualisation de Windows dans Ubuntu Linux

Préconisations Techniques & Installation de Gestimum ERP

Guide d installation de SugarCRM Open Source version 4.5.1

26 Centre de Sécurité et de

SOMMAIRE ÉTAPES OBLIGATOIRES. Récupérer le connecteur... 3

sommaire ÉTAPES OBLIGATOIRES Récupérer le connecteur... 3

VMware ESX/ESXi. 1. Les composants d ESX. VMware ESX4 est le cœur de l infrastructure vsphere 4.

Enoncé du TP 8 Système

Bases Java - Eclipse / Netbeans

Centres d accès communautaire Internet des Îles LA CLÉ USB

Il est courant de souhaiter conserver à

NETWORK & SOFTWARE ENGINEERING MANUEL D UTILISATEUR. Logiciel TIJARA. NETWORK AND SOFTWARE ENGINEERING Manuel d'utilisateur "TIJARA" 1

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Fais ton site internet toi-même

Chapitre I Notions de base et outils de travail

Windows 10 Technical Preview

Stockage des machines virtuelles d un système ESXi jose.tavares@hesge.ch & gerald.litzistorf@hesge.ch

Sauvegarde et Restauration d un environnement SAS

Déploiement d application Silverlight

Getting Started. 10 étapes pour bien démarrer. Avant de démarrer. Première connexion PCC

Installation d'une machine virtuelle avec Virtualbox

Introduction aux «Services Web»

CORBA. (Common Request Broker Architecture)

Guide administrateur AMSP

Mise en œuvre d une solution de virtualisation

Les logiciels indispensables à installer sur votre ordinateur

Tutoriel déploiement Windows 7 via serveur Waik

FileMaker Pro 12. Guide de configuration de l installation réseau

Guide d installation de MySQL

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Reporting Services - Administration

KWISATZ MODULE PRESTASHOP

VERITAS Backup Exec TM 10.0 for Windows Servers

Table des matières 1. Installation de BOB BOB ou un programme annexe ne démarre pas ou ne fonctionne pas correctement...10

Systèmes informatiques

BULK SMS Envoi en masse d un message texte moyennant un téléphone mobile (GSM)

Gestion des applications, TI. Tout droits réservés, Marcel Aubin

PROCÉDURE D AIDE AU PARAMÉTRAGE

Pré-requis de création de bureaux AppliDis VDI

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Installation et prise en main

Gestion des Appliances. M. AIRAJ Ecole Informatique IN2P

WHITE PAPER. Quels avantages la déduplication offre-t-elle aux entreprises? Livre blanc Acronis

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

FileMaker Server 14. Guide de démarrage

Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE.

Itium XP. Guide Utilisateur

Transcription:

Jocelyn Facchini Master 2 Informatique - Systèmes distribués et réseaux Rapport de stage Virtualisation sur une grille de calcul et support de cours Maitre de stage : M. Thierry Delaitre Tuteur de stage : M. Jean-Michel Hufflen Université de Westminster Université de Franche-Comté du 14 février au 3 juin 2011

Remerciements Je tiens à remercier certaines personnes sans qui ce stage n aurait pas pu avoir lieu et se dérouler dans de bonnes conditions. Je voudrais remercier M. Thierry Delaitre mon maître de stage pour son accueil au sein de l Université de Westminster, pour l encadrement de mon stage et pour ses conseils pour la réalisation de ce dernier. Je remercie également M. Jean-Michel Hufflen, Maître de Conférences à l Université de Besançon pour m avoir aidé à trouver ce stage et pour m avoir aidé à corriger le présent rapport. Je remercie M. Christopher J. Reynolds, chercheur à l Université de Westminster pour m avoir aidé à comprendre le fonctionnement de son programme et pour m avoir aidé à commencer mon travail. Je tiens particulièrement à le remercier car sans son aide sur l utilisation de BOINC je n aurais pas pu avancer si rapidement sur mon projet. Je remercie également mes camarades, Philippe Regley, Fabien Monnet, Germain Tanguy et Florian Gibbon pour leur compagnie amicale durant le stage. i

Table des matières Remerciements i Introduction 1 1 Lieu et motivations du stage 2 1.1 Université de Westminster... 2 1.1.1 School of Electronics and Computer Science... 3 1.1.2 Centre for Parallel Computing... 4 1.2 Description des sujets de stage... 4 1.2.1 Virtualisation sur une grille de calcul... 4 1.2.2 Machine virtuelles de support de cours... 5 1.3 Premières approches... 6 1.3.1 Programme pour BOINC... 6 1.3.2 VirtualBox... 6 1.3.3 Machine virtuelle sous Debian... 7 2 Travail de documentation 8 2.1 Les outils découverts... 8 2.1.1 OpenIndiana... 8 2.1.2 ZFS... 8 2.1.3 COMSTAR... 9 2.1.4 VirtualBox... 10 2.1.5 BOINC... 10 2.2 Les outils programmation... 11 2.2.1 Netbeans... 11 2.2.2 Glassfish... 12 2.2.3 JAX-WS... 12 3 Virtualisation sur une grille de calcul 13 3.1 Serveur OpenIndiana... 13 3.1.1 Installation de Glassfish... 13 ii

3.1.2 Configuration des droits utilisateurs... 14 3.1.3 Scripts shell... 15 3.2 WebService... 16 3.2.1 Fonctionnalités... 17 3.2.2 Exécution des scripts shell... 17 3.3 Programme pour client BOINC... 18 3.3.1 Retrait de la décompression du disque dur... 18 3.3.2 Client WebService avec gsoap... 19 4 Machines virtuelles de support de cours 20 4.1 Fonctionnalités... 20 4.1.1 Étudiant... 20 4.1.2 Enseignant... 22 4.2 Coté serveur... 26 4.2.1 Serveur WebService... 26 4.2.2 Persistance XML... 28 4.3 Coté client... 29 4.3.1 Client WebService... 29 4.3.2 Interface Homme Machine... 29 5 Bilans et perspectives 31 5.1 Bilan du travail réalisé... 31 5.1.1 Semainier... 31 5.1.2 Résultat pour l université... 32 5.2 Bilan humain et personnel... 32 5.3 Poursuite du projet... 33 5.3.1 Fonctionnalités... 33 5.3.2 Ajout d une partie administrateur... 34 5.3.3 Changement de technologie... 34 Conclusion 35 Bibliographie 36 Glossaire 37 Annexes 39 iii

Introduction À l Université de Besançon, les étudiants de Master 2 Informatique professionnel sont amenés à réaliser un stage en entreprise d une durée minimum de 4 mois. Il est possible aux étudiants de réaliser ce stage dans un pays é t r a n g e r. La langue de Shakespeare est bien évidemment indispensable dans le monde de l Informatique, c est pourquoi j ai souhaité effectuer mon stage en Angleterre afin de m immerger dans cette langue en complément de la formation qu apporte un stage en entreprise. J ai obtenu par l intermédiaire de M. Jean-Michel Hufflen, Maître de Conférences à l Université de Besançon, un stage au sein de l Université de Westminster à Londres où j ai été accueilli dans l équipe du Centre for Parallel Computing par M. Thierry Delaitre, directeur des infrastructures à l université. Durant ce stage, j ai été amené à travailler sur deux sujets de stage. Le premier avait pour sujet Desktop Grid Virtualisation. Il consistait à améliorer un programme sur une grille de calcul qui utilise des machines virtuelles. Le deuxième sujet m a été attribué afin de me permettre de réutiliser les connaissances acquises durant le premier. Il consistait à développer une solution de gestion de machines virtuelles servant de support de cours aux enseignants de l Université de Westminster. Le présent rapport explique le travail que j ai réalisé durant mon stage. Il est composé de 5 parties expliquant dans un premier temps le cadre de mon stage dans l université et les sujets qui m ont été proposés. Je poursuis ensuite en parlant du travail de documentation que j ai réalisé afin de comprendre les outils que j allais devoir prendre en main. Je continue en présentant en deux parties le travail réalisé sur chacun des deux sujets. Je termine par deux dernières parties pour tirer le bilan de ce stage avant de conclure ce rapport. Les termes marqué d une sont définis dans le glossaire se trouvant à la fin de ce rapport. 1

Chapitre 1 Lieu et motivations du stage L Université de Westminster a été créée en 1838 par M. George Cayley et avait pour nom Royal Polytechnic Institution. Cette école fut le premier lieu d enseignement technique en Grande-Bretagne. (a) Entrée du site (b) Foyer du site Figure 1.1 Site de Regent Street 1.1 Université de Westminster L Université de Westminster est actuellement composée de 6 sites répartis dans Londres et ses environs. Le site Cavendish qui se trouve au 101-115 New Cavendish Street proche de la tour de la British Telecom. Il contient deux écoles : Électronique et informatique Sciences de la vie 2

C est dans ce site que mon stage s est déroulé au sein de l école d électronique et informatique School of electronics and computer science. La figure suivante présente le bâtiment vu de devant. Figure 1.2 Site Cavendish Le site de Great Portland Street se trouve au 70-74 Great Portland street, il contient le département du centre informatique pour personnes handicapées. Le site de Harrow se trouve à Watford road. Il contient deux écoles : une partie de l école d électronique et informatique l école des médias, de l art et du design Le site de Little Titchfield Street se trouve au 4-12 Little Titchfield street, il contient l école de droit. Le site de Marylebone se trouve au 35 Marylebone road. Il contient l école d architecture et de construction environnementale. Le site de Regent Street qui se trouve au 309 Regent street est le plus ancien site de l université. Il comprend l école des sciences sociales, des sciences humaines et des langues. 1.1.1 School of Electronics and Computer Science Cette école est en cohabitation avec l école de sciences de la vie au sein du site de Cavendish. On peut voir que cette école est constituée de 3 départements et de 4 groupes de recherches dont voici les énoncés : Department of Business Information Systems Department of Computer Science & Software Engineering 3

Department of Electronic, Network and Computer Engineering Electronic and Communication Engineering Operational Research and Intelligent Systems Parallel and Distributed Computing Semantic Computing and Systems Engineering Cette école est très réputée pour les programmes d échanges internationaux. J ai pu y découvrir nombre d étudiants étrangers qui viennent étudier dans ce site. L école propose beaucoup de domaines d enseignement dans le parcours informatique. Il est ainsi possible de suivre des cours de gestion de systèmes d information, de programmation parallèle et distribuée, de programmation d intelligence artificielle en passant également par le développement de jeux vidéos et d autres formations. 1.1.2 Centre for Parallel Computing Pour mon stage, j ai intégré l équipe du Centre for Parallel Computing. Cette équipe fait partie du groupe de recherche Parallel and Distributed Computing. Cette équipe travaille sur plusieurs projets en parallèle avec la recherche. Elle est spécialisée en développement d applications parallèles et distribuées. Les chercheurs travaillent en collaboration avec l université hongroise Sztaki pour développer des applications de gestion de programmes parallèles et distribués sur une grille de calcul ou sur un cluster, on peut citer notamment les projets Shiwa, EDGeS, NGS, GEMLCA. 1.2 Description des sujets de stage L équipe CPC est spécialisée dans les calculs parallèles et distribués. J ai donc été amené à commencer mon travail sur un programme s exécutant sur une grille de calcul avant de travailler sur une application de gestion de machines virtuelles. 1.2.1 Virtualisation sur une grille de calcul À mon arrivée à l université, le premier sujet que j ai abordé pour mon stage avait pour énoncé Desktop Grid Virtualisation. Le but de ce projet était de poursuivre le travail de Christopher J. Reynolds, chercheur à l Université 4

de Westminster, sur un programme distribué au sein d une grille de calcul BOINC, nous verrons plus tard dans ce rapport plus de précisions à propos de BOINC et les détails du travail réalisé par C. J. Reynolds. L Université de Westminster dispose d un ensemble de plus de 1600 machines à la disposition des étudiants. Chacune de ces machines dispose d un client BOINC et tourne sur le système d exploitation Windows. Malheureusement ce système d exploitation ne peut être utilisé pour certains programmes distribués exécutés sur la grille de calcul. En effet, il est parfois nécessaire d utiliser un système d exploitation comme GNU/Linux pour effectuer certains calculs scientifiques. La virtualisation permet en particulier de faire fonctionner un système d exploitation dans un autre. C est en partant sur cette piste que C. J. Reynolds a développé un programme pour BOINC qui utilise une machine virtuelle pour exécuter un programme sous la distribution GNU/Linux Debian. Pour ce faire, il fallait alors charger le disque dur de la machine virtuelle sur chaque poste client exécutant le calcul distribué. Dans un souci de charge réseau, C. J. Reynolds devait alors comprimer les données de ce disque dur. Ces dernières était alors décomprimées par chaque machine cliente ce qui prenait donc un certain temps avant de pouvoir exécuter le calcul. Mon travail était d améliorer cette première solution pour pouvoir réduire la charge réseau nécessaire au transfert du disque dur de la machine virtuelle. L idée proposée par mon sujet était d utiliser un disque dur distant contenant la machine virtuelle. Ainsi il n y aurait plus besoin de télécharger puis décomprimer les données du disque dur de la machine virtuelle. 1.2.2 Machine virtuelles de support de cours Arrivé au terme de mon premier sujet, il m était impossible techniquement de tester ma solution sur plusieurs machines. En effet, je n avais pas de machines de test à disposition, de plus il m était impossible d exécuter mon programme sur la grille de calcul en production car les machines ne disposent que de la version 3.2 de VirtualBox, tandis que ma solution requiert la version 4.0 qui permet d utiliser les initiateurs iscsi. J ai donc été amené à passer à un autre sujet que m a proposé Thierry Delaitre. L idée était de me permettre de poursuivre sur un sujet en réutilisant les connaissances acquises sur les outils précédemment découvert. Le but de ce projet était de mettre en place un système de support de cours, plus particulièrement pour les travaux pratiques, pour l université en utilisant des machines virtuelles pré-configurées par des enseignants. Ces machines 5

virtuelles seraient donc accessibles aux étudiants de telle sorte que chacun d entre eux dispose de son instance personnelle. Techniquement il fallait que je développe une application client-serveur de gestion de disques durs distants pour les machines virtuelles. 1.3 Premières approches Les premières semaines de mon stage ont été consacrées à l étude du travail déjà réalisé sur la question. Le travail en question est, comme dis plus tôt, celui de Christopher J. Reynolds. Ce projet a pour titre Distributed Video Rendering using Blender, VirtualBox and BOINC et a été réalisé en 2010. Nous allons voir dans cette partie comment s organise ce programme qui fait cohabiter plusieurs technologies tel que BOINC, VirtualBox et la distribution Debian. 1.3.1 Programme pour BOINC Le programme développé est un programme parallèle et distribué sur une grille de calcul fonctionnant avec BOINC (Nous verrons dans le prochain chapitre plus de précisions sur BOINC) ayant pour but d effectuer un calcul avec Blender. Ce dernier va permettre d afficher un rendu vidéo d une scène 3D. Ce programme est composé de deux parties que l on place chacune dans un thread. Le premier est appelé Worker Thread. Il a pour but de décompresser le disque dur de la machine virtuelle, puis de créer la configuration de la machine virtuelle avec le programme VirtualBox local. Il termine enfin par exécuter la machine virtuelle, il en récupère le résultat pour finalement indiquer au deuxième thread, appelé Monitor Thread que le calcul est terminé. Ce deuxième a pour but d interagir avec le client BOINC de la machine locale. Ce client peut indiquer au programme d annuler, de suspendre ou de reprendre le calcul. C est le moniteur qui est donc en attente d un message pour gérer le calcul. Il a aussi pour rôle d envoyer un signal pour démarrer la machine et de l arrêter quand le calcul est terminé. 1.3.2 VirtualBox L idée est d utiliser la puissance d une grille calcul fonctionnant sous Windows en utilisant un programme sous la distribution Debian, Blender. La so- 6

lution utilisée pour ce calcul est d exploiter une machine virtuelle pour faire fonctionner Debian. VirtualBox fonctionne avec des fichiers de configuration dont deux utiles au programme distribué. Le premier est le fichier de configurations de VirtualBox et le deuxième est celui de la machine virtuelle en question. Dans l application de C. J. Reynolds, j ai pu observer qu il redéfinissait les chemins des fichiers de configurations en fonction du dossier courant où s exécute le programme. Pour cela, il édite les fichiers de configurations en ajoutant les lignes servant à indiquer à la machine virtuelle où se trouve le disque dur de la machine virtuelle. Pour pouvoir démarrer la machine virtuelle, C. J. Reynolds a utilisé le programme VBoxManage faisant partie de VirtualBox. Ce programme est un utilitaire en ligne de commande qui permet de gérer les configurations des machines virtuelles. Il sert également à démarrer une machine virtuelle grâce à la commande suivante : VBoxManage startvm UbuntuTest Dans cet exemple, on démarre la machine ayant pour nom UbuntuTest. 1.3.3 Machine virtuelle sous Debian Le calcul choisi pour ce programme distribué est un rendu vidéo d un cube. Pour cela le programme Blender est utilisé afin de calculer quelques images du rendu vidéo. Ce cas est pris à titre d exemple car Blender existe également pour le système d exploitation Windows. Le disque dur de la machine virtuelle a du être installé à l aide du programme Debootstrap. Ce dernier permet d installer les fichiers de la distribution Debian dans un système de fichier. C. J. Reynolds a ensuite utilisé la méthode du chroot qui consiste à changer temporairement la racine du système de fichier afin d installer les programmes utiles à la machine virtuelle tels que Blender et VBoxAdditions. Ce dernier permet d utiliser notamment le partage de fichiers entre la machine invitée et la machine qui héberge la virtuelle. Le déroulement de l exécution de la machine virtuelle revient à quelques étapes contenues dans un fichier exécuté au démarrage, écrit en script shell.il consiste à créer le dossier partagé, exécuter le calcul puis finalement éteindre la machine virtuelle. 7

Chapitre 2 Travail de documentation Dans cette partie, je vais décrire les différents outils que j ai découverts et utilisés. Je préciserai également quels ont été leur utilité pour mes projets. 2.1 Les outils découverts 2.1.1 OpenIndiana OpenIndiana est un système d exploitation développé par une communauté qui se s est basé sur le système OpenSolaris, développé au départ par Sun Microsystems. Figure 2.1 Logo d OpenIndiana Ce système d exploitation est décrit comme la suite d OpenSolaris, voire même son remplaçant. Il a été utilisé en tant que serveur. Il a l avantage d être livré par défaut avec ZFS et COMSTAR(ces deux derniers seront décrits plus loin). 2.1.2 ZFS Z File System est un système de fichier conçu initialement par Sun Microsystems. Il a principalement été développé pour Solaris. 8

Figure 2.2 Logo de ZFS Il a pour principales caractéristiques la gestion de très haute capacité stockage, la gestion de plusieurs volumes en un seul, la création d images (snapshots) de systèmes de fichiers et le clonage de ces derniers. L avantage des snapshots est de permettre de garder un système de fichiers en l état à un moment donné. L évolution du système de fichier sera ainsi enregistrée sans en modifier le contenu de départ. Il est possible également de créer des clones de ces snapshots. Ainsi on pourra disposer d un certain nombre de systèmes de fichiers ayant le même contenu initial mais chacun d entre eux disposant de sa propre évolution. Ajoutons finalement que ce système de fichier est très léger et permet de mettre en place très facilement une plateforme de gestion de stockage. 2.1.3 COMSTAR Common Multiprocol SCSI Target est un protocole qui permet à un système d exploitation d héberger des cibles du protocole SCSI accessibles en réseau. Small Computer System Interface, d après la définition de Wikipedia, est un standard définissant un bus informatique permettant de relier un ordinateur à des périphériques ou bien même à un ordinateur. Le protocole iscsi peut donc permettre l utilisation de disque dur distant par exemple, accessible via un réseau. Pour pouvoir y accéder, il est nécessaire de disposer d un cible iscsi. Cette dernière peut faire partie d un groupe qui peut être défini comme le groupe qui a le droit d accéder à un unité logique. Cette dernier est créé pour un équipement SCSI, nous l utilisons pour définir un système de fichiers ZFS en tant que disque dur. Cette unité logique est constitué d une view qui permet de définir les groupes de cibles iscsi autorisés à y accéder. La view est caractérisée par un numéro appelé LUN. 9

2.1.4 VirtualBox VirtualBox est un logiciel de virtualisation créé par InnoTek. Cette dernière entreprise fut rachetée par Sun microsystems avant que celle-ci même fut rachetée par Oracle. Figure 2.3 Logo de VirtualBox VirtualBox est un logiciel multi-plateforme. Il fonctionne sur les sytèmes d exploitation Windows, Linux, FreeBSD et Mac OS X. Il permet de simuler le comportement d une machine pour installer un système d exploitation. Il est possible d installer les systèmes tels que Windows, Linux, OpenBSD, Solaris ou FreeBSD, pour ne citer qu une partie de la liste. Par exemple, si nous disposons de VirtualBox sur la distribution GNU/Linux Ubuntu, il est possible d installer Windows ou même la distribution GNU/Linux Ubuntu tout comme le système qui l héberge. VirtualBox a l avantage de fournir le mécanisme d initiateur iscsi. Ce dernier permet d accéder à des périphériques distants comme par exemple un disque dur se trouvant sur un serveur de stockage. 2.1.5 BOINC Berkeley Open Infrastructure for Network Computing est une plate-forme de calcul distribué développé par l université de Berkeley, Californie. Figure 2.4 Logo de BOINC 10

Ce programme permet de gérer des projets de calcul distribué. D un point de vue technique, il est composé d un client et d un serveur. Il a pour rôle de distribuer les jobs aux clients. L idée de ce projet est de permettre l utilisation des puissances de calcul des machines des utilisateurs de base. Ces derniers mettent à disposition une partie de leur puissance pour participer à des projets scientifiques qui nécessitent une grande quantité de traitements à réaliser. Les projets les plus connus utilisant BOINC sont le SETI@Home puis Einstein@Home. Le premier projet a pour titre Search for Extra-Terrestrial Intelligence, il vise à recherche le moindre signe de vie intelligente extra-terrestre. Le deuxième a pour but de détecter des ondes gravitationnelles en analysant des données interféromètres. L Université de Westminster dispose d un parc informatique de plus de 1600 machines à disposition des étudiants. Lorsque ces derniers ne les utilisent pas, il est possible d utiliser une grande partie de la puissance de calcul de la machine. C est pourquoi l université a mis en place sur chaque machine un client BOINC inscrit dans des projets de recherche en interne. 2.2 Les outils programmation Pour réaliser mes projets j ai dû apprendre à utiliser de nouveaux outils de programmation. 2.2.1 Netbeans Netbeans est un Environnement de Développement Intégré créé par Sun Microsystems en 2000. Il supporte le développement sur plusieurs langages tels que le C, C++, Python, PHP et d autres. Mais il a été surtout créé pour développer en Java. Figure 2.5 Logo de Netbeans Netbeans est notamment spécialisé pour le développement J2EE. Il permet de gérer un serveur d application, de générer rapidement un WebService 11

avec l API JAX-WS, de générer la structure d une application pour poste de travail et permet également le développement d applications Web. 2.2.2 Glassfish Glassfish est un serveur d application créé par Sun Microsystems en 2005 en tant que Sun Application Server. Figure 2.6 Logo de Glassfish Ce serveur permet le développement d applications distribuées en utilisant les technologies comme EJB3, JPA, JSF, JAX-WS et d autres. 2.2.3 JAX-WS Java Api for Xml WebService est une API Java qui permet le développement simple et rapide de WebServices. Le principe est d utiliser des annotations Java là où l on souhaite définir des méthodes distantes. En complément de Netbeans, il est très simple et rapide de mettre en place un WebService. Le besoin de créer un WebService s est fait ressentir quand je me suis posé la question de savoir comment créer dynamiquement des systèmes de fichiers avec ZFS, des clones de systèmes de fichiers et des cibles iscsi permettant d y accéder. Nous verrons dans le prochain chapitre pourquoi j utilise un WebService plutôt qu un serveur développé en Java RMI par exemple. 12

Chapitre 3 Virtualisation sur une grille de calcul Nous allons voir dans ce chapitre le travail que j ai réalisé sur mon premier projet. Nous avons vu plus tôt que mon sujet était d améliorer le projet de Christopher J. Reynolds en remplaçant le disque dur de la machine virtuelle par un disque dur distant. Pour faire cela j ai installé un serveur OpenIndiana pour gérer les disques durs. Sur ce serveur j ai créé un WebService afin de générer dynamiquement des disques durs distants pour le programme exécuté sur le client BOINC. 3.1 Serveur OpenIndiana Le choix du système d exploitation du serveur a été réalisé au préalable dans le sujet du projet. Si ce choix s est porté sur OpenIndiana, c est que ce dernier contient déjà les programmes nécessaires à mon travail. Nous pouvons citer ZFS et COMSTAR que j ai dû prendre en main au début de mon stage. Ajouter à cela, j ai également dû me charger de l installation de Glassfish pour exécuter le WebService. 3.1.1 Installation de Glassfish Dans OpenIndiana, il est possible d installer Glassfish en utilisant le paquet disponible dans les dépôts du système d exploitation. J ai naturellement essayé de cette manière mais il s avère que cela n a pas fonctionné pour moi. En effet, lorsque j essayais d utiliser la commande pour démarrer le serveur d application, j obtenais une erreur m indiquant qu il est impossible de le démarrer. Après quelques tentatives de correction du problème, j ai fina- 13

lement décidé d installer une version portable contenue dans une archive. L installation fut encore plus rapide car il m a suffit d extraire le dossier du programme dans mes documents puis d exécuter le script de démarrage du serveur. Une fois le serveur en place, il ne reste plus qu à déployer l application compilée de notre programme, ici le WebService. Pour ce faire, j ai utilisé deux manières. La première se fait d une manière intégrée à Netbeans. Il est possible, d indiquer à Netbeans où se trouve le serveur d application afin qu il déploie notre programme. Dans ce cas il suffit juste d utiliser l interface graphique de l IDE pour que le programme soit compilé et déployé sur le serveur. Cependant, lorsque j essayais d utiliser un serveur distant, il était impossible de déployer mon programme. La seconde solution que j ai du utiliser pour remédier à ce problème était d utiliser l application Web du serveur d application afin de déployer à la main mon programme compilé. L interface est facile d utilisation. Pour déployer un programme, il suffit de se rendre sur la page des applications, d appuyer sur le bouton deploy puis de sélectionner le programme compilé contenu dans une archive jar. 3.1.2 Configuration des droits utilisateurs Pour gérer de manière dynamique la création et la suppression des disques durs distants, j ai dû mettre en place un WebService de manière à ce qu un programme client puisse accéder à ces fonctionnalités. Dans mon cas les disques durs distants étaient des clones du disque dur virtuelle utilisé par C. J. Reynolds dans son projet. J ai pour cela importé le disque dur dans un nouveau système de fichier utilisant ZFS. Ensuite, j ai créé une image de ce disque dur pour être cloné. Les clones servent à fournir une instance propre du disque dur à une machine virtuelle. De cette manière, il est possible d utiliser plusieurs fois le même disque en parallèle. La gestion des systèmes de fichiers se fait à l aide de lignes de commandes. La liste des commandes qui m ont été utile pour ce stage se trouve en annexe de ce rapport. Le problème est que ces commandes nécessitent de posséder les droits administrateur pour les utiliser. Plusieurs solutions m étaient offertes mais certaines n ont pas résisté à une analyse sérieuse. La première idée qui, rapidement, n a pas été conservée était de démarrer le serveur d application avec les droits administrateurs. Évidemment, de cette manière le programme exécuté sur le serveur d application aurait les droits nécessaires à l exécution des commandes. Mais cette solution n est absolu- 14

ment pas sécurisée pour le serveur. La moindre faille pourrait mettre en danger tout le serveur. La deuxième solution que m a proposé mon camarade stagiaire Philippe Regley était d utilisé setuid. Ce dernier signifie Set User ID. C est une propriété des systèmes d exploitations de type UNIX qui permet à un programme d exécuter, avec les droits de son propriétaire, d autres programmes ou commandes. La manipulation consistait à créer un programme en C avec l instruction setuid(0) ; (0 étant le numéro utilisateur de l administrateur) puis de changer les droits du programme compilé grâce à la commande : chmod 4755 programme Cependant, cette solution ne me plait pas beaucoup et n est pas très pratique voire très contestable. C est pourquoi je me suis tourné vers une autre solution qui consiste à ajouter les droits à l utilisateur avec le programme sudo. Pour cela, il faut rajouter dans le fichier de configuration de sudo qui se trouve à l emplacement /etc/sudoers. J ai ajouté les lignes suivantes : Cmnd_Alias ITARGET=/sbin/zfs,/usr/sbin/sbdadm,/usr/sbin/stmfadm, /usr/sbin/itadm oi ALL=(ALL) NOPASSWD:ITARGET La première ligne est un alias permettant de faire une liste de chemins vers des programmes. La deuxième ligne signifie que l utilisateur oi dispose de tout les droits et ne nécessite aucun mot de passe pour pouvoir utiliser les programmes faisant partie de la liste définie par l alias ITARGET. 3.1.3 Scripts shell Disposant à présent des droits nécessaires à l exécution des programmes de gestion des systèmes de fichiers et des cibles iscsi, j ai pu créer les scripts shell servant à créer un clone du disque dur de la machine virtuelle ainsi que de sa cible, puis un autre script servant à supprimer une cible et le clone associé. Mon projet a pour but d utiliser des disques durs distants pour des machines virtuelles. Pour pouvoir tester un exemple de calcul qui fonctionne, j ai utiliser le disque dur de la machine virtuelle mis en place par C. J. Reynolds. J ai donc dû au préalable l importer dans un système de fichiers utilisant ZFS. Pour cela j ai dû m en remettre à mon maître de stage, M. Thierry Delaitre, qui m a donné la commande suivante : 15

dd if=debian.img of=/dev/zvol/dsk/rpool/debian Cette ligne signifie que l image disque debian.img est copiée dans le fichier /dev/zvol/dsk/rpool/debian. La commande dd permet de copier un fichier tout en effectuant une conversion. Une fois le disque dur prêt dans son système de fichiers, il fallait que je crée une image grâce à la commande : zfs snapshot debian@base Cette ligne de commande signifie que je crée une image du disque ayant pour nom debian et donne à cette image le nom base. Une fois cette configuration du disque terminé, j ai pu écrire les scripts de création d un clone en lui définissant une cible iscsi, puis le script de suppression de ces deux derniers. Nous avons vu précédemment que pour atteindre un clone il fallait créer une unité logique que l on ajoute dans une vue. Le script de création comporte donc 3 lignes essentielles et quelques instructions de contrôle d erreur. Les lignes principales sont les suivantes : sudo zfs clone rpool/debian@base rpool/monclone sudo sbdadm create-lu /dev/zvol/rdsk/rpool/monclone sudo stmfadm add-view MonCloneLUid Dans la troisième ligne, je considère que j ai récupéré dans la variable MonCloneLUid l identifiant de l unité logique créé à la deuxième ligne. Pour plus de précision sur la manière de procéder, les scripts shell du deuxième projet qui se comportent de la même manière sont disponibles dans les annexes. 3.2 WebService Pour pouvoir gérer dynamiquement les clones et cibles iscsi, j ai dû mettre en place un WebService. L idée du WebService est d offrir un moyen de créer des clones et leur cible. Le programme distribué pour BOINC est écrit en langage C. Le moyen le plus simple et rapide de faire communiquer le programme avec le serveur était de mettre en place un WebService. 16