[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.