Linux mini-howto? Krátce o nástrojích ze života sysadmina.
Zálohování s rdiff-backup
Poslední dobou je na scéně kolem filesystémů pro Linux opět trochu život, upřímně chtěl bych stabilní filesystém s podporou snapshotování, co máme k dispozici? BTRFS není stable (netvrdím, že nedrží data, ale na produkci?, zatím stále ne), ZFS se mi líbí moc moc, prošel ohněm, je vyspělý, ale na produkci, když není v jádře a je to port ze Solarisu, kvůli kterému se musela napsat část “runtime” prostředí Solarisu, netvrdím, že to nejde, vpsFree.cz a Pavel Šnajdr dokazuje opak, ale pro komerční prostředí a support to není možné, respektive nepřistoupí na to.
Nově se nám na scéně ukazuje bcachefs, těžko cokoliv hádat, je to tak mladé (srpen 2015, https://lkml.org/lkml/2015/8/21/22) a slibuje to mnoho vlastností BTRFS a ZFS, nechme se překvapit. Ano pak tu máme LVM a snapshoty, ale LVM není filesystém a do dat o vrtstvu “vejš” nevidí, je moc fajn, ale né samospasitelné.
Nově se na scéně objevil (byl uvolněn) jaderný modul Datto Block Driver, modul přidává podporu pro snapshotování a inkrementální zálohování pro libovolné blokové zařízení (“přidává” COW, copy-on-write vlastnost trackováním write systémového volání, ze zdrojového kódu je vidět, že hookuje syscall table), aktuálně testuji, hraju si, čtu kód na workstation a samostatném disku, subjektivně je to dost rychlé.
Peleton nám uzavíra XFS filesystém, který používáme na produkci a na vše ostatní je tu EXT4, ani jeden z těchto filesystémů nepodporuje snapshoty.
rdiff-backup
Co používáme a proč? Chceme inkrementálně zálohovat data (ať už adresáře mezi sebou nebo přes síť), mít možnost jednoduše procházet zálohy a vracet se v čase, mazání starších záloh než XY, zrcadlový obraz původních dat, ACL, uchovávat pouze rozdíly, nenáročnost na přenosové pásmo, jednoduchost.
- rdiff-backup
- rdiff-backup-fs
Rdiff-backup je nástroj napsaný v Pythonu a splňuje naše potřeby, http://www.nongnu.org/rdiff-backup/features.html, uvnitř je postaven na knihovně librsync , existuje určitě bezpočet skvělých scriptů postavených nad rsync nástrojem a potulujích se po internetu, ale proč nepouží rdiff-backup přímo z repositáře.
Skvělou možnost přidáva právě rdiff-backup-fs, což je modul pro FUSE (Filesystem in Userspace), díky němu je možné připoji (mount) zálohy do adresářové struktury a získat tak přístup ke “snapshotům” dat v čase formou adresářů v mount složce s datumem a časem pořízení zálohy.
S takto udělaným backup se dá trochu čarovat a zpřístupnit zpětně uživateli jeho zálohy jako read-only, např. přes Sambu, NFS apod., přiznávám není to tak elegantní jako udělat na ZFS snapshot pool/test@mojezaloha a mít to vše včetně read-only.
Dnes to bude bez praktické ukázky, jednak nechci ukazovat data ze záloh na produkci ani osobní workstation a druhak je to velmi jednoduché.
rdiff-backup dir1 dir2 rdiff-backup dir1 user@system::/dir2 # nejnovější obnova rdiff-backup -r now /backupdit/data1 /obnova/data1 # obnova stav před 5 dny rdiff-backup -r 5D /backupdit/data1 /obnova/data1 # obnova stav k datu rdiff-backup -r 2015-09-20 /backupdit/data1 /obnova/data1 # odstranění záloh starší než ... rdiff-backup --remove-older-than 31D /backupdir/data1 # rdiff-backup-fs (FUSE), mount zálohy přes FUSE # --- rdiff-backup-fs /mnt /backupdir/data1 ls -la /mnt umout /mnt
Pozn 1.: Pokud budete obnovovat data do stejné složky odkud probíhala záloha a pujde o přepis tak rdiff bude křičet, je nutné použít parametr –force.
Pozn 1.: K rdiff-backup-fs mount složce je nutné přistupovat jako root (dáno std FUSE technologií), pokud se to nehodí mrkněte do /etc/fuse.conf.
Rdiff-backup má jako většina nástrojů v unixech “hromadu” přepínačů, studujte man rdiff-backup.
A to je vše, užívejte moudře a zálohujte, díky za pozornost.
František Havel, MOJEservery.cz