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)
- Schedule (planification des sauvegarde)
- CLOptSet (jeu d'options pour le domaine (INCLEXCL), optionnel)
- Domain
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=hours7. 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:15818. Définir l'association entre le domain, le schedule et le node :
define association domainname schedulename nodename9. 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 nodenameEn cas, supprimer le schedule, si on lui a attribué un schedule rien que pour lui :
delete schedule domainname schedulenameEt 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 /tmpIl 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 * EOFVotre premier choc : les commentaires sont marqués par une *. Dur. Enfin, vous êtes habitués, maintenant...