TSM : Petite mise en bouche

Tivoli Storage Manager, de son petit nom TSM, compte parmi les plus puissantes architectures dédiées aux sauvegardes / stockage / restauration de données. Seulement voilà, non content d'être une technologie propriétaire, c'est en plus un gros morceau à gérer... Enfin du moins au début. Ce billet a donc pour vocation de découvrir les premiers concepts qui se cachent sous TSM et de vous lancer dans l'apprivoisement de ce géant bourru.

Fonctionnement général

TSM fonctionne sur un mode Client/Serveur, c'est-à-dire que le serveur TSM se tient à la disposition des Clients, nos nodes, afin que les sauvegardes soient faites. Selon la manière dont la sauvegarde est effectuée, les rôles varient. En effet, sur une sauvegarde faite manuellement, le node sollicite le serveur TSM et lui demande d'effectuer une tâche bien précise (sauvegarde ou restauration). Lorsque la sauvegarde est automatisée, c'est le serveur TSM qui sollicite le node -via un scheduler- et qui va lui demander les données à sauvegarder. Le node endosse ainsi la fonction de serveur (en perpétuelle écoute de requête en provenance du serveur TSM). Au sein de l'architecture TSM, un node se définit par rapport à d'autres entités, qui permettent notamment d'organiser et de paramétrer au plus fin les détails liés aux sauvegardes à faire. Logiquement, on a :
  • Policy
    • Domain
      • CLOptSet (jeu d'options pour le domaine (INCLEXCL), optionnel)
        • Schedule (planification des sauvegarde)
          • Node (noeud à sauvegarder)

Les mains dans le cambouillis

Sur de l'opérationnel

L'appel du terminal se fait par dsmadmc, qui, par défaut, ouvre une interface de commande avec le serveur TSM. Il est également possible de stipuler la commande sur la même ligne que dsmadm. Ainsi, dsmadm exécutera la commande, fermera l'invite de commande tsm et rendra le terminal à l'utilisateur. Dans un système qui fonctionne, on peut interroger l'existant grâce à la commande QUERY -abrégée en q- QUERY sert à rapporter un état précis du système, par exemple, l'état des processes qui tournent et s'il y en a (q proc), les associations existantes (q association)...
tsm: TSMSERVER>q policy

Policy        Policy        Default       Description
Domain        Set Name      Mgmt
Name                        Class
Name
---------     ---------     ---------     ------------------------
NDMP          ACTIVE        STANDARD
[...]

tsm: TSMSERVER>q domain

Policy        Activated     Activated      Number of     Description
Domain        Policy        Default       Registered
Name          Set           Mgmt               Nodes
Class
---------     ---------     ---------     ----------     ------------------------
NIX          STANDARD      STANDARD             205     serveurs UNIX
[...]
tsm: TSMSERVER>q sched
Domain           *     Schedule Name        Action     Start Date/Time          Duration     Period     Day
--
NIX                   Schedbux             Inc Bk     27-05-2008 00:00:00          8 H        1 D      Any
[...]
Ce qui revient à dire que, lorsque l'on arrive sur un système TSM tout frais, prêt à être installé, il faut donc créer et paramétrer tout le système.

Sur du tout neuf

Et bien, allons-y, recréons tout ça ! L'invite dsmadmc lancée, vous pouvez d'ores et déjà vous essayer à créer tout ce bazard. Et si vous bloquez sur une option, il existe une commande help qui, invoquée seule, vous énumérera l'ensemble des catégories qu'elle détient, et sinon, si vous savez sur quelle commande vous bloquez, il suffit de lancer help <commande> pour avoir accès à tout le descriptif, illustré d'exemple, de ladite commande. Alors pas de panique !

Petit aperçu de comment faire...

1. Créer un domaine, avec ou non son set d'option :

define domain domainname [...]
define cloptset cloptsetname [...]
define clientopt cloptsetname inclexcl "exclude.dir /tmp*"
[...]
2. Définir une policyset :
define policyset domainname policysetname [...]
3. Définir sa mgmtclass ou utiliser celle par défaut (STANDARD)
define mgmtclass domainname policysetname classname [...]
4. Assigner la mgmtclass définie (on peut utiliser celle par défaut en mentionnant STANDARD en lieu et place de classname) :
assign defmgmtclass domainname policysetname classname [...]
5. Valider la policyset (il n'existe qu'une et une seule policyset activée à un instant donné) :
validate policyset policysetname [...]
activate policyset policysetname [...]
6. Créer un schedule et fixer le schedule et les paramètres de sauvegarde pour le node :
define sched domainname schedname nodename action=Incremental|[...voir help define sched] desc=\\\"description\\\" type=client scheds=classic startDate=11/25/2005 startTime=20:00:00 period=1 perunits=days priority=1 duration=8 durUnits=hours
7. Enregistrer le node dans le domaine, ainsi que ses paramètres de connexion au service :
register node nodename nodepasswd passexp=0 contact=contact\@bux.fr domain=domainname cloptset=optionsetname forcepwreset=no url=http://nodename:1581
8. Définir l'association entre le domain, le schedule et le node :
define association domainname schedulename nodename
9. Customiser le node :
update node nodename [...]
Et lorsqu'on veut supprimer des nodes... D'abord supprimer ses data :
delete filespace nodename *
Et enfin supprimer le node :
remove node nodename
En cas, supprimer le schedule, si on lui a attribué un schedule rien que pour lui :
delete schedule domainname schedulename
Et oui, ce n'est pas de tout repos...

La config

Les fichiers de configuration se situent généralement aux emplacements mentionnés, à savoir dans /opt/tivoli, mais il peut arriver que ce ne soit pas le cas. Si vous êtes dans ce genre de situation, un petit find vous fixera de suite sur la localisation de votre configuration.

Le client

Le client dispose de 2 fichiers relatifs à sa configuration : dsm.opt et dsm.sys, tous les 2 disponibles à l'emplacement /opt/tivoli/tsm/client/ba/bin/. dsm.opt, comme son extension laisse le supposer, précise les options utilisateur du client, tandis que dsm.sys, quant à lui, définit les options système du client. Par défaut, à l'installation, TSM met à disposition des samples permettant de comprendre et de paufiner les réglages client. Voici quelques exemples :
# cat /opt/tivoli/tsm/client/ba/bin/dsm.opt
SERVERNAME              TSMSERVER
DOMAIN                  /home
DATEFORMAT              3
ARCHSYMLINKASFILE       no

# cat /opt/tivoli/tsm/client/ba/bin/dsm.sys
SERVERNAME          TSMSERVER
NODENAME            tsmcli
COMMMETHOD          TCPIP
TCPPORT             1500
HTTPPORT            1581
TCPSERVERADDRESS    192.168.1.252
TCPNODELAY          YES
PASSWORDACCESS      GENERATE
COMMRESTARTDURATION 0
SCHEDLOGRETENTION   7 D
ERRORLOGRETENTION   7 D
SCHEDLOGNAME        /var/log/dsmsched.log
ERRORLOGNAME        /var/log/dsmerror.log
MAXCMDRETRIES       10
RETRYPERIOD         5
REVOKEREMOTEACCESS      ACCESS
SCHEDMODE           PROMPTED
MANAGEDSERVICES     schedule webclient
INCLUDE             /home/.../* DONNEES
EXCLUDE.DIR         /tmp
Il est possible d'avoir un bref aperçu de la configuration client en lançant en superutilisateur, la commande dsmc query session, qui vous rendra un output qui ressemble à peu près à ça :
# dsmc query session
IBM Tivoli Storage Manager
Interface du client de sauvegarde/archivage en ligne de commande
Version client 5, Edition 5, Niveau 2.2
Date/heure client : 2010-04-10 11:00:19
(c) Copyright by IBM Corporation and other(s) 1990, 2009. All Rights Reserved.

Nom du poste : TSMClient
Session etablie avec le serveur SERVER1 : Linux/i386
Version serveur 5, edition 5, niveau 4.1
Date/heure serveur : 2010-04-10 10:57:37    Dernier acces : 2010-04-10 10:55:55

Informations sur la connexion au serveur TSM

Nom du serveur...........................: TSMSERVER
Type de serveur..........................: Linux/i386
Proteger la conservation de l'archivage..: "Non"
Version du serveur.......................: Ver. 5, Edi. 5, Niv. 4.1
Date du dernier acces....................: 2010-04-10 10:55:55
Supprimer les fichiers sauvegardes.......: "Non"
Supprimer les fichiers archives..........: "Oui"

Nom du poste client......................: TSMClient
Nom d'utilisateur........................: root

Le server

Le serveur dispose, de la même manière, d'un dsmserver.opt, par contre, pas de dsmserv.sys, tout du moins, dans mon installation. Du coup, tout le paramétrage du serveur se concentre dans un et un seul fichier de conf, dont voici un aperçu.
# cat /opt/tivoli/tsm/server/bin/dsmserv.opt
* dsmserv.opt
COMMmethod TCPIP
COMMmethod HTTP
TCPPort 1500
TCPWindowsize 64
TCPNODELAY         YES
HTTPPort 1580
MSGINTerval 1
MAXSessions 400
LOGPoolsize 3072
TXNGroupmax 256
COMMTimeout 300
IDLETimeout 30
LANGuage en_US
DATEformat 1
TIMEformat 1
NUMberformat 1
EXPInterval  0
MIRRORREAD LOG NORMAL
MIRRORREAD DB  NORMAL
MIRRORWRITE LOG PARALLEL
MIRRORWRITE DB  SEQUENTIAL
VOLUMEHistory volhist.out
DEVCONFIG devconfig.out
MOVEBatchsize 1000
MOVESizethresh 500
USELARGEBUFFERS    YES
EVENTSERVer        YES
DISABLESCHEDS no
REQSYS Yes
ASSISTVCRRECOVERY  YES
QUERYAUTH NONE
DBPAGEShadow Yes
DBPAGESHADOWFILE dbpgshdw.bdt
DNSLOOKUP       NO
ALIASHALT bye
NOMIGRRECL
DIRECTIO YES

TXNGROUPMAX 1024
BUFPOOLSIZE 786432

IDLETIMEOUT 60
COMMTIMEOUT 300

MAXSESSIONS 400
* EOF
Votre premier choc : les commentaires sont marqués par une *. Dur. Enfin, vous êtes habitués, maintenant...

La WebI

Selon que l'on ait paramétré comme il faut son serveur TSM -flagez le paramètre COMMmethod et HTTPPort-, il est possible de faire en sorte que l'utilisateur puisse accéder facilement à ses sauvegardes TSM sans avoir à se débattre avec dsmadmc, et ceci, en passant par l'interface Web du node. Ainsi, les données engrangées par notre serveur seront disponibles simplement à l'adresse http://nodename:1581. Petit bémol, pensez que c'est une applet JAVA, par conséquent, vérifiez tout de même que vous faites bien tourner le JDK de Sun avant de vous lancer dans la grande aventure.

Conclusion

Voila ! Fin de l'introduction, qui, quoiqu'un peu massive, donne un aperçu bien ciselé de TSM. Pour les plus curieux, la documentation est très présente, et il vaut mieux, car TSM est un produit propriétaire bien coûteux, mais qui peut valoir l'investissement, s'il est couplé avec la IBM Tape Library. Ce point rajoute d'ailleurs encore aux commandes à savoir manier, car la gestion des bandes est plus rapide via un terminal type dsmadmc que via une interface web. Enfin, à ce niveau-là, nous ne sommes plus en introduction. Les aides officielles / non officielles qui aident bien :
Vus : 1817
Publié par K-Tux : 59