Depuis la version 11gR2, Oracle met à disposition de ces clients un système de fichiers en cluster nommé ACFS.
Oracle ACFS s’appuie sur la technologie « Automatic Storage Management » ou « ASM », , le volume manager d’Oracle.
Ainsi , ACFS bénéficie de tous les avantages ASM :
- Gains de performance (accès en mode « raw device », distribution des données sur tous les disques ASM, …)
- Sécurisation des données (redondance)
- Gestion dynamique de l’espace
Problématique
Sur un filesystem ACFS, vous pouvez y déposer toutes sortes de fichiers non Oracle.
Comme tout autre système de fichier, un partage réseau des fichiers peut être mis en place via le protocole NFS (Network File System).
Dans une architecture Grid, un des noeuds du cluster va être défini comme serveur NFS.
Par contre, en cas de défaillance de ce noeud, le client NFS devra être reconfiguré pour que celui-ci puisse se connecter vers un autre nœud du cluster Oracle qui reprendra le rôle de serveur NFS.
Haute-disponibilité « NFS »
Avec la version 12c, Oracle sécurise désormais l’accès aux fichiers via NFS en cas de défaillance d’un noeud : la haute disponibilité NFS (HANFS).
En effet, la bascule du serveur NFS d’un noeud à l’autre est totalement transparente pour le client NFS (on pourra éventuellement remarquer juste une pause de quelques secondes lors d’un transfert de données depuis ou vers le serveur NFS).
Comme toute autre entité (database, service, etc), Oracle gère le serveur NFS à l’aide de deux nouvelles ressources cluster.
- HAVIP : ressource VIP démarrée uniquement sur un seul noeud du cluster
- ExportFS : ressource assurant le partage des fichiers supportée uniquement sur un filesystem ACFS
Mise en oeuvre
Avant tout chose, vous devez démarrer les daemons NFS sur tous les noeuds du cluster Oracle :
bash-3.2# /etc/init.d/portmap status portmap (pid 1639) is running... bash-3.2# /etc/init.d/nfs status rpc.mountd (pid 2228) is running... nfsd (pid 2225 2224 2223 2222 2221 2220 2219 2218) is running... rpc.rquotad (pid 2204) is running...
Vous devez ensuite vous assurer que les services NFS seront bien démarrés au boot de chaque noeud :
bash-3.2# /sbin/chkconfig nfs on bash-3.2# /sbin/chkconfig portmap on
Vous devez créer un volume ACFS depuis un diskgroup ASM à l’aide de l’utilitaire ASMCA, formatter le nouveau volume ACFS puis monter le filesystem ACFS sur un répertoire (/hr1) créé au préalable sur chaque noeud du cluster.
bash-3.2# mkfs -t acfs /dev/asm/hr1-194 mkfs.acfs: version = 12.1.0.0.2 mkfs.acfs: on-disk version = 39.0 mkfs.acfs: volume = /dev/asm/hr1-194 mkfs.acfs: volume size = 5368709120 mkfs.acfs: Format complete. bash-3.2# mkdir /hr1
Ensuite créer une ressource cluster pour la gestion de ce nouveau filesystem ACFS :
bash-3.2# srvctl add filesystem -path /hr1 -device /dev/asm/hr1-194 bash-3.2# srvctl start filesystem -device /dev/asm/hr1-194 bash-3.2# mount -t acfs /dev/asm/hr1-194 on /hr1 type acfs (rw) bash-3.2# srvctl status filesystem -device /dev/asm/hr1-194 ACFS file system /hr1 is mounted on nodes rac1,rac2
Le filesystem ACFS /hr1 est monté sur l’ensemble des noeuds du cluster.
Désormais, il est temps de créer la ressource HAVIP
bash-3.2# srvctl add havip -id HR1 -address 192.168.10.2 -netnum 1 -description "Exports for Easyteam" bash-3.2# srvctl status havip -id HR1 HAVIP ora.hr1.havip is enabled HAVIP ora.hr1.havip is not running
Créér la ressource ExportFS.
bash-3.2# srvctl add exportfs -path /hr1 -id HR1 -name HR1 -options "rw,no_root_squash" -clients client1,client2 bash-3.2# srvctl status exportfs -name HR1 export file system hr1 is enabled export file system hr1 is not exported
Ici, le partage des fichiers est restreint aux machines clientes : client1 et client2.
La ressource ExportFS est configurée mais non démarrée :
bash-3.2# srvctl config exportfs -name HR1 export file system hr1 is configured Exported path: /hr1 Export Options: rw,no_root_squash Configured Clients: client1,client2
Il ne reste plus qu’à démarrer la ressource ExportFS pour que les clients NFS puissent accéder au partage de fichiers :
bash-3.2# srvctl start exportfs -id HR1 bash-3.2# srvctl status exportfs export file system hr1 is enabled export file system hr1 is exported on node rac2
Le démarrage de la ressource ExportFS engendre implicitement le démarrage de la ressource HAVIP associé à la ressource ExportFS.
Vous remarquerez aussi que la ressource ExportFS est démarrée sur le noeud rac2.
Le choix du noeud est effectué par le CRS lors du démarrage de la ressource HAVIP.
Comme toute autre ressource, vous pouvez déplacer le serveur NFS sur un autre noeud lors d’une opération de maintenance :
bash-3.2# srvctl relocate havip -id HR1 -node rac1 bash-3.2# srvctl status havip -id HR1 HAVIP ora.hr1.havip is enabled HAVIP ora.hr1.havip is running on node rac1
Pour plus de détails la fonctionnalité HANFS, vous pouvez consulter le White Paper Oracle.