Sécuriser vos accès NFS en 12c

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 :

  1. Gains de performance (accès en mode « raw device », distribution des données sur tous les disques ASM, …)
  2. Sécurisation des données (redondance)
  3. 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.

  1. HAVIP : ressource VIP démarrée uniquement sur un seul noeud du cluster
  2. 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.