mardi 5 mars 2013

Emuler une VTL sur Linux ? C'est possible avec MHVTL !

1. Introduction

Alors que je vous en dise plus sur ce post et pourquoi émuler une VTL sur Linux; en gros quel est l'intérêt ?
Quand j'ai commencé à fouiller ce projet il y a 4ans environ, je n'avais pas les compétences nécessaires sur Linux, et il y avait moins de documentations sur internet sur ce projet qui s'appel MHVTL, j'avais donc du abandonner plusieurs fois (et je pense maintenant que j'en étais pas loin mais bon quand ça veut pas : ça veut pas !).

Je voyais plusieurs intérêts assez énorme à la réussite de la mise en place d'une VTL virtuelle sur Linux:
- le coût : bah oui sur une distribution linux gratuite, et le projet de développement MHVTL étant libre également ça réduit considérablement le coût de la mise en place
- un lab : imaginez vouloir vous entraîner pour une installation ou une configuration particulière d'un soft de sauvegarde mais vous n'avez aucune robotique physique à présenter au soft pour configurer les librairies, les lecteurs, les bandes, gestion de bandes etc . Bah avec MHVTL c'est possible ! Même le test de partage de robotique entre plusieurs serveurs de backup est supporté : que demander de plus !
- euuh.. bon là comme ça j'en vois pas d'autres :D

Je vais essayez de vous expliquer étape par étape comment installer le logiciel MHVTL sur une distibution Linux Ubuntu serveur 10.04. Je ne maitrise pas du tout le soft, mais j'ai réussi à créer une VTL, à la présenter à un serveur Windows (en iSCSI) et à la présenter et l'utiliser avec Netbackup 7.5 en réalisant des sauvegardes sur les bandes virtuelles.

2. Installation de MHVTL


Dans un premier temps il vous faudra avoir installé un serveur linux (Ubuntu dans mon cas donc.). Je passe sur l'installation d'un serveur, si vous n'en avait jamais faite je pense qu'il ne faut pas se lancer dans l'installation d'MHVTL (même si ce guide permet normalement à n'importe qui de le faire ^^).

Allez c'est partit pour les lignes de commandes :)

Installation des paquets nécessaires à l'installation de MHVTL :

#sudo apt-get update && sudo apt-get install apache2 php5 sysstat lzop liblzo2-dev liblzo2-2 mtx mt-st sg3-utils zlib1g-dev lsscsi build-essential gawk alien fakeroot linux-headers-$(uname -r) -y

#apt-get install git

Création d'un répertoire de travail MHVTL :

#mkdir /home/ryan/mhvtl
#cd /home/ryan/mhvtl

Lancer le téléchargement des paquets MHVTL :

#git init
#git pull https://github.com/markh794/mhvtl.git

Création de l'utilisateur 'vtl' pour l'utilisation optimale de mhvtl :

#sudo groupadd -r vtl
#sudo useradd -r -c "Virtual Tape Library" -d /opt/mhvtl -g vtl vtl -s /bin/bash
#sudo mkdir -p /opt/mhvtl
#sudo mkdir -p /etc/mhvtl
#sudo chown -Rf vtl:vtl /opt/mhvtl
#sudo chown -Rf vtl:vtl /etc/mhvtl

Ensuite on va lancer une série de compilation, vérifier que vous êtes bien dans le bon répertoire de travail créé plus haut (/home/ryan/mhvtl) à l'aide de la commande 'pwd' :

#make
#make install

Se rendre ensuite dans le répertoire 'kernel' :

#cd kernel
#make
#make install

L'installation de MHVTL est terminée, démarrer les services :

#/etc/init.d/mhvtl
start

Et voilà l'installation est terminée et les services doivent avoir démarrés.
Il est possible de vérifier le bon lancement des services à l'aide des commandes :
- 'lsscsi' qui permet de lister les devices scsi présent sur le serveur linux (va faire apparaitre les librairies + les lecteurs configurés par défaut dans MHVTL)
- 'ps' qui permet de lister les processus lancés par MHVTL (va faire apparaitre 10daemons par défaut : 2 library vtl + 8 vtl tape)

#lsscsi -g
root@ubun-mhvtl:/home/ryan/mhvtl/kernel#lsscsi -g
                [1:0:0:0]   cd/dvd  NECVMWar VMware IDE CDR101.00  /dev/sr0  /dev/sg0
                [2:0:0:0]    disk   VMware,  VMware Virtual S 1.0   /dev/sda /dev/sg1
                [3:0:0:0]    mediumx STK      L700             0104  /dev/sch0 /dev/sg10
                [3:0:1:0]    tape   IBM      ULT3580-TD5      0104 /dev/st0  /dev/sg2
                [3:0:2:0]    tape   IBM      ULT3580-TD5      0104 /dev/st1  /dev/sg3
                [3:0:3:0]    tape   IBM      ULT3580-TD4      0104 /dev/st2  /dev/sg4
                [3:0:4:0]    tape   IBM      ULT3580-TD4      0104 /dev/st3  /dev/sg5
                [3:0:8:0]    mediumx STK      L80              0104  /dev/sch1 /dev/sg11
                [3:0:9:0]    tape   STK      T10000B          0104 /dev/st4  /dev/sg6
                [3:0:10:0]   tape    STK     T10000B          0104  /dev/st5 /dev/sg7
                [3:0:11:0]   tape   STK      T10000B          0104 /dev/st6  /dev/sg8
                [3:0:12:0]   tape   STK      T10000B          0104 /dev/st7  /dev/sg9

#ps -ef|grep
vtl
 root@ubun-mhvtl:/home/ryan/mhvtl/kernel#ps -ef|grep vtl
                vtl      13964    1  0 22:15 ?        00:00:00 vtltape -q 11 -v
                vtl      13968    1  0 22:15 ?        00:00:00 vtltape -q 12 -v
                vtl      13975    1  0 22:15 ?        00:00:00 vtltape -q 13 -v
                vtl      13990    1  0 22:15 ?        00:00:00 vtltape -q 14 -v
                vtl      13994    1  0 22:15 ?        00:00:00 vtltape -q 31 -v
                vtl      14007    1  0 22:15 ?        00:00:00 vtltape -q 32 -v
                vtl      14021    1  0 22:15 ?        00:00:00 vtltape -q 33 -v
                vtl      14026    1  0 22:15 ?        00:00:00 vtltape -q 34 -v
                vtl      14043     1  0 22:15 ?        00:00:00 vtllibrary -q 10 -v
                vtl      14049    1  0 22:15 ?        00:00:00 vtllibrary -q 30 -v
                root   14068 10043  0 22:17 pts/0    00:00:00 grep --color=auto vtl

L'installation de MHVTL est bien terminée et les services/processus sont opérationnels.

3. Installation de l'interface graphique

Afin de configurer totalement MHVTL, et donc pouvoir créer, associer des robotiques vtl il faut installer l'interface graphique (c'est fortement recommandé vu qu'en ligne de commande.. bah c'est pas forcément très compréhensible quoi :D).

Toujours en mode root (#sudo -i) entrer ces lignes de commandes pour configurer le serveur apache :

#cp /etc/sudoers /etc/sudoers.old
#sed -i '/Defaults    requiretty/s/^/#/' /etc/sudoers
#cd /var/www/
#git clone http://github.com/niadev67/mhvtl-gui.git
#chown -R www-data:www-data ./
#mv mhvtl-gui mhvtl
#service apache2 restart

Et voilà c'est presque terminé, il reste à faire quelques petites étapes avant d'y accéder :
  • Ajouter la phrase " www-data ALL=(ALL) NOPASSWD: ALL " en dernière ligne du
    fichier /etc/sudoers
  • Se connecter sur l'adresse http://nomduserveur/mhvtl
  • Mot de passe de connexion par défaut : mhvtl
hebergeur d'image

4. Utilisation de l'interface graphique

Une fois connecté sur l'interface graphique on accède à ça :

hebergeur d'image

Se rendre à l'onglet iSCSI à gauche de l'écran

hebergeur d'image

Cliquer sur Install à côté de TGT: NO pour lancer l'installation des paquets nécessaires à la publication iSCSI.

hebergeur d'image

Cliquer sur Start pour confirmer l'installation.

hebergeur d'image

Une fois l'installation terminée cliquer sur Return en bas de la fenêtre.

hebergeur d'image

On peut voir que le paquet TGT est maintenant bien installé.

Ensuite démarrer le service TGT à l'aide du bouton Enable situé en haut à droite de la fenêtre.

hebergeur d'image

Cliquer sur Return.

hebergeur d'image

Il ne reste plus qu'à démarrer le service TGT à l'aide du bouton Start en haut de la fenêtre.

hebergeur d'image

Confirmer le lancement des services en cliquant sur Start.

hebergeur d'image

Une fois le service lancé, cliquer sur Return.

hebergeur d'image

Il reste maintenant à configurer les initiators iSCI ainsi qu les targets et les associer aux lecteurs vtl et aux librairies vtl. Cliquer sur Quick Start (bouton en rouge) pour lancer la procédure automatiser de déclaration des devices.

hebergeur d'image

Cliquer sur Start pour lancer la configuration.

hebergeur d'image

Une fois la configuration terminée cliquer sur Return.

hebergeur d'image

Pour vérifier la configuration entrée automatiquement dans les fichiers de configuration cliquer sur Targets, LUNs ou encore Initiators.
  • Targets :
hebergeur d'image
  • LUNs :
hebergeur d'image

5. Création d'une nouvelle librairie

Pour créer une nouvelle librairie VTL afin de la présenter à un serveur de sauvegarde, se connecter sur l'interface d'administration de MHVTL

hebergeur d'image

Cliquer sur l'onglet Setup à gauche de la fenêtre,

hebergeur d'image

Cliquer ensuite sur Add pour ajouter une nouvelle librairie VTL.

hebergeur d'image

Cliquer ensuite sur Standard ou Custom en fonction de la VTL recherchée. Dans mon exemple je vais présenter en cliquant sur Standard.

hebergeur d'image

Cliquer sur Next,

hebergeur d'image

Sélectionner le type de librairie à emuler, dans mon exemple ci-dessous je pars sur l'émulation d'une VTL de type HP MSL G3.

Cliquer sur HP.

hebergeur d'image

Dans cette fenêtre il est possible de changer les différents paramètres de la VTL renseignée par défaut.

Par exemple au niveau des lecteurs LTO :

hebergeur d'image

On voit qu'il est possible d'émuler différents lecteurs, ça va jusqu'au LTO 6 ! Pour l'exemple je choisis le LTO 5.

Cliquer sur Valider en bas de la fenêtre pour confirmer la VTL.

hebergeur d'image
hebergeur d'image

Cliquer sur Finish pour lancer la création de la VTL après avoir vérifié sa configuration une dernière fois.

hebergeur d'image

Enfin, cliquer sur Restart pour redémarrer les daemons de MHVTL afin de créer correctement la nouvelle librairie.

hebergeur d'image

Valider la confirmation de redémarrage des services en cliquant sur Restart.

hebergeur d'image

Cliquer sur Start pour lancer le redémarrage.

hebergeur d'image

Une fois les daemons redémarrés cliquer sur OK.

Pour vérifier la bonne installation et la configuration de la nouvelle librairie se rendre à l'onglet Console à gauche de la fenêtre

hebergeur d'image

ATTENTION : Ne pas oublier de reconfigurer les initiators iSCSI ainsi que les targets. Il suffit de retourner sur l'onglet iSCSI, puis cliquer sur le bouton Quick Start comme décrit précédemment.

hebergeur d'image

6. Connection de la librairie VTL au serveur de backup.

Se rendre sur le serveur de backup (dans mon exemple un serveur Windows 2008R2) puis lancer l'utilitaire de Propriété des initiators iSCSI (outil d'administration windows).

hebergeur d'image

Entrer l'adresse IP en target du serveur Linux MHVTL puis cliquer sur Quick Connect.
Une nouvelle fenêtre apparait.

hebergeur d'image

Sélectionner l'iqn correspondant à la librairie créée précédemment, puis cliquer sur Connect.

hebergeur d'image

Une fois le serveur windows connecté cliquer sur OK pour fermer la fenêtre.

hebergeur d'image

On peut voir apparaître les nouveaux devices dans la fenêtre de propriété du matériel (Device Manager).

hebergeur d'image

Installer les drivers nécessaires à l'utilisation des nouveaux devices.

Notes : certains logiciels de sauvegarde installent eux même leurs drivers dans ce cas il n'est pas nécessaire d'installer les drivers du constructeur avant l'installation du logiciel de sauvegarde. Ce n'est pas le cas de Netbackup qui nécessite, lui, l'installation des drivers en amont de son installation, ou tout du moins de la reconnaissance de la robotique.

hebergeur d'image

Une fois les drivers installés on peut le vérifier dans le Device Manager. La librairie VTL ainsi que les lecteurs apparaissent correctement dans windows.

7. Configuration dans Netbackup

Une fois la robotique présentée à Windows comme décrit dans l'étape précédente, voici dans cette partie comment la présenter à Netbackup.

Lancer Netbackup et ouvrir l'utilitaire de configuration des robotiques.


hebergeur d'image

Sélectionner le serveur à scanner puis cliquer sur Next,

hebergeur d'image

Netbackup reconnait bien les 4 lecteurs ainsi que la librairie. Cliquer sur Next,

hebergeur d'image

Cliquer sur Next,

hebergeur d'image

Vérifier bien que Netbackup à associer les 4 lecteurs avec la robotique (si ce n'est pas le cas c'est souvent un problème de drivers). Cliquer sur Next,

hebergeur d'image

Cliquer sur OK pour confirmer la déclaration de la librairie VTL dans la configuration de Netbackup.

hebergeur d'image

Après le redémarrage des services liés aux devices de Netbackup, cliquer sur Next.

hebergeur d'image

On approche de la fin de la configuration de la robotique dans Netbackup, pour changer le nom de celle-ci cliquer sur Properties

hebergeur d'image

Changer le nom du Storage Unit (robotique) tout en haut de la fenêtre puis cliquer sur OK.

hebergeur d'image

Une fois la robotique renommée, cliquer sur Next,

hebergeur d'image

Enfin cliquer sur Finish pour terminer la création de la robotique VTL de type HP MSL G3 dans Netbackup.

On va ensuite faire un inventaire de la robotique dans Netbackup de manière à voir apparaître les bandes.
Ouvrir l'interface de gestion des bandes dans Netbackup.

hebergeur d'image

Sélectionner le robot à scanner, puis cliquer sur Next.

hebergeur d'image

Sélectionner No, puis cliquer sur Next,

hebergeur d'image

En cochant la case Show Contents Netbackup va lister toutes les bandes présentes dans la robotique sélectionnée.

Cliquer sur Start pour lancer la détection des bandes.

hebergeur d'image

Une fois la liste des bandes apparut, cocher la case Compare contents with volume configuration pour lancer une comparaison entre la base de données de Netbackup et la base de données de la robotique.

Cliquer sur Start.

hebergeur d'image

Une fois la liste des différences effectuées, cocher Update volume configuration, puis cliquer sur Start pour lancer la mise à jour de la base de données de Netbackup.

hebergeur d'image

Et voilà la base de données de Netbackup est mise à jour, l'inventaire des bandes est donc terminé ! On peut voir ci-dessus que les bandes sont bien présentes dans les slots de la VTL.

Si on retourne dans l'interface d'administration de Netbackup:

hebergeur d'image

On peut constater que toutes les bandes présentes dans la VTL sont bien listées dans le Pool Scratch (nécessaire aux sauvegardes).

8. Conclusion

J'ai donc fais quelques tests de sauvegarde/restauration de données en configurant des politiques de sauvegarde à destination de ma robotique HP MSL G3 et tout a marché parfaitement:

hebergeur d'image

Netbackup a bien monté les ressources de la VTL comme si de rien n'était et a bien monté une bande dans le lecteur alloué.

hebergeur d'image

La sauvegarde s'est correctement déroulée comme sur une vraie VTL !

hebergeur d'image

On peut voir sur les bandes que certaines ont correctement été allouées au Pool correspondant au job de sauvegarde.

Donc honnêtement je suis bluffé par la "facilité" d'accès de ce logiciel libre MHVTL qui nous émule une vraie VTL à présenter à nos serveurs de sauvegarde. C'est compatible avec la plupart des logiciels existants que ce soit Networker, Backup Exec, Netbackup, TSM, Tina, etc.

C'est hyper pratique pour pouvoir tester des environnements très rapidement sans matériel physique à porter de main, et c'est franchement très efficace et réactif.

Dans mon environnement de test présenté ici mes deux serveurs (Windows avec Netbackup et Ubuntu serveur avec MHVTL) sont virtualisés dans VMware Workstation. Pour peu que vous ayez une machine assez puissante en CPU et de la mémoire (pour faire tourner Netbackup notamment) vous pourrez avoir votre environnement de sauvegarde VTL + Netbackup portatif !

Je n'ai pas torturé le logiciel MHVTL mais j'ai vu qu'il y a une tonne d'options disponibles; bref j'espère que cela vous réjouira autant que cela me réjouit de partager ça avec vous ! Je sais que le post était long, mais j'ai vraiment essayé d'en faire une procédure complète de A à Z (sauf la partie Netbackup moins décrite mais ce n'était pas le but de ce post).

Bonne journée à tous !

Ryan.