Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| vintage:lolhpc [2013/01/12 21:46] – 1 LOLHPC: Ajout d'une photo de la baie, reformulation | vintage:lolhpc [2024/10/29 20:01] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 9: | Ligne 9: | ||
| [[https: | [[https: | ||
| - | Construction d’un supercalculateur à partir de matériel récupéré à l’in2p3 < | + | Construction d’un supercalculateur à partir de matériel récupéré à l’in2p3 |
| + | |||
| + | < | ||
| ===== Participants ===== | ===== Participants ===== | ||
| Ligne 17: | Ligne 19: | ||
| * lordzurp | * lordzurp | ||
| * martin | * martin | ||
| + | * zorun | ||
| ==== Référent(s) ==== | ==== Référent(s) ==== | ||
| Ligne 26: | Ligne 29: | ||
| * lordzurp | * lordzurp | ||
| * martin | * martin | ||
| + | * zorun | ||
| ==== Compétence(s) recherchée(s) ==== | ==== Compétence(s) recherchée(s) ==== | ||
| Ligne 36: | Ligne 40: | ||
| 32 noeuds de calcul scientifique NEC récupérés à l’in2p3 (Institut National de Physique Nucléaire et de Physique des Particules) en chassis 1U montés dans une baie 19" | 32 noeuds de calcul scientifique NEC récupérés à l’in2p3 (Institut National de Physique Nucléaire et de Physique des Particules) en chassis 1U montés dans une baie 19" | ||
| + | |||
| + | 2x Xeon (21 à 2.8GHz et 11 à 3GHz) génération NetBurst (certainement ça [[https: | ||
| + | |||
| + | 4x512Mo DDR ECC reg (et 2 slot libres) | ||
| + | |||
| + | 2x120Go sata, lecteur CD | ||
| + | |||
| + | dual lan, 1 port PCIX full size et 1 port PCIX half-size, module IPMI … | ||
| + | |||
| + | alimentation sur 3 arrivées, 1800W/prise | ||
| + | |||
| + | Conso mesurée : - 56W pour les switch - 240W / serveur sans calculs | ||
| + | |||
| + | Conso totale estimée : 7.7kW | ||
| ==== Objectif(s) ==== | ==== Objectif(s) ==== | ||
| Ligne 44: | Ligne 62: | ||
| < | < | ||
| - | < | + | < |
| < | < | ||
| < | < | ||
| - | < | + | < |
| - | < | + | < |
| - | < | + | < |
| + | < | ||
| + | < | ||
| < | < | ||
| < | < | ||
| Ligne 56: | Ligne 76: | ||
| < | < | ||
| < | < | ||
| - | < | + | < |
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | ===== Ce qui est fait ===== | ||
| + | |||
| + | * Renommer les lame dans le KVM | ||
| + | * Installer quelques Debian pour tester | ||
| + | |||
| + | ===== Utilisation(s) possible(s) ===== | ||
| + | |||
| + | Indiquer ci-dessous les idées d’utilisation, | ||
| + | |||
| + | [[!table data=""" | ||
| + | |||
| + | Ce serait cool de proposer un accès à d’autres hackerspaces via [[https:// | ||
| + | |||
| + | Autre idée : hacker le protocole du KVM | ||
| + | |||
| + | ==== Solution utilisable : ==== | ||
| + | |||
| + | * Slurm+MPI | ||
| + | * Openstack | ||
| + | * Hadoop ou Spark | ||
| + | * Razor | ||
| + | * DN42 | ||
| + | * ChaosVPN | ||
| + | |||
| + | ===== Stockage ===== | ||
| + | |||
| + | On aimerait avoir les mêmes données (/home) sur chaque noeud : ainsi, on peut se connecter à n’importe quel noeud allumé pour lancer ses calculs. | ||
| + | |||
| + | Deux familles de solutions : | ||
| + | |||
| + | * **centralisé :** en gros, un serveur NFS dans lequel tous les noeuds vont taper | ||
| + | * **distribué :** système de fichier réparti ou autre solution de synchronisation | ||
| + | |||
| + | La première solution est à éviter : ça oblige à avoir une machine qui tourne tout le temps, il faut s’assurer de la redondance des données, les perfs seront catastrophiques dès que plusieurs noeuds feront des I/O, et ce serait dommage de ne pas utiliser les disques des noeuds du cluster. | ||
| + | |||
| + | On part plutôt sur la seconde solution (parce qu’en plus, c’est rigolo à faire). Il y a cependant un nouveau problème potentiel : le //split brain// ([[https:// | ||
| + | |||
| + | ==== Problème du split brain ==== | ||
| + | |||
| + | Typiquement, | ||
| + | |||
| + | * Allumer la moitié des noeuds | ||
| + | * Écrire des choses dans le système de fichier réparti | ||
| + | * Éteindre les noeuds | ||
| + | * Allumer l’autre moitié des noeuds | ||
| + | * Écrire d’autres choses dans le système de fichier réparti | ||
| + | * Rallumer la première moitié des noeuds | ||
| + | * (le système de stockage réparti fait sa cuisine) | ||
| + | * Les mêmes données sont disponibles sur tous les noeuds ! | ||
| + | |||
| + | Il faut une solution de stockage réparti qui permette ça. | ||
| + | |||
| + | ==== Répartition du stockage ==== | ||
| + | |||
| + | * **Solution 1 :** RAID-0 sur chaque noeud, donc 2x 120 GB = 240 GB disponible. Les données sont répliquées à l’identique sur chaque noeud. | ||
| + | * Capacité totale : 240 GB | ||
| + | * Avantages : grande redondance, flexibilité (on peut allumer de 1 à 32 machines) | ||
| + | * Inconvénients : peu de capacité totale, performances en écriture (à tester) | ||
| + | * **Solution 2 :** regroupement des noeuds par paires : RAID-0 sur chaque noeud, puis “RAID-0 réseau” entre deux noeuds d’une même paire. Ensuite, les données sont répliquées à l’identique sur chaque paire. | ||
| + | * Capacité totale : 480 GB | ||
| + | * Avantages : redondance, performances en écriture probablement meilleures | ||
| + | * Inconvénients : plus complexe, beaucoup moins flexible (il faut allumer les machines par paires) | ||
| + | |||
| + | ==== Système de fichier réparti ==== | ||
| + | |||
| + | Utilisation d’un vrai système de fichier réparti (soit kernelspace, | ||
| + | |||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | Ce dernier n’est pas vraiment un système de fichiers : c’est un périphérique bloc distribué, sur lequel on peut mettre n’importe quel système de fichier. | ||
| + | |||
| + | ==== Synchronisation ==== | ||
| + | |||
| + | On peut aussi faire le contraire : mettre n’importe quel système de fichier “classique” (ext4) sur chaque noeud, et synchroniser les données par-dessus. Ça paraît beaucoup plus hackish, mais ça peut marcher, et c’est surtout plus simple. | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | ===== Gestion de la configuration ===== | ||
| + | |||
| + | On ne veut pas s’embêter à installer/ | ||
| + | |||
| + | Plus précisément, | ||
| + | |||
| + | * **Provisioning des utilisateurs :** création d’utilisateur sur tous les noeuds d’un coup (mot de passe, clé SSH, groupes) | ||
| + | * **Provisioning des paquets :** pouvoir déployer des paquets sur tous les noeuds d’un coup | ||
| + | |||
| + | Il y a plein de solutions pour ça : | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * … | ||
| ===== Référence(s) ===== | ===== Référence(s) ===== | ||