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 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 0
    dnes 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 5
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 32
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (74%)
     (9%)
     (2%)
     (16%)
    Celkem 805 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    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.