• Aucun résultat trouvé

Atelier sauvegarde de données

N/A
N/A
Protected

Academic year: 2022

Partager "Atelier sauvegarde de données"

Copied!
59
0
0

Texte intégral

(1)

Atelier sauvegarde de données

Formation COCSSI

25 mars 2014

Système de sauvegarde Bacula

Pierre Vincens

(2)

Bacula

Logiciel de sauvegarde en mode client­serveur

logiciel opensource 

http://www.bacula.org

support par la société Bacula­Systems 

disponibilité

serveur: Linux, Freebsd et Solaris

client: Linux, FreeBSD, Solaris, Windows, MacOS

documentation 

manuel sur le site

 

→ évolutions de versions incomplètement reportées dans le manuel  

nombreux tutoriels

(3)

Contexte de déploiement ex 1: équipe isolée

Contexte

Quelques postes de travail Linux dont un fait office de serveur NFS

Volumétrie à sauvegarder environ 300Gio

Connexion en ADSL (bande passante limitée)

Solution de sauvegarde déployée

le poste de travail principal fait office de serveur de sauvegarde

1 serveur NAS comme support de backup

4 disques en RAID 5 monté sur le serveur en iSCSI 

volumétrie disponible pour sauvegarde : 4 Tio

(4)

Contexte de déploiement:

ex 2: serveur d'applications

Contexte 

Serveur sous Linux

hébergeur de machines virtuelles:  mail, web, cloud,...

utilisation de LVM pour segmentation de l'espace

Solution de sauvegarde déployée 

Sauvegarde assurée au niveau de l'hyperviseur

création d'un snapshot pour chaque disque à sauvegarder 

Un volume LVM est utilisé comme espace de sauvegarde primaire

écriture sur montage ”fuse” d'un espace disponible sur serveur ftp non  supporté

Le volume LVM de sauvegarde est dupliqué par synchronisation  sur un serveur ftp distant (client lftp).

lftp ftp://user:password@host ­e ”mirror ­e ­R <source>/ <dest>/; quit” 

(5)

Contexte de déploiement:

ex 3: unité de recherche

Contexte 

~ 80 serveurs physiques Linux sauvegardés

Machines virtuelles, usage de LVM (snapshots), filesystem (ext4, xfs)

baies de stockage SAN­FC (snapshot interne), serveurs NAS

volumétrie à sauvegarder: ~ 400 Tio

Solution de sauvegarde déployée 

Sauvegarde assurée par un serveur (1 CPU, 12Go mémoire)

accès réseau SAN (2 ports)

accès internet (aggrégation de lien: 4 x 1 Gb/s)

Support de sauvegarde sur bandes 

1 robot (80 slots) comportant deux lecteurs LTO5 (connexion San FC)

1 robot (80 slots) comportant deux lecteurs LTO6 (connexion San FC)

(6)

Architecture de Bacula

Director

(chef d'orchestre)

File daemon

Storage

daemon

(7)

Installation du serveur

Prérequis :

un serveur de base de données fonctionnel:

PostgresSQL, MySQL ou SQLite

un (des) supports pour les sauvegardes

Installation

Compilation à partir des sources:

version stable, dépôt git

Binaires disponibles pour Debian, Ubuntu, FreeBSD,...

sur Ubuntu, les packages à installer sont (cas de PostgresSQL) :

Director: bacula­director­pgsql

Storage daemon: bacula­sd­pgsql

File daemon: bacula­fd

Management: bacula­console, bacula­console­qt, bacula­traymonitor

(8)

Configuration du serveur

Ouvrir les accès nécessaires

Bacula:  3 ports TCP:  9101 (director), 9102 (FD), 9103 (SD)

règles de firewall, tcp­wrapper 

Base de données (port dépendant du SGBD utilisé)

autorisation d'accès (pg_hba pour PostgresSQL,...)

Préparer la base de données (si non fait)

Création du compte de connexion, de la base de données

Créer les tables et index

Construire la configuration

Fichiers de configuration dans le répertoire /etc/bacula

1 fichier monolithique par composant: director, fd, sd, console,...

fichier composé de section définissant chacune une propriété

possibilité d'éclater ce fichier monolithique en plusieurs parties

(9)

Le «director»

(bacula-dir.conf)

Job

composant unitaire spécifiant ce qui doit être sauvegardé ou restauré, comment, où et quand

Client

informations pour accéder à un client et règles à

appliquer vis à vis de ce client

Storage

informations pour accéder à un périphérique de sauvegarde

et règles à appliquer vis à vis de ce périphérique

Pool

informations sur une collection de supports de sauvegarde

FileSet

information sur le contenu (fichiers, répertoires)

à inclure ou exclure

Schedule

informations sur un échéancier à appliquer

pour la sauvegarde

Jobdefs

modèle type de job

Director

informations générales

Catalogue

informations base de données

Messages

informations

(10)

Structure de bacula-dir.conf

Director { … }

@|"sh -c 'for f in /etc/bacula/JobDefs/*.jobdefs ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/Scheduling/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/Sets/*.set ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/Clients/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/VM/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/Storage/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/Pools/*.pool ; do echo @${f} ; done'"

Catalog { … }

@|"sh -c 'for f in /etc/bacula/Messages/*.conf ; do echo @${f} ; done'"

Console { … }

(11)

Section Director

(bacula-dir.conf)

Director {

Name = srv-dir

QueryFile = "/etc/bacula/scripts/query.sql"

WorkingDirectory = "/var/lib/bacula"

PidDirectory = "/var/run/bacula"

Maximum Concurrent Jobs = 20

Password = "XXXX-PASS-DIRECTOR-XXXX"

Messages = Daemon DirAddresses = {

ip = { addr = 127.0.0.1 ; port = 9101}

ip = { addr = 192.168.1.1 ; port = 9101}

} }

Toute section porte un nom

Spécification des propriétés générales du Director  

→ protéger le fichier en lecture (mot de passe)

Référence section correspondante Contrôle de l'accès

au processus Director

Où écoute le processus Parallèlisme Ajout de fonctionnalités d'interrogations de la BD

(12)

Section Messages (daemon)

(bacula-dir.conf)

Messages {

Name = Daemon

mailcommand = "/usr/lib/bacula/bsmtp -h mon_domain

-f \"\(Bacula\) \<%r\>\"

-s \"Bacula daemon message\" %r"

mail = bacula@mon_domain = all, !skipped console = all, !skipped, !saved

append = "/var/lib/bacula/log" = all, !skipped }

Suivre le fonctionnement du système de sauvegarde

Informations:

transmises par courriel

ajoutées dans les log

affichées sur la console

(13)

Section Messages (std)

(bacula-dir.conf)

Messages {

Name = Standard

mailcommand = "/usr/lib/bacula/bsmtp -h biologie.ens.fr

-f \"\(Bacula\) \<%r\>\"

-s \"Bacula: %t %e of %c %l [%n]\" %r"

operatorcommand = "/usr/lib/bacula/bsmtp -h biologie.ens.fr

-f \"\(Bacula\) \<%r\>\"

-s \"Bacula: Intervention needed for %j\" %r"

mail = bacula@biologie.ens.fr = all, !skipped operator = bacula@biologie.ens.fr = mount

console = all, !skipped, !saved

append = "/var/lib/bacula/log" = all, !skipped catalog = all

}

(14)

Section Catalog

(bacula-dir.conf)

Catalog {

Name = MyCatalog dbname = "bacula";

dbaddress = "localhost";

dbuser = "bacula";

dbpassword = "XXXXX";

dbport = 5432 }

Spécification des accès à la base de données

Dépendant du SGBD utilisé: PostgresSQL, MySQL, SQLite

Base de données comportent 25 tables 

Gestion des fichiers (tables file, filename, path,...)

Gestion des media (media, mediatype, pool,...)

Gestion des jobs (job, jobmedia, status,...)

Gestion des traces (log,...)

Volumétrie conséquente

~ 800Mo cas exemple 1

~ 1,5Go cas exemple 2

~600Go cas exemple 3

1,4 milliards d'entrées fichiers

90000 jobs

PostgresSQL

(15)

Base de données Bacula

Possibilité de construire ses propres interrogations de la base

Ajout de scripts locaux facilitant la gestion des sauvegardes

Ex: obtenir la liste des volumes utilisé par un job 

Hors outils de gestion de la sauvegarde

Statistiques sur les données sauvegardées

Localisation de fichiers

 

→ peut nécessiter d'ajouter des index 

#:List Volumes used by selected JobId

*Enter JobId:

SELECT DISTINCT Job.JobId,VolumeName FROM Job,JobMedia,Media

WHERE Job.JobId=%1

AND Job.JobId=JobMedia.JobId

Dans /etc/bacula/scripts/query.sql

(16)

Le «director»

(bacula-dir.conf)

Job

composant unitaire spécifiant ce qui doit être sauvegardé ou restauré, comment, où et quand

Client

informations pour accéder à un client et règles à

appliquer vis à vis de ce client

Storage

informations pour accéder à un périphérique de sauvegarde

et règles à appliquer vis à vis de ce périphérique

Pool

informations sur une collection de supports de sauvegarde

FileSet

information sur le contenu (fichiers, répertoires)

à inclure ou exclure

Schedule

informations sur un échéancier à appliquer

pour la sauvegarde

Jobdefs

modèle type de job

Director

informations générales

Catalogue

informations base de données

Messages

informations sur les notifications

(17)

section Schedule

(bacula-dir.conf)

Schedule {

Name = "MonthlyStartThe10"

Run = Full on 10 at 23:05

Run = Differential on 3,17,24,31 at 23:05 Run = Incremental Pool=IncPool

on 1,2,4,5,6,7,8,9,11,12,13,14,15,16, 18,19,20,21,22,23,25,26,27,28,29,30 at 23:05

}

Échéancier d'exécution d'un job

Spécifier quand et de quel niveau doivent être réalisées les sauvegardes  

→ la durée du cycle est implicite (

Syntaxe assez souple permettant de spécifier heure, semaine, jour, mois 

Possibilité de spécifier le support où doit se faire la sauvegarde (pool)

(18)

Le «director»

(bacula-dir.conf)

Job

composant unitaire spécifiant ce qui doit être sauvegardé ou restauré, comment, où et quand

Client

informations pour accéder à un client et règles à

appliquer vis à vis de ce client

Storage

informations pour accéder à un périphérique de sauvegarde

et règles à appliquer vis à vis de ce périphérique

Pool

informations sur une collection de supports de sauvegarde

FileSet

information sur le contenu (fichiers, répertoires)

à inclure ou exclure

Schedule

informations sur un échéancier à appliquer

pour la sauvegarde

Jobdefs

modèle type de job

Director

informations générales

Catalogue

informations base de données

Messages

informations sur les notifications

(19)

section Pool (bandes)

(bacula-dir.conf)

Pool {

Name = MegaBackup Pool Type = Backup Recycle = yes

AutoPrune = yes

Volume Retention = 6 months

Maximum Volumes = 0 Label Format = "MB"

}

Volume: un media (bande, fichier) dans lequel Bacula écrit  des données.

Pour être utilisable, un volume doit être étiqueté (commande label)

Des informations sont associées à chaque volume (date accès,  nombre de fichiers, nombre de montages,...)

Pool: collection de volumes

Produira des étiquettes MB0000, MB0001,...

Contrôle le cycle de vie de chacun des supports utilisés

(20)

Section Pool (Fichiers)

(bacula-dir.conf)

Pool {

Name = File

Pool Type = Backup Recycle = yes

AutoPrune = yes

Volume Retention = 180 days Maximum Volume Bytes = 10G Maximum Volumes = 100

}

Sauvegarde sur fichiers  suit le même principe que bandes

Un fichier est équivalent à une bande

Tous les fichiers d'un même pool sont dans un même répertoire

Conseil: définir une taille «raisonnable» pour un fichier  limite à 2Go sur machine 32bits

Pas de support pour les fonctions avancées de gestion de pool

Migration, clonage, ...

taille maximale des

données dans un volume

(21)

Pools, volumes, ...

Pourquoi plusieurs pools?

Support de type différents bandes LTO5, LTO6, fichiers,...

Durée de rétention des données différentes

Niveaux de sauvegarde différents (full, differential, incremental)

Lieu de stockage différents

Cycle d'un volume

Append Full

Recycled Purged

écriture

«prune»

recyclage première

écriture

«prune» : action qui consiste à déterminer si le contenu d'un volume peut être

«oublié» en confrontant date d'écriture et durée de rétention. Cette opération ne détruit pas de données.

(si recycle=1)

(22)

Recyclage d'un volume

Recherche limitée aux volumes en ligne

1.choix d'un volume avec statut «Append»  

2.choix d'un volume avec statut «Recycle»

3.réalisation d'une étape de «prune» et choix d'un volume «purged»

4.recherche d'un volume dans le pool «Scratch»

Recherche étendue à tous les volumes

5.choix d'un volume avec statut «Append»  

6.choix d'un volume avec statut «Recycle»

7.réalisation d'une étape de «prune» et choix d'un volume «purged»

8.tentative de création d'un nouveau volume (Python activé et nombre  maximum de volumes non atteint)

9.«prune» le plus ancien volume si RecycleOldestVolume=yes, (volume  ayant des écritures les plus anciennes et ayant un statut Full, Recycle,  Purged, Used or Append)

10.«purge» le plus ancien volume si PurgeOldestVolume=yes (volume  ayant des écritures les plus anciennes et ayant un statut Full, Recycle,  Purged, Used or Append)

11.demander à l'opérateur

(23)

Le «director»

(bacula-dir.conf)

Job

composant unitaire spécifiant ce qui doit être sauvegardé ou restauré, comment, où et quand

Client

informations pour accéder à un client et règles à

appliquer vis à vis de ce client

Storage

informations pour accéder à un périphérique de sauvegarde

et règles à appliquer vis à vis de ce périphérique

Pool

informations sur une collection de supports de sauvegarde

FileSet

information sur le contenu (fichiers, répertoires)

à inclure ou exclure

Schedule

informations sur un échéancier à appliquer

pour la sauvegarde

Jobdefs

modèle type de job

Director

informations générales

Catalogue

informations base de données

Messages

informations

(24)

Section Storage (File)

(bacula-dir.conf)

Storage {

Name = BackupFile

Address = srv.domain.fr SDPort = 9103

Password = "XXX-PASS-STORAGE-XXX"

Device = FileStorage Media Type = File

}

La section «Storage» est le connecteur qui pointe vers le  périphérique (device) géré par le «Storage daemon»

Le mot de passe à donner est celui du «Storage daemon»

L'adresse ne doit pas être «localhost», mais le nom de l'hôte 

hébergeant le «Storage daemon» 

(25)

Section Storage (Robot)

(bacula-dir.conf)

Storage {

Name = Scalar01-LTO5

Address = srv.domain.fr SDPort = 9103

Password = "XXXX-PASS-STORAGE-XXXX"

Device = LibraryScalar01 Media Type = LTO-5 Autochanger = yes

Maximum Concurrent Jobs = 20 }

Référence section device du SD

cas d'une robotique Parallèlisme

L'utilisation d'une robotique doit être spécifiée dans cette 

section, la description précise intervenant dans le «Storage 

daemon» 

(26)

Architecture de Bacula

Director

(chef d'orchestre)

File daemon

Storage

daemon

(27)

Le «storage-daemon»

(bacula-sd.conf)

Device

information sur un périphérique (type de média, label utilisé,

taille des volumes, ...)

Director

informations pour accéder au

«director»

(authentification)

Messages

informations sur les notifications

à transmettre au «director»

Autochanger

informations sur un robot (périphériques qu'il gère, commandes de manipulation

des bandes,...)

(28)

Structure Storage Daemon

(bacula-sd.conf)

Storage {

Name = srv-sd

WorkingDirectory = "/var/lib/bacula"

Pid Directory = "/var/run/bacula"

Maximum Concurrent Jobs = 20 SDAddresses = {

ip = { addr = 127.0.0.1 ; port = 9103}

ip = { addr = 192.168.1.1 ; port = 9103}

} }

Le Storage daemon gére les périphériques utilisées pour la  sauvegarde.

Il peut être localisé sur un hôte identique ou différent du 

«Director» et d'un «File daemon»

(29)

Structure Storage Daemon

(bacula-sd.conf)

Director {

Name = srv-dir

Password = "XXXX-PASS-DIRECTOR-XXXX"

}

Director {

Name = srv-mon

Password = "XXXX-PASS-MONITOR-XXXX"

Monitor = yes }

@|"sh -c 'for f in /etc/bacula/Devices/*.conf ; do echo @${f} ; done'"

Messages {

Name = Standard

director = srv-dir = all }

(30)

section Device (file)

(bacula-sd.conf)

Device {

Name = SrvFileStorage Media Type = File

Archive Device = /export/bacula/backup/pool01

LabelMedia = yes; # lets Bacula label unlabeled media Random Access = Yes;

AutomaticMount = yes;# when device opened, read it RemovableMedia = no;

AlwaysOpen = no;

Maximum Volume Size = 10GB;

}

(31)

section Autochanger

(bacula-sd.conf)

Autochanger {

Name = LibraryScalar01 Device = Drive-Scalar01a Device = Drive-Scalar01b Changer Command =

"/etc/bacula/scripts/mtx-changer %c %o %S %a %d"

Changer Device =

/dev/tape/by-id/scsi-1QUANTUM_D1H0123456_LLA }

Bacula peut gérer des robotiques de sauvegarde. Par défaut,  il utilise les commandes mtx* 

→   valider le fonctionnement de ces commandes hors de Bacula

Le «Changer Device» est l'identifiant du robot et non des 

lecteurs

(32)

Le «director»

(bacula-dir.conf)

Job

composant unitaire spécifiant ce qui doit être sauvegardé ou restauré, comment, où et quand

Client

informations pour accéder à un client et règles à

appliquer vis à vis de ce client

Storage

informations pour accéder à un périphérique de sauvegarde

et règles à appliquer vis à vis de ce périphérique

Pool

informations sur une collection de supports de sauvegarde

FileSet

information sur le contenu (fichiers, répertoires)

à inclure ou exclure

Schedule

informations sur un échéancier à appliquer

pour la sauvegarde

Jobdefs

modèle type de job

Director

informations générales

Catalogue

informations base de données

Messages

informations sur les notifications

(33)

section Client

(bacula-dir.conf)

Client {

Name = client01-fd

Address = 192.168.1.2 FDPort = 9102

Catalog = MyCatalog

Password = "XXXX-PASS-CLIENT01-XXXX"

Maximum Concurrent Jobs = 4 File Retention = 6 months Job Retention = 6 months AutoPrune = yes

}

La section «Client» est le connecteur qui pointe vers le poste  à sauvegarder où est exécuté le «File daemon»

Le mot de passe à donner est celui du «File daemon»

Référence le client

durée de rétention Parallèlisme

(34)

Configurer le «file-daemon»

(bacula-fd.conf)

FileDaemon

définition du client (autorisation d'accès, parallélisme supporté, clés de chiffrement, ...)

Director

informations pour accéder au

«director»

(authentification)

Messages

informations sur les notifications

à transmettre au «director»

(35)

Structure «File daemon»

(bacula-fd.conf)

Director {

Name = srv-dir

Password = "XXXX-PASS-DIRECTOR-XXXX"

}

Director {

Name = src-mon

Password = "XXXX-PASS-MONITOR-XXXX"

Monitor = yes }

FileDaemon{…}

Messages {

Name = Standard

director = srv-dir = all, !skipped, !restored }

Le «File daemon» s'exécute sur lh'ôte contenant les données à 

sauvegarder

(36)

section FileDaemon

(bacula-fd.conf)

FileDaemon {

Name = srv-fd

WorkingDirectory = /var/lib/bacula Pid Directory = /var/run/bacula

Maximum Concurrent Jobs = 20 FDAddresses = {

ip = { addr = 127.0.0.1 ; port = 9102}

ip = { addr = 192.168.1.1 ; port = 9102}

}

PKI Signatures = Yes PKI Encryption = Yes

# Public and Private Keys

PKI Keypair = "/etc/bacula/Keys/srv-fd.pem"

# ONLY the Public Key

PKI Master Key = "/etc/bacula/Keys/bacula-master.cert"

}

les clés Activer la signature

des données

Parallèlisme

Activer le chiffrement des données

(37)

Le «director»

(bacula-dir.conf)

Job

composant unitaire spécifiant ce qui doit être sauvegardé ou restauré, comment, où et quand

Client

informations pour accéder à un client et règles à

appliquer vis à vis de ce client

Storage

informations pour accéder à un périphérique de sauvegarde

et règles à appliquer vis à vis de ce périphérique

Pool

informations sur une collection de supports de sauvegarde

FileSet

information sur le contenu (fichiers, répertoires)

à inclure ou exclure

Schedule

informations sur un échéancier à appliquer

pour la sauvegarde

Jobdefs

modèle type de job

Director

informations générales

Catalogue

informations base de données

Messages

informations

(38)

section FileSet

(bacula-dir.conf)

FileSet {

Name = "UnixSystemSet"

Include {

Options {

signature = MD5

compression = GZIP xattrsupport = yes }

File = / ...

File = /var }

Exclude {

File = /var/run File = /proc

...

} }

Options activées

répertoires à inclure

répertoires ou fichiers à exclure

(39)

Le «director»

(bacula-dir.conf)

Job

composant unitaire spécifiant ce qui doit être sauvegardé ou restauré, comment, où et quand

Client

informations pour accéder à un client et règles à

appliquer vis à vis de ce client

Storage

informations pour accéder à un périphérique de sauvegarde

et règles à appliquer vis à vis de ce périphérique

Pool

informations sur une collection de supports de sauvegarde

FileSet

information sur le contenu (fichiers, répertoires)

à inclure ou exclure

Schedule

informations sur un échéancier à appliquer

pour la sauvegarde

Jobdefs

modèle type de job

Director

informations générales

Catalogue

informations base de données

Messages

informations

(40)

section Jobdefs

(bacula-dir.conf)

JobDefs {

Name = "MegaJob"

Type = Backup

Level = Incremental Client = srv-fd

FileSet = "Full Set"

Schedule = "WeeklyCycle"

Messages = Standard

Storage = Scalar01-LTO5

Maximum Concurrent Jobs = 20 Pool = MegaBackup

Priority = 10

Write Bootstrap = "/var/lib/bacula/%c.bsr"

}

Cette section décrit les paramètres par défaut des jobs. Les 

valeurs sont écrasées si redéfinies dans la section job.

(41)

Le «director»

(bacula-dir.conf)

Job

composant unitaire spécifiant ce qui doit être sauvegardé ou restauré, comment, où et quand

Client

informations pour accéder à un client et règles à

appliquer vis à vis de ce client

Storage

informations pour accéder à un périphérique de sauvegarde

et règles à appliquer vis à vis de ce périphérique

Pool

informations sur une collection de supports de sauvegarde

FileSet

information sur le contenu (fichiers, répertoires)

à inclure ou exclure

Schedule

informations sur un échéancier à appliquer

pour la sauvegarde

Jobdefs

modèle type de job

Director

informations générales

Catalogue

informations base de données

Messages

informations

(42)

section Job

(bacula-dir.conf)

Job {

Name = "BackupSystemClient01"

JobDefs = "MegaJob"

Client = client01-fd

FileSet = "UnixSystemSet"

Schedule = "MonthlyStartThe16"

Maximum Concurrent Jobs = 4 }

Job {

Name = "BackupHome01Client01"

JobDefs = "MegaJob"

Client = client01-fd

FileSet = "UnixHome01Set"

Schedule = "MonthlyStartThe17"

Maximum Concurrent Jobs = 4 }

client échéancier Parallèlisme JobDefs définit les paramètres par défaut

 

Jobid: identifiant d'un job en cours d'exécution

(43)

Gestion du parallèlisme

Objectif

Minimiser les durées globales de sauvegarde en utilisant le plus souvent  possible le débit maximal d'écriture possible sur le(s) support(s)

Principe

Gérer plusieurs supports de sauvegarde simulatanément

Association de plusieurs flux de données à sauvegarder en un flux unique  d'écriture sur un support de sauvegarde

Mise en œuvre

Spécifier au niveau des composants le niveau de parallélisme supporté. Par  exemple:

globalement, 20 jobs peuvent s'exécuter

4 jobs peuvent être actifs simultanément pour un client donné

4 jobs peuvent être actifs simultanément en écriture sur un support de  sauvegarde

(44)

section FileSet (snapshot)

(bacula-dir.conf)

FileSet {

Name = "SnapshotHome01Client02Set"

Include { Options {

signature = MD5

xattrsupport = yes }

File = /snapshot/sav_client02_hm01 }

}

Pour s'assurer que les données ne sont pas modifiées au  cours de la sauvegarde, une technique consiste à créer une  image instantanée

point de montage du snapshot

(45)

section Job (snapshot)

(bacula-dir.conf)

Job {

Name = "BackupHome01Client02"

JobDefs = "MegaJob"

Client = client02-fd

FileSet = "SnapshotHome01Client02Set"

Schedule = "MonthlyStartThe05"

Maximum Concurrent Jobs = 6 RunScript {

RunsWhen = Before

FailJobOnError = yes

Command = "/.../create-snapshot home01 ..."

}

RunScript {

RunsWhen = After

RunsOnFailure = yes

Command = "/.../destroy-snapshot home01 ..."

} }

script de création et de suppression

du snapshot

(46)

Sauvegarde du catalogue

La destruction où l'altération de la base de données neutralise le  fonctionnement du logiciel.

En cas de désastre, la restauration des données est facilitée par la  reconstitution de la base de données.

 

disposer de copies de secours de la base de données est impératif

Sauvegarde du catalogue

doit être fait avec une base de données dans un état stable (pas de  modifications)

création d'un job spécifique

choix d'une priorité inférieure à tous les autres jobs afin qu'il ne soit  exécuter que lorsque tous les autres jobs sont achevés.

cycle quotidien afin de minimiser la perte d'information 

le fichier à sauvegarder est construit à chaque déclenchement du job 

      quand la base devient importante, le temps de sauvegarde 

devient critique

(47)

Section Job (BackupCatalog)

(bacula-dir.conf)

Job {

Name = "BackupCatalog"

JobDefs = "DefaultJob"

Level = Full

FileSet="Catalog"

Schedule = "WeeklyCycle"

# This creates an ASCII copy of the catalog # Arguments to make_catalog_backup.pl are:

# make_catalog_backup.pl <catalog-name>

RunBeforeJob =

"/etc/bacula/scripts/make_catalog_backup.pl MyCatalog"

# This deletes the copy of the catalog

RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup"

Write Bootstrap = "/var/lib/bacula/%n.bsr"

Priority = 11 # run after main backup }

(48)

Section Job (RestoreFiles)

(bacula-dir.conf)

Job {

Name = "RestoreFiles"

Type = Restore

Client = client01-fd FileSet = "Full Set"

Storage = Scalar01-LTO5 Pool = MegaBackup

Messages = Standard

Where = /export/bacula/bacula-restores }

La configuration doit inclure un job de type «Restore» qui définit  les options par défaut qui seront utilisées lors d'une restauration de  données.

Tous  les  paramètres  sont  modifiables  lors  de  la  procédure  de 

restauration.

(49)

section Device (bande)

(bacula-sd.conf)

Device {

Name = Drive-Scalar01a Drive Index = 0

Media Type = LTO-5

Archive Device = /dev/tape/by-id/scsi-12345678abcd01000-nst LabelMedia = yes;

AutomaticMount = yes;

AlwaysOpen = yes;

RemovableMedia = yes;

RandomAccess = no;

AutoChanger = yes

Maximum Concurrent Jobs = 4

Spool Directory = /var/spool/bacula/scalar01a Maximum Job Spool Size = 100GB

Alert Command = "sh -c 'smartctl -H -l error %c |

grep -v Error\\\ Counter\\\ logging\\\ not\\\ supported'"

}

identifiant du device du lecteur spécifier l'inclusion

dans une librairie Parallèlisme

(50)

Gestion de l'application

Mode CLI

Une console interactive donnant accès à l'ensemble des fonctions

Possibilité de scripter des commandes

Mode graphique

Une interface minimaliste «bat» (bacula admin tool)

Accès possible via des interfaces web (bacula­web)

Visualisation de l'état avec «Tray­Monitor»

#!/bin/bash

echo "list media" | bconsole -n

(51)

bconsole

#bconsole

Connexion au Director 192.168.1.1:9101

1000 OK: srv-dir Version: 5.2.5 (26 January 2012) Tapez un point (.) pour annuler une commande.

*help

Command Description ======= ===========

add Add media to a pool

autodisplay Autodisplay console messages automount Automount after label

version Print Director version

wait Wait until no jobs are running

When at a prompt, entering a period cancels the command.

You have messages.

*

(52)

La console graphique: bat

(53)

Configuration de la console

(bconsole.conf, bat.conf)

Director {

Name = srv-dir DIRport = 9101

Address = 192.168.1.1

Password = "XXXX-PASS-DIRECTOR-XXXX"

}

Configuration en référençant le «Director»

Valable pour bconsole.conf (CLI) et bat.conf (graphique)

Plusieurs instances autorisées actives simultanément

(54)

Mise en œuvre

Director, FD et SD sont configurés

Une console est accessible

Run...

Labellisé les volumes

Lancer une sauvegarde avec les options par défaut

Où en est­on?

Messages dans la console (via la commande message), dans les log,  dans la base de données

La commande «status» 

echo "label pool=File storage=File volume=BkpVol00" | bconsole

echo "run job=BackupHome01Client02 yes" | bconsole

(55)

Restaurer des données

Qui peut le faire?

Avec Bacula, c'est l'administrateur...

Retrouver ce qui doit être restaurer

Localiser le(s) fichier(s): quel client? Quel répertoire? Quelles  versions?

Plusieurs approches proposées en standard. 

Accès direct à une vision du système de fichiers

Etape intermédiaire de recherche afin d'identifier le jobid

Ajout de scripts d'interrogation de la base données

Ex: retrouver toutes les versions sauvegardées d'un fichier. 

Cas des partitions complètes

Où restaurer?

Position originelle, ailleurs... 

(56)

Restaurer des données

*restore

To select the JobIds, you have the following choices:

1: List last 20 Jobs run

2: List Jobs where a given File is saved

3: Enter list of comma separated JobIds to select 4: Enter SQL list command

5: Select the most recent backup for a client

6: Select backup for a client before a specified time 7: Enter a list of files to restore

8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client

10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds

12: Select full restore to a specified Job date 13: Cancel

Select item: (1-13):

(57)

Gestion de désastre

Reconstituer le catalogue

Utilitaire bscan: lecture du volume et reconstitution des données de  ce volume au sein du catalogue

En cas de dégradation du catalogue  

→ la relecture de toutes les bandes peut être nécessaire sauf si  sauvegarde du catalogue. 

En cas de «prune» non souhaité

Relire le contenu d'un volume

Utilitaire bextract: extraire les fichiers du volume (à réserver au cas  où restore est inutilisable

 

→ bls: permet de lister le contenu du volume

(58)

Et encore...

Quelques facilités de gestion

Modifier la configuration en ligne

Tester la configuration

Mettre à jour la configuration

Bien d'autres fonctionnalités...

Authentification «forte» entre clients et serveurs

Gestion des ACL

Bacula virtual file system (bvfs)

...

bacula-dir -t -c /etc/bacula/bacula-dir.conf echo "reload" | bconsole -n

(59)

Bilan de l'utilisation

Toutes les données devant être restaurées l'ont été! 

→ Et il y en a eu!

Concernant l'exemple 1 

Incident liés à une panne de disques sur serveur NAS (2 disques HS, 1h)

Concernant l'exemple 2

Problème de disponibilité du serveur FTP  

Concernant l'exemple 3 (18 mois d'utilisation):

Incidents de fonctionnement liés ayant induit des retards de sauvegardes

à la robotique (panne d'un lecteur – intérêt d'en avoir 2 identiques)

à des problèmes de montage et démontage de snapshots

Limite liée à la taille de la base de données  

→ transfert sur un support disque plus performant  

→ revoir la manière dont est réalisée la sauvegarde

Optimisation des sauvegardes  

→ révision régulière de la répartition des sauvegardes «Full»

 

→ ajustement du parallelisme pour ne pas saturer les serveurs

Références

Documents relatifs

virus herpétique: infection mucocutanée chronique avec ulcération persistant au-delà d’un mois, infection pulmonaire, ou infection gastro-intestinale (débordant la

Une autre série prospective nationale incluant 625 patients dont 84 % avec un cancer de la prostate à risque intermédiaire ou élevé, avec un suivi médian de 56 mois, obtenait une

L’absence de gestion des espaces de stockage en grands fichiers comme le fait Oracle ou MS SQL Server et notamment l’absence de la notion d’extension combinée

L’avenir de la recherche en France La loi de programmation pluriannuelle de la recherche pour les dix années à venir est discutée dans un contexte de pandémie avec des pans entiers

On

Il est question à travers cette étude de faire un diaporama de la gouvernance de la forêt Boucher dans la ville de Gatineau, en s’intéressant particulièrement

Le prestataire établit les contenus et les modalités de mise en œuvre de la prestation, adaptés aux objectifs définis et aux publics bénéficiaires. CRITÈRE 2

Les élèves, tous niveaux : pour visualiser les mots et idées importantes, pour visualiser une notion dans sa globalité, illustrée pour non lecteurs Elèves à besoins