Sauvegarder et restaurer une partition IBM i depuis un serveur NFS

Publié le 14/08/2021

Il y a quelques mois, nous avons publié un article relatif au transfert d’une bande virtuelle entre partitions IBM i. Cette méthode consistait à effectuer une sauvegarde sur une partition puis à la transférer par le réseau vers une autre partition.

Dans cet article, nous allons voir comment effectuer une sauvegarde directement dans un système de fichier d’une autre partition IBM i ou d’un serveur Linux à travers le protocole NFS.

NFS (Network File System) est un protocole réseau développé à l’origine par Sun Microsystems, qui permet à un ordinateur client d’accéder à un système de fichiers distant sur un autre serveur.

Nous allons détailler toutes les étapes nécessaires à la configuration, que ce soit du côté de la partition IBM i sauvegardée (client NFS) comme du côté de la partition IBM i recevant la sauvegarde (serveur NFS).

Dans cet exemple de configuration, le serveur NFS est une partition IBM i, mais il pourrait s’agir de n’importe quel type de serveur NFS (Linux, UNIX, Windows …) supportant les prérequis.

SOMMAIRE

1 – Prérequis NFS

Liste des prérequis nécessaires à la mise en œuvre de la configuration NFS, indiqués dans la Technote IBM : IBM i save and restore using virtual optical images on an NFS server

1.1 – Prérequis serveur NFS
  • NFS Version 3 (NFSv3)
  • Les images nécessaires à la sauvegarde doivent être créées avant l’opération, elles ne peuvent pas être créées dynamiquement durant la sauvegarde
  • Un fichier VOLUME_LIST contenant la liste des images doit être créé préalablement à la sauvegarde avec les caractéristiques suivantes :
    • Le fichier doit être dans le même répertoire que les images de sauvegarde
    • Le fichier doit se nommer VOLUME_LIST
    • Chaque fichier image doit être présent dans le fichier VOLUME_LIST avec son type d’accès
    • Le nom des fichiers image est limité à 127 caractères
    • Tous les caractères après un symbole # sont considérés comme des commentaires et sont ignorés
    • L’ordre des fichiers images indique à la partition client IBM i l’ordre des images à utiliser
    • Le fichier ne doit contenir que des caractères ASCII

Pour information, NFSv4 est inclus dans l’Operating System IBM i depuis la 6.1 (2008).


1.2 – Prérequis client NFS
  • La partition IBM i doit disposer du protocole TCP/IP IPv4
  • Le partage réseau du serveur NFS doit être monté sur un répertoire de l’IFS de la partition client
  • Une console LAN ou une interface STS (Service Tools Server) en IPv4 doit être configurée
  • Un lecteur optique virtuel de type 632B-003 doit être configuré avec l’adresse TCP/IP du serveur NFS

1.3 – Schéma basique de l’architecture

Schéma basique de l’architecture mise en œuvre :

  • Adresses TCP/IP
  • Hosts
  • Répertoires

La partition IBM i client NFS n’utilisera pas son adresse LAN, mais une adresse STS (Service Tools Server), alors que la partition IBM i serveur NFS utilisera une adresse LAN classique.

2 – Configuration du serveur NFS

Comme nous l’avons expliqué précédemment, le serveur NFS peut être une partition IBM i, une distribution Linux ou tout autre serveur NFS supportant les prérequis nécessaires.
Puisque nous sommes sur un blog dédié à l’environnement IBM i, cet exemple de configuration utilisera une partition IBM i comme serveur NFS.


2.1 – Démarrage du service NFS
STRNFSSVR SERVER(*ALL)

Service en cours de démarrage.


Service NFS démarré.


Vérification du démarrage dans l’historique système (DSPLOG)

Notez la présence du message CPCA1C6 (0 entries exported, 0 entries not exported) indiquant les exportations NFS. Il est en effet possible d’effectuer des exportations de répertoires (partages NFS) au moment du démarrage du service et pour cela on peut indiquer les exports dans un fichier de configuration “/etc/EXPORTS”.

Ce fichier ne sera pas utilisé dans cette configuration, nous exporterons manuellement les partages. Toutefois en cas d’utilisation permanente de NFS, il est conseillé d’effectuer les exports dans le fichier de configuration.


Vérification de la présence des travaux NFS (WRKACTJOB) sur le système.

On constate que le démon NFS (QNFSNFSD) est bien démarré.


On peut également vérifier au niveau des ports à l’écoute dans NETSTAT option 3.

NFS utilise, par défaut, le port 2049.


2.2 – Création des répertoires à exporter

Dans cet exemple, le répertoire à exporter, qui servira de stockage pour la sauvegarde de la partition source (client NFS) sera : /NFS/NFSCLIENT01

MKDIR DIR('/NFS')
MKDIR DIR('/NFS/NFSCLIENT01')

Vérification de la présence du répertoire créé (WRKLNK).


Bien évidemment, à cet instant, le répertoire est vide.


2.3 – Exportation NFS du répertoire

Cette étape permet d’exporter un répertoire, c’est-à-dire de le rendre visible pour un client NFS. L’utilisation du fichier de configuration /etc/EXPORTS rend cette étape inutile, mais dans cet exemple, nous privilégions l’utilisation de la commande d’exportation manuelle.

CHGNFSEXP OPTIONS('-i -o rw=nfsclient01') DIR('/NFS/NFSCLIENT01')
  • Le paramètre -i permet d’ignorer certaines caractéristiques NFS et couplé au paramètre -o il ignore les informations listées dans le fichier de configuration /etc/EXPORTS.
  • Le paramètre -o correspond aux options souhaitées. On indique que le partage sera en lecture/écriture (rw) et qu’il sera autorisé pour le client nommé nfsclient01.
  • Le répertoire exporté est /NFS/NFSCLIENT01

Répertoire exporté. CPCA1C6 (1 entries exported, 0 entries not exported).


Si l’on souhaite connaître la liste des exportations en cours, il faut utiliser l’API suivante :

CALL QZNFRTVE

Puis aller dans l’historique du travail en cours (DSPJOBLOG). La liste des partages en cours apparaît. Dans cet exemple nous n’avons que :

/NFS/NFSCLIENT01

Détails (F1 sur le message) :

CPIB41A – /NFS/NFSCLIENT01 currently exported.
/NFS/NFSCLIENT01 is currently exported with the following options:
VERS=2:3, RO, ANON=4294770710(QNFSANON ), RW=NFSCLIENT01.


2.4 – Création des images pour la sauvegarde

Le support utilisé pour la sauvegarde est une image virtuelle de DVD-RAM. Les supports doivent impérativement être créés sur le serveur NFS avant de commencer les opérations de sauvegarde. Leur nombre et leur taille ne peut pas évoluer durant la sauvegarde, il faut donc prévoir suffisamment d’espace.

Vérification de l’espace disponible sur le serveur NFS. La commande WRKSYSTS indique une occupation à 17,35% des 458 GB disponibles. Dans notre exemple, nous allons créer deux images de 10 000 MiB (10,5 GiB).

Même information en utilisant la commande WRKDSKSTS.


Pour la création des images, il faut utiliser l’interface PASE.

CALL PGM(QP2TERM)

Puis se positionner dans le répertoire où l’on souhaite stocker les images, celui qui a été exporté.

cd /NFS/NLSCLIENT01

Création de la première image de 10 000 MiB à l’aide de la commande dd. IMAGE01.ISO correspond au nom de l’image, bs=1M correspond à l’unité (1 MiB) et count=10000 correspond au nombre d’incréments.

dd if=/dev/zero of=IMAGE01.ISO bs=1M count=10000

La première image (IMAGE01.ISO) a été créée. Sa taille est de 10 000 MiB soit exactement 10 485 760 000 octets. Sur ce système, la durée de cette étape a été de près de 24 secondes.


Le fichier IMAGE01.ISO est désormais présent dans le répertoire /NFS/NFSCLIENT01.


Sa taille est bien de 10 485 760 000 octets.


Création de la seconde image.

dd if=/dev/zero of=IMAGE02.ISO bs=1M count=10000

Seconde image créée en 16 secondes. La durée dépend des performances du système.


La seconde image est également dans le répertoire /NFS/NFSCLIENT01.


Si l’on regarde les capacités de stockage du serveur NFS (WRKSYSSTS), Avant la création des images, l’occupation était à 17,35% de 458,1 GB (79,5 GB), après, elle est montée à 21,94% (100,5 GB) soit une différence de 21 GB ce qui correspond exactement à la taille des deux images (10,5 GB chacune).

Attention à ne pas confondre le système décimal (en puissance de 10) et le système binaire (en puissance de 2).

10 000 MiB = 9,77 GiB ou 10,49 GB.

Même augmentation constatée avec le WRKDSKSTS.


2.5 – Création du fichier VOLUME_LIST

La création du fichier VOLUME_LIST, contenant la liste des images s’effectue par la commande echo.

Dans cette commande on indique ce que l’on veut écrire dans le fichier. “IMAGE01.ISO” correspond au nom de la première image et le “W” indique que l’on autorise l’accès en écriture (Write). Les signes “>>” permettent d’envoyer ces informations dans le fichier dont le nom est indiqué après (VOLUME_LIST). Si le fichier n’existe pas, le système le créé.

echo 'IMAGE01.ISO W' >> VOLUME_LIST

Puis on écrit le nom de la seconde image dans le fichier VOLUME_LIST, qui existe désormais.

echo 'IMAGE02.ISO W' >> VOLUME_LIST

Le nom des deux images a été ajouté dans le fichier VOLUME_LIST.


On constate que le fichier VOLUME_LIST existe bien dans le répertoire /NFS/NFSCLIENT01.


Editons-le pour voir son contenu. La liste est bien constituée des deux images et l’on y trouve également le W pour autoriser l’écriture.


2.6 – Affectation des droits sur le répertoire exporté

L’étape suivante consiste à donner les droits suffisants sur les fichiers image et sur le fichier VOLUME_LIST afin que le client NFS (la partition IBM i qui effectuera la sauvegarde) dispose des droits adéquates. Cela s’effectue à l’aide de la commande CHGAUT.

On donne les droits *PUBLIC en lecture/écriture sur tous les fichiers du répertoire.

CHGAUT OBJ('/NFS/NFSCLIENT01') USER(*PUBLIC) DTAAUT(*RWX) SUBTREE(*ALL)

Les droits ont été accordés.

3 – Configuration du client NFS

Nous passons désormais à la configuration du client NFS, la partition IBM i devant utiliser les commandes de sauvegarde / restauration.


3.1 – Création de l’interface STS

Cette étape n’est pas nécessaire pour une partition disposant d’une Console LAN. En revanche si la partition est gérée par une HMC, il sera nécessaire de créer cette interface.

L’interface STS (Service Tools Server) est une Console LAN disposant de fonctions réduites ne permettant pas d’avoir la fonction console 5250 mais qui active une interface TCP/IP au niveau du microcode et qui permettra l’accès à la partition via le réseau par certains protocoles (NFS, bootp …) malgré le mode restreint.

Sa configuration se déroule au niveau du SST (STRSST). Connexion avec un compte disposant de suffisamment de droits.


Prendre l’option 8 (Work with Service Tools Server Security and Devices).


Puis utiliser la touche de fonction F13 (Select STS LAN adapter).


L’interface STS doit impérativement être dédiée à cette fonction, exactement comme la Console LAN. Il n’est pas possible d’utiliser une interface déjà configurée. Il faut donc soit prévoir un port réseau physique dédié, soit une interface virtuelle.

Dans cet exemple, la partition dispose de 8 interfaces réseau virtuelles, CMN07 étant réservée pour l’interface STS. On sélectionne cette dernière avec le choix 1.


On arrive alors sur l’écran de configuration de l’interface STS qu’il convient de paramétrer. Le système indique clairement qu’il ne s’agira pas d’une interface disposant des mêmes fonctions que pour la Console LAN : “Warning: Selected resource is not full LAN console capable.”.


Configuration de l’interface STS. il faut indiquer un nom d’hôte, une adresse TCP/IP, la passerelle et le masque.

Attention, l’adresse TCP/IP de cette interface ne doit pas être utilisée par un autre serveur ou une autre fonction. Elle doit être affectée à cette interface. Dans cet exemple, nous nommons l’interface NFSCLIENT01 et lui affectons l’adresse 192.168.88.103.

Pour enregistrer cette configuration, il faut utiliser la touche de fonction F7 (Store).


Il faut ensuite utiliser la touche de fonction F14 (Activate) pour activer la configuration et donc activer cette interface.


3.2 – Test de la connectivité réseau

Désormais que l’interface réseau STS (NFSCLIENT01) a été créée, le serveur NFS doit pouvoir la pinger. Cette opération est réalisée sur le serveur NFS.

PING NFSCLIENT01

L’interface NFSCLIENT01 répond bien au PING.


Opération inverse pour voir si le serveur NFS est bien vu par la partition IBM i client.

PING NFSSERVER

L’interface NFSSERVER (192.168.88.6) répond bien au PING.


3.3 – Montage du répertoire exporté

Le but de cette étape est de monter le répertoire exporté par le serveur NFS et contenant les images destinées à la sauvegarde.

On commence par créer un répertoire local sur la partition client qui servira de montage pour voir le contenu du répertoire exporté par le serveur NFS. On peut utiliser le même nom que sur le serveur, mais dans notre exemple, nous allons prendre un nom différent /NFS/NFSSERVER.

MKDIR DIR('/NFS')
MKDIR DIR('/NFS/NFSSERVER')

Affichage du contenu du répertoire /NFS/NFSSERVER. A cet instant, le répertoire est vide.


Montage du répertoire exporté par le serveur NFS sur le répertoire local. Pour cela, on utilise la commande MOUNT.

  • Le paramètre MFS contient l’adresse TCP/IP du serveur NFS (192.168.88.106) et le partage NFS (/NFS/NFSCLIENT01) exporté.
  • Le paramètre MNTOVRDIR permet d’indiquer le nom du répertoire local sur lequel on monte le partage NFS exporté.
MOUNT TYPE(*NFS) MFS('192.168.88.6:/NFS/NFSCLIENT01') MNTOVRDIR('/NFS/NFSSERVER')

Le montage a été effectué.

Le montage de /NFS/CLIENT01 a été effectué sur /NFS/NFSSERVER.


Désormais, le répertoire local (/NFS/NFSSERVER) que l’on vient de créer sur la partition IBM i client, et qui était vide quelques instants avant, contient les images pour la sauvegarde ainsi que le fichier VOLUME_LIST. 🙂


A cet instant, il est possible, depuis la partition IBM i client, d’effectuer toutes les opérations sur le répertoire “partagé”, à savoir créer des fichiers, les renommer, les supprimer …

Mais pour effectuer des sauvegardes ou des restaurations, il convient de disposer d’un lecteur compatible. Pour cela, nous allons créer un lecteur optique virtuel car lui seul est compatible avec des images optiques virtuelles de DVD. Un lecteur de bandes virtuelles ne peut pas utiliser les images optiques virtuelles.


3.4 – Création du lecteur optique virtuel NFS

Création du lecteur optique virtuel qui va permettre d’effectuer la sauvegarde.

  • Le paramètre LCLINTNETA permet d’indiquer qu’il s’agit d’un lecteur virtuel distant utilisant le protocole NFS
  • Le paramètre RMTINTNETA permet d’indiquer l’adresse TCP/IP du serveur NFS (ex : 192.168.88.6)
  • Le paramètre NETIMGDIR permet d’indiquer le chemin du répertoire exporté sur le serveur NFS
CRTDEVOPT DEVD(OPTNFS01) RSRCNAME(*VRT) LCLINTNETA(*SRVLAN) RMTINTNETA('192.168.88.6') NETIMGDIR('/NFS/NFSCLIENT01') TEXT('Lecteur NFS')

Le lecteur optique virtuel NFS a été créé.


WRKDEVD OPT*


Mise en fonction du lecteur optique virtuel NFS.

VRYCFG CFGOBJ(OPTNFS01) CFGTYPE(*DEV) STATUS(*ON)

Lecteur optique virtuel NFS mis en fonction.


3.5 – Vérification et initialisation des images virtuelles

La première chose à faire une fois le lecteur créé, est de valider si ce dernier à bien accès aux images virtuelles distantes exportées par le serveur NFS. La commande WRKIMGCLGE permet de voir le contenu d’un catalogue d’images NFS.

WRKIMGCLGE IMGCLG(*DEV) DEV(OPTNFS01)

Les deux images sont bien vues, mais comme elles n’ont pas encore été initialisées au format IBM i, elles portent des noms de volume horodatés. Notons également que leur accès est bien en lecture / écriture (*READWRITE).


Initialisation des deux images virtuelles au format IBM i. Pour cela, il faut d’abord charger l’image dans le catalogue (la monter) puis l’initialiser. Deux commandes nécessaires LODIMGCLGE et INZOPT.

Etant donné qu’il y a deux images, on va commencer par la seconde et terminer par la première qui sera directement prête pour débuter la sauvegarde.

  • Chargement de la seconde image (2) dans le lecteur OPTNFS01.
  • Initialisation de l’image virtuelle chargée avec le nom de volume VOL02.
LODIMGCLGE IMGCLG(*DEV) IMGCLGIDX(2) DEV(OPTNFS01)  
INZOPT NEWVOL(VOL02) DEV(OPTNFS01) CHECK(*NO)

Image initialisée avec le nom de volume VOL02.


On charge et on initialise la première image (1) dans le lecteur OPTNFS01.

LODIMGCLGE IMGCLG(*DEV) IMGCLGIDX(1) DEV(OPTNFS01)  
INZOPT NEWVOL(VOL01) DEV(OPTNFS01) CHECK(*NO)

Affichage du contenu du catalogue d’images. Désormais, le nom des volumes sont ceux qui ont été indiqués lors de l’initialisation des images (VOL01 et VOL02).

WRKIMGCLGE IMGCLG(*DEV) DEV(OPTNFS01)

Les images sont conformes à la norme IBM i et peuvent être utilisées pour des opérations de sauvegarde puis de restauration.

4 – Sauvegarde

On peut désormais exécuter tout type d’opération de sauvegarde ou de restauration avec les commandes IBM i classiques en utilisant le lecteur OPTNFS01.

Bien que cette technologie s’appuie sur le réseau TCP/IP et plus précisément sur le protocole NFS, il est quand même possible d’effectuer une SAVE 21 ou une SAVSYS malgré le fait que ces opérations nécessitent le mode restreint. L’utilisation de l’interface STS au niveau du microcode et non pas au niveau de l’Operating System permet de s’affranchir de cette contrainte. En effet, même en mode restreint, l’interface STS reste toujours active sauf si on la désactive volontairement au niveau DST ou SST.

Dans notre exemple, nous avons effectué une sauvegarde des données de sécurité (SAVSECDTA) et des bibliothèques *ALLUSR sans être en mode restreint.

SAVSECDTA DEV(OPTNFS01) ENDOPT(*LEAVE)

Si l’on utilise la commande NETSTAT sur le serveur NFS (port 2049), on peut voir qu’il y a de l’activité réseau, cette dernière correspond effectivement à la sauvegarde en cours. Un flux d’environ 18 MB a transité sur le réseau.


Puis sauvegarde des bibliothèques *ALLUSR.

SAVLIB LIB(*ALLUSR) DEV(OPTNFS01)

La sauvegarde des bibliothèques est terminée.


L’activité réseau sur le serveur NFS a évolué. Le flux réseau NFS est monté à un peu plus de 845 MB.

5 – Arrêt du lecteur et du montage

Une fois la sauvegarde terminée, on peut arrêter le lecteur optique virtuel.

VRYCFG CFGOBJ(OPTNFS01) CFGTYPE(*DEV) STATUS(*OFF) ASCVRYOFF(*YES)

Les images virtuelles ne sont plus utilisables par le lecteur car il vient d’être mis hors fonction, mais elles sont toujours visibles dans le répertoire /NFS/NFSSERVER.


Puis stopper le montage du répertoire provenant du serveur NFS.

UNMOUNT TYPE(*NFS) MNTOVRDIR('/NFS/NFSSERVER')

CPCA1B1 – File system or directory unmounted.
/NFS/NFSSERVER was successfully unmounted.

Les images virtuelles ne sont plus visibles sur cette partition.

6 – Utilisation des images sur le serveur NFS (optionnel)

Cette étape est optionnelle car elle ne peut être effectuée que si le serveur NFS est une partition IBM i. Pour le “fun”, nous allons tenter de relire les images virtuelles sur le serveur distant.


6.1 – Création d’un catalogue d’images

Pour relire les images virtuelles, il faut les intégrer dans un catalogue d’image. Le principe est de créer un catalogue pointant sur le répertoire où sont stockées les images (/NFS/NFSCLIENT01).

  • Le paramètre IMGCLG(NFSCLIENT) correspond au nom du catalogue que l’on créé.
  • Le paramètre DIR doit contenir le chemin du répertoire contenant les images virtuelles.
  • Le paramètre TYPE(*OPT) indique que l’on créé un catalogue de type optique.
  • Le paramètre CRTDIR(*NO) indique que l’on ne créé pas le répertoire puisqu’il existe déjà.
  • Le paramètre ADDVRTVOL(*DIR) indique que les images contenues dans le répertoire sont ajoutées au catalogue.
  • Le paramètre IMGTYPE(*ALL) indique que l’on intègre toutes les images, qu’elles soient de type ISO ou UDF.
CRTIMGCLG IMGCLG(NFSCLIENT) DIR('/NFS/NFSCLIENT01') TYPE(*OPT) CRTDIR(*NO) ADDVRTVOL(*DIR) IMGTYPE(*ALL)

Le catalogue NFSCLIENT est créé.


Le catalogue existe, on le constate à l’aide de la commande WRKIMGCLG. On peut charger le catalogue dans un lecteur virtuel pour utiliser les images.

LODIMGCLG IMGCLG(NFSCLIENT) DEV(OPTVRT01)

Cet exemple part du principe qu’il existe un lecteur virtuel optique OPTVRT01 sur la partition, si tel n’est pas, voici les commandes pour le créer et le démarrer.

CRTDEVOPT DEVD(OPTVRT01) RSRCNAME(*VRT) ONLINE(*YES) TEXT('Lecteur optique virtuel')
VRYCFG CFGOBJ(OPTVRT01) CFGTYPE(*DEV) STATUS(*ON)

Le catalogue NFSCLIENT est chargé dans le lecteur optique virtuel OPTVRT01, on utilise l’option 12 (Work with entries) pour voir les images contenues dans ce catalogue.


On trouve bien les deux images (IMAGE01.ISO et IMAGE02.ISO) dans le catalogue.

Les noms de volumes sont bien VOL01 et VOL02.

Elles sont de type *RAM en accès lecture / écriture (*READWRITE).


6.2 – Lecture des images virtuelles

Affichage du contenu de l’image virtuelle.

Méthode 1

DSPF STMF('/QOPT/VOL01')

Données de sécurité (SAVSECDTA ==> QFILEUPR), puis les bibliothèques *ALLUSR (QFILE suivi de la liste exhaustive).

Seconde méthode

DSPOPT VOL(VOL01) DEV(OPTVRT01) DATA(*SAVRST) PATH(*ALL)

Données de sécurité (liste des profils).

Liste des bibliothèques *ALLUSR.


6.3 – Affichage des métadonnées des images virtuelles

Affichage des métadonnées des images virtuelles.

DSPOPT VOL(VOL01) DEV(OPTVRT01) DATA(*VOLATR) PATH(*ALL)

Taux de remplissage de la première image virtuelle (ex : 9,23%).

Taux de remplissage de la seconde image virtuelle (ex : 0,10% car vide).

Twitter