Mise en place du systeme de fichier Ocfs de chez Oracle

ocfs2 jpg

Un système de fichier intéressant pour de la haute disponibilité.

Ocfs est un système de fichier développé par Oracle (GPL...miracle ?) il existe une version 1 et une version 2 : ocfs2, il est intégré au noyau Linux depuis quelques versions déjà.

Ocfs veut dire : Oracle Cluster File System

Pour en savoir plus : http://en.wikipedia.org/wiki/OCFS vous avez sur la droite des informations sur ses spécificités techniques.

C'est un système de fichiers en cluster ce qui veut dire qu'il peut être monté simultanément sur plusieurs serveurs, c'est son principal intérêt.(partage d'un même disque réseau en lecture et écriture).

Pré-requis :

Un noyau pas trop périmé...

Je l'ai personnellement essayé sur Centos donc pour Redhat c'est la même chose, pour Debian et Ubuntu les paquets existent aussi donc aucun problème, un fois trouvé avec aptitude search suivez ce billet et ça devrait rouler.

Téléchargement :

Vous trouverez à ces deux urls tous les paquets dont vous aurez besoin :

  • Ocfs2 (obligatoire)
  • Ocfs2-tools (obligatoire)
  • Ocfs2-console (optionnel car besoin de X...)

Choisissez bien vos paquets en fonction de votre système (32 ou 64 bits) et de votre version du noyaux.

A noter qu'il existe une version pour Xen.

Installation :

Pour Ocfs2 :

cd /root
wget http://oss.oracle.com/projects/ocfs2/dist/files/RedHat/RHEL5/i386/1.4.7-1/2.6.18-194.3.1.el5/ocfs2-2.6.18-194.3.1.el5-1.4.7-1.el5.i686.rpm

Pour Ocfs2-tools :

wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL5/i386/1.4.4-1/ocfs2-tools-1.4.4-1.el5.i386.rpm

Comme ils dépendent l'un de l'autre :

rpm -Uvh  ocfs2-tools-1.4.4-1.el5.i386.rpm ocfs2-2.6.18-194.3.1.el5-1.4.7-1.el5.i686.rpm

Pour Ocfs2-console :

Deux petites dépendances, et il vous faudra un petit Xorg choquant sur un serveur... :).

yum install vte pygtk2
wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL5/i386/1.4.4-1/ocfs2console-1.4.4-1.el5.i386.rpm
rpm -Uvh ocfs2console-1.4.4-1.el5.i386.rpm

Configuration :

Créer le fichier : /etc/ocfs2/cluster.conf

vi /etc/ocfs2/cluster.conf

Avec comme contenu sur le serveur 1 et le serveur 2 :

cluster:
       node_count =2
       name=ocfs2
node:
        ip_port = 7777
        ip_address = 192.168.1.241
        number = 1
        name = centos1
        cluster = ocfs2

node:
        ip_port = 7777
        ip_address = 192.168.1.242
        number = 2
        name = centos2
        cluster = ocfs2

Oui les deux fichiers sont identique sur les deux serveurs.

Vous avez la possibilité biensur de rajouter un 3eme serveur un 4eme serveur etc...

Ensuite tapez en console :

service o2cb configure

Configuring the O2CB driver.

This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot.  The current values will be shown in brackets ('[]').  Hitting
<ENTER> without typing an answer will keep that current value.  Ctrl-C
will abort.

Load O2CB driver on boot (y/n) [y]:
Cluster stack backing O2CB [o2cb]:
Cluster to start on boot (Enter "none" to clear) [ocfs2]:
Specify heartbeat dead threshold (>=7) [31]:
Specify network idle timeout in ms (>=5000) [30000]:
Specify network keepalive delay in ms (>=1000) [2000]:
Specify network reconnect delay in ms (>=2000) [2000]:
Writing O2CB configuration: OK
Cluster ocfs2 already online

Les valeurs par défaut sont correcte, cette commande est a faire sur tous les nœuds/node (serveurs).

Vérifiez que le service est bien lancé :

ps -ef | grep o2
root      1892    11  0 10:17 ?        00:00:00 [o2net]

Vous pouvez le piloter avec la commande service :

service o2cb
Usage: /etc/init.d/o2cb {start|stop|restart|force-reload|enable|disable|configure|load|unload|online|offline|force-offline|status}

service o2cb status
Driver for "configfs": Loaded
Filesystem "configfs": Mounted
Driver for "ocfs2_dlmfs": Loaded
Filesystem "ocfs2_dlmfs": Mounted
Checking O2CB cluster ocfs2: Online
Heartbeat dead threshold = 31
  Network idle timeout: 30000
  Network keepalive delay: 2000
  Network reconnect delay: 2000
Checking O2CB heartbeat: Not active

Formater le volume ou la partition que vous avez choisi en Ocfs2 :

La commande dépend logiquement de vos choix (partition, volume lvm, drbd etc...) A faire sur tous les nœuds.


mkfs.ocfs2 -c 4K -C 4K -L "ocfs2volume1" /dev/mapper/VOL1

pour moi c'était un simple :

mkfs.ocfs2 /dev/drbd0

Car je l'ai essayé avec drbd.

Lancement :

Pour que le service ocfs2 fonctionne il vous faudra rajouté dans /etc/fstab sur tous les serveurs/noeuds la ligne suivante :

/dev/drbd0              /data                   ocfs2   defaults        0 0

Elle est à adapter selon votre périphérique.

Puis faites ceci (aussi tous les nœuds/serveurs).

chkconfig --add ocfs2 
chkconfig --level 35 ocfs2 on

service ocfs2 start

Vérifié avec la commande : mount

Maintenant vous n'avez plus qu'a créer un fichier sur chaqu'un de vos serveurs pour vérifier qu'il est bien vu sur tous les nœuds.

Vus : 517
Publié par System Linux : 211