« Save/Amanda » : différence entre les versions
(Page créée avec « = Introduction = Amanda est un système de sauvegarde de vos systèmes et vos données, sur disque, sur DVD, sur bandes et sur tout autres périphérique qu'il vous est possi... ») |
|||
| Ligne 206 : | Ligne 206 : | ||
inparallel 4 | inparallel 4 | ||
displayunit "m" | displayunit "m" | ||
netusage 8000 Kbps | netusage 8000 Kbps | ||
dumpcycle 1 weeks | dumpcycle 1 weeks | ||
runspercycle 5 | runspercycle 5 | ||
tapecycle 6 tapes | tapecycle 6 tapes | ||
runtapes 1 | runtapes 1 | ||
tapedev "chg-disk:/var/lib/amanda/vtapes" | tapedev "chg-disk:/var/lib/amanda/vtapes" | ||
| Ligne 234 : | Ligne 234 : | ||
filemark 100 kbytes | filemark 100 kbytes | ||
} | } | ||
Puis on édite le fichier /etc/amanda/nfu/disklist. C'est celui qui contient la liste des répertoires à sauvegarder par serveur. | Puis on édite le fichier /etc/amanda/nfu/disklist. C'est celui qui contient la liste des répertoires à sauvegarder par serveur. | ||
Version du 14 septembre 2012 à 12:49
Introduction
Amanda est un système de sauvegarde de vos systèmes et vos données, sur disque, sur DVD, sur bandes et sur tout autres périphérique qu'il vous est possible de déclarer, tout en utilisant des formats largement reconnus et des mécanismes et outils standards. Les premières sources datent de Mai 2006.
Le premier point fort d'Amanda est d'utiliser des outils natifs Linux, disponibles depuis n'importe quel kernel, pour effectuer ses sauvegardes. Cela permet d'une part de pouvoir utiliser rapidement des données restaurées depuis un Linux, mais surtout d'être complètement indépendant de la plateforme Amanda, de sorte que, si un jour vous souhaitez changer de système, vous n'êtes absolument pas tenu par les formats sous lesquelles vos données ont été sauvegardées, et donc vos sauvegardes restent valides. Amanda a porté son client pour Windows, pour MacOS X et pour les purs Unix, OpenSolaris compris.
Il est également à noter que, puisqu'Amanda utilise des mécanismes de compression et de stockage standards, nous ne sommes pas tenu à un type de stockage, tant que l'on peut définir précisément ses caractéristiques telles que, par exemple, sa vitesse et sa capacité. Cette souplesse permet d'une part de pouvoir se passer d'Amanda lors de l'exploitation des données sauvegardées.
La planification d'une sauvegarde passe par un cron, lancé depuis le serveur, qui mentionne une périodicité et la commande de sauvegarde spécifique à une configuration. C'est au sein du fichier de configuration du profil que sont définis les cycles de bande, le nombre des bandes disponibles, leur type et le script associé à leur changement. La définition de ces paramètres influent sur la manière dont le serveur Amanda va décider du type des sauvegardes à faire (full, incremental, differential,...). La planification de la sauvegarde est automatiquement ajustée selon la charge du serveur.
D'habitude, les politiques de sauvegardes sont spécifiées explicitement par l'administrateur, ce qui implique notamment de dimensionner correctement les espaces de sauvegardes. Avec Amanda, la fonctionnalité existe, néanmoins, Amanda a été conçue pour pouvoir prendre automatiquement ce genre de décision. Le choix du type de backup est alors fait en fonction de plusieurs critères :
- la taille estimée des sauvegardes en full et en incrémental
- la date du dernier full backup
- les règles du profil, spécifiées pour chaque partition ou sous-répertoire du système sauvegardé.
Il est également possible de définir, jusqu'au niveau fichier, une politique d'encryption, d'exclusion, de compression et de stockage.
Comme beaucoup de systèmes évolués, Amanda utilise un espace de stockage temporaire des données, le holding disk, afin de pouvoir supporter les sauvegardes parallèles et d'éviter tout problème lié à la nature même des tapes (sequential, shoe-shining). Ainsi, si, pour une raison ou pour une autre, la sauvegarde ne peut être écrite sur la tape, Amanda gardera le tout disponible sur cet espace en attendant un rétablissement de la situation. C'est pour cette raison notamment que le holding disk doit supporter au moins 2 fois la plus grosse sauvegarde en terme d'espace consommé.
Installation et configuration
Amanda ( en version 3.3.0 ) nécessite que le paquet swig soit un peu plus à jour. On doit donc avoir le dernier paquet disponible en version1 ( 1.3.40 ) pour la compilation. cette étape est obsolète car les RPM existent sur le repository b2pweb.
Test avec des vtapes ( bandes virtuelles ) en local
On va d'abord s'octroyer une partition dédiée.
# lvcreate -n amanda -L 50G vg1 # mkfs -t ext4 /dev/mapper/vg1-amanda # mkdir /var/lib/amanda # mount /dev/mapper/vg1-amanda /var/lib/amanda # vim /etc/fstab ... /dev/mapper/VolGroup00-amanda /var/lib/amanda ext3 defaults,noatime 0 0
Comme Amanda peut travailler avec plusieurs instance, on va donc choisir d'appeler la notre nfu. Ici on ne sauvegarde que les répertoires /etc.
Sur le serveur NFU, On installe les RPM correspondant à Amanda.
# yum install amanda amanda-client amanda-server
On met l'utilisateur amandabackup dans le groupe disk et on fixe les permissions du répertoire de travail d'Amanda.
# usermod -G disk amandabackup # chown amandabackup:disk /var/lib/amanda
On va créer les différent répertoires nécessaires, les vtapes et le holding sont communs à toutes les instances :
- Les bandes virtuelles ( des répertoires en fait ).
- L'emplacement de stockage temporaire ( buffer nommé holding ).
- Le répertoire de notre instance ( nfu ) avec ses sous-répertoire :
- curinfo : les data d'amanda à propos de chaque sauvegarde (date, statut, etc...).
- log : les journaux de chaque sauvegarde.
- index : les metadata des fichiers sauvegardés ( nom, dernière modification, etc …).
# su - amandabackup -c "mkdir -p /var/lib/amanda/vtapes/slot{1..6}"
# su - amandabackup -c "mkdir /var/lib/amanda/holding"
# su - amandabackup -c "mkdir -p /var/lib/amanda/nfu/{curinfo,log,index}"
Création de la configuration de notre instance en copiant celle par défaut.
cp -rp /etc/amanda/DailySet1/ /etc/amanda/nfu
On édite ensuite le fichier /etc/amanda/nfu/amanda.conf.
| org | nfu | Le nom de notre instance |
| mailto | srs@b2pweb.com | L'email pour status |
| dumpuser | amandabackup | L'utilisateur qui va effectué le dump. il doit aussi être le propriétaire du répertoire /var/lib/amanda et de ses fils. |
| inparallel | 4 | Nombre de tâches effectuées en parallèle. |
| displayunit | m | Les tailles sont en Mo |
| netusage | 8000Kbps | Bande passante maximum |
| dumpcycle | 1 weeks | Durée pendant laquelle conserver les données ( on peut donc facilement retrouver un fichier datant de moins 1 semaine ) |
| runspercycle | 5 | Nombre de sauvegarde durant le cycle. |
| tapecycle | 6 tapes | Nombre de bandes disponibles. doit être supérieur ou égal à (dumpcycle * runspercycle) |
| runtapes | 1 | Nombre de bande active pour la même sauvegarde. |
| tapedev | "chg-disk:/var/lib/amanda/vtapes" | Le lecteur de bande ou le répertoire des vtapes. |
| autolabel | "NFU-%%%" empty | Mettre un nom automatiquement à la bande si elle est vide. |
| maxdumpsize | -1 | Taille max de la sauvegarde (pas de max ici) |
| tapetype | "VTAPES-NFU" | Définition du type de sauvegarde. |
| labelstr | "^NFU-[0-9][0-9]*$" | Le nom de la bande doit correspondre à cette expression régulière. |
| holdingdisk hd1 {
comment "main holding disk" directory "/var/lib/amanda/holding" use -100 Mb chunksize 1Gb } |
Définition du buffer :
| |
| infofile | "/var/lib/amanda/nfu/curinfo" | C'est les répertoires qui ont été créés précédemment. |
| logdir | "/var/lib/amanda/nfu/log" | |
| indexdir | "/var/lib/amanda/nfu/index" | |
| tapelist | "/var/lib/amanda/nfu/tapelist" | |
| define tapetype VTAPES-NFU {
length 3G filemark 100 kbytes } |
Définition des bandes virtuelles :
| |
Extrait seulement du fichier /etc/amanda/nfu/amanda.conf
org "nfu"
mailto "srs@b2pweb.com"
dumpuser "amandabackup"
inparallel 4
displayunit "m"
netusage 8000 Kbps
dumpcycle 1 weeks
runspercycle 5
tapecycle 6 tapes
runtapes 1
tapedev "chg-disk:/var/lib/amanda/vtapes"
autolabel "NFU-%%%" empty
maxdumpsize -1
tapetype "VTAPES-NFU"
labelstr "^NFU-[0-9][0-9]*$"
amrecover_changer "changer"
holdingdisk hd1 {
comment "main holding disk"
directory "/var/lib/amanda/holding"
use -100 Mb
chunksize 1Gb
}
infofile "/var/lib/amanda/nfu/curinfo"
logdir "/var/lib/amanda/nfu/log"
indexdir "/var/lib/amanda/nfu/index"
tapelist "/var/lib/amanda/nfu/tapelist"
define tapetype VTAPES-NFU {
length 3G
filemark 100 kbytes
}
Puis on édite le fichier /etc/amanda/nfu/disklist. C'est celui qui contient la liste des répertoires à sauvegarder par serveur.
localhost /etc comp-user-tar
On redémarre xinetd après avoir modifié le fichier /etc/xinetd.d/amanda en passant le paramètre « disable » à « no » (entre autre) :
server_args = -auth=bsdtcp amdump amindexd amidxtaped
disable = no |
Enfin il faut autoriser le couple utilisateur/serveur à faire des sauvegardes ( donc utiliser l'outil amdump) en éditant le fichier /var/lib/amanda/.amandahosts
localhost amandabackup amdump
On va maintenant tester notre configuration, mais on va d'abord permettre à l'utilisateur amandabackup d’accéder aux commandes amanda en créant le fichier /var/lib/amanda/.bash_profile:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs PATH=$PATH:/usr/sbin export PATH |
On peut donc maintenant tester la configuration :
# su - amandabackup -c "amcheck nfu" Amanda Tape Server Host Check ----------------------------- Holding disk /var/lib/amanda/holding: 47648 MB disk space available, using 47548 MB slot 1: contains an empty volume Will write label 'NFU-001' to new volume in slot 1. NOTE: skipping tape-writable test Server check took 0.819 seconds
Amanda Backup Client Hosts Check -------------------------------- Client check: 1 host checked in 2.298 seconds. 0 problems found.
(brought to you by Amanda 3.3.0)
Ajout d'un client distant
[[Image:]]On installe le client amanda sur … un client
# yum -y install amanda-client
On autorise les communications avec le serveur en éditant le fichier /var/lib/amanda/.amandahosts
nfu.b2pweb.com amandabackup
On redémarre xinetd après avoir modifier le fichier /etc/xinetd.d/amanda en passant le paramètre « disable » à « no ».
On teste ( on installe le paquet lsof si la commande est inconnue )
# lsof | grep amanda xinetd 9300 root 5u IPv4 2503423 TCP *:amanda (LISTEN)
Sur le serveur maintenant, on édite le fichier /etc/amanda/nfu/disklist.
localhost /etc comp-user-tar int-pub.b2pweb.com /etc comp-user-tar
On re-teste la configuration
# su - amandabackup -c "amcheck nfu" Amanda Tape Server Host Check ----------------------------- Holding disk /var/lib/amanda/holding: 47648 MB disk space available, using 47548 MB slot 3: contains an empty volume Will write label 'NFU-003' to new volume in slot 3. NOTE: skipping tape-writable test NOTE: host info dir /var/lib/amanda/nfu/curinfo/int-pub.b2pweb.com does not exist NOTE: it will be created on the next run. NOTE: index dir /var/lib/amanda/nfu/index/int-pub.b2pweb.com does not exist NOTE: it will be created on the next run. Server check took 0.641 seconds
Amanda Backup Client Hosts Check -------------------------------- Client check: 2 hosts checked in 2.280 seconds. 0 problems found.
(brought to you by Amanda 3.3.0)
On lance une sauvegarde à la main ( pas nécessaire mais utile pour tester le recovery )
# su - amandabackup -c "amdump nfu"
Configuration pour le recovery
Sur le serveur, on édite le fichier /etc/amanda/nfu/amanda-client.conf
conf "nfu" index_server "localhost" tape_server "localhost" tapedev "" auth "bsdtcp" unreserved-tcp-port 1025,65535
On modifie le fichier /etc/init.d/xinetd.d/amanda
fichier /etc/xinetd.d/amanda
server_args = -auth=bsdtcp amdump amindexd amidxtaped
On redémarre le service
# /etc/init.d/xinetd restart
On autorise l'hôte distant à faire des recovery en ajoutant une ligne au fichier /var/lib/amanda/.amandahosts
didier.b2pweb.com root amindexd amidxtaped
On teste sur le client
# mkdir /tmp/recovery # cd /tmp/recovery # amrecover nfu -s nfu.b2pweb.com -t nfu.b2pweb.com -d '' AMRECOVER Version 3.3.0. Contacting server on nfu.b2pweb.com ... 220 nfu AMANDA index server (3.3.0) ready. Setting restore date to today (2012-02-16) 200 Working date set to 2012-02-16. 200 Config set to nfu. 200 Dump host set to didier.b2pweb.com. Use the setdisk command to choose dump disk to recover amrecover> setdisk /etc 200 Disk set to /etc. amrecover> add aliases.db Added file /aliases.db amrecover> add sudoers Added file /sudoers amrecover> extract
Extracting files using tape drive changer on host nfu.b2pweb.com. The following tapes are needed: NFU-003
Extracting files using tape drive changer on host nfu.b2pweb.com. Load tape NFU-003 now Continue [?/Y/n/s/d]? y Restoring files into directory /tmp/test-recovery All existing files in /tmp/test-recovery can be deleted Continue [?/Y/n]? y
./aliases.db ./sudoers amrecover> exit 200 Good bye. # ll total 20 -rw-r----- 1 root smmsp 12288 fév 13 09:53 aliases.db -r--r----- 1 root root 4138 aoû 2 2011 sudoers Le fichier sudoers a bien été restauré ( avec les bon droits ) ainsi que le fichier aliases.db ( bon group ).
Il est possible de déclarer le serveur d'index ( option -s ) et le serveur de bande ( option -t ), ainsi que le périphérique ( option -d ) dans le fichier /etc/amanda/nfu/amanda-client.conf ( vu que l'on se sert de l'instance nfu ).
# # amanda-client.conf - sample Amanda client configuration file. # # This file normally goes in /etc/amanda/amanda-client.conf. #
conf "ontape" # your config name
index_server "nfu.b2pweb.com" # your amindexd server
tape_server "nfu.b2pweb.com" # your amidxtaped server
tapedev "" # your tape device
# if not set, Use configure or ask server.
# if set to empty string "", ask server
# amrecover will use the changer if set to the value
# of 'amrecover_changer' in the server amanda.conf.
# auth - authentication scheme to use between server and client. # Valid values are "bsd", "bsdudp", "bsdtcp", "krb5", "local", # "rsh" and "ssh". # Default: [auth "bsdtcp"] auth "bsdtcp"
ssh_keys "" # your ssh keys file if you use ssh auth
#resolves "resource temporarily unavailable" bug unreserved-tcp-port 1025,65535
Configuration avec lecteur de bandes et vtapes ( deux instances ).
En faisant tourner deux instances d'Amanda, on va cumuler les avantages des deux types de sauvegarde :
- restauration rapide grâce à la sauvegarde sur disque
- protection en cas de crash du serveur de sauvegarde ou du LAN.
On teste le lecteur de bande pour pouvoir le déclarer dans la configuration d'Amanda. Cette commande peut-être un peu ( beaucoup en fait ) longue.
# amtapetype -f /dev/nst0
Checking for FSF_AFTER_FILEMARK requirement
Applying heuristic check for compression.
Wrote random (uncompressible) data at 25454922.3225806 bytes/sec
Wrote fixed (compressible) data at 63128207.36 bytes/sec
Compression: enabled
Writing one file to fill the volume.
Wrote 187062157312 bytes at 21431 kb/sec
Got LEOM indication, so drive and kernel together support LEOM
Writing smaller files (1870594048 bytes) to determine filemark.
define tapetype unknown-tapetype {
comment "Created by amtapetype; compression enabled"
length 182677888 kbytes
filemark 1296022 kbytes
speed 21431 kps
blocksize 32 kbytes
}
# for this drive and kernel, LEOM is supported; add
# device-property "LEOM" "TRUE"
# for this device.
Note : Il est important de relever les valeurs de 'length' et 'filemark'. C'est avec ces valeurs que nous allons définir le lecteur de bande dans le fichier amanda.conf (DELL-LT2/LT3).
On va cette fois supprimer le répertoire /var/lib/amanda/DailySet1 et ainsi obtenir cet arbre
/var/lib/amanda
├── .amandahosts
├── amandates
├── gnutar-lists
├── holding
├── ondisk
│ ├── curinfo
│ ├── index
│ └── log
├── ontape
│ ├── curinfo
│ ├── index
│ └── log
├── template.d
│ ├── advanced.conf
│ ├── amanda-harddisk.conf
│ ├── amanda-S3.conf
│ ├── amanda-single-tape.conf
│ ├── amanda-tape-changer.conf
│ ├── chg-manual.conf
│ ├── dumptypes
│ ├── README
│ └── tapetypes
└── vtapes
├── slot1
└── slot2
On va donc lancer les commandes suivantes :
# su - amandabackup -c "mkdir -p /var/lib/amanda/on{tape,disk}/{curinfo,log,index}"
# su - amandabackup -c "mkdir -p /var/lib/amanda/vtapes/slot{1..2}"
# su - amandabackup -c "mkdir /var/lib/amanda/holding"
# rm -rf /var/lib/amanda/DailySet1/
Pour /etc/amanda, on va renommer « DailySet1 » en « ondisk » afin d'obtenir cet arbre :
/etc/amanda
├── crontab.sample
├── DailySet1 -> ondisk/
├── ondisk
│ ├── amanda-client.conf
│ ├── amanda-client-postgresql.conf
│ ├── amanda.conf
│ ├── chg-multi.conf
│ ├── chg-scsi.conf
│ ├── disklist
│ └── label-templates
│ ├── 3hole.ps
│ ├── 8.5x11.ps
│ ├── DIN-A4.ps
│ ├── DLT-A4.ps
│ ├── DLT.ps
│ ├── EXB-8500.ps
│ └── HP-DAT.ps
└── ontape
├── amanda-client.conf
├── amanda-client-postgresql.conf
├── amanda.conf
├── chg-multi.conf
├── chg-scsi.conf
├── disklist
└── label-templates
├── 3hole.ps
├── 8.5x11.ps
├── DIN-A4.ps
├── DLT-A4.ps
├── DLT.ps
├── EXB-8500.ps
└── HP-DAT.ps
Ce qui se traduit par la commande suivante :
# mv /etc/amanda/DailySet1/ /etc/amanda/ondisk
Fichier /etc/amanda/ontape/amanda.conf
org "ontape"
mailto "admin@b2pweb.com"
dumpuser "amandabackup"
inparallel 4
dumporder "sssS"
taperalgo first
displayunit "m"
netusage 8000 Kbps
dumpcycle 2 weeks
runspercycle 2
tapecycle 2 tapes
bumpsize 20 Mb
bumppercent 20
bumpdays 1
bumpmult 4
etimeout 300
dtimeout 1800
ctimeout 30
device_output_buffer_size 1280k
usetimestamps yes
flush-threshold-dumped 0
flush-threshold-scheduled 0
taperflush 0
autoflush no
runtapes 1
tapedev "tape:/dev/nst0"
autolabel "WEEKLY-NFU-%%%" empty
maxdumpsize -1
tapetype DELL-LT2
labelstr "^WEEKLY-NFU-[0-9][0-9]*$"
amrecover_changer "changer"
holdingdisk hd1 {
comment "main holding disk"
directory "/var/lib/amanda/holding"
use -100 Mb
chunksize 1Gb
}
infofile "/var/lib/amanda/ontape/curinfo"
logdir "/var/lib/amanda/ontape/log"
indexdir "/var/lib/amanda/ontape/index"
tapelist "/var/lib/amanda/ontape/tapelist"
define tapetype VTAPES-NFU {
length 30G
# filemark 100 kbytes
}
define tapetype global {
part_size 3G
part_cache_type none
}
define tapetype DELL-LT2 {
comment "Dell LT2 Tape Drive"
length 182677888 kbytes
filemark 1296022 kbytes
speed 21431 kbytes
blocksize 32 kbytes
}
#device-property "LEOM" "TRUE"
On modifie tous le champs mailto pour les scripts déclarés dans le fichier de configuration
# sed -i -e 's/property "mailto" ".*"/property "mailto" "admin@b2pweb.com"/g' /etc/amanda/ontape/amanda.conf
On créé la configuration pour les vtapes à partir de la précédente,
# cp -rp /etc/amanda/ontape /etc/amanda/ondisk
et on modifie les champs suivants dans le fichier /etc/amanda/ondisk/amanda.conf
org "ondisk" dumpcycle 1 weeks runspercycle 1 tapedev "chg-disk:/var/lib/amanda/vtapes" autolabel "VTAPES-NFU-%%%" empty tapetype VTAPES-NFU labelstr "^VTAPES-NFU-[0-9][0-9]*$" infofile "/var/lib/amanda/ondisk/curinfo" logdir "/var/lib/amanda/ondisk/log" indexdir "/var/lib/amanda/ondisk/index" tapelist "/var/lib/amanda/ondisk/tapelist" taperscan "taper_traditional"
On va définir que l'instance par défaut sera ondisk en créant un lien symbolique avec l'instance par défaut d'Amanda ( le fameux DailySet1 ).
# cd /etc/amanda # ln -s /etc/amanda/ondisk /etc/amanda/DailySet1
On partage la liste des répertoires à sauvegarder en créant un lien ( physique, encore appelé hardlink ) entre les deux instances. ainsi la modification de l'un sera automatiquement répercutée sur l'autre.
# rm -f /etc/amanda/ondisk/disklist # ln /etc/amanda/ontape/disklist /etc/amanda/ondisk/disklist
On va nommer notre bande pour qu'elle soit conforme à ce que l'on a renseigné dans le fichier amanda.conf, pour cela on va d'abord permettre à l'utilisateur amandabackup d'accèder aux commandes amanda en créant le fichier /var/lib/amanda/.bash_profile:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs PATH=$PATH:/usr/sbin export PATH |
On peut maintenant définir le label sur la bande.
# su - amandabackup -c 'amlabel ontape WEEKLY-NFU-001' Reading label... Found label 'amtapetype-1921500637', but it is not from configuration 'ontape'. Not writing label.
La commande échoue car le label de la bande a été mis par notre précédente commande pour tester notre lecteur de bande. On va donc forcer l'opération ( avec l'option -f ).
# su - amandabackup -c 'amlabel -f ontape WEEKLY-NFU-001' Reading label... Found label 'amtapetype-1921500637', but it is not from configuration 'ontape'. Writing label 'WEEKLY-NFU-001'... Checking label... Success!
Et enfin on test nos deux instances
# su - amandabackup -c "amcheck ontape" Amanda Tape Server Host Check ----------------------------- Holding disk /var/lib/amanda/holding: 41648 MB disk space available, using 41548 MB found in slot 1: volume 'WEEKLY-NFU-001' slot 1: volume 'WEEKLY-NFU-001' Will write to volume 'WEEKLY-NFU-001' in slot 1. NOTE: skipping tape-writable test WARNING: tapecycle (2) <= runspercycle (2). ... Server check took 0.628 seconds
Amanda Backup Client Hosts Check -------------------------------- Client check: 3 hosts checked in 2.325 seconds. 0 problems found.
(brought to you by Amanda 3.3.0)
# su - amandabackup -c "amcheck ondisk" Amanda Tape Server Host Check ----------------------------- Holding disk /var/lib/amanda/holding: 57216 MB disk space available, using 57116 MB slot 1: contains an empty volume Will write label 'WEEKLY-NFU-001' to new volume in slot 1. NOTE: skipping tape-writable test WARNING: tapecycle (2) <= runspercycle (2). Server check took 0.635 seconds
Amanda Backup Client Hosts Check -------------------------------- Client check: 3 hosts checked in 2.321 seconds. 0 problems found.
(brought to you by Amanda 3.3.0)
On effectue le backup
# su - amandabackup -c "amdump ontape" # su - amandabackup -c "amdump ondisk"
On configure la restauration en éditant les fichiers /etc/amanda/ontape/amanda-client.conf et /etc/amanda/ondisk/amanda-client.conf. Ils sont identiques hormis le nom de l'instance ( config name )
# # amanda-client.conf - sample Amanda client configuration file. # # This file normally goes in /etc/amanda/amanda-client.conf. #
conf "ontape" # your config name
index_server "localhost" # your amindexd server
tape_server "localhost" # your amidxtaped server
tapedev "" # your tape device
# if not set, Use configure or ask server.
# if set to empty string "", ask server
# amrecover will use the changer if set to the value
# of 'amrecover_changer' in the server amanda.conf.
# auth - authentication scheme to use between server and client. # Valid values are "bsd", "bsdudp", "bsdtcp", "krb5", "local", # "rsh" and "ssh". # Default: [auth "bsdtcp"] auth "bsdtcp"
ssh_keys "" # your ssh keys file if you use ssh auth
#resolves "resource temporarily unavailable" bug unreserved-tcp-port 1025,65535
Configuration en RAIT
Le RAIT est le mirroring de la sauvegarde. Par rapport au chapitre précédent, nous allons non pas sauvegarder sur disque puis sur bande, mais sur disque ET sur bande et ce en même temps. Les clients ne seront sollicités qu'une seule fois, surtout si le holding ( buffer ) est un peu petit.
La configuration n'est pas si différente des précédentes, mais plutôt un mix des deux :
tapedev devient un meta device rait dans le fichier de configuration amanda.conf de /etc/amanda/rait :
#tapedev "chg-disk:/var/lib/amanda/vtapes"
#tapedev "tape:/dev/nst0"
tapedev "chg-rait:{tape:/dev/nst0,chg-disk:/var/lib/amanda/vtapes}"
tapetype reste celui du lecteur de bande : (attention DELL-LT3 sur le nouveau NAS sinon LT2)
tapetype DELL-LT3
et c'est tout (plus de détails sur la page suivante).
Par contre pour la restauration, il faudra préciser à partir de quel device on restaure, comme expliqué [#3.3.Restauration des données à partir d'un RAIT|outline ici].
Plus en détails, voilà comment configurer le RAIT en partant de l'environnement créé jusqu'à maintenant (exemple sur le NFU) :
# cp -rp /etc/amanda/ontape /etc/amanda/rait
# vim /etc/amanda/rait/amanda.conf org "rait"
tapedev "chg-rait:{tape:/dev/nst0,file:/var/lib/amanda/vtapes}"
#autolabel "WEEKLY-NFU-%%%" empty
infofile "/var/lib/amanda/rait/curinfo"
logdir "/var/lib/amanda/rait/log"
indexdir "/var/lib/amanda/rait/index"
tapelist "/var/lib/amanda/rait/tapelist"
define tapetype WEEKLY-NFU {
length 203658112 kbytes
filemark 977 kbytes
}
define tapetype DELL-LT2 {
comment "Dell LT2 Tape Drive"
length 203658112 kbytes
filemark 977 kbytes
speed 24416 kps
blocksize 32 kbytes
}
define tapetype global {
part_size 3G
part_cache_type none
}
:wq # mv /var/lib/amanda/ontape /var/lib/amanda/rait # mv /var/lib/amanda/ondisk /var/lib/amanda/ondisk.bak # cd /var/lib/amanda/ # ln -s rait ondisk # ln -s rait ontape # ln -s rait DailySet1 # chown -R amandabackup:disk /var/lib/amanda # rm /etc/amanda/DailySet1 # cd /etc/amanda/ # ln -s rait DailySet1 # vim /etc/amanda/rait/amanda-client.conf ... conf "rait" ... :wq |
Les liens symboliques ondisk et ontape dans /var/lib/amanda sont obligatoire, sans ça amcheck remontera une erreur :
| amlabel: Could not open '/var/lib/amanda/ondisk/tapelist-new-1343913561' for writing: Aucun fichier ou répertoire de ce type at /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/Amanda/Tapelist.pm line 354. |
En réalité, ces configurations sont utilisées par le rait, qui ne peux pas fonctionner seul. Il permet simplement d'unir ces deux configuration pour les exécuter simultanément.
Les deux configuration devront aussi avoir le même label pour la bande sous peine d'avoir une erreur lors du amcheck.
Problèmes courants
Pour la vérification, il y a un moyen de diviser par deux le champs de recherche de l'erreur
On lance la commande
su - amandabackup -c "amservice localhost bsdtcp noop </dev/null" OPTIONS features=ffffffff9efefbffffffffff0f;
Si la commande amservice est un succès mais que amcheck est en erreur, le problème est dans la configuration du serveur. Sinon, le problème est sur le client.
- Erreur « Connection reset by peer »
# su - amandabackup -c "amcheck ondisk"
WARNING: localhost: selfcheck request failed: recv error: Connection reset by peer
Il faut remettre les bons utilisateurs et permissions sur les répertoires /var/lib/amanda et /var/log/amanda, puis redémarrer le service xinetd.
# chown -R amandabackup:disk /var/lib/amanda /var/log/amanda # /etc/init.d/xinetd restart
Enfin, il faut vérifier les fichiers /etc/hosts.allow et /etc/hosts.deny et y ajouter amanda si besoin est.
amandad: ALL
- Beaucoup de processus [mail] defunct et la commande amcheck est très longue à rendre la main.
Vérifier/Modifier les champs « mailto » dans le fichier de configuration
Vérifier que le user « amandabackup » a le droit d'écrire sur la bande
# ll /dev/nst0 crw-rw---- 1 root tape 9, 128 13 févr. 09:50 /dev/nst0
On remarque que seul root et les membres du groupe « tape » ont le droit d'écriture sur le media.
On vérifie donc que le user « amandabackup » fait bien parti de ce groupe.
là il n'y est pas, donc on le rajoute
# id amandabackup uid=33(amandabackup) gid=6(disk) groupes=6(disk) # gpasswd -a amandabackup tape
Là il y est déjà
# id amandabackup uid=494(amandabackup) gid=6(disk) groupes=6(disk),33(tape)
- Erreur « No acceptable volumes found »
No acceptable volumes found
Insert a new volume in tape:/dev/nst0 or write the name of a new changer in '/tmp/email_input' or write 'abort' in the file to abort the scan.
Vérifier que le volume est bien nommé
su - amandabackup -c "/usr/sbin/amlabel ontape Nas-Tape-001" Reading label... Found label 'amtapetype-1832694293', but it is not from configuration 'ontape'. Not writing label.
et pour mettre le bon nom de volume ( -f pour forcer )
su - amandabackup -c "/usr/sbin/amlabel -f ontape Nas-Tape-001"
Modifier cette ligne dans le fichier amanda.conf (ontape) :
taperscan "taper_traditional" # au lieu de taper_lexical
Si ça ne suffit pas il faut inscrire les labels des bandes directement dans le fichier « tapelist »
echo -e "0 WEEKLY-NFU-001 reuse\n0 WEEKLY-NFU-002 reuse" > /var/lib/amanda/ontape/tapelist
- Erreur « Connection refused »
# su - amandabackup -c "amcheck ondisk"
WARNING: localhost: selfcheck request failed: Connection refused
Vérification du fonctionnement du service amanda :
| # netstat -a | grep amanda |
Le service xinetd pour amanda est mal configuré, il faut corriger comme ceci :
# vim /etc/xinetd.d/amanda
...
# replace
server_args = -auth=bsdtcp amdump
disable = yes
}
# by
server_args = -auth=bsdtcp amdump amindexd amidxtaped
disable = no
}
:wq # /etc/init.d/xinetd restart |
On contrôle à nouveau le fonctionnement du service amanda :
# netstat -a | grep amanda
tcp 0 0 *:amanda *:* LISTEN |
- Erreur « Error setting block size on [../../../../../../var/lib/amanda/vtapes file:/var/lib/amanda/vtapes] » sur amcheck RAIT
Lors de la configuration du RAIT, il se peut qu'on constate cette erreur sur le 'amcheck rait'. Voici comment résoudre ce problème (ici nous avons une rotation de 3 bandes donc également 3 slots dans les vtapes) :
# su - amandabackup -c "/usr/sbin/amcheck -s rait"
Amanda Tape Server Host Check
-----------------------------
Holding disk /var/lib/amanda/holding: 47648 MB disk space available, using 47548 MB
found in slot {1,1}: Error setting block size on file:/var/lib/amanda/vtapes
slot {1,1}: Error setting block size on file:/var/lib/amanda/vtapes
from tape:/dev/nst0: all slots have been loaded; from file:/var/lib/amanda/vtapes: all slots have been loaded
Taper scan algorithm did not find an acceptable volume.
(expecting a new volume)
ERROR: No acceptable volumes found
Server check took 0.336 seconds
(brought to you by Amanda 3.3.1) # rm -rf /var/lib/amanda/vtapes/slot*
# rm -rf /var/lib/amanda/vtapes/state
# rm -rf /var/lib/amanda/rait/{curinfo,log,index}/*
# rm -rf /var/lib/amanda/rait/tapelist.lock
# su - amandabackup -c "mkdir -p /var/lib/amanda/vtapes/slot{1..3}"
# su - amandabackup -c "/usr/sbin/amlabel -f ontape WEEKLY-NFU-001"
# su - amandabackup -c "/usr/sbin/amlabel -f ondisk WEEKLY-NFU-001"
# vim /var/lib/amanda/rait/tapelist
0 WEEKLY-NFU-001 reuse BLOCKSIZE:32 0 WEEKLY-NFU-002 reuse BLOCKSIZE:32 0 WEEKLY-NFU-003 reuse BLOCKSIZE:32 :wq # cd /var/lib/amanda/vtapes/ # ln -s slot1 data # chown -R amandabackup:disk /var/lib/amanda # vim /etc/amanda/rait/amanda.conf ... taperscan "taper_lexical" ... :wq # su - amandabackup -c "/usr/sbin/amcheck -s rait" Amanda Tape Server Host Check ----------------------------- Holding disk /var/lib/amanda/holding: 47656 MB disk space available, using 47556 MB amcheck-device: TypeError Non-string in arrayref NOTE: host info dir /var/lib/amanda/rait/curinfo/localhost does not exist NOTE: it will be created on the next run. NOTE: index dir /var/lib/amanda/rait/index/localhost does not exist NOTE: it will be created on the next run. Server check took 0.320 seconds (brought to you by Amanda 3.3.1) # vim /etc/amanda/rait/amanda.conf ... taperscan "taper_traditional" ... :wq # su - amandabackup -c "/usr/sbin/amcheck -s rait"
Amanda Tape Server Host Check
-----------------------------
Holding disk /var/lib/amanda/holding: 47656 MB disk space available, using 47556 MB
found in slot {1,1}: Volume not labeled
slot {1,1}: Volume not labeled
from tape:/dev/nst0: all slots have been loaded; from file:/var/lib/amanda/vtapes: all slots have been loaded
Taper scan algorithm did not find an acceptable volume.
(expecting a new volume)
ERROR: No acceptable volumes found
NOTE: host info dir /var/lib/amanda/rait/curinfo/localhost does not exist
NOTE: it will be created on the next run.
NOTE: index dir /var/lib/amanda/rait/index/localhost does not exist
NOTE: it will be created on the next run.
Server check took 0.327 seconds
(brought to you by Amanda 3.3.1) # su - amandabackup -c "/usr/sbin/amlabel -f ontape WEEKLY-NFU-001"
# su - amandabackup -c "/usr/sbin/amlabel -f ondisk WEEKLY-NFU-001"
# su - amandabackup -c "/usr/sbin/amcheck -s rait"
Amanda Tape Server Host Check
-----------------------------
Holding disk /var/lib/amanda/holding: 47656 MB disk space available, using 47556 MB
found in slot {1,1}: volume 'WEEKLY-NFU-001'
slot {1,1}: volume 'WEEKLY-NFU-001'
Will write to volume 'WEEKLY-NFU-001' in slot {1,1}.
NOTE: skipping tape-writable test
NOTE: host info dir /var/lib/amanda/rait/curinfo/localhost does not exist
NOTE: it will be created on the next run.
NOTE: index dir /var/lib/amanda/rait/index/localhost does not exist
NOTE: it will be created on the next run.
Server check took 0.327 seconds
(brought to you by Amanda 3.3.1) |
- Erreur « Got no header and data from server »
Cette erreur peut se présenter lors d'une opération de restauration dans un environnement RAIT, en fait cette erreur indique qu'aucun device n'a été sélectionné pour effectuer le restore. Illustration :
amrecover> extract
Extracting files using tape drive changer on host localhost. The following tapes are needed: WEEKLY-NFU-001 Extracting files using tape drive changer on host localhost. Load tape WEEKLY-NFU-001 now Continue [?/Y/n/s/d]? y Got no header and data from server, check in amidxtaped.*.debug and amandad.*.debug files on server amrecover> setdevice file:/var/lib/amanda/vtapes/ Using tape "file:/var/lib/amanda/vtapes/". Tape server unspecified, assumed to be localhost. … amrecover> extract Extracting files using tape drive file:/var/lib/amanda/vtapes/ on host localhost. The following tapes are needed: WEEKLY-NFU-001 Extracting files using tape drive file:/var/lib/amanda/vtapes/ on host localhost. Load tape WEEKLY-NFU-001 now Continue [?/Y/n/s/d]? Y |
- Lors d'un check « WARNING: skipping tape test because amdump or amflush seem to be runningWARNING: if they are not, you must run amcleanup »
Cet avertissement est affiché lors d'un amcheck si une sauvegarde est en cour, ou n'a pas été correctement terminée (plantage, kill...).
En fait, amcleanup est lancé automatiquement après amdump lors d'une sauvegarde. Mais si la commande amdump n'a pas été terminé correctement alors amcleanup n'est pas lancée et devra l'être manuellement.
Cette commande génère le rapport par mail et met à jour la base de données d'Amanda.
Pour le lancer il suffit de faire comme ceci :
| su - amandabackup -c "amcleanup rait" |
- Tout les dossiers sont vides lors de la restauration depuis la bande
La dernière sauvegarde sur bande devait probablement être une sauvegarde incrémentale, qui a créée les dossiers mais ne les a pas remplie sauf pour les fichiers qui ont changés depuis la sauvegarde complète.
- « slot X: Could not open device: File 0 not found » lors d'un changement de slot
Si ce message apparaît lors du changement du slot via la commande amtape, c'est tout simplement car c'est la première fois que l'on passe sur ce slot et qu'il ne trouve pas le fichier d'informations censé contenir le timestamp. Celui-ci sera d'ailleurs créé automatiquement par cette même commande.
Utilisation d'Amanda
L'utilisation d 'Amanda est divisé en deux parties :
- La sauvegarde des données qui est une opération régulière et se fait avec un utilisateur dédié à la sauvegarde.
- La restauration qui est une opération ponctuelle et qui ne peut se faire qu'avec le super-utilisateur root.
Sauvegarde des données
La liste des répertoires à sauvegarder est déjà mis en place pour chaque instance dans le fichier disklist ( /etc/amanda/NOM_DE_L_INSTANCE/disklist ).
La sauvegarde peut ( et même doit ) être en tache planifiée ( cron ) afin de s'affranchir un maximum d'une erreur humaine ( un oubli ). On va donc rajouter au crontab :
# crontab -e ### Check tape label all monday at 15:00 ( option -w to check if tape is writable ) 0 15 * * 1 su - amandabackup -c "amcheck -w ontape" ### Make weekly backup ( all amanda instances ) 0 22 * * 1 su - amandabackup -c "amdump ontape";su - amandabackup -c "amdump ondisk
Ou dans le cas du rait pour la sauvegarde journalière :
# crontab -e
30 23 * * 1-5 su - amandabackup -c "/usr/sbin/amdump rait ; /usr/sbin/amtape ondisk slot next 1>/dev/null" |
On remarquera la deuxième commande "amtape" qui permet de passer sur le slot suivant automatiquement, ce qui est bien utile quand on a une cassette différente par jour.
Forcer la sauvegarde complète ou incrémentale
Par défaut Amanda gère seule les niveau de backup.La seule contrainte qu'elle ait est de devoir faire au moins un backup complet (full) par semaine.Le problème c'est que l'on ne sait pas quand elle le fait (ou plutôt quand elle va le faire).
Il y a la possibilité néanmoins de définir le niveau de backup que l'on souhaite. Par exemple une sauvegarde complète le lundi et des sauvegardes incrémentales le reste de la semaine.L'avantage est que l'on a la main sur les sauvegardes, et que l'on peut restaurer facilement un fichier datant du jour de la semaine que l'on veut.Pour ça il va falloir définir la stratégie lors de la commande amdump. On doit aussi lier celle-ci au dumptype utilisé (il sera donc préférable d'utiliser le même dumptype pour toutes les sauvegardes).
Par exemple, en utilisant le dumptype compt-root-tar, on peut définir une sauvegarde complète comme ceci :
| su - amandabackup -c "/usr/sbin/amdump rait -o DUMPTYPE:comp-root-tar:strategy=noinc" |
Et une sauvegarde incrémentale comme ceci :
| su - amandabackup -c "/usr/sbin/amdump rait -o DUMPTYPE:comp-root-tar:strategy=nofull" |
D'après les tests effectués, la sauvegarde incrémentale réalisée de cette manière sera toujours de niveau 1, ce qui veut dire que pour restaurer entièrement la sauvegarde il faudra uniquement deux bandes, la full et la dernière incrémentale, celle-ci contenant toutes les données modifiées depuis la full (de niveau 0 donc).
Restauration des données
Dans l'exemple suivant, l'exercice consiste à restaurer le fichier /etc/sudoers, ainsi que le répertoire /etc/amanda.
On créé le répertoire ou l'on va récupérer nos fichiers restaurés
# mkdir -p /tmp/restore # cd /tmp/restore
On se connecte au client Amanda
# amrecover ondisk -s localhost -t localhost -d AMRECOVER Version 3.3.0. Contacting server on localhost ... 220 nfu AMANDA index server (3.3.0) ready. Setting restore date to today (2012-02-21) 200 Working date set to 2012-02-21. 200 Config set to ontape. 501 Host nfu.b2pweb.com is not in your disklist. Trying host nfu.b2pweb.com ... 501 Host nfu.b2pweb.com is not in your disklist. Trying host nfu ... 501 Host nfu is not in your disklist. Trying host nfu.b2pweb.com ... 501 Host nfu.b2pweb.com is not in your disklist. Use the sethost command to choose a host to recover amrecover>
Ici le client n'arrive pas à trouver de sauvegarde pour l'hôte nfu.b2pweb.com. c'est normal car il est sauvegardé en tant que localhost. On va donc lui préciser cela.
amrecover> sethost localhost 200 Dump host set to localhost. amrecover>
On va lui faire afficher tous les répertoires sauvegardés pour l'hôte courant.
amrecover> listdisk 200- List of disk for host localhost 201- /etc 201- /home/audrey 201- /home/aurore 201- /home/bastien 201- /home/benoit 201- /home/cecile 201- /home/charline 201- /home/christophe 201- /home/gaelle 201- /home/gilles 201- /home/gillesdev 201- /home/gilles-p4 201- /home/nadege 201- /home/sebastien 201- /home/virginie 201- /home 200 List of disk for host localhost amrecover>
On choisi donc la sauvegarde /etc
amrecover> setdisk /etc 200 Disk set to /etc. amrecover>
On affiche les fichiers et dossiers dans la sauvegarde.
amrecover> ls 2012-02-20-14-03-12 yum/ … 2012-02-20-14-03-12 printcap amrecover>
On spécifie que l'on veut restaurer : le fichier sudoers et le répertoire amanda
amrecover> add sudoers Added file /sudoers amrecover> add amanda Added dir /amanda/ at date 2012-02-20-14-03-12 amrecover>
On vérifie dans quel répertoire courant on est afin de ne pas écrasé ce qui existe déjà
amrecover> lpwd /tmp/restore amrecover>
On est dans /tmp/restore, on peut donc extraire les données qui nous intéresse.
amrecover> extract
Extracting files using tape drive changer on host localhost. The following tapes are needed: WEEKLY-NFU-001
Extracting files using tape drive changer on host localhost. Load tape WEEKLY-NFU-001 now Continue [?/Y/n/s/d]?y Restoring files into directory /tmp/restore All existing files in /tmp/restore can be deleted Continue [?/Y/n]? y
./sudoers ./amanda/crontab.sample ./amanda/DailySet1 … amrecover>
On peut quitter le système de restauration
amrecover> exit 200 Good bye.
L'aide en ligne est obtenu en tapant « help » ou « ? » à l'invitation de commande.
amrecover> help valid commands are:
add path1 ... - add to extraction list (shell wildcards)
addx path1 ... - add to extraction list (regular expressions)
cd directory - change cwd on virtual file system (shell wildcards)
cdx directory - change cwd on virtual file system (regular expressions)
clear - clear extraction list
delete path1 ... - delete from extraction list (shell wildcards)
deletex path1 ... - delete from extraction list (regular expressions)
extract - extract selected files from tapes
exit
help
history - show dump history of disk
list [filename] - show extraction list, optionally writing to file
lcd directory - change cwd on local file system
ls - list directory on virtual file system
lpwd - show cwd on local file system
mode - show the method used to extract SMB shares
pwd - show cwd on virtual file system
quit
listhost - list hosts
listdisk [diskdevice] - list disks
listproperty - list property
setdate {YYYY-MM-DD|--MM-DD|---DD} - set date of look
{YYYY-MM-DD-HH-MM-SS} - set date of look
setdisk diskname [mountpoint] - select disk on dump host
sethost host - select dump host
setdevice [[-h host] device] - select tape server and/or device
setproperty [append] [priority] name [value ...] - set a property
setmode smb|tar - select the method used to extract SMB shares
Restauration des données à partir d'un RAIT
On peut choisir le device de restauration. La restauration depuis un vtape est quasiment immédiate, alors que depuis une bande, cela peut être largement plus long.
On spécifie ce paramètre grâce à la commande setdevice
- setdevice file:/var/lib/amanda/vtapes/, sans oublier le dernier « / »
- setdevice tape:/dev/nst0
Restauration du fichier /etc/sudoers depuis un vtape
# amrecover rait -s newnas.b2pweb.com -t newnas.b2pweb.com AMRECOVER Version 3.3.1. Contacting server on newnas.b2pweb.com ... 220 newnas AMANDA index server (3.3.1) ready. Setting restore date to today (2012-05-15) 200 Working date set to 2012-05-15. 200 Config set to rait. 200 Dump host set to didier. Use the setdisk command to choose dump disk to recover amrecover> setdevice file:/var/lib/amanda/vtapes/ Using tape "file:/var/lib/amanda/vtapes/". Tape server unspecified, assumed to be newnas.b2pweb.com. amrecover> setdisk /etc 200 Disk set to /etc. amrecover> add sudoers Added file /sudoers amrecover> extract
Extracting files using tape drive file:/var/lib/amanda/vtapes/ on host newnas.b2pweb.com. The following tapes are needed: Nas-Tape-001
Extracting files using tape drive file:/var/lib/amanda/vtapes/ on host newnas.b2pweb.com. Load tape Nas-Tape-001 now Continue [?/Y/n/s/d]? y Restoring files into directory /home/didier/tmp/amanda All existing files in /home/didier/tmp/amanda can be deleted Continue [?/Y/n]? y
./sudoers amrecover> exit 200 Good bye.
Restauration du fichier /etc/sudoers depuis la bande
# amrecover rait -s newnas.b2pweb.com -t newnas.b2pweb.com AMRECOVER Version 3.3.1. Contacting server on newnas.b2pweb.com ... 220 newnas AMANDA index server (3.3.1) ready. Setting restore date to today (2012-05-15) 200 Working date set to 2012-05-15. 200 Config set to rait. 200 Dump host set to didier. Use the setdisk command to choose dump disk to recover amrecover> setdevice tape:/dev/nst0 Using tape "tape:/dev/nst0". Tape server unspecified, assumed to be newnas.b2pweb.com. amrecover> setdisk /etc 200 Disk set to /etc. amrecover> add sudoers Added file /sudoers amrecover> extract
Extracting files using tape drive tape:/dev/nst0 on host newnas.b2pweb.com. The following tapes are needed: Nas-Tape-001
Extracting files using tape drive tape:/dev/nst0 on host newnas.b2pweb.com. Load tape Nas-Tape-001 now Continue [?/Y/n/s/d]? y Restoring files into directory /home/didier/tmp/amanda All existing files in /home/didier/tmp/amanda can be deleted Continue [?/Y/n]? y
./sudoers amrecover> exit 200 Good bye.
Restauration sans les outils Amanda
Amanda utilise des outils génériques du système Unix/Linux, on peut donc facilement restaurer une sauvegarde avec ces outils si l'on ne dispose pas des outils Amanda.
Restauration à partir du disque :
mkdir /tmp/recovery && cd /tmp/recovery
cp /var/lib/amanda/vtapes/slot1/* . ls -l -rw------- 1 root root 32768 août 3 09:56 00000.WEEKLY-OLDNFU-001 -rw------- 1 root root 6193152 août 3 09:56 00001.localhost._etc.0 |
Ici on a une seule sauvegarde, mais si on en avait plusieurs alors il faudrait les restaurer une par une (ou faire une boucle).
Pour extraire les données du fichier, nous allons utiliser la commande « dd ». En sortie, nous aurons une archive au format tar.gz que nous décompressseront à la volée.
On va d'abord créer un dossier pour y stocker les données histoire que ce ne soit pas tout en bordel :
| mkdir /tmp/recovery/etc |
Puis on restaure :
| dd if=00001.localhost._etc.0 bs=32k skip=1 | tar -xvzfp - -C /tmp/recovery/etc/ |
Confirmation :
ls -l /tmp/recovery/etc
total 2140 drwxr-xr-x 4 root root 4096 juil. 27 16:15 acpi -rw-r--r-- 1 root root 46 juil. 30 14:06 adjtime -rw-r--r-- 1 root root 1512 avril 25 2005 aliases -rw-r----- 1 root smmsp 12288 juil. 30 14:08 aliases.db drwxr-xr-x 2 root root 4096 août 3 10:04 alternatives drwxr-xr-x 5 root root 4096 août 3 10:04 amanda -rw-r--r-- 1 root root 298 mars 28 2007 anacrontab (...) |
Maintenant si on voulais juste récupérer l'archive au format tar.gz il faudrait faire comme ceci :
| dd if=00001.localhost._etc.0 bs=32k skip=1 > etc.tar.gz |
A partir de là, l'archive est utilisable comme n'importe qu'elle archive tar.gz.
Restauration à partir de la bande :
On s'assure tout d'abord que la bande est rembobiné :
| mt -f /dev/nst0 rewind |
On peut voir le status :
mt -f /dev/nst0 status
SCSI 2 tape drive: File number=0, block number=0, partition=0. Tape block size 512 bytes. Density code 0x42 (LTO-2). Soft error count since last status=0 General status bits on (41010000): BOT ONLINE IM_REP_EN |
Ensuite on se positionne sur le bloc que l'on veut restaurer :
| mt -f /dev/nst0 fsf 1 |
Attention, le numéro 1 ne correspond pas forcément au numéro de bloc, il indique simplement que l'on se déplace d'un bloc en avant à partir du bloc courant.
C'est pour cela qu'il vaut mieux rembobiner la bande chaque fois, pour être sûr d'être sur le bon bloc.
N.B. Le numéro de bloc correspond au numéro de l'archive, c'est à dire au positionnement de la sauvegarde dans la disklist.
Par exemple, dans ma disklist j'ai ça :
localhost /etc comp-root-tar
localhost /home comp-root-tar |
Et dans mes vtapes j'ai ça :
ll /var/lib/amanda/vtapes/data/
-rw------- 1 amandabackup disk 32768 août 3 13:10 00000.WEEKLY-OLDNFU-001 -rw------- 1 amandabackup disk 6193152 août 3 13:11 00001.localhost._etc.0 -rw------- 1 amandabackup disk 1927151616 août 3 13:17 00002.localhost._home.0 |
Dans ce cas là, le bloc 0 correspond à l'entête, le bloc 1 correspond à la sauvegarde de /etc, et le bloc 2 à la sauvegarde de /home.
Donc si on avait voulu restaurer le /home, on se serait positionné sur le bloc 2 (en ayant rembobiné avant) :
| mt -f /dev/nst0 fsf 2 |
Si le bloc n'existe pas, la commande renverra une erreur :
mt -f /dev/nst0 fsf 10
/dev/nst0: Input/output error |
On peut à l'inverse reculer d'un bloc avec la commande suivante :
| mt -f /dev/nst0 bsfm 1 |
Une fois que l'on est positionné, on peut restaurer :
| dd if=/dev/nst0 bs=32k skip=1 > etc.tar.gz |
On peut bien évidemment décompresser directement l'archive à la volée comme pour la restauration depuis la disque ci-dessus.
On peut sinon utiliser la commande fournie par Amanda pour restaurer et décompresser la sauvegarde à la volée, ça reviens au même :
| dd if=/dev/nst0 bs=32k skip=1 | /bin/gzip -dc | /bin/tar -xpGf - |
Utilisation de amflush
Amflush permet de faire redescendre sur bande le trop plein de données dans la holding.
En effet lors d'une sauvegarde il arrive qu'il n'y ait pas assez de place sur la bande pour tout sauvegarder.
A ce moment là, Amanda laissera le trop plein dans le dossier /var/lib/amanda/holding/ et affichera un message dans le rapport par mail indiquant de lancer amflush.
Cela peut aussi arriver lorsqu'il y a un problème d'accès à la bande ou n'importe quelle problème qui aurait pu empêcher la sauvegarde sur bande.
Amflush va effectuer les mêmes actions que amdump à l'exception qu'il ne sauvegardera que ce qui est présent dans la holding.
Pour lancer amflush il faudra d'abord passer à la bande suivante, puis une fois terminé il faudra encore passer à la suivante. La commande mettra à jour la base de données et les timestamp dans la tapelist comme lors d'une sauvegarde normale.
Donc lorsque le mail de rapport Amanda affichera ça :
There are 2330M of dumps left in the holding disk.
Run amflush to flush them to tape. |
Il faudra changer la bande et lancer la commande suivante :
| su - amandabackup -c "amflush rait" |
Ce qui donnera comme résultat (exemple) :
Today is: 20120806
Flushing dumps from 20120806115056 to tape drive "chg-rait:{tape:/dev/nst0,file:/var/lib/amanda/vtapes}".
Expecting a new tape. (The last dumps were to tape WEEKLY-OLDNFU-001)
Are you sure you want to do this [yN]? y
Running in background, you can log off now.
You'll get mail when amflush is finished.
|
A noter que l'on peut préciser le timestamp des données que l'on souhaite faire redescendre sur la bande avec l'option -D.
Annexes
Améliorations
Lors de l'affichage, amrestore utilise la variable globale du shell pour définir l'afficheur, qui est « more » par défaut. Il est intéressant de le remplacer par « less ». Cette ligne peut aussi être ajouter au fichier « ~/.bashrc » afin de s'affranchir de l'export à chaque nouvelle session.
# export PAGER=less
Compression matérielle (ou pas)
Les dérouleurs de bande modernes possèdent un module de compression des données afin d’augmenter la capacité apparente des bandes. Mais AMANDA est aussi capable de comprimer les données au niveau de chaque client, ce qui a plusieurs avantages : - la compression logicielle est souvent meilleure en terme de taux de compression (gzip, bzip2,...) que celle effectuée par le dérouleur mais est aussi plus lente ; - seules les données comprimées passent sur le réseau et donc la pression est moindre ; - lors de la planification AMANDA connaît le taux de compression effectif pour chaque partition et peut mieux remplir les bandes avec moins de risque de débordement.
De plus, dans la documentation Amanda, il est précisé qu'il n'est pas bon d'utiliser les deux compression matérielle/logicielle en même temps :
| When you enable software compression, you drastically reduce the compression that might be achieved by hardware. In fact, tape drives will usually use more tape if you tell them to try to further compress already compressed data. |
Pour voir l'état de la compression matérielle des bandes LTO il faut procéder comme ceci :
[root@newnas ~]# yum install mtx
[root@newnas ~]# tapeinfo -f /dev/sg3 Product Type: Tape Drive Vendor ID: 'IBM ' Product ID: 'ULTRIUM-HH3 ' Revision: 'B6W1' Attached Changer: No SerialNumber: '1068011763' MinBlock:1 MaxBlock:8388608 SCSI ID: 0 SCSI LUN: 0 Ready: yes BufferedMode: yes Medium Type: 0x38 Density Code: 0x44 BlockSize: 0 DataCompEnabled: yes DataCompCapable: yes DataDeCompEnabled: yes CompType: 0x1 DeCompType: 0x1 BOP: yes Block Position: 0 |
Ici on voit que la compression est activée :
DataCompEnabled: yes
DataCompCapable: yes |
N.B. Il faut tester tout les périphériques sgX pour trouver celui qui correspond à la bande, les autres concernant les autres périphériques SCSI.
Désactiver la compression :
[root@newnas ~]# mt -f /dev/st0 compression 0
[root@newnas ~]# tapeinfo -f /dev/sg3 | grep DataCompEnabled DataCompEnabled: no |
Activer la compression :
[root@newnas ~]# mt -f /dev/st0 compression 1
[root@newnas ~]# tapeinfo -f /dev/sg3 | grep DataCompEnabled DataCompEnabled: yes |
On peut également voir l'état de la compression grâce aux outils Amanda :
amtapetype -c -f /dev/nst0
Checking for FSF_AFTER_FILEMARK requirement Applying heuristic check for compression. Wrote random (uncompressible) data at 25885108.4590164 bytes/sec Wrote fixed (compressible) data at 63159664.64 bytes/sec Compression: enabled |
Cela dit la commande prend quand même 3 bonnes minutes à s'exécuter...
Liens
| Wiki Amanda | Wiki de l'outil en anglais |
| Planet Libre | Tutorial en français |
| Howto Gentoo | Howto du site gentoo.linuxhowtos.org, en anglais |
Fichier de configuration amanda.conf pour le rait
# amanda.conf - sample Amanda configuration file. See amanda.conf(5) for # details
org "rait" mailto "srs@b2pweb.com" inparallel 4 dumporder "sssS" taperalgo first displayunit "m" netusage 8000 Kbps dumpcycle 1 weeks runspercycle 5 tapecycle 5 tapes bumpsize 20 Mb bumppercent 20 bumpdays 1 bumpmult 4
etimeout 300
dtimeout 1800
ctimeout 30
device_output_buffer_size 1280k
usetimestamps yes
flush-threshold-dumped 0
flush-threshold-scheduled 0
taperflush 0
autoflush no
runtapes 1
tapedev "chg-rait:{tape:/dev/nst0,chg-disk:/var/lib/amanda/vtapes}"
autolabel "Nas-Tape-%%%" empty
maxdumpsize -1
tapetype DELL-LT3
labelstr "^Nas-Tape-[0-9][0-9]*$"
amrecover_changer "changer"
holdingdisk hd1 {
comment "main holding disk"
directory "/var/lib/amanda/holding"
use -100 Mb
chunksize 1Gb
}
infofile "/var/lib/amanda/rait/curinfo"
logdir "/var/lib/amanda/rait/log"
indexdir "/var/lib/amanda/rait/index"
tapelist "/var/lib/amanda/rait/tapelist"
define tapetype VTAPE {
length 80G
filemark 100 kbytes
}
define tapetype DELL-LT3 {
comment "Created by amtapetype; compression enabled"
length 415955904 kbytes
filemark 1649 kbytes
speed 77157 kps
blocksize 32 kbytes
}
taperscan "taper_traditional"