Lerm-IT

Blog traitant de technologies informatiques. Logiciel libre, AdminSys, DevOps et GNU/Linux !

04 Jun 2010

[GFS] Installation d'un serveur de données avec GNBD sur une debian Lenny

Je vais vous présenter la procédure d’installation d’un cluster de données avec GNBD sur une debian Lenny.

Cette procédure d’installation doit être semblable sur d’autre distribution, adaptez ou posez vos questions !

Définition

Qu’est-ce que GNBD ?

La documentation nous informe que

The global network block device (GNBD) driver is similar to other **network block device drivers**. Devices exported by GNBD servers can be used by multiple clients making it suitable for use by a group of GFS nodes.

GNBD est donc un “network block device drivers” c’est-à-dire une application qui nous permet de déployer sur le réseau des périphériques de type block (eg: Des partitions !).

Nous allons donc nous servir GNBD pour déployer nos données.

Qu’est-ce que GFS ?

GFS est un projet racheté et publié sous license GPL par Red Hat. L’acronyme signifie Global File System. GFS est utilisé par GNBD pour partager des données de type block.

Installation du serveur

L’installation du serveur est assez simple pour peu de comprendre ce que l’ont fait !

Tout d’abord nous allons installer GNBD. Sous debian ce paquet se nomme gnbd-server.

aptitude install gnbd-server

Voyons les fichiers installés

$ dpkg -L gnbd-server
/.
/usr
/usr/share
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/gnbd.8.gz
/usr/share/man/man8/gnbd_serv.8.gz
/usr/share/man/man8/gnbd_export.8.gz
/usr/share/doc
/usr/share/doc/gnbd-server
/usr/share/doc/gnbd-server/changelog.Debian.gz
/usr/share/doc/gnbd-server/copyright
/usr/share/doc/gnbd-server/README.Debian
/usr/share/doc/gnbd-server/README.source
/usr/sbin
/usr/sbin/gnbd_export
/usr/sbin/gnbd_serv
/usr/sbin/gnbd_clusterd
/usr/sbin/gnbd\_get\_uid
/etc
/etc/init.d
/etc/init.d/gnbd-server
/etc/default
/etc/default/gnbd-server
/etc/cluster
/etc/cluster/gnbdexports.conf

On remarque que 4 commandes ont été installées :

gnbd_export
Son utilité est semblable à la commande export de NFS. Elle permet de publier des partages
gnbd_serv
Permet de lancer le serveur
gnbd_clusterd
Daemon utilisé pour se connecter à un cluster. Son utilisation n’est pas traitée ici si j’ai quelques minutes je ferrai un article sur le sujet !
gnbd_get_uid
Script qui retourne un uid non utilisé pour créer des exports. Ce script est utilisé par la commande gnbd_export de manière transparente mais peut être modifié si besoin est (???).

Revenons à l’export de nos moutons !

Nous allons tout d’abord lancer notre serveur. Pour cela deux choix:

Le style debian

Éditer le fichier /etc/default/gnbd-server et modifier le comme suit (explication des options plus bas)

GNBD_OPTIONS="-n"

Lancer ensuite le serveur comme ceci

/etc/init.d/gnbd-server start

Attention. Cette méthode ne fonctionnera que quand vous aurez configuré des exports de façon permanente (voir suite de l’article). En attendant utilisé l’autre méthode !

Le style gnbd

gnbd_serv -n

L’option -n permet de lancer le serveur sans cluster.

Vous pouvez rajouter l’option -p si vous voulez spécifier le port d'écoute du serveur.

Le lancement du serveur devrait vous retourner quelque chose comme ceci.

gnbd_serv: startup succeeded

Ceci nous informe que nous n’avons exporté aucune information.

Exporter des partitions

Nous allons voir comment exporter des partitions de façon temporaire (c’est-à-dire que le redémarrage du serveur impliquera la perte de tout nos exports).

Nous l’avons vu plus haut, c’est la commande gnbd_export qui va nous être utile ici. Voici un exemple d’utilisation :

# gnbd_export -c -d /dev/sda3 -e MyExportData
gnbd_export: created GNBD MyExportData serving file /dev/sda3

Ceci nous a exporté une partition. Nous pouvons le vérifier :

# gnbd_export -l
Server[1] : MyExportData
----------
file : /dev/sda3
sectors : 6291456
readonly : no
cached : yes
timeout : no

Si vous avez fait attention aux options et au résultat de la commande gnbd_export -l (ou tout simplement en administrateur responsable vous avez lu le man de gnbd_export) vous avez peut-être compris que

  • -d : permet de spécifier la partition à exporter
  • -c : permet d’activer le cache (et donc d'éviter un massacre de ressource)
  • -e : permet de spécifier le nom du partage

Rendre nos exports permanents

Maintenant que nous avons vu comment exporter des données temporairement nous allons nous attaquer à rendre ces exports permanents.

Sous debian, le script présent dans /etc/init.d/gnbd-server nous permet de modifier le fichier /etc/cluster/gnbdexports.conf pour rendre nos changements permanents (je ne sais pas si sous les autres distributions ceci est identique, mais je suis sûre que vous trouverez un équivalent.). Éditons donc notre fichier.

# <device> <exportname> <options>
/dev/sda3       MyExportData    -c

Le contenu du fichier est très simple: Device à exporter, Nom de l’export, options. Mis en relation avec l’explication ci-dessus,  vous ne devriez pas être trop perdu !!

Testons que tout ceci fonctionne. Éteignez votre instance actuelle de gnbd (un killall gnbd_serv peut faire l’affaire) et relancer votre serveur GNBD via le script init.d

/etc/init.d/gnbd-server start

Le serveur démarre et nous informe que nos points de montage sont bel et bien montés.

Vérifions :

# gnbd_export -l
Server[1] : MyExportData
----------
file : /dev/sda3
sectors : 6291456
readonly : no
cached : yes
timeout : no

Tout va bien, dans le meilleur des mondes, configurons nos clients ;).

Configuration des clients

Pour pouvoir monter nos partages, nos clients vont nécessiter un module noyau. Celui-ci n’est pas inclus dans l’installation par défaut du noyau Linux de Debian. Vous pouvez donc soit recompiler votre noyau, soit installer le paquet qui contient le module !

Pour installer le module (à modifier suivant votre architecture bien entendu)

aptitude install redhat-cluster-modules-2.6.26-2-686

Charger ensuite le module

modprobe gnbd

Installer les outils de montages

aptitude install gnbd-client

Vous pouvez maintenant voir les partages disponibles sur d’autre serveur comme ceci

# gnbd_import -e 192.168.152.141 -n
MyExportData

Ici l’option -n spécifie toujours que nous n’utilisons pas de cluster et l’option -e permet de récupérer la liste de tout les partages du serveur spécifié en argument (ici 192.168.152.141).

Vous pouvez importer tout les partage en remplassant l’option -e par -i

# gnbd_import -i 192.168.152.141 -n
gnbd_import: created gnbd device MyExportData
gnbd\_recvd: gnbd\_recvd started

Ceci vous ajoutera des partitions dans /dev/gnbd que vous pourrez monter comme des partitions normales.

# mount /dev/gnbd/MyExportData /mnt/gnbd/
# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/gnbd/MyExportData on /mnt/gnbd type ext3 (rw)

Voilà qui met fin à cet article que j’espère continuer très bientôt en le complétant pour la prise en compte de la clusterisation.