Amanda backup, příklad konfigurace


co je Amanda?
AMANDA(Advanced Maryland Automatic Network Disk Archiver), je zálohovací řešení, které umožňuje správci IT nastavit jeden hlavní zálohovací server pro zálohování více hostitelů přes síť na páskové jednotky/changery, disky, VTL, NAS, SAN, Cloud nebo optická média. Amanda používá nativní nástroje a formáty (např. dump a/nebo GNU tar) a dokáže zálohovat velké množství serverů a pracovních stanic s více verzemi Linuxu nebo Unixu. Amanda používá nativního klienta Windows k zálohování desktopů a serverů Microsoft Windows. Obsahuje moduly pro zálohování MySQL,PostgeSQL a VMWare

Příklad nasazení zálohování

Scénář

192.168.4.10 amanda.example.com – zálohovací server, klient záloha localhost
192.168.4.11 nas.example.com – úložiště dat zálohovacího serveru, mount k zálohovacímu serveru, vytvořeny dailysets(virtrulální disky) a holding disk, obojí je možno vytvořit také na lokálním FS zálohovacího serveru, pak NAS není potřeba, řešení bez DR konceptu, viz. níže.
192.168.4.12 klient1.example.com – klient1 a současně DR zálohovací server, viz. níže.
192.168.4.13 klient2.example.com – klient2
Obnova serveru popsána v kapitole Disaster recovery(DR)

Instalace

instalace specifického OS je popsáná v https://wiki.zmanda.com/index.php/Installation/OS_Specific_Notes

Dále popis jen instalace RHEL a Ubuntu.
Balíček backup_server by měl být nainstalován na produkční i záložní server Amanda. Balíček obsahuje server a klienta Amanda.
Balíček backup_client by měl být nainstalován na klienta Amanda (počítač, který je zálohován serverem Amanda). Obsahuje pouze klienta Amanda.

Ubuntu:
na Amanda server:
# sudo apt update
# sudo apt install amanda-server
na Amanda klient:
# sudo apt update
# sudo apt install amanda-client

RHEL:
na Amanda Server:

# yum install xinetd
# yum install perl-JSON
# yum install perl-XML
# yum install perl glib* gnuplot
# wget ftp://ftp.gnu.org/pub/gnu/termcap/termcap-1.3.1.tar.gz <—— Instalujte jej pomocí ./configure, make, make install… Vyžaduje ke kompilaci gcc..
# wget http://www.zmanda.com/downloads/community/Amanda/3.3.4/Redhat_Enterprise_6.0/amanda-backup_server-3.3.4-1.rhel6.x86_64.rpm
rpm -ivh amanda-backup_server-3.3.4-1.rhel6.x86_64.rpm <———– Povolte epel a rpmforge repo pro deps.

Konfigurace

# nano /etc/xinetd.d/amanda

# default: on
#
# description: Amanda services for Amanda server and client.
#

service amanda
{
disable = no
flags = IPv4
socket_type = stream
protocol = tcp
wait = no
user = amandabackup
group = disk
groups = yes
server = /usr/libexec/amanda/amandad
server_args = -auth=bsdtcp amdump amindexd amidxtaped
}

Pokud nepoužíváte lokální DNS vložte jména serverů a klientů

# nano /etc/hosts

192.168.4.10 amanda.example.com amanda
192.168.4.11 nas.example.com nas
192.168.4.12 klient1.example.com klient1
192.168.4.13 klient2.example.com klient2

# mkdir -p /mnt/amanda /etc/amanda
# chown amandabackup /mnt/amanda /etc/amanda/

# mount -t cifs -w -o username=nasuser,password=naspassword,uid=34,gid=34,forceuid,forcegid //192.168.4.11/backup /mnt/backup/

uid a gid je uživatele amandabackup, pro zabezpečení trvalého připojení nas k zálohovacímu serveru vytvoříme následující script a spouštíme z cron každou min. pod uživatelem root

* * * * backupmount.sh >/dev/null 2>&1

#!/bin/bash
if grep /mnt/backup /proc/mounts > /dev/null 2>&1; then
        echo "Mounted"
else
        echo "NOT mounted"
 mount -t cifs -w -o username=nasuser,password=naspassword,uid=34,gid=34,forceuid,forcegid //192.168.4.11/backup /mnt/backup/

fi

Dále pokračujeme jako amanda user

# su – amandabackup
# mkdir -p /mnt/amanda/vtapes/slot{1,2,3,4} <—— kolik virtuálních pásek potřebujeme
# mkdir -p /mnt/amanda/holding
# mkdir -p /mnt/amanda/state/{curinfo,log,index}
# mkdir -p /etc/amanda/MyConfig

# nano /etc/amanda/MyConfig/amanda.conf <—- Ujistěte se, že dumpuser = uživatel amanda (amandabackup)

org "MyConfig"
infofile "/mnt/amanda/state/curinfo"
logdir "/mnt/amanda/state/log"
indexdir "/mnt/amanda/state/index"
dumpuser "amandabackup"
mailer "/usr/bin/mailx"
mailto "mail@example.com"

tpchanger "chg-disk:/mnt/amanda/vtapes"
labelstr "MyData[0-9][0-9]"
autolabel "MyData%%" EMPTY VOLUME_ERROR
tapecycle 4
dumpcycle 3 days
amrecover_changer "changer"

tapetype "TAPE3G"
define tapetype TAPE3G {
length 3072 mbytes
filemark 4 kbytes
}

define dumptype simple-gnutar-local {
auth "local"
compress none
program "GNUTAR"
}

define dumptype simple-gnutar-remote {
auth "ssh"
ssh_keys "/etc/amanda/MyConfig/ssh-key"
compress none
program "GNUTAR"
}

holdingdisk hd1 {
directory "/mnt/amanda/holding"
use 50 mbytes
chunksize 1 mbyte
}

# nano /etc/amanda/MyConfig/disklist

---
localhost /etc simple-gnutar-local
---

Test konfigurace a první záloha
# amcheck MyConfig


Amanda Tape Server Host Check

NOTE: tapelist will be created on the next run.
Holding disk /mnt/amanda/holding: 868352 kB disk space available, using 51200 kB as requested
slot 1: contains an empty volume
Will write label ‚MyData01‘ to new volume in slot 1.
NOTE: skipping tape-writable test
NOTE: host info dir /mnt/amanda/state/curinfo/localhost does not exist
NOTE: it will be created on the next run.
NOTE: index dir /mnt/amanda/state/index/localhost does not exist
NOTE: it will be created on the next run.
Server check took 0.276 seconds

Amanda Backup Client Hosts Check

Client check: 1 hosts checked in 4.125 seconds. 0 problems found.

(brought to you by Amanda 3.3.4)


# echo $?

0

pokud vidíte něco jiného než nulu, záloha selhala. V obou případech můžete vidět užitečnou zprávu o tom, co se stalo v amreport

# amreport MyConfig


These dumps were to tape MyData01.
The next tape Amanda expects to use is: 1 new tape.

STATISTICS:
Total Full Incr. Level:#


Estimate Time (hrs:min) 0:00
Run Time (hrs:min) 0:00
Dump Time (hrs:min) 0:00 0:00 0:00
Output Size (meg) 5.9 5.9 0.0
Original Size (meg) 5.9 5.9 0.0
Avg Compressed Size (%) 100.0 100.0 —
DLEs Dumped 1 1 0
Avg Dump Rate (k/s) 1884.6 1884.6 —

Tape Time (hrs:min) 0:00 0:00 0:00
Tape Size (meg) 5.9 5.9 0.0
Tape Used (%) 5.9 5.9 0.0
DLEs Taped 1 1 0
Parts Taped 1 1 0
Avg Tp Write Rate (k/s) 60400.0 60400.0 —

USAGE BY TAPE:
Label Time Size % DLEs Parts
MyData01 0:00 6040k 5.9 1 1

NOTES:
planner: Adding new disk localhost:/etc.
taper: tape MyData01 kb 6040 fm 1 [OK]

DUMP SUMMARY:
DUMPER STATS TAPER STATS
HOSTNAME DISK L ORIG-kB OUT-kB COMP% MMM:SS KB/s MMM:SS KB/s


localhost /etc 0 6040 6040 — 0:03 1884.1 0:00 60400.0

(brought to you by Amanda version 3.3.4)


Automatizace, pod uživatelem amandabackup spouštíme z cronu následující dva příkazy pro zálohu a report, dobu spuštění upravte dle potřeby. Pokud je v amanda.conf přidána položka mailto bude výsledek odeslán na uvedený mail

# m h  dom mon dow   command
0 4 * * * /usr/sbin/amdump MyConfig
0 10 * * * /usr/sbin/amcheck -m MyConfig

Nyní zálohujete, ale jak obnovím dříve pořízenou zálohu? Následovně:
# nano /etc/amanda/amanda-client.conf

---
index_server "localhost"
tapedev "changer"
auth "local"
---

Dále pokračujeme jako root:

# mkdir /tmp/recovery <——– nebo jakýkoliv jiný adresář

# cd /tmp/recovery

# amrecover MyConfig

amrecover běží jako root, protože obnovuje soubory a oprávnění. Po spuštění dostanene prompt.

Using index server from environment AMANDA_SERVER (amanda)
AMRECOVER Version 3.2.1. Contacting server on amanda …
220 amanda AMANDA index server (3.2.1) ready.
Setting restore date to today (2022-01-01)
200 Working date set to 2022-01-01.
200 Config set to MyConfig.
501 Host amanda is not in your disklist.
Use the sethost command to choose a host to recover
# amrecover>

Amrecover použije název hostitele, který chcete obnovit. Použili jsme „localhost“ místo „amanda“, musíte pouze říct amrecover, jaký hostitel má použít.

# amrecover> sethost localhost
200 Dump host set to localhost.

a vyberte který disk(datset,adresář) a který soubor(např. passwd) chcete obnovit

#amrecover> setdisk /etc
200 Disk set to /etc.
amrecover> add passwd
Added file /passwd

a obnovte vybraný soubor

#amrecover> extract
Extracting files using tape drive changer on host amanda.
The following tapes are needed: MyData01
Extracting files using tape drive changer on host amanda.
Load tape MyData01 now
Continue [?/Y/n/s/d]? Y
Restoring files into directory /root
All existing files in /root can be deleted
Continue [?/Y/n]? Y
./passwd

CTRL-D pro exit amrecover, a tady je váš soubor

Zálohování jiných systémů – Linux, Windows Solaris atd.

V /etc/amanda/MyConf/amanda.conf již máme připravenou sekci pro zálohování jiných systémů.

define dumptype simple-gnutar-remote {
auth „ssh“
ssh_keys „/etc/amanda/MyConfig/ssh-key“
compress none
program „GNUTAR“
}

Nového klienta přidáme do disklistu

#nano /etc/amanda/MyConfig/disklist


klient2.example.com /test simple-gnutar-remote <—— přidat řádek pro client backup

Nastavení SSH klíčů.
Backup server má nastaveno aby používal ssh klíče v /etc/amanda/MyConfig/ssh-key. Měli bychom tyto klíče vytvořit a bez přístupové fráze, protože Amanda neví, jak heslo zadat.

amanda ~ $ ssh-keygen -f /etc/amanda/MyConfig/ssh-key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/amanda/MyConfig/ssh-key.
Your public key has been saved in /etc/amanda/MyConfig/ssh-key.pub.

Nyní veřejný klíc nakopírujemena klient2
amandabackup@klient2 ~ $ ssh amandabackup@amanda.example.com
The authenticity of host ‚amanda.example.com (2001:470:1f11:826::1)‘ can’t be established.
RSA key fingerprint is e6:a6:0a:8d:ca:6e:43:54:da:cb:1f:de:73:4e:39:5f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‚amanda.example.com,2001:470:1f11:826::1‘ (RSA) to the list of known hosts.
Password:
CTR+C nebo vložte heslo amandabackup z amanda backup serveru
amandabackup@klient2 ~ $ cat ssh-key.pub >> ~/.ssh/authorized_keys

Test SSH z backupserveru:
amandabackup@amanda ~ $ ssh -i /etc/amanda/MyConfig/ssh-key klient2

#amcheck MyConfig

#amreport MyConfig

Spusťte příkazy pro kontrolu komunikace klienta a serveru

Disaster recovery(DR). Obnova po havárii zálohovacího serveru.

Pro případ havárie zálohovacího serveru je zvolen koncept ukládání zálohování dat na NAS. Pokud toto řešení zjednodušíte ukládáním dat na lokální FS zálohovacího serveru jsou vaše data v případu havárie zálohovacího serveru ztracena. DR koncept je řešen tak ze máme DR zálohovací server, ke kterému připojíme NAS a máme přístupná data. Podmínkou je mít na DR backup serveru (klient1) nainstalovaný amanda server, mít z NAS přimountovaný FS /mnt/amanda. Na tomto FS je v hodné udržovat také aktuální konfiguraci produkčního backup serveru (kopie /etc/amanda), kterou překopírujeme v případu DR události na záložní server. Jediné co nebude z konfiguračních souborů aktuální je tapelist, který ale vytvoříme následujícím scriptem.

#!/bin/bash
if grep /mnt/amanda /proc/mounts > /dev/null 2>&1; then
        echo "Mounted";
else
        echo "NOT mounted";
        mount -t cifs -w -o username=nasuser,password=naspassword,uid=34,gid=34,forceuid,forcegid //192.168.4.11/backup /mnt/amanda/
fi
rm /etc/amanda/MyConfig/tapelist;
LOG_DIR="/mnt/amanda/vtapes/**/00000.*";
find $LOG_DIR -type f | while read filename;
do
        line=$(head -n 1 $filename);
        fline=$(echo $line | awk -F' ' '{print $4,$6}');
        fline="${fline} reuse BLOCKSIZE:32 POOL:MyConfig STORAGE:MyConfig CONFIG:MyConfig";
        echo $fline >> /etc/amanda/MyConfig/tapelist;
done
chown amandabackup /etc/amanda/MyConfig/tapelist;
chmod 755 /etc/amanda/MyConfig/tapelist;

Odkazy:

Odkaz pro instalaci Windows clienta: http://docs.zmanda.com/Project:Amanda_Enterprise_3.0/Zmanda_Windows_Client_Users_Manual#Creating_and_Managing_Windows_Templates

Odkaz pro stažení: http://www.zmanda.com/download-amanda.php

Dokumentace:

Amanda.org

https://wiki.zmanda.com

https://zmanda.com/

https://www.oreilly.com/library/view/backup-recovery/0596102461/ch04.html

,