SW pro zalohovani na disk

Martin Povolný martin na solnet.cz
Neděle Leden 16 12:08:27 CET 2005


Jan Kasprzak wrote:
 > 	Zdravim,
 >
 > 	potreboval bych vyresit zalohovani na disk(*) a hledam
 > vhodny software. Mam vetsi disk (systemovy) a mensi disk (pro zalohy).
 > Nemusim zalohovat vsechno (treba data ktera mam i jinde), ale zase bych
 > byl rad, aby zaloha byla neco vic nez jen rsync vybranych adresaru na
 > druhy disk. Co od toho potrebuji?
 >

Mam takovy SW, jmenuje se lnbackup a je z vlastni dilny. Kladli jsme si
zhruba stejne cile a nic jsme nenasli.
Ale nepouziva GRUB, ale LILO (podporu pro GRUB by mohl nekdo dodelat ;-))

Funguje tak, ze na zaloznim disky dela kopii adresaru/systemu, ktery ma
zalohovat.
1. zaloha je full (kopie),
pri dalsich zalohach se nezmenene soubory (testuje se velikost,
vlastnici, prava, casy, nikoliv obsah souboru, zadne md5sum)
hardlinkuji, zmenene se kopiruji.
Kazda zaloha tedy zabere plny pocet iuzlu, ale bloku jen tolik, kolik je
suma bloku zmenenych souboru od minule zalohy.
Bootovatelna kopie v korenu zalozniho disku se dela hardlinkovanim z
posledni zalohy.

Vsechny zalohy se mi tedy tvari jako obraz systemu v dany cas.

Vypis stavu zaloh, pak vypada treba takto:

nejaky-stroj:~# lnstat
lnbackup statistics for: localhost
overall status code:     0
overall status message:

backup start:  Sat Jan 15 23:00:02 CET 2005
backup end:    Sat Jan 15 23:21:07 CET 2005
backup size:   1016473703
backup blocks: 1997288

files unmodified: 236155
files changed:    1381
files new:        480

total objects: 266633
files:         241305
dirs:          18131
symlinks:      2050
blockdevs:     4170
chardevs:      966
sockets:       8
pipes:         3

mirror end:    Sat Jan 15 23:32:00 CET 2005

/mnt/backup/backup/2004/09/17/localhost
/mnt/backup/backup/2004/09/18/localhost
/mnt/backup/backup/2004/09/19/localhost
/mnt/backup/backup/2004/09/20/localhost
/mnt/backup/backup/2004/09/21/localhost
/mnt/backup/backup/2004/09/22/localhost
<... tady chybi moooore radku ...>
/mnt/backup/backup/2005/01/10/localhost
/mnt/backup/backup/2005/01/11/localhost
/mnt/backup/backup/2005/01/12/localhost
/mnt/backup/backup/2005/01/13/localhost
/mnt/backup/backup/2005/01/14/localhost
/mnt/backup/backup/2005/01/15/localhost

jak jsem rikal, kazda zaloha je obraz vlastne systemu, do ktereho se lze
napriklad chrootnout:

nejaky-stroj:~# lnmount; ls /mnt/backup/backup/2004/09/20/localhost;
lnumount
bin   cdrom  etc     home    initrd.img      inst  lost+found  opt
root  tmp  var      vmlinuz.old
boot  dev    floppy  initrd  initrd.img.old  lib   mnt         proc
sbin  usr  vmlinuz


Pokud dojde misto na disku, nebo pokud volne misto klesne pod
nakonfigurovany limit (bloky/iuzly, muze byt v procentech), mazou se
zalohy v poradi od nejstarsi s tim, ze posledni zaloha se nikdy nemaze
(snazi se predejit situaci, kdy by v urcity okamzik neexistovala zadna
zaloha).

System mame nainstalovany na cca 80 strojich a uz nam parkrat zachranil
den ;-)

Obsahuje to prepinac, se kterym lnbackup funguje jako plugin do nagiosu,
ktery kontroluje stav zalohy systemu.

Zalozni disk si sam montuje/demontuje, ale lze pouzit (nedoporucuju) i k
zalohovani na ten samy disk, ktery zalohuje.

Po dosazeni urciteho poctu namontovani si pousti umi pustit fsck.

Konfirurace zalohy vypada asi takto:

{
   :localhost => {
     :dirs => [
       { :dir => '/',     :fs_type => :single,       # nezalohujeme zadne
mount pointy
         :exclude => [ 'tmp/.' ]
       },
       { :dir => '/boot', :fs_type => :single },
       { :dir => '/usr',  :fs_type => :local  },     # chceme zalohovat,
pokud neni pres sit
       { :dir => '/var',  :fs_type => :local,
         :exclude => ['cache/apt/archives/.*deb',
'spool/squid/[A-Z0-9]*/[A-Z0-9]*/.']
       },
       { :dir => '/home', :fs_type => :local,
         :exclude => ['domains/.']
       },
       { :dir => '/opt',  :fs_type => :local },
     ],
     :mirror => true,
   },
}

VOlby pri spusteni:
nejaky-stroj:~# /usr/sbin/lnbackup --help
Usage: /usr/sbin/lnbackup [options]
         --backup-name=NAME           name of pre-configured backup
(localhost)
     -l, --log-file=FILE              file for logging (/var/log/lnbackup)
         --status-file-pref=FILE      prefix for file to store backup
status (/var/log/lnbackup.status), backup name will be added
     -v, --log-level=LEVEL            set log level:
debug,[info],warn,error,fatal
     -c, --config-dir=PATH            configuration directory
     -t, --test                       dry run (test mode)
     -m, --no_mirror                  skip creation of bootable mirror
after backup
     -s, --status                     display lnbackup status information
including list of available backups
         --backup                     run backup
         --mount                      mount backup device ro
         --mountrw                    mount backup device rw
         --umount                     umount backup device
         --nagios                     run as nagios plugin
         --source-prefix=DIR          prefix the source directory given
by configuration
         --force-target=DIR           override backup directory given by
configuration (no mounting is done)        --mirror-only
do only bootable mirror from last backup
         --version                    display help
         --help                       display help


Ma to ale sve mouchy:

1) Je to napsano v ruby (to je vyhoda ;-)), ale ruby1.6 na debian-stable
ma kratke datove typy pro velikosti souboru apod. takze nezazalohuju
vice nez 4GB soubor (resi to nove ruby -- napriklad 1.8, tusim, ze se da
najit i lepe prelozena 1.6, nez je ta v debianu.

2) takto udelany system muze byt nekonzistentni, ze ano, chtelo by to
pouzit neco jako snapshot z LVM, nebo alespon zastavit sluzby.

3) nepodporuje ACL.

Celou vec se chystam uvolnit pod GPL, az z ni budu mit dostatecne dobry
pocit ;-).

Ale muzu to poskytnout hned treba ve forme .deb balicku.



K tomu RAIDu, co tu nekdo navrhoval: zalohovani a RAID1/5 resi kazde
jinou ulohu, kazdy chrani pred necim jinym, i kdyz je tu urcity prekryv.
Pokud mi nekdo rekne, ze RAID nahradi zalohovani, nesveril bych mu zadna
data.


 > - zaloha pokud mozno ve forme stromu souboru a adresaru. Kdyz uz
 > je zalohovaci medium s primym pristupem, bylo by dobre
 > nad daty umet delat find/grep/locate/...

ano

 > - zaloha pokud mozno tak, aby "nejnovejsi verze" byla primo v koreni
 > 	toho disku. Tohle spolu s nainstalovanym GRUBem umozni, aby
 > 	disk bylo mozno v pripade uplne nejvetsi krize proste jen
 > 	zamenit s primarnim a fungovat dal.

ano, bez GRUBu, umi LILO

 > - zaloha budto i starsich verzi (az potud pokud se vejdou) souboru,

ano

 > nebo aspon uchovavani i souboru, ktere na puvodnim disku
 > uz nejsou - aby kdyz si neco smazu a zjistim to za tyden,
 > tak abych mel moznost obnovy ze zalohy. Na druhe strane by si
 > ale zalohovaci system mel drzet informaci o tom, co uz jsem na
 > primarnim disku smazal (abych treba mohl rict ze chci obnovit skutecne
 > jen posledni zalohu a necpaly se mi tam i tyden smazane soubory).
 > Cili treba aktualni stav by byl skutecne rsync vybranych adresaru
 > ze systemoveho disku, a starsi verze nebo smazane soubory by se
 > davaly do samostatneho podstromu.

ano, dokud staci misto na disku

 > - moznost rozumne promazavat starsi verze (kdyz se treba zalohovaci disk
 > zaplni a ja budu chtit uvolnit misto.

ano, automaticky, nebo rucne

 > - spolehlivost (nesmi to spadnout kdyz se zaplni disk - at uz systemovy

ano

 > nebo zalohovaci), nesmi to spadnout kdyz se na disku objevi
 > vadne bloky (a naopak se to musi snazit zazalohovat co nejvic).

castecne, pokusi se preskocit soubory, ktere nejdou precist, zapise je
do logu

za urcitych situaci se ale nemusi chovat 100% korektne, vadny disk je
vadny disk :-(

 > - nemusi to byt rychle ani vypocetne nenarocne - jedna se o stroje ktere
 > bezi nonstop a celou noc nemaji co delat.

;-)

 >
 > 	Samozrejme bych si neco takoveho umel naskriptovat, ale tenhle
 > problem uz snad nekdo resil prede mnou. Vite o necem, co splnuje me
pozadavky?
 >
 > 	Diky,
 >
 > -Y.
 >
 > (*) Moje skore je pet vadnych disku behem poslednich dvou mesicu
 >

Jsme na tom podobne ;-)



Další informace o konferenci Linux