V tomto clanku si ukazeme ako na BAREOS co je fork Baculi, software povodne urceny na zalohovacie pasky, ktory vie zalohovat VM.
Po dlhych skusaniach, uvahach a hladani na nete som nasiel spolahlivy a hlavne funkcny backupovaci nastroj pre virtualne prostredie, pre mna hlavne v Proxmoxe. Kedze proxmox nema (ma ale cez ofajc) inkrementalne zalohy cez VZDump tak potrebujem hlavne nie cely "obraz disku" ale pristup k jednotlivym suborom a setrim miesto inkrementalnymi a diferencialnymi zalohami.
Rozhodol som sa ze ako zaklad pouzijem CentOS 7, hlavne kvoli svojej stabilite, dlhej podpore a ma priamo repozitar na najnovsi bareos. V dobe instalacie bola posledna verzia 18.2 a v dobe pisania clanku 19.2 avsak upgrade som este nerobil.
Instalaciu VM nebudem popisovat to ratam ze kazdy zvlada kto chce riesit nieco podobne. Ma to aj svoju internu DB, bezi mi to na MariaDB s jednym malym rozdielom ze nieje na locale ale mimo v Galera Clustri. Tu budem popisovat instalaciu s DB na localhoste pod MariaDB. Taktiez storage nebude na locale ale na NFS na inej masine v sieti.
Mala predpriprava
Zmena hostname:
Dolozita vec je mat DNS zaznamy na sieti v poriadku a teda aj hostname na samotnom bareos VM - budeme volat "server"
hostnamectl set-hostname bareos
Vypnutie SELinux:
Niekto ho vypina, niekto nie. Ja si pristup k masinam postrazit viem a ak mozem tak ho vypinam. Ked by sme ho nevypli treba este pamatat na povolenie
setenforce 0
reboot
Pridanie bareos repo:
wget -O /etc/yum.repos.d/bareos.repo http://download.bareos.org/bareos/release/latest/CentOS_7/bareos.repo
Instalacia
Instalacia MariaDB
yum install mariadb-server -y
Zapnutie sluzby:
systemctl start mariadb.service systemctl enable mariadb.service
Instalacia bareos:
Trebalo zinstalovat samotny bareos, bareos mysql connector a webatko
yum install bareos bareos-database-mysql bareos-webui -y
MariaDB konfiguracia:
Upravime konfigurak:
vi /var/lib/bareos/.my.cnf
[client] host=localhost user=root password=PASSWORD
Dalej nepotrebujeme konfigurovat, mame na to scripts:
/usr/lib/bareos/scripts/create_bareos_database /usr/lib/bareos/scripts/make_bareos_tables /usr/lib/bareos/scripts/grant_bareos_privileges
Instalacia apache a php:
yum install httpd php php-cli php-common -y
Start sluzieb:
systemctl start bareos-dir systemctl start bareos-sd systemctl start bareos-fd systemctl start httpd
a nasledne start po starte:
systemctl enable bareos-dir systemctl enable bareos-sd systemctl enable bareos-fd systemctl enable httpd
Bareos ma 3och daemonov. Prvy je director, druhy storage daemon a posledny je file daemon.
Vytvorenie konfigu pre web pristup:
vi /etc/bareos/bareos-dir.d/console/admin.conf
a bachneme tam toto:
Console { Name = admin Password = PASSWORD Profile = webui-admin TLS Enable = No }
Pristup do admin konzoly:
bconsole
a ked sme uz tam a robili sme zasahy do konfiguracie tak treba to reloadnut:
reload
a nasledne vystupime z nej:
q
a restart directora:
systemctl restart bareos-dir
Webatko:
Na webatko sa dostanem cez:
http://IP/bareos-webui
Dalsie konfigy:
Vytvorenie konfigu na zalohovanie.
vi /etc/bareos/bareos-dir.d/fileset/LinuxAll.conf
FileSet { Name = "LinuxAll" Description = "Backup all regular filesystems, determined by filesystem type." Include { Options { Signature = MD5 # calculate md5 checksum per file One FS = No # change into other filessytems FS Type = btrfs FS Type = ext2 # filesystems of given types will be backed up FS Type = ext3 # others will be ignored FS Type = ext4 FS Type = reiserfs FS Type = jfs FS Type = xfs FS Type = zfs Compression = GZIP noatime = yes } File = / } # Things that usually have to be excluded # You have to exclude /var/lib/bareos/storage # on your bareos server Exclude { File = /opt/db File = /var/db File = /opt/var File = /opt/mysql File = /var/lib/bareos File = /var/lib/bareos/storage File = /var/cache File = /mnt/backup File = /proc File = /tmp File = /var/tmp File = /.journal File = /.fsck } }
Vytvorenie definicie jobu:
vi /etc/bareos/bareos-dir.d/jobdefs/BackupLinuxConfig.conf
JobDefs { Name = "BackupLinuxConfig" Type = Backup Level = Incremental Client = bareos-fd FileSet = "LinuxAll" Schedule = "WeeklyCycle" Storage = NFS Messages = Standard Pool = Incremental Priority = 1 Write Bootstrap = "/var/lib/bareos/%c.bsr" Full Backup Pool = Full Differential Backup Pool = Differential Incremental Backup Pool = Incremental }
Zmena konfigov POOLs:
vi /etc/bareos/bareos-dir.d/pool/Full.conf
Pool { Name = Full Pool Type = Backup Recycle = no # Bareos can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Action On Purge = Truncate Volume Retention = 100 days # How long should the Full Backups be kept? (#06) Label Format = "${Client}-${Level}-${Year}-${Month}-${Day}-${Hour}-${NumVols}" # Volumes will be labeled "Full-<volume-id>" Maximum Volume Jobs = 1 Storage = NFS }
vi /etc/bareos/bareos-dir.d/pool/Differential.conf
Pool { Name = Differential Pool Type = Backup Recycle = no # Bareos can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Action On Purge = Truncate Volume Retention = 65 days # How long should the Differential Backups be kept? (#09) Label Format = "${Client}-${Level}-${Year}-${Month}-${Day}-${Hour}-${NumVols}" # Volumes will be labeled "Differential-<volume-id>" Maximum Volume Jobs = 1 Storage = NFS }
vi /etc/bareos/bareos-dir.d/pool/Incremental.conf
Pool { Name = Incremental Pool Type = Backup Recycle = no # Bareos can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Action On Purge = Truncate Volume Retention = 32 days # How long should the Incremental Backups be kept? (#12) Label Format = "${Client}-${Level}-${Year}-${Month}-${Day}-${Hour}-${NumVols}" # Volumes will be labeled "Incremental-<volume-id>" Maximum Volume Jobs = 1 Storage = NFS }
Budeme zalohovat tak ako je na tomto grafe:
Skontrolujeme zakladny scheduling ktory je v defaulte viac nez dobry:
less /etc/bareos/bareos-dir.d/schedule/WeeklyCycle.conf
Schedule { Name = "WeeklyCycle" Run = Full 1st sat at 21:00 # (#04) Run = Differential 2nd-5th sat at 21:00 # (#07) Run = Incremental mon-fri at 21:00 # (#10) }
Zmena storage-u z local na nase namountovane NFS:
vi /etc/bareos/bareos-sd.d/device/FileStorage.conf
Device { Name = FileStorage Media Type = File Archive Device = /mnt/backup/bareos LabelMedia = yes; # lets Bareos label unlabeled media Random Access = yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; Description = "Backup na NFS" Maximum Concurrent Jobs = 1 }
Este to treba zmenit tu:
vi /etc/bareos/bareos-dir.d/storage/File.conf
Storage { Name = NFS Address = bareos.nasa.domena # N.B. Use a fully qualified name here (do not use "localhost" here). Password = "tu by malo byt vygenerovane automaticky" Device = FileStorage Media Type = File }
Zmena v hosts:
Pre lepsie fungovanie je zo skusenosti dobre dat rucne klientov do hosts konfigu ale iba v pripade ze nemate dobre nastavene DNSko.
vi /etc/hosts
127.0.0.1 bareos localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.1.1 bareos IP serveru bareos bareos.nasa.domena IP klienta klient klient.nasa.domena
Restart sluzieb:
systemctl restart bareos-dir systemctl restart bareos-fd systemctl restart bareos-sd
Pridanie klienta - a k a to co sa ma zalohovat, spustenie
Server bezi, mozeme skontrolovat ci nam vsetky sluzby bezia
Instalacia na Debiane:
Klienta si dame na Debiane, debian ma bareos-fd (client) priamo v repo avsak starsiu verziu ale to nevadi lebo na servery mame vyssiu.
apt install bareos-client -y
Pri CentOSe by sme museli zasa pridat repo a nasledne:
yum install bareos-fd
Spustenie sluzby po starte:
systemctl enable bareos-fd
Pridanie klienta na Bareos server:
bconsole configure add client name=HOSTNAME address=IP_ADDRESS password=SUPER_silne_Heslo q
Nakopirovanie konfigu na klienta, ja mam zmeneny ssh port na 322
scp -P 322 /etc/bareos/bareos-dir-export/client/HOSTNAME/bareos-fd.d/director/bareos-dir.conf root@IP:/etc/bareos/bareos-fd.d/director/bareos-dir.conf
Nasledna zmena prav suboru na klientovi:
chown bareos:bareos /etc/bareos/bareos-fd.d/director/bareos-dir.conf
Start sluzby na klientovi:
systemctl start bareos-fd systemctl restart bareos-fd
Vytvorenie JOB konfigu na servery:
vi /etc/bareos/bareos-dir.d/job/hostname.conf
vlozime tam totok:
Job { Name = "HOSTNAME" JobDefs = "BackupLinuxConfig" Client = "HOSTNAME" Write Bootstrap = "|/usr/bin/bsmtp -h root@localhost -f \"\(Bareos\) \" -s \"Bootstrap for Job %j\" NAS@MAIL.SK" }
Zmenime prava:
chown bareos:bareos /etc/bareos/bareos-dir.d/job/HOSTNAME.conf
Reload a spustenie jobu:
bconsole reload run job=hostname
Potvrdime:
yes q
Par schopnych prikazov z bconsole:
list storages list pools show jobdefs show filesets status dir status client=HOSTNAME
Teraz vieme pozriet na webe ako sa nam to krasne zalohuje. Bareos ma este jednu taku peknu speci vec, standartne zalohuje iba jeden job a ked ho spravy tak ide na dalsi. Treba si predstavit ze to kam zapisuje su normalne pasky a teda iba jedna paska vie bezat naraz. Ale ked nastavime kompresiu GZIP tak mam odskusanych 30 VM vie zbehnut za par hodin.
P.S.: dokazeme zalohovat aj Windejsi docela pekne a rychlo.
Pekné. Ale neskúšal si na tom deduplikáciu?
Nie. Nemal som preco. Sice by sa nasli VM ktorym by som usetril dost miesta tymto ale zatial s priestorom nebojujem.
Škoda. Zaujímalo by ma ako to má riešenú expiráciu deduplikovaných dát na páskach, alebo obnovu z nich. Predsa len, pásky niesú blokové zariadenia a treba ich pretáčať na určitú pozíciu.
Ale ty asi páskové mechaniky nepoužívaš.
Nie nepouzivam. Hladal som vhodny soft na inkrementalne/ diferencialne zalohy z proxmoxu.
bareos podporuje deduplikaciu...?
Nestudoval som neviem:
https://docs.bareos.org/TasksAndConcepts/FileDeduplicationUsingBaseJobs.html
ale to je deduplikacia na urovni filesystemu, ktoru si riesi interne sam bareos...
imho miesto
je praktickejsie
takze kazdy job (full, diff, inc) je v samostatnom subore. potom sa zalohy mozu napr. kludne mazat (v pripade potreby) a neovplyvni to ostatne zalohy atd...
Hej viem. Vcera som sa s tym hral este a trochu dost som pozmenil. Vlastne skoro vsetko :)
Zistil som ze mi to nevyhovuje a ze je v tom bordel. Upravim clanok.
no pravdupovediac, vzhladom na komplexnost bareos, by si ten clanok musel fest upravit, aby mal aspon aku-taku vypovednu hodnotu...
No pekne si to celkom spravil. Zaujima ma ci to ide aj na Centose 8 lebo za 4 roky Cs7 uz asi bude pomaly koncit a chcel by som pokracovat v tomto, lebo nic lepsie pomerne jednoduche (mohlo by aj toto byt este jednoduchsie) zadarmo na zalohovanie nemam. Pripadne porad ak vies o niecom. Pasky nepouzivam len NAS a pod.