Le rapport du projet

Transcription

Le rapport du projet
Rapport du Projet Mosix
Novembre 2004
Equipe : Ballesta Cyril, Stéphane Callieres ,Joseph Dayssol, et Julien Teyssier
Responsable du projet : Bernardi Fabrice
Projet réalisé dans le cadre du Master 2 ISI
Table des matières
1.
2.
3.
4.
5.
Présentation du projet......................................................................................................... 3
Qu’est que un CD Open Mosix ? ....................................................................................... 3
Installation et patch d’un noyau. ........................................................................................ 6
Réalisation d’un Live CD................................................................................................... 6
Annexe ............................................................................................................................... 7
1.
1.1
Présentation du projet
Introduction
Dans le cadre du contrôle continu du module Algo Répartie et Programmation
Concurrente nous avons été amener à réaliser un projet de recherche ayant pour but la création
d’un Cd-Rom bootable d’une distribution linux minimal, patchée avec openMosix afin de
pouvoir déployer rapidement un cluster. Ce cd devrait être utilisé pour les projets de
l’université de Corse.
Nous commencerons par présenter en premier lieu les objectifs et l’intérêt du projet
En deuxième lieu, nous allons décrire distinctement ce qu’est un Cd bootable OpenMosix
(livecd OpenMosix). Puis nous parlerons de la réalisation de livecd.
1.2
Objectif du projet
Les objectifs du projet sont :
- Réalisation d’un live cd OpenMosix
- Mise en place d’un site Internet
- Compte rendu du travail effectué à travers ce rapport
2.
Qu’est que un CD Open Mosix ?
2.1 Présentation de Mosix
Un peu d’histoire :
De nombreuses applications scientifiques ou industrielles demandent des temps de
calcul importants, afin d'accélérer l'obtention des résultats les constructeurs de machines ont
le plus souvent essayé de miniaturiser les composants tout en augmentant leur vitesse de
fonctionnement. Ainsi depuis les années 80, il existe des “super calculateurs” dont la tâche est
d'optimiser les calculs. Pour y parvenir, ils font appel au calcul en parallèle. Une des solutions
les plus utilisées consiste à intégrer au sein d'un même ordinateur un ensemble de microprocesseurs se partageant une mémoire commune (SMP: Shared Memory Processing). Les
résultats sont intéressants et permettent d'obtenir des capacités de calcul très importantes. Une
telle technique fut employée par Cray, qui a conçu des machines occupant un espace
important et nécessitant un ensemble de réfrigération associé; pour des puissances de calcul
inégalées au fil des ans. Cependant au delà d'un certain nombre de micro-processeurs les
performances d'un tel système chutent radicalement.
D'autre part, la miniaturisation nécessite de nombreuses recherches en développement
assez coûteuses. C'est pourquoi le marché des “super calculateurs” s'est peu à peu effrité. En
effet, Cray a tout d'abord été vendu à SGI, et cette entreprise voit désormais sa part de marché
réduire de plus en plus. La raison en est l'avènement des clusters. MOSIX est une solution au
problème de “load balancing” dans les clusters, proposée par l'équipe du Professeur Amnon
Barak de l'université hébraïque de Jérusalem. L'objectif est de répartir les tâches de manière
homogène. Ce projet existe depuis vingt ans, des tests ont été réalisés sur de nombreux
systèmes d'exploitation mais l'essor de MOSIX a débuté avec son portage sur la plateforme
GNU/Linux, il y a 1 an et demi.
Qu’est que Mosix exactement ?
MOSIX réalise le “load blancing” grâce à divers algorithmes permettant d'effectuer
des statistiques sur le cluster, mais aussi des procédures garantissant un fonctionnement
correct dans le cas d'incidents (on parle de Cluster Haute Performance (HP Cluster)). De
manière grossière, MOSIX se charge d'assigner un processus à un noeud ou un autre suivant
les ressources disponibles et nécessaires. Il s'agit de maximaliser l'utilisation de chaque
machine tout en limitant les baisses de performance dues par exemple à un temps machine
trop élevé ou bien un manque de mémoire entraînant le swap. De part sa conception, le cluster
est totalement décentralisé, il s'agit d'un réseau “Peer to Peer” ? (P2P). Il n'existe pas de
hiérarchie entre les noeuds et chacun gère ses processus par rapport aux autres noeuds.
L'application du modèle proposé s'effectue via un ensemble de “patchs” (modifications) à
appliquer au noyau (nous verrons plus loin quelles couches du noyau sont concernées) et de
quelques outils d'administration et de suivi d'un cluster. MOSIX gère des processus non
spécifiques qui évoluent sur des couches plus élevées du système que les programmes dédiés
aux environnements Beowulf/PVM|MPI (mais les programmes utilisant PVM ou MPI
peuvent naturellement être utilisés avec MOSIX). Mais pour se faire il doit être intégré dans
des couches plus basses du système d'exploitation.
2.2 Présentation de OpenMosix
OpenMosix est une extension du noyau linux utilisé pour créer des clusters. Cette
extension du noyau transforme un réseau d’ordinateurs classique en un super-ordinateur
destiné aux applications Linux.
Une fois qu’openMosix a été installé, les nœuds des différents ordinateurs
commencent à communiquer et le cluster s’adapte de lui-même au réseau. Un processus peut
également être déplacé d’un nœud du réseau à un autre, si celui-ci s’avère trop chargé. Ainsi
OpenMosix optimise les performances en réorganisant constamment l’allocation des
ressources.
OpenMosix est donc une extension de noyau linux qui permet de créer une plateforme
de cluster qui est « scalable » et adaptative. Avec la découverte automatique OpemMosix, un
nouveau noeud peut être ajouté pendant que le cluster s’exécute et celui-ci lui commencera a
utilisé cette nouvelle ressource.
Avec openMosix, il n’est pas nécessaire de programmer de nouvelles applications, car
étant donné que openMosix est à l’intérieur du noyau Linux, chaque application Linux
bénéficie automatiquement et de façon transparente des bénéfices de openMosix. On peut
également noter qu’installer OpenMosix revient à créer un ordinateur utilisant plusieurs Cpu
différents, mais qu’il est également possible de relier des ordinateurs à multi-processeurs, ce
qui multiplie les performances.
OpenMosix bénéficie d’une communauté très active, contribuant ainsi à son
développement avec des add-on et de multiple informations extrêmement utile qui sont mis à
disposition des utilisateurs.
Pour terminer sur cette présentation, on notera que OpenMosix est 100 % GPL, c'est-à-dire
qu’il appartient à la catégorie des logiciels libres.
2.3 Avantages et inconvenients de Mosix et OpenMosix
Avantages :
Le principal intérêt de MOSIX est sa facilité de mise en oeuvre puisqu'il suffit de
recompiler un noyau Linux et d'installer un fichier de configuration afin d'obtenir un cluster.
Cette tâche est assez aisée pour une personne familière du monde UNIX.
D'autre part, la distribution des ressources de calcul s'effectue pour divers programmes sans
qu'il soit besoin de les recompiler. Tout programme n'ayant pas d'interaction fortes avec le
système (mémoire partagée, accès direct E/S, pipe, ...) peut être distribué par MOSIX dans le
cluster.
Ensuite, MOSIX possède son propre système de fichiers réparti, qui est assez basique
mais permet de réaliser la majorité des opérations. Néanmoins il peut être couplé à d'autres
systèmes de fichiers tels que GFS (pas dans l'immédiat).
Puisque MOSIX gère les processus, il est aisé de créer des programmes exploitants
un cluster, en effet il suffit d'effectuer des fork() dès que l'on désire voir une tâche s’effectuer
en parallèle. Ainsi ce nouveau processus, clone du premier, sera distribué à travers le cluster
de manière transparente. La programmation est donc allégée et il n'est pas nécessaire
d'acquérir de nouvelles connaissances comme dans le cas de PVM, même si cet
environnement est relativement facile à appréhender. Avec MOSIX il s'agit donc d'utiliser le
modèle de programmation “fork and forget”.
En outre, l'environnement GNU/Linux permet d'effectuer un ensemble de tâches
relativement important grâce à la diversité des logiciels tournant sur cette plateforme. Ainsi il
existe des compilateurs (parallèles) Fortran libres, langage très utilisé par les chercheurs, mais
aussi pour les langages C/C++. Par ailleurs, Linux est stable, performant et compilable pour
plusieurs types de micro-processeurs. Enfin le ratio (capacité de calcul / coût financier) est
optimal. Ceci est décisif dans la majorité des cas.
Inconvénients :
Voici les principales raisons pour lesquelles un processus ne peut pas tirer partie d'un cluster
géré par MOSIX:
• il demande à s'exécuter en temps réel
• il utilise un segment de mémoire partagée
• il accède directement à des périphériques d'entrée/sortie
• il est lancé comme démon
• il fait appel à la mémoire hors du champ utilisateur
• il possède une interface X
• il est bloqué sur un noeud à la demande de l'utilisateur (nomig)
Ainsi les threads ne peuvent pas être migrés puisqu'ils partagent leur mémoire avec le
processus père. De même l'ensemble des applications à destination des utilisateurs finaux
utilisant X reste sur leur noeud d'origine. En outre les applications temps réel de par les
contraintes qu'elles induisent ne sont pas gérées par MOSIX. Enfin, les sockets ne peuvent
pas, pour l'instant, migrer; elles sont retransmises par le noeud d'origine au nœud distant via
MFS.
3.
Installation et patch d’un noyau.
Nous allons maintenant décrire les différentes étapes qui conduisent à la compilation
et l’installation d’un noyau avec un patch opemMosix.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Tout d’abord se connecter en root (su).
Puis récupérer les sources du noyau qui vous intéresse (pour nous le 2.4.24), ainsi que
le patch openMosix qui va bien pour la version du noyau choisie.
Décompresser les sources du noyau dans le répertoire /USR/SRC.
Créer un lien symbolique nommé linux vers le nouveu répertoire 2.4.24 ( ln –sf 2.4.24
linux).
Copier le patch OpenMosix dans le répertoire linux et lancer la commande de patch (
patch –p1 < openMosix.2.4.24 )
Exécuter la commande Make MenuConfig.
Copier le fichier system.map (généré par le Make MenuConfig dans le répertoire
linux) dans le répertoire /boot
Créer les dépendances des modules : Make dep
Exécuter Make bzImage.
Copier le fichier arch/i386/boot/bzImage dans le répertoire /boot en le renommant
VMLiux-Mosix.
Puis exécuter le make pour les installation de modules : make modules && make
modules_install.
Exécuter make initrd.
Editer le fichier /etc/lilo.conf. Remplacer le bloc existant (risqué !), ou modifier le
failsafe, ou encore créer un nouveau bloc label = « linux Mosix » et
image=/boot/vmlinuz-mosix.
Il ne reste plus qu’a taper la commande lilo –v.
Rebooter et choisir LinuxMosix dans lilo.
4.
Réalisation d’un Live CD
La réalisation du liveCD est finallement une tache assez aisée. Il suffit de télécharger
les fichiers suivants :
• Busybox-1.00-0.4mdk.src.rpm
• Cllop-utils-1.02-2mdk.src.rpm
• Mklivecd-0.5.6-1mdk.src.rpm
Ensuite dans une console il faut taper les commandes suivantes :
• Urpmi Busybox-1.00-0.4mdk.src.rpm
• Urpmi Cllop-utils-1.02-2mdk.src.rpm
• Urpmi Mklivecd-0.5.6-1mdk.src.rpm
Il ne reste plus qu’a lancer la commande qui va créer l’iso de votre livecd :
Mklivecd –splash=no –blocksize=224 monlivecd.iso
Après une attente, cette commande génère le fichier monlivecd.iso. Il ne reste plus
qu’à le graver et a rebooter.
5.
Annexe
6.1 Bibliographie / Webographie
Télécharger le noyau Linux :
http://www.kernel.org/pub/linux/kernel/v2.4/
Comment compiler le noyau :
http://www.supinfo-projects.com/fr/2004/compilation%5Fnoyau%5Flinux/introduction/
Comment patcher le noyau :
http://www.sil-cetril.org/IMG/pdf/OMLTSPinstall.pdf
Télécharger OpenMosix :
http://openmosix.sourceforge.net/
Installation de Linux :
http://mirrors.kernel.org/LDP/HOWTO/Installation-HOWTO/
Script live CD :
http://www.linuxminicd.org/mklivecd/
Quelques RPMs interressant :
http://mdklyon.citeheb.net/download.htm
Comment faire un live CD depuis un noyau installé sur une partition :
http://www.babytux.org/articles/howto/how2livecd.php
Créer un live cd :
http://www.geocities.com/potato.geo/bootlinuxcd.html

Documents pareils

Mise en place d`un cluster via OpenMosix sous Linux

Mise en place d`un cluster via OpenMosix sous Linux le « mappage » du cluster et donc sa sécurité, cette technique nécessite tout d’abord un réseau possédant des nœuds fixe ainsi qu’une grande patience, car il faut avant tout reproduire, mettre à jo...

Plus en détail