Mise en place du systeme de fichier Ocfs de chez Oracle
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...)
- http://oss.oracle.com/projects/ocfs2-tools/files/RedHat/ Pour Ocfs2-tools et Ocfs2-console
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.