abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:22 | IT novinky

    Společnost BenQ uvádí na trh novou řadu monitorů RD určenou pro programátory. První z nich je RD240Q.

    Ladislav Hagara | Komentářů: 2
    dnes 13:00 | IT novinky

    Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem nadále zůstává Frontier od HPE (Cray) s výkonem 1,206 exaFLOPS. Druhá Aurora má oproti loňsku přibližně dvojnásobný počet jader a dvojnásobný výkon: 1,012 exaFLOPS. Novým počítačem v první desítce je na 6. místě Alps. Novým českým počítačem v TOP500 je na 112. místě C24 ve Škoda Auto v Mladé Boleslavi. Ostravská Karolina, GPU

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 10:11 | Nová verze

    GHC (Glasgow Haskell Compiler, Wikipedie), tj. překladač funkcionálního programovacího jazyka Haskell (Wikipedie), byl vydán ve verzi 9.10.1. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 09:22 | Nová verze

    Po 9 týdnech vývoje od vydání Linuxu 6.8 oznámil Linus Torvalds vydání Linuxu 6.9. Přehled novinek a vylepšení na LWN.net: první a druhá polovina začleňovacího okna. Později také na Linux Kernel Newbies.

    Ladislav Hagara | Komentářů: 0
    11.5. 18:22 | Nová verze

    Byla vydána verze 0.2.0 v Rustu napsaného frameworku Pingora pro vytváření rychlých, spolehlivých a programovatelných síťových systémů. Společnost Cloudflare jej letos v únoru uvolnila pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 0
    10.5. 19:11 | Nová verze

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 15
    10.5. 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    9.5. 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 22
    9.5. 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 61
    9.5. 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (70%)
     (7%)
     (11%)
     (12%)
    Celkem 204 hlasů
     Komentářů: 13, poslední dnes 14:49
    Rozcestník

    Dotaz: Snapshot běžícího systému

    12.1.2020 14:31 TSV
    Snapshot běžícího systému
    Přečteno: 659×
    Ahoj, mám systém nainstalovaný na disku s souborovým systémem btrfs. Co se stane, pokud za běhu systému vytvořím snapshot celého filesystému jakožto zálohu předchozího stavu? Půjde z toho nabootovat? Předpokládám že by mělo a bude se to chovat jako bych počítač v okamžiku snapshotu natvrdo odpojil z elektriky, ale nejsem si jistý. S tím souvisí druhá věc. Je možné nějakým způsobem udělat snapshot ještě před startem systému, tj. asi přímo z Grubu?

    Řešení dotazu:


    Odpovědi

    Heron avatar 12.1.2020 15:07 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    BTRFS snapshot je atomický snímek v určitém čase, to nejde srovnávat s vypnutím od elektriky. Pokud nějaká appka během pořízení snapshotu zapisuje na disk, tak pokud to dělá dobře, tak její data budou plně validní. Snapshoty se používají běžně při zálohách VM běžících serverů a obnova takto zálohovaného vmka je plně funkční a data jsou zcela v pořádku. Takže tohoto se není třeba bát. Pokud by tam byl nějaký "vadný" program nebo služba, tak tu lze na dobu pořízení snapshotu stopnout (nebo ji uvést do stavu, aby na chvíli nezapisovala na disk).

    Pořídit snapshot jde i z jiného systému. Takže stačí nabootovat nějaké rescue cd nebo jiný systém a z toho pořídit snapshot FS na jiném disku.
    15.1.2020 08:42 j
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Nebudou, pises nesmysly. Konzistentni bude filesystem, ale ne data na nem. Typicky (ale nejen) databaze. Aby ta data konzistentni byla, je treba bezicim aplikacim sdelit, ze se neco bude dit, a to opet typicky databaze umi ... za predpokladu, ze jsou spravne nainstalovany => transakcni logy jsou na jinym disku/partysne nez data.

    Funguje to tak, ze aplikace zaridi konzistenci dat, a pak odpovi ze je pripravena, teprve pak se udela snap, a aplikaci se sdeli ze hotovo, ze muze dal zapisovat. Po dobu vytvareni snapu se pochopitelne nezapisuje vubec, nebo prave do transakcnich logu na jinym disku.

    Presne stejne se chova jakykoli snap VM => konzisteneni bude FS, nikoli data.

    Ano, typicky to stroj prezije bez zasadni uhony, a typicky vyvojari databazi pocitaji s tim, ze to muze neocekavane lehnout. Ale rozhodne to neni bezpecny zpusob jak vyrobit zalohu. A ano, chova se to temer presne jak pise tazatel, proti vytrzeni napajeni je tam rozdil minimalni.

    ---

    Na widlich tuhle funcionalitu (teoreticky) zajistuje VSS, a hypoteticky aplikace muze vedet, ze se ten snap vytvari, pokud (a to je ten zakopanej pes) s tim pocita vyvojar aplikace. Tech hypotez je tam navic tolik, ze to nedeporucuje pro vlasni SQLko pouzivat ani sam M$ (respektive negarantuje, ze vytvorenej snap bude konzistentni).
    15.1.2020 09:04 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Ale databáza sa dá prepnúť do módu pre backup, a vedela to už v minulom tisícročí.
    15.1.2020 11:43 rastos | skóre: 62 | blog: rastos
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    aby ta data konzistentni byla, je treba bezicim aplikacim sdelit, ze se neco bude dit
    Opäť malá technická otázka: existuje na Linuxe na to nejaký systémový mechanizmus? Môže napr. moja aplikácia reagovať na to, že sa chystá urobiť "btrfs snapshot ..." ?
    Josef Kufner avatar 15.1.2020 12:01 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Neexistuje. Ani nevím, že by to nějaké jiné programy než databáze vůbec řešily.

    Pokud program něco načte, chvíli zpracovává, a pak uloží, tak bohatě stačí nesmazat stará data před zápisem nových. Hodně programů ukládá data vytvořením nového souboru vedle cílového a teprve když je nový soubor hotov a uzavřen, tak ho přejmenuje na ten starý (což je atomická operace).

    Aplikace, které pracují s daty trvale, typicky pracují nad databází a tudíž to nemusí řešit. Aplikace, které něco dlouho počítají, si zas ukládají průběžné výsledky, ale to obvykle je v podstatě jen připisování do logu.
    Hello world ! Segmentation fault (core dumped)
    12.1.2020 20:40 rastos | skóre: 62 | blog: rastos
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Pokud nějaká appka během pořízení snapshotu zapisuje na disk, tak pokud to dělá dobře, tak její data budou plně validní.

    Um, čo konkrétne znamená to "dělá dobře"?
    Heron avatar 12.1.2020 21:28 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Tak řešení je víc. Asi nejjednodušší je použití nějakých atomických operací (třeba přejmenování souboru). Appka zapisuje data do nového souboru, potom jej flushne (fdatasync nebo tak něco) a potom jej přejmenuje na uživatelem očekávaný název (nebo zkrátka konečný název). Když se tento řetězec operací někde přeruší, tak výsledkem je buď validní starý soubor, nebo validní nový soubor. Snapshot tedy může zasáhnout kdykoliv a je to vždy konzistentní.

    Nebo jak to řeší některé DB. Vedou si log o provedených operacích, tento log je atomicky ukládán na disk (třeba po 4k blocích) a v případě výpadku je podle tohoto logu možné zrekonstruovat datový soubor (který samotný už konzistentní být nemusí, typicky může obsahovat více verzí daného záznamu). Tj. když snapshotuju běžící postgresql, tak ten si jen při startu přehraje wal log a je to.

    Nikdy jsem nenarazil na problém. Navíc snapshot v tomto případě provádí přímo FS samotný, takže FS ví, jaké operace jsou zrovna v běhu. Třeba snapshot pomocí LVM umí informovat FS, že by se měl freeznout ale už je to jedna vrstva navíc. vmware taky přes toolsy posílá info do vmka a na chvíli zastaví io operace.

    Obecně si myslím, že by pro "spolehlivé snapshotování" nemělo být potřeba nic navíc, není potřeba nijak informovat služby apod., protože všechny zápisy mají být i z jiných důvodů (viz kauza ext4 a poškozených konfigů) provedeny správně. Což taky většinou jsou už jenom tím, že většina služeb buď data na disk nezapisuje vůbec a pokud ano, tak ti na to stejně vezmou sqlite nebo BDB nebo rovnou "velké" databáze.
    12.1.2020 21:41 rastos | skóre: 62 | blog: rastos
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Nad tým prvým spôsobom som dumal. A nemusí to byť celkom triviálne. Pretože aplikácia by sa potom mala postarať napr. aj o okopírovanie prístupových práv (vrátane ACL) alebo riešiť to, keď je to symlink.
    15.1.2020 08:50 j
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Databaze si zapise ... rekneme polozky nejakyho dokladu ... v tenhle okamzik udelas snap ... a mas nekonzistentni data, protoze ti chybi hlavicka. Presne proto to nemuze fungovat. Viz muj post vejs.

    A presne proto ma kazda svepravna databaze API, pres ktery ji sdelis ze ten snap (nebo jinej zpusob zalohy) des delat, pockas, az ti rekne ze OK (= dokoncila vsechny bezici transakce) a teprve pak muzes.

    Jedine timhle zpusobem ziskas datove konzistetnni zalohu.

    Uplne stejne to plati pochopitelne pro libovolnou jinou aplikaci, kdyz budes mit cojavim otevrenej nejakej textovej soubor, tak se s klidem muzes dostat do situace, kdy ty sice vidis dokonceny odstavec, ale aplikace ho zapsala jen 1/2, druha ceka na nejaky ten interval, a kdyz udelas snap, tak sice mas citelny soubor, ale chybi ti v nem data.
    Max avatar 15.1.2020 09:12 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Ten problém, co popisuješ, je problém netransakční db. S transakční by nic takového nastat nemělo.
    Zdar Max
    Měl jsem sen ... :(
    15.1.2020 09:50 Boban
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Jenže tohle nezáleží jen na transakční DB. Stačí, aby ta aplikace ty transakce špatně používala a je problém. DB soubory pak ve snapshotu budou v pořádku, ale aplikační data v nich můžou být zapsaná jen z poloviny. Proto se snapshoty nemůžou brát jako naprosto spolehlivé zálohy. Ty zaručí jedině samotná aplikace.
    Heron avatar 15.1.2020 10:56 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Ano, tohle jsem myslel tím "pokud to dělá dobře". I transakce je nutné používat dobře, transakce slouží ke transformaci z jednoho konzistentního stavu do jiného konzistentního stavu. Pokud program používá transakce tak, že po vykonání některých z nich jsou data v nekonzistentním stavu (z hlediska logiky toho programu), tak to dělá blbě a ono blbě se netýká jen snapshotů, ale také zcela běžného provozu daného programu.

    Pokud nad touto db bude více klientů a ti budou do db posílat své transakce, tak jiný klient může vidět data v nekonzistentním stavu, viz následující příklad:
    // konzistentní
    T1
    // nekonzistení
    T2
    // konzistentní
    Pro dva klienty:
    C1T1
    C2T1 -- klient 2 vidí nekonzistentní stav dat
    C1T2
    C2T2 -- klient 2 ukládá data vyrobená na základě nekonzistentních dat.
    Tedy pokud je program napsaný takto a používá transakce blbě, tak to zhavaruje už během zcela normálního provozu a nemá to se snapshoty nic společného. A to jsem ten příklad schválně uvedl serializovaně, pokud by někdo namítal, že program může povolovat pouze jeden přístup v jeden čas. Ani Serializable nezajistí konzistenci dat, pokud appka transakce používá blbě.
    Max avatar 15.1.2020 11:51 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Pokud argumentuješ špatnou aplikací, tak ti nějaký příkaz pro flush dat pro db server moc nepomůže. A těžko lze předpokládat, že u takto špatně napsané app jí budeš moci dát nějaký příkaz, aby ona sama provedla flush, aby byly data konzistentní.
    Zdar Max
    Měl jsem sen ... :(
    Heron avatar 15.1.2020 10:43 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Databaze si zapise ... rekneme polozky nejakyho dokladu ... v tenhle okamzik udelas snap ... a mas nekonzistentni data, protoze ti chybi hlavicka. Presne proto to nemuze fungovat. Viz muj post vejs.
    DB splňující ACID bude konzistentní, transakce jsou atomické. Buď se zapíší kompletně celé, nebo se nezapíší vůbec.
    A presne proto ma kazda svepravna databaze API, pres ktery ji sdelis ze ten snap (nebo jinej zpusob zalohy) des delat, pockas, az ti rekne ze OK (= dokoncila vsechny bezici transakce) a teprve pak muzes.
    Atomický snap a "jiný způsob zálohy" je dost velký rozdíl. U jiného způsobu zálohy se počítá s tím, že různé soubory budou zkopírovány v různém čase a je tedy nutné uvést DB do stavu, kdy do datových souborů nezapisuje, ale jen plní logy. Viz třeba PITR. Jenže toto u atomického snapshotu neplatí, tam jsou všechny souboru zmrazeny ve stejném čase, takže DB ví, které transakce jsou dokončeny.
    Uplne stejne to plati pochopitelne pro libovolnou jinou aplikaci, kdyz budes mit cojavim otevrenej nejakej textovej soubor, tak se s klidem muzes dostat do situace, kdy ty sice vidis dokonceny odstavec, ale aplikace ho zapsala jen 1/2, druha ceka na nejaky ten interval, a kdyz udelas snap, tak sice mas citelny soubor, ale chybi ti v nem data.
    Tak si ještě jednou přečti komentář, na který reaguješ. Existují a používají se atomické fs operace, takže slušně napsaný program nepřepisuje data na místě (a pokud ano, udělá si kopii původního), ale zapisuje někam jinam a potom to atomicky (třeba pomocí přejmenování), překlopí. Pro systémové služby by toto mělo být automatické. Pro uživatelské programy se mohou najít výjimky, ale tam asi nebude nikdo dělat snap během ukládání 2GB souboru v GIMPu a nebude asi očekávat, že ten soubor bude konzistentní.
    16.1.2020 08:58 j
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Ze tys vzivote nikdy nikde zadnou databazi neprovozoval, natoz aby sis precet nejakou dokumentaci k ni?

    Takze znova, snap FS zajisti konzistetni FS, rozhodne nezajisti a ani nemuze, konzistetni data. V pripade databazi pak v kazdym pripade dojde k nejaky ztrate dat.

    A o tech tvysh "slusne" napsanych programech bys radsi nemel blabolit vubec, kazdej normalni program si soubor otevre, a zapisuje do toho !!! JEDNOU !!! otevrenyho souboru. Jak s tim nalozi FS je pak uz neco uplne jinyho, ale krome tech, ktery delaji COW vsechny data proste prepisujou.
    Heron avatar 16.1.2020 14:16 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    Ze tys vzivote nikdy nikde zadnou databazi neprovozoval, natoz aby sis precet nejakou dokumentaci k ni?
    Kromě těch pár desítek DB o celkovém objemu dneska už skoro 10TB, ne, nic jsem neprovozoval. A už vůbec jsem nikdy nikomu neradil dávat všechna data do DB (ideálně jako BYTEA) a nemít to jako soubor na disku. Ne, vůbec. Jen těch pár TB, pouhých 12 let, ale jinak vůbec nic.
    V pripade databazi pak v kazdym pripade dojde k nejaky ztrate dat.
    Nedojde. Všechny potvrzené transakce jsou spolehlivě uloženy na disku. Od toho je to ACID DB, aby právě tohle zajistila.

    Max avatar 16.1.2020 14:45 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému
    To "prosté přepisování" souborů není tak prosté. Všechny dnešní běžně používané FS (ext3, ext4, reiserfs, xfs, ntfs) jsou žurnálovací.
    Zdar Max
    Měl jsem sen ... :(
    13.1.2020 14:38 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Snapshot běžícího systému

    No, záleží na tom, jaký bude v tom snapshotu momentální stav (například) konfiguračních souborů běžících aplikací, které třeba zrovna své soubory zapsaly jen tak z poloviny. Pokud to z té poloviny rozchodí, jistě budou fungovat. :-) Pokus nabootovat ze snapshotu je (jak píšeš) podobný bootu po odpojení natvrdo, jen s mírně lepšími garancemi kolem (vzájemné) konzistentnosti dat / souborů na celém subvolume.

    Ad snapshot před startem systému: Asi by bylo nejlepší udělat si na to systemd unit spouštěný v initramfs. Systemd v initramfs by mohl takový snapshot vytvořit bez jakýchkoliv dalších operací nad filesystémem. GRUB to podle mě neumí; do většiny FS (záměrně) nedovede psát.

    Nicméně i k vytvoření snapshotu během initramfs ten souborový systém musíš napřed namountovat read/write, takže implicitní read-only nastavení ve většině distribucí se nebude dát úplně snadno a přímo použít.

    Pokud by read/write na konci initramfs vadil, tak potom snad leda že by ten initramfs napřed namountoval nový root read/write, pak by udělal snapshot a ve finále by ho přemountoval zase read-only, ať už si to dál pořeší systemd ve standardním systému podle fstab. Ale otázka je, proč takový přemet dělat.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.