Apprendre à utiliser OrangeFS


Il est un système de fichiers open source et, est la prochaine génération de Parallel Virtual File System (PVFS). Sa force réside sur le principe d'un système de fichiers parallèle. Cela signifie que les données sont distribuées sur plusieurs serveurs dont les accès sont simultanés même lorsqu'il y a plusieurs applications qui demandent ces accès. OrangeFS a été conçu pour être utilisé à grande échelle. Aujourd'hui, il est employé dans les grandes entreprises, universités, laboratoires nationaux, etc.

Ce projet existe depuis 2011.

Voici l'infrastructure que nous allons mettre en place :

A la suite de ce tutoriel, nous allons configurer un manager qui aura pour rôle de surveiller et contrôler les nœuds. Mais en contre partie il ne contiendra pas de données utilisateurs. Ce sont les noeuds qui les auront sur une partition dédié d'un disque. Nous reviendrons sur sa création plus bas.

Pour se simplifier la tâche dans ce tutoriel, on n'utilise pas d'IP fixe mais leurs hostname. Pour que les machines puissent se connaître automatiquement, nous allons utiliser le paquet suivant :

apt-get install libnss-mdns

Toutes les commandes seront à exécuter en tant que root

Initialisation du cluster

Tout d'abord on a besoin des dépendances suivantes qui vont nous permettre de compiler les logiciels :

apt-get install gcc flex bison libssl-dev libdb-dev linux-source perl make linux-headers-3.16.0-4-amd64 zip openssl automake autoconf patch g++  libattr1-dev -y

Téléchargeons les sources :

wget https://s3.amazonaws.com/download.orangefs.org/current/source/orangefs-2.9.6.tar.gz
tar -xzf orangefs-2.9.6.tar.gz

Rendons nous dans le dossier du projet et vérifions qu'il ne manque pas de dépendances :

cd orangefs-2.9.6/
./configure --prefix=/opt/orangefs

Ci-dessus, l'option –prefix permet de définir la localisation des fichiers binaire une fois la compilation terminée :

make
make install

On créer les dossiers qui contiendrons le fichier de journalisation et les données clientes :

mkdir -vp /opt/orangefs/log /opt/orangefs/storage/data /opt/orangefs/storage/meta

Configuration du cluster

Définissons maintenant les protocoles, ports ainsi que les noeuds qui seront utilisé :

Si je n'ai rien renseigné ci-dessous, c'est que les options par défaut sont acceptable.
/opt/orangefs/bin/pvfs2-genconfig /opt/orangefs/etc/orangefs-server.conf
****************************************************************************
    Welcome to the OrangeFS Configuration Generator:

This interactive script will generate a configuration file suitable for use
with a new OrangeFS (aka PVFS2) file system.  Please see the OrangeFS
documentation at http://www.orangefs.org/documentation for details.

****************************************************************************
You must first select the network protocol that your file system will use.
The currently supported options are "tcp", "gm", "mx", "ib", and "portals".
(For multi-homed configurations, use e.g. "ib,tcp".)

* Enter protocol type [Default is tcp]:

Choose a TCP/IP port for the servers to listen on.  Note that this
script assumes that all servers will use the same port number.

* Enter port number [Default is 3334]:

Choose a directory for each server to store data in.

* Enter directory name: [Default is /opt/orangefs/storage/data]: 

Choose a directory for each server to store metadata in.

* Enter directory name: [Default is /opt/orangefs/storage/meta]:

Choose a file for each server to write log messages to.

* Enter log file location [Default is /var/log/orangefs-server.log]: /opt/orangefs/log/orangefs-server.log

Next you must list the hostnames of the I/O servers.
Acceptable syntax is "node1, node2, ..." or "node{#-#,#,#}".

* Enter hostnames [Default is localhost]: orangefs2, orangefs3, orangefs4

Use same servers for metadata? (recommended)

* Enter yes or no [Default is yes]: 

Configured a total of 3 servers:
3 of them are I/O servers.
3 of them are Metadata servers.

* Would you like to verify server list (y/n) [Default is n]? 

Writing fs config file... done

On partage les logiciels avec les nœuds déclaré ci-dessus :

scp -r /opt/orangefs orangefs[2-4]:/opt/

Déployer des nœuds

Précédemment on a déclaré ces nœuds et on leur a donné les logiciels qu'il faut pour qu'ils puissent communiquer avec tout le cluster.

Ainsi sur chacun d'eux, on créer d'abord une partition d'un disque disponible qui contiendra les données clientes :

cfdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /opt/orangefs/storage/data/

Ainsi ces étapes correspondent :

  1. Création de la partition sdb1
  2. Formatage de la partition en ext4
  3. Montage de la partition dans le dossier /opt/orangefs/storage/data

On fait prendre conscience de la configuration :

/opt/orangefs/sbin/pvfs2-server -f /opt/orangefs/etc/orangefs-server.conf

Puis on lance le programme qui est responsable de la communication à travers le cluster :

/opt/orangefs/sbin/pvfs2-server /opt/orangefs/etc/orangefs-server.conf

Monter la partition

Il faut d'abord que notre système supporte PVFS2 d'OrangeFS! Je vous conseil donc de suivre le tutoriel sur la compilation d'un noyau.

Attaquons enfin la dernière partie qui consiste à monter le système de fichier pvfs2 sur une machine cliente. En tant qu'utilisateur root, on récupère les fichiers binaires du serveur maître du cluster :

scp -r root@orangefs1:/opt/orangefs /opt/

Comme sur les nœuds, on lance le logiciel client :

/opt/orangefs/sbin/pvfs2-client -p /opt/orangefs/sbin/pvfs2-client-core

Puis On créer l'emplacement du futur point de montage :

mkdir /mnt/orangefs

On rechercher un serveur disponible :

grep "Alias " /opt/orangefs/etc/orangefs-server.conf | awk '{ print $3 }' | head -n 1

On obtient :

tcp://orangefs2:3334

On indique que l'on va utiliser le système de fichier pvfs2 :

echo "tcp://orangefs2:3334/orangefs /mnt/orangefs pvfs2 defaults,noauto 0 0" >> /etc/fstab

Finalement, on monte le système de fichier :

mount -t pvfs2 tcp://orangefs2:3334/orangefs /mnt/orangefs/

On peut ainsi voir que le point de montage est bien effectif :

df -h |grep orangefs
tcp://orangefs2:3334/orangefs    56G    132M   56G   1% /mnt/orangefs

resources