blog ID-INFO

Lançons une SAVE21 !

Vous avez besoin de centraliser toutes les données de votre système IBM i en une seule fois par une seule sauvegarde ? Facile : lançons une SAVE21 !

Toute la communauté IBM i connait ce terme issu d’une option de menu : On se connecte au menu natif de gestion des sauvegardes (GO SAVE), on sélectionne l’option n°21, et on n’a plus qu’à suivre les instructions affichées à l’écran. 

En revanche, vous n’avez pas de ressource pour rester devant un écran toute une nuit ? Facile : soumettez cette sauvegarde en batch ! Comment ? Facile ! Suivez cet article et on vous montrera comment préparer sa SAVE21 en batch.

 

Que sauvegarde la SAVE21 ?

Celle-ci comprend le microcode, le système (dont les données de sécurité et de configuration), toutes les bibliothèques et tout l’IFS (dont le répertoire QDLS, les fameux « DLO »). On entend aussi parler de « sauvegarde de TOUT le système », par opposition à la simple « sauvegarde système », qui renvoie en fait à une SAVSYS, ou à l’option 22 du menu SAVE.

Les deux termes ne sont pas non plus entièrement indépendants. En effet, la SAVE21 inclue une SAVSYS, à laquelle elle ajoute une sauvegarde intégrale des données utilisateur, équivalente de l’option 23 du menu SAVE.

Pour toutes les commandes listées dans cet article, <device> se réfère au lecteur dans lequel <volume>, le support de sauvegarde utilisé, est inséré. Les commandes de sauvegarde qui sont incluses dans la SAVE21 sont les suivantes :

Sauvegarde du microcode et du système :

SAVSYS DEV(<device>)
VOL(<volume>)
ENDOPT(*LEAVE)

Sauvegarde du reste des bibliothèques (bibliothèques « non-système ») :

SAVLIB LIB(*NONSYS)
DEV(<device>)
VOL(<volume>)
ENDOPT(*LEAVE)

Sauvegarde des « DLO » (contenu de /QDLS) :

SAVDLO DLO(*ALL)
DEV(<device>)
VOL(<volume>)
ENDOPT(*LEAVE)

Sauvegarde de tout l’IFS (sauf /QDLS et /QSYS.LIB qui ont déjà été sauvegardées) :

SAV    DEV(‘/qsys.lib/<device>.devd’)
OBJ((‘/*’)
(‘/QSYS.LIB’ *OMIT)
(‘/QDLS’ *OMIT))
VOL(<volume>)
ENDOPT(*REWIND)

 

Quand soumettre ma SAVE21 ?

La SAVE21 doit TOUT sauvegarder. Donc tous les objets prĂ©sents sur le système doivent Ăªtre disponibles pour le travail de sauvegarde. Pour s’en assurer, IBM a rĂ©duit l’accès Ă  la SAVE21 Ă  la pĂ©riode oĂ¹ le système est en mode restreint, c’est-Ă -dire que tous les travaux et sous-systèmes sont arrĂªtĂ©s.

Seulement, ce mode restreint a des consĂ©quences lourdes : l’IBM i est alors inaccessible, et seul un travail peut tourner sur votre système : le travail de sauvegarde. Toutes vos applications seront donc Ă  l’arrĂªt, et le système sera inaccessible, uniquement gĂ©rable via une console (HMC ou LAN).

Le timing est donc primordial, il faut pouvoir trouver l’intervalle oĂ¹ une telle opĂ©ration prĂ©sente le moins d’impact possible. Par ailleurs, il faut vĂ©rifier dans le planificateur du système si des travaux sont prĂ©vus pendant la pĂ©riode de mode restreint, afin de les relancer (si besoin) en fin de sauvegarde.

 

Comment soumettre la sauvegarde ?

La question « comment ? » est en effet la plus complexe Ă  laquelle rĂ©pondre, dans le cadre de la SAVE21. Étant donnĂ© que le mode restreint empĂªche de rĂ©agir une fois la sauvegarde dĂ©marrĂ©e, il faut avoir prĂ©vu toute Ă©ventuelle cause d’interruption avant la soumission : Il faut bien vĂ©rifier que la cartouche de sauvegarde est dans le lecteur et utilisable :

CHKTAP DEV(<device>) ENDOPT(*REWIND)

 

Il faut toujours s’assurer au préalable que la bande est bien montée dans le lecteur. Cette commande permet également de libérer le message « CPC6778 », dans lequel le nom du volume monté dans le lecteur est récupérable via un RCVMSG.

Dans le cas d’une bandothèque ou d’une VTL, cela permet de ne pas avoir à renseigner le nom du volume de sauvegarde en dur dans le code source. Attention cependant, la commande CHKTAP ne fonctionne pas directement sur une bandothèque, le message CPF415A est émis. Dans ce cas, commencer par trouver la bande souhaitée. Vérifier avec l’option 5 la catégorie (et le système le cas échéant) de cette cartouche.
Monter la cartouche, et utiliser ensuite la commande :

SETTAPCGY DEV(<device>) OPTION(*MOUNTED) CGY(<catégorie> <système>)

 

<système> n’est Ă  renseigner que si la catĂ©gorie est *NOSHARE. Il renvoie gĂ©nĂ©ralement au nom affichĂ© dans le DSPNETA. Il faudra Ă©galement Ăªtre vigilant de bien initialiser la bande avant de l’utiliser :

INZTAP DEV(<device>) CHECK(*NO)

 

Ensuite, il faut s’assurer que le job sera soumis correctement et que le mode restreint soit possible.

 

Pendant le mode restreint, seul le sous-système de contrĂ´le sera actif, avec un seul travail dedans. D’ailleurs, l’entrĂ©e en mode restreint se fait par l’arrĂªt de tous les sous-systèmes, et la sortie de ce mode se fait par le redĂ©marrage du sous-système de contrĂ´le, ce qui dĂ©clenche un travail d’exĂ©cution du programme de dĂ©marrage.

Le sous-système de contrĂ´le est indiquĂ© dans la valeur système QCTLSBSD. Sur la plupart des systèmes, le sous-système de contrĂ´le est QSYS/QCTL, et la session qui tourne dedans QSYS/DSP01. Il faut s’assurer que ceux-ci soient dĂ©marrĂ©s. Le programme de dĂ©marrage est indiquĂ© dans la valeur système QSTRUPPGM. Celui-ci peut Ăªtre personnalisĂ© Ă  volontĂ©. Il faut donc s’assurer qu’il dĂ©marre bien tout l’applicatif. Par ailleurs, il faut s’assurer que la JOBQ qui est rattachĂ©e au sous-système de contrĂ´le est bien libĂ©rĂ©e et si la session Ă  laquelle se connecte le travail soit bien libre.

Enfin, il faut prendre en compte les performances du système sur lequel on travaille. Il ne faut pas hésiter à insérer des DLYJOB qui permettront, par exemple, de ne pas lancer le SAVSYS avant que le mode restreint ne soit atteint. On peut également attendre que le message CPF0968 soit libéré pour démarrer la sauvegarde.

Par ailleurs, certaines commandes peuvent attendre un rĂ©sultat avant de laisser le travail se poursuivre Ă  la prochaine commande. Ce temps d’attente d’un rĂ©sultat peut Ăªtre modifiĂ© si les performances sont faibles :

CHGJOB DFTWAIT(<durée_en_secondes>)

 

Enfin, les performances globales du travail sont mĂªme Ă  prendre en compte dans la commande de dĂ©marrage en batch du mode restreint du système :

ENDSBS SBS(*ALL) OPTION(*IMMED) BCHTIMLMT(<durée_max_du_mode_restreint_en_minutes>)

 

En effet, la valeur indiquĂ©e dans le paramètre BCHTIMLMT dĂ©finit la durĂ©e maximale pendant laquelle le mode restreint durera, et ce mĂªme si le travail se retrouve bloquĂ© d’une manière ou d’une autre.

Il faut bien veiller à ne pas prévoir ce délai trop court pour que le travail se termine normalement, mais ne pas le prévoir trop long non plus, car on risque alors de ne pas pouvoir récupérer le système quand les utilisateurs doivent se connecter.

Une fois ce délai atteint, le sous-système de contrôle redémarrera que le travail soit terminé ou non. Si vous avez prévu de créer un programme qui fonctionne aussi bien en interactif qu’en batch, il faudra conditionner cette commande : si *NOMAX est indiqué (ou le paramètre est laisse à sa valeur par défaut), alors la commande ne fonctionnera pas en batch. Si une autre valeur que *NOMAX est indiquée, alors la commande ne fonctionnera pas en interactif.

 

Autres paramètres de sauvegarde :

Les commandes de sauvegarde peuvent Ăªtre effectuĂ©es dans n’importe quel ordre, sauf le SAVSYS qui doit Ăªtre rĂ©alisĂ© en premier afin d’avoir le microcode au dĂ©but de la sauvegarde pour pouvoir lancer un IPL Ă  partir de cette source.

Le paramètre ENDOPT doit alors Ăªtre adaptĂ© selon cet ordre pour indiquer *LEAVE pour les sauvegardes successives et *REWIND ou *UNLOAD (selon le besoin) en fin de sauvegarde. En effet, *LEAVE permettre de gagner beaucoup de temps sur le rembobinage de la bande.

Votre sauvegarde fonctionne bien, mais aucun spool n’est prĂ©sent après restauration d’une file d’attente ? Si les spools sont importants pour votre applicatif, il est primordial de spĂ©cifier un paramètre supplĂ©mentaire dont la valeur par dĂ©faut ne permet pas de sauvegarder les fichiers spools. Dans ce cas, il faut bien spĂ©cifier SPLFDTA(*ALL). La mĂªme remarque peut Ăªtre faite pour le contenu des *DTAQ : QDTA(*DTAQ).

Enfin, si l’état des sauvegardes doit Ăªtre suivi par une Ă©quipe, il peut Ăªtre avantageux de modifier le paramètre OUTPUT.

*PRINT permet de récupérer un fichier spool, que l’on peut par la suite « classer » dans une OUTQ spécifique.

*OUTFILE permet de stocker le rĂ©sultat d’une sauvegarde dans un fichier externe. OUTFILE et OUTMBR doivent alors Ăªtre indiquĂ©s avec *OUTFILE pour spĂ©cifier la localisation du fichier. Il est par exemple possible d’avoir un membre horodatĂ© par sauvegarde pour garder un historique. Les informations en sortie sont alors fixĂ©es au niveau du paramètre INFTYPE. Pour la commande SAV de sauvegarde de l’IFS, l’option *OUTFILE n’est pas disponible pour le paramètre OUTPUT.

Attention, pour la commande SAVLIB LIB(*NONSYS) […] OUTPUT(*OUTFILE) OUTFILE(<bibliothèque>/<outfile>), la SAVE21 comptera systématiquement un objet non sauvegardé, le fameux fichier en sortie <bibliothèque>/<outfile>. Le travail de sauvegarde peut se terminer avec un code fin différent de 0, ce qui peut poser problème pour le monitoring et le reporting.

 

Comment tirer avantage d’une SAVE21 ?

L’inconvĂ©nient principal d’une SAVE21 est la mise en mode restreint du système. Mais tout inconvĂ©nient peut Ăªtre exploitĂ© pour devenir une force. En effet, on peut tirer avantage de la nĂ©cessitĂ© du mode restreint pour soumettre des commandes qui ne sont pas possible en « mode normal ».

Par exemple, on peut profiter du mode restreint pour lancer un « reclaim storage » (RCLSTG), une opĂ©ration hardware, ou des opĂ©rations qui fonctionnent mieux sans activitĂ© (arrĂªt de la journalisation, modification d’un sous-système, modification de la mire de connexion, « rĂ©organisation » des fichiers les plus utilisĂ©s, application de PTFs…).

 

Vous avez des questions concernant un sujet particulier autour de l’IBM i ? Alors contactez-nous au 04 30 96 97 32, ou via le formulaire de contact.

Partager cet article