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