Portál AbcLinuxu, 5. května 2024 10:41


Dotaz: záloha pomoci btrfs send-recieve

23.5.2019 18:00 marek_hb
záloha pomoci btrfs send-recieve
Přečteno: 774×
Odpovědět | Admin
Ahoj, mám chuť vyzkoušet par distribuci na reálném železe a doposud jsem při tom používal na zálohu systemu jakékoli live distro a dd if= of=.

Teď mám všechny disky na btrfs a k zálohám používám btrfs send | recieve. Zatím jen naštěstí nemusel řešit obnovu celého systému - jen jsem vždycky vykopiroval potřebné veci, tak se jen chci ujistit, že mě opačný směr v send | recieve na nově vytvořený btrfs oddíl na původním disku dovede k původnímu a funkčnímu systému

Noví jaký používáte na btrfs postup?

Díky moc

M
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.5.2019 18:11 marek_hb
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebo - ne Novi....
xkucf03 avatar 23.5.2019 22:00 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve

Btrfs send pracuje na úrovni pododdílu, takže pokud pošleš všechny, které potřebuješ (možná máš jen jeden), tak by to mělo být ono.

Nicméně u takovéto úlohy bych se nespoléhal na internetové diskuse ani na dokumentaci a prostě si to vyzkoušel sám. Pokud je těch dat moc, tak si stejnou konfiguraci nasimuluj s menším objemem dat a zkus si je poslat tam a zpátky (resp. na prázdný oddíl).

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
24.5.2019 06:29 marek_hb
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
na systémovém disku mám jeden oddíl, jak jsem psal - řešil jsem to zatím přes dd. Ale máš pravdu, zkusím to na něčem zbytečným a uvidím
4.6.2019 10:59 marek_hb
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
tak opačné send | receive mi neprošlo, ale dal jsem tomu jen jeden pokus a mohl jsem něco zvrzat. Každopádně když jsem vytvořil čistý btrfs oddíl, přes cp -a na něj nakopíroval obsah snapshotu a v pak chrootu nainstaloval grub (z arch instalačního media), bylo všechno ok.

takže zatím postup snapshot běžícího systému (s volbou -r) > sync > btrfs send někam, případně btrfs send -p (poslání přírůstků do už přenesenýho snapshotu) je ok a je to dost návykové pro svoji jednoduchost

zpátky je to vlastně taky v pohodě, ale dd if=/of= je pro změnu jednodušší a nemusí se po něm člověk znova řešit grub
Jendа avatar 23.5.2019 22:07 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nepovažoval bych to za zálohu, protože chyba ve FS ti rozbije i tuto „zálohu“, potenciálně včetně snapshotů.
Já to s tou denacifikací Slovenska myslel vážně.
24.5.2019 06:26 marek_hb
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
on to není úplně celý postup - mám datový a systémový disk na btrfs. Ten systémový jsem pomocí:

>btrfs subvolume snapshot -r / /.snapshots/root-$(date +%Y-%m-%d_%Hhod-%Mmin)

>sync

>btrfs send /.snapshots/root.../ | btrfs receive /media/data/Img/snapshots-root/

poslal na datový disk

a následně další snapshoty pomocí

>btrfs send -p /.snapshots/root... /./snapshots/root...2 | btrfs receive /media/data/Img/snapshots-root

řeším jako přírůstky, pak podle potřeby mažu staré snapshoty

a ten datový i s "obrazem" systémového zase jednou za čas pomocí rnsapshot posílám přes NFS na NAS

takže je to spíš záloha pro případ nějakého kolapsu na systémovém disku, nebo pro případ smazání něčeho co jsem nechtěl

akorát jsem zjistil, že vlastně nevím, jestli bude zpětně fungovat (na úrovni nakopíruj zpátky /etc /home /root určitě bude, ale jestli pomocí send | recieve obnovím celý oddíl/disk jsem ještě nezkoušel)
Jendа avatar 24.5.2019 11:22 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
on to není úplně celý postup - mám datový a systémový disk na btrfs. Ten systémový jsem pomocí:

>btrfs subvolume snapshot -r / /.snapshots/root-$(date +%Y-%m-%d_%Hhod-%Mmin)

>sync

>btrfs send /.snapshots/root.../ | btrfs receive /media/data/Img/snapshots-root/

poslal na datový disk

a následně další snapshoty pomocí

>btrfs send -p /.snapshots/root... /./snapshots/root...2 | btrfs receive /media/data/Img/snapshots-root

řeším jako přírůstky, pak podle potřeby mažu staré snapshoty
Ale přesně to jsem měl na mysli. Představ si, že vznikne chyba, která způsobí, že ten FS nepůjde namountovat. No a ty ji pomocí send a receive zreplikuješ i na tu „zálohu“.
24.5.2019 11:40 marek_hb
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Ted nevim, jestli to dobre chapu - kdyz ten systemovy disk nepujde mountnout, tak ho nikam posilat nebudu, ale zkusim ho z toho datoveho obnovit. A kdyz se sesype i ten, tak na sitovem disku bych mel mit zalohu systemu i dat z doby kdy vsechno fungovalo (na tom sitovem je system tusim nejaky ext4 nebo co - je to zyxel310 s wd red 4TB uvnitr)
Jendа avatar 26.5.2019 00:25 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Ted nevim, jestli to dobre chapu - kdyz ten systemovy disk nepujde mountnout, tak ho nikam posilat nebudu, ale zkusim ho z toho datoveho obnovit.
Měl jsem na mysli situaci, kdy vznikne chyba, systém stále běží, ale po rebootu už to mountnout nejde. (přiznám se, že jsem takovou chybu ještě nezažil, ale jinak mi btrfs dělalo „corrupt leaf“ i když pravidelný scrub bez problémů procházel)
A kdyz se sesype i ten, tak na sitovem disku bych mel mit zalohu systemu i dat z doby kdy vsechno fungovalo
Jo, to jo, ale asi bude starší než poslední snapshot.
26.5.2019 06:51 marek_hb
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Měl jsem na mysli situaci, kdy vznikne chyba, systém stále běží, ale po rebootu už to mountnout nejde. (přiznám se, že jsem takovou chybu ještě nezažil, ale jinak mi btrfs dělalo „corrupt leaf“ i když pravidelný scrub bez problémů procházel)

já už jo - na archu asi 2x co pamatuju - jednou to byl nějaký bugr v nvidia ovladačích řady 340, podruhé nesoulad mezi aktualizací jádra a zase ovladačů grafiky

první vyřešilo, že jsem chvíli (možná měsíc - už si to nepamatuju, ale řešil jsem to i tady na abičku) jel na nouveau ovladačích a pak reinstaloval, druhé se bylo ráno opraveno - pacman Syu stáhnul novou verzi a bylo to ok

při obojím to ale nešáhlo na data - z konsole, nebo live distra jsem je byl schopný obsluhovat.

tím jsem se dostal k postupu, kdy zálohy dělám ráno, když počítač naběhne a tváří se funkčně, nebo když vidím nějakou větší aktualizaci, tak před ní + o co nechci přijít mezi aktualizací a před vypnutím (nebývá toho zas až tolik) kopíruju mimo zálohy na další disk, at to mám aspoň 2x

a jo - na sítovém je záloha starší, ale to beru jako přijatelné riziko - je to domácí počítač a nejdůležitější data (fotky/filmy) se tak často nemění a dost často jsou třeba ještě ve foťáku, nebo kameře - tam je mažu až když potřebuju místo na kartě

spíš teď louskám, jak funguje to send | recieve - jako princip se mi to dost líbí
26.5.2019 07:09 marek_hb
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
ach jo - nějak jsem zaměnit mountnout nejde a nenaběhne grafika - sorry - vzal jsem to obecně jako "pakarna po aktualizaci"
xkucf03 avatar 24.5.2019 11:44 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve

Stejně tak můžeš říct, že mít disky, řadiče, paměti, procesory… jedné značky je riziko, protože by v nich mohla být chyba, která způsobí poškození dat. Pokud se např. spokojíš s tím, že RAM prošla memtestem nebo má ECC, tak proč se nespokojit s tím, že souborový systém prošel tvými testy a i sám počítá kontrolní součty dat?

Takže ono to není tak černobílé, není to buď a nebo – jde spíš o to, kde si nastavíš tu hranici a proti jakým rizikům se ještě chceš chránit.

Jasně, pokud to budou nějaká životně důležitá data, tak bych je pravděpodobně taky zduplikoval na dva různé FS1 nebo ta nejdůležitější vytiskl na papír :-) Ale asi bych se vyhnul kategorickým soudům typu: „když je to stejný typ FS, nejde to považovat za zálohování“.

A spíš než dávat data „jen tak pro jistotu“ na různé FS mi přijde smysluplnější nějak kontrolovaně upgradovat Jádro a ověřovat, že po aktualizaci daný FS funguje pořád stejně dobře. Tzn. mít nějakou sadu testů, která bude ověřovat integritu dat na disku a pouštět ji na různých prostředích. Takže pokud by se v nové verzi objevila chyba, můžu zastavit aktualizace a nenechat si zničit data tam, kde mám zálohy.

[1] např. plné zálohy dělal na jiný FS a inkrementální dělal přes snapshoty odesílané jen na jiný disk se stejným typem FS

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Jendа avatar 26.5.2019 00:33 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
sám počítá kontrolní součty dat
Pozor, kontrolní součty u btrfs pouze říkají, že tam je to, co tam zapsal, nikoli že je FS konzistentní.
Takže ono to není tak černobílé, není to buď a nebo – jde spíš o to, kde si nastavíš tu hranici a proti jakým rizikům se ještě chceš chránit.
Jo, je škála možností od lidí, co tvrdí, že zálohy nepotřebují protože mají RAID1, po lidi, co data tesají do kamene. Já jsem jenom chtěl upozornit na tohle riziko, které podle mě není na první pohled úplně zjevné (alespoň pro člověka jako já co do teď dělal zálohy rsyncem/rdiff-backupem) a pro mě osobně už je trochu přes čáru (hlavně vzhledem k tomu co jsem s btrfs zažil).
tak bych je pravděpodobně taky zduplikoval na dva různé FS
Tady nejde o to aby to byly dva různé FS (ve smyslu ext4 a XFS), ale aby se nepoužíval ten přímý způsob replikace změn.
Josef Kufner avatar 26.5.2019 02:06 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Ono tady bude hodně záležet na tom, jak je přesně send/receive implementováno. Pokud je to nějak slušně udělaný diff na dostatešně abstraktní úrovni, tak je dost velká šance, že to tu chybu nezreplikuje. Pokud by to byl binární log změn struktur filesystému, tak by se ty chyby asi propsaly. Ví někdo, jaká je realita?
Hello world ! Segmentation fault (core dumped)
26.5.2019 07:04 marek_hb
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Ví někdo, jaká je realita?

já zatím ne prosím :)
28.5.2019 08:09 j
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
To nedela zadnej diff, veme to ulozenej snap a 1:1 ho to prenese na cil, kde z toho vznikne snap. Jinak receno, veme to bloky ktery se od minule zmenily a pochopitelne nejaky ty metadata na tema kterej blok k cemu patri.

Pokud budes mit poskozeny soubory na zdroji a ty soubory se menej, tak se to poskozeni prenese, ale je to dost nepravdepodobny, protoze poskozenej soubor dost pravdepodobne povede k tomu, ze ho aplikace odmitne pouzivat, a tudiz se nezmeni a neprenese. Soubory ktery se nemenej (= fs na nich nezaznamenal zapis) se vubec neprenasej, takze pokud by doslo k poskozeni souboru aniz by to FS zaznamenal jako jeho zmenu, tak se vubec neprenese = poskozenej soubor zustane jen na zdroji.

Defakto jedina +- predstavitelna varianta jak docilit replikace chyb je, ze fs znici data v okamziku, kdy je aplikace zapisuje, ale na to prevazne pomerne rychle prijdes, protoze data ktera zapisujes prevazne i opakovane ctes, a tudiz se ti znicena vratej obratem, coz by melo vist k tomu, ze rozhodne neprepises celou historii zaloh vadnejma datama.
Josef Kufner avatar 28.5.2019 12:21 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
To nedela zadnej diff, […]. Jinak receno, veme to bloky ktery se od minule zmenily […]
Tedy, udělá to diff. Že se ten diff počítají snapshoty průběžně je druhá věc. Právě proto se ptám, jak to btrfs dělá interně, neboť od toho se odvíjí odolnost vůči chybám a chování v krajních případech.
Hello world ! Segmentation fault (core dumped)
28.5.2019 13:50 j
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Jenze snapshot neni diff a nic nepocita. Predstav si to jako hromadu, na kterou vozis hlinu(=zapisujes data). Pak pred tu hromadu das zavoru (vytvoris snapshot - a presne proto se vytvori "hned", nic nedela) a zacnes vyrabet dalsi hromadu. Puvodni hromada se uz nemeni a zustava na miste, vedle roste nova hromada ... a takovych muzou byt samozrejme klidne tisice.

Mno a kdyz nejakou hlinu potrebujes (chces precist data), beres je vzdy od nejnovejsi hromady = pokud blok najdes, skoncil si (coz pochopitelne znamena potencielne obri fragmentaci, pokud tech snapu je hromada).

28.5.2019 16:27 marek_hb
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
ale jestli tomu dobře rozumím (hrabu se v tom trochu víc do hloubky poprvé - zatím jsem řešil zálohy trochu jinak) - tak když vytvoříš hromadu uvnitř skládky a pak chceš dát závoru před samotnou skládku, tak se původní hromada do té skládky nezahrne - zůstane tam jen pojmenovaná závora, ale za ní nic - je to tak?:

[root@archlinux marek]# ls /media/data/Zalohy/ arch deska lko snapshots-data snapshots-root

(snapshot /media/data/ je uložený do /media/data/Zalohy/snapshots-data)

[root@archlinux marek]# ls /media/data/Zalohy/snapshots-root/root-2019-05-28_16hod-01min/

bin boot dev etc home kdeinit5__0 lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

[root@archlinux marek]# ls /media/data/Zalohy/snapshots-data/data-2019-05-28_16hod-11min/Zalohy/snapshots-root/root-2019-05-28_16hod-01min/

[root@archlinux marek]#

snad jsem to napsal trochu srozumitelně a dá se to pochopit - když tak mě nekamenujte prosím
28.5.2019 16:19 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Cele sa to da iba vdaka COW, kde sa tusim do zapisovaneho bloku pise stale globalne vzdy inkrementovane cislo "verzie". Spravenie snapshotu je len poznamenanie, pri akom cisle nastalo, aby do tohoto snapshotu zobrazoval len bloky starsie ako toto cislo. A podla toho aj pozna "btrfs send", ktore bloky maju cislo verzie v pozadovanom intervale a len tie vyexportuje.

Mozno je to uplne inak, ale tak nejak si to pamatam z cias, ked send/receive bola planovana novinka.

Takze vyssie si dostal aj odpoved, ze ak sa ticho na disku poseru bity, tak sa to neprepise do zalohy, pretoze to nie je "oficialny" update bloku a "send" si ho nevsimne.
If you hold a Unix shell up to your ear, you can you hear the C.
Josef Kufner avatar 28.5.2019 16:47 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Ano, COW je klíčová vlastnost na které snapshotování v btrfs stojí.
[…] tak sa to neprepise do zalohy, pretoze to nie je "oficialny" update bloku […]
A jak se liší oficiální od neoficiálního? Na disku ty bity jsou stejně ať je někdo zapsal úmyslně, nebo se změnily chybou. Asi někde nebude sedět nějaký checksum. Otázka je, co s tím btrfs send/receive provede, zda ten checksum bude v daný okamžik kontrolovat a zda pochroumaný blok prostě nepošle dál tak, jak je. V těchto situacích to bude navíc doprovázené nějakou chybou v implementaci toho filesystému, takže stát se může prakticky cokoliv a je na přijímajícím konci, aby si s tím poradil a zajistil konzistenci a úplnost zálohy (nebo to alespoň ohlásilo chybu).
Hello world ! Segmentation fault (core dumped)
Jendа avatar 28.5.2019 18:55 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: záloha pomoci btrfs send-recieve
Asi někde nebude sedět nějaký checksum.
Ne, checksumy se v btrfs počítají právě z těch bloků, ale už nic neříkají o konzistenci FS. Podařilo se mi vyrobit btrfs, které projde scrubem (který tyto checksumy kontroluje), ale čtení souboru skončí s corrupt leaf.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.