abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 16:38 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 5. a 6. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu. Celkově bylo zpracováno 65 hodin z 89 přednášek a workshopů.

Ladislav Hagara | Komentářů: 0
včera 11:30 | Komunita

Bylo oznámeno, že bude proveden bezpečnostní audit zdrojových kódů open source softwaru pro implementaci virtuálních privátních sítí OpenVPN. Audit provede Matthew D. Green (blog), uznávaný kryptolog a profesor na Univerzitě Johnse Hopkinse. Auditována bude verze 2.4 (aktuálně RC 1, stabilní verze je 2.3.14). Audit bude financován společností Private Internet Access [reddit].

Ladislav Hagara | Komentářů: 2
včera 06:00 | Komunita

Na YouTube byl publikován Blender Institute Reel 2016, ani ne dvouminutový sestřih z filmů, které vznikly za posledních 10 let díky Blender Institutu. V institutu aktuálně pracují na novém filmu Agent 327. Dění kolem filmu lze sledovat na Blender Cloudu. Videoukázka Agenta 327 z června letošního roku na YouTube.

Ladislav Hagara | Komentářů: 0
včera 01:02 | Zajímavý článek

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 1
8.12. 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
8.12. 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 5
7.12. 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
7.12. 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 2
7.12. 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 10
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 27
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 806 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Jak žurnálování zajišťuje konzistenci dat?

FrostyX avatar 1.4.2015 23:21 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc / Jeseník
Jak žurnálování zajišťuje konzistenci dat?
Přečteno: 547×
Ahoj,
chtěl bych vás požádat o vysvětlení toho, jakým způsobem žurnálování zajišťuje konzistenci dat.
Podle skript žurnálování pracuje následovně (vynecháme-li cachování):
  1. Informace o změně se zapíše do logu (žurnálu), přičemž se zapíší pouze metadata.
  2. Změna se provede
  3. Po úspěšném provedení je log vynulován

To je sice moc hezký, ale co konkrétně to teda přinese?

Dovedu si představit, že když dojde k nečekanému výpadku systému, při opětovném spuštění se může podívat do žurnálu, jestli nezůstali nějaké rozdělané operace. Tzn, lze během okamžiku zjistit, jestli je vše v pořádku, nebo ne. Ale co když ne? Napadlo mě, že jediné, co lze udělat, je nekompletní soubor nezobrazovat a prostě jej považovat, za prázdné místo.

Rozhodl jsem se experimentálně ověřit, co se na ext4 / NTFS stane. Dal jsem na NTFS svazek pod windows kopírovat velký soubor a v průběhu stroj natvrdo vypnul. Šlo ale o virtuální stroj ve VirtualBoxu - nevadí to? Po zapnutí jsem našel prostě rozepsaný soubor o zhruba poloviční velikosti. Tomu teda říkám konzistence. Na linuxu to dopadlo nějak podobně. Buď mi tam zůstal 0B soubor, nebo soubor o plné velikosti, nebo tak něco, ale prostě nešel otevřít.

Výsledky experimentu mi moc nepomohly, tak jsem na zkoušce zazmatkoval a řekl svůj původní názor. Vysloužil jsem si F a šel smutně domů.

Můžete mi prosím někdo vysvětlit, jak se to tedy s tím žurnálováním má?
Mockrát děkuji.

FrostyX.cz | 1984 was not supposed to be an instruction manual.

Řešení dotazu:


Odpovědi

2.4.2015 00:03 NN
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
ext4 cast 'data mode' btw. jaky mas nastaveny typ?
2.4.2015 09:00 Filip Jirsák
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Nemůžete míchat obecný pojem „žurnálování“ a konkrétní implementaci v souborových systémech. Např. ext3/4 má samostatný žurnál pro metadata a samostatný pro data, přičemž ten datový žurnál je ve výchozím stavu vypnutý.

Jinak obecně žurnálování funguje tak, že se nejprve do žurnálu zapíše, co se má udělat, pak se to udělá, a pak se v žurnálu potvrdí, že se operace provedla. Takže když dojde k výpadku při zápisu do žurnálu, nemá zapisující potvrzen zápis a měl by se podle toho chovat. Když je vše zapsáno v žurnálu, potvrdí se zápis a od toho okamžiku už je starostí souborového systému, aby o ta data nepřišel. Začne provádět tu operaci – a pokud v tom okamžiku dojde k výpadku, po obnovení provozu jenom znova provede to, co má v žurnálu označené jako neprovedené.

Pokud byste tedy měl zapnutý i žurnál na data (a ta aplikace ten soubor kopírovala správně, tj. jako transakci označila kopírování celého souboru, ne jeho části), zapsal by se nejprve celý do žurnálu a teprve z něj by se pak kopíroval na cílové místo. Záleží na konkrétní implementaci, ale v nejjednodušším případě to znamená, že potřebujete na disku tolik místa, aby se tam ten soubor vešel dvakrát, a musíte ho dvakrát zapsat na disk – už je vám asi jasné, proč je ve výchozím nastavení v ext3/4 žurnál pro data vypnutý.
2.4.2015 09:11 R
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Este doplnim, ext3/4 pouziva defaultne mod data=ordered, co by malo zabezpecit (ak to neposerie "inteligentny" HW), ze najprv sa zapisuju data a az nasledne metadata. Tym padom by v subore, ktory sa zapisoval pocas vypadku, nemali byt nezmyselne data.
2.4.2015 09:14 Bill Gates
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Jen polemika:
v nejjednodušším případě to znamená
Me prijde nejjednodussi ten soubor zapsat uz skoro primo na misto tam kde v budoucnu bude, defaultne jako neplatny, a pak ho oznacit jako za platny (zapis). Bez nutnosti (zapis/cteni/zapis). Pak vlastne menime prinejmensim jeden bit nekde misto prepisu velkeho objemu dat.
2.4.2015 10:00 Sten
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Takhle jednoduše funguje btrfs. Při implementaci velmi rychle zjistíte, že to moc jednoduché není (např. co budete dělat, pokud vypadne proud během toho přepisu? ztratíte původní data? pokud budete mít dvě sady dat, při změně pár bajtů budete kopírovat celý soubor? co když proud vypadne, když zrovna budete přehazovat jednu sadu za druhou?) a žurnál je mnohem jednodušší.
Heron avatar 2.4.2015 11:04 Heron | skóre: 50 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Mě tedy mnohem jednoduší přijde to co implementuje btrfs, tedy cow po blocích.

Zapisujete na na nové místo bloku a jakmile je blok zapsaný, tak atomicky přepíšete pointer z původního bloku na tento nový.

Tedy kopíruje se nikoliv celý soubor ale jen dotčený blok a v případě výpadku máte buď konzistentní stará data (pointer se nepřehodil) nebo konzistentní nová data (pointer se přehodil), ale nic mezi tím.

Toto se ostatně v IT používalo od pradávna, nikoliv však pro fs. U fs se muselo udělat snoubení mezi B-tree a cow.

Jinak by mě zajímalo, za co přesně tazatel dostal F a zejména na co se ho zkoušející ptal. Protože otázka "jak žurnálování zajištuje konzistenci" je široká a asi nejlepší odpověď je: různě. Implementace se liší stejně, jako se liší jednotlivé fs.
2.4.2015 11:24 Sten
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
tak atomicky přepíšete pointer z původního bloku na tento nový
Jenže na blokových zařízeních atomické operace nejsou.
Toto se ostatně v IT používalo od pradávna
Pouze tam, kde atomické operace jsou.
FrostyX avatar 2.4.2015 11:00 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc / Jeseník
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Děkuji za obsáhlou odpověď. O žurnálování včetně kompletních dat jsem nevěděl. Z vašeho vysvětlení jsem ho pochopil, takže děkuji. Nicméně,
Začne provádět tu operaci – a pokud v tom okamžiku dojde k výpadku, po obnovení provozu jenom znova provede to, co má v žurnálu označené jako neprovedené.
Tohle je právě věc, které nerozumím. Nebo alespoň v případě, kdy nedochází k žurnálování dat jako takových, ale pouze metadat. On ví, že měl vytvořit soubor nějakého názvu a velikosti, s nějakými oprávněními, vlastníkem, etc a že do něj měly přijít nějaká data. Ale jaká data to jsou, to už z toho žurnálu nevyčte ne? Co tedy znamená "znova provede"?
FrostyX.cz | 1984 was not supposed to be an instruction manual.
FrostyX avatar 2.4.2015 11:17 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc / Jeseník
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
A nebo do toho žurnálu dává i nějakou posloupnost bytů, co do toho souboru bude zapisovat? A potom co ji uloží na disk, vynuluje žurnál a zapíše tam novou operaci uložení daných bytů. Takže při obnovení provozu jen na disk uloží tu poslední posloupnost bytů, o které z žurnálu ví a tím končí.
FrostyX.cz | 1984 was not supposed to be an instruction manual.
2.4.2015 12:21 Sten
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
„Provést znovu“ je dost zjednodušené. Žurnál popisuje, co souborový systém právě dělá, a pokud dojde k problémům, ví tak, kde skončil. Pokud jsou v žurnálu data, stačí tu operaci opravdu jen provést znovu, ale pokud ta data nemá, tak se souborový systém jen pokusí dostat soubor do nějakého konzistentního stavu, typicky tak, že alokované místo, kam se zatím data nezapsala, ze souboru odebere, takže neobsahuje bloky s náhodnými (či nulovými) daty. Samozřejmě to znamená, že při nějaké složitější operaci může být soubor vnitřně poškozen, proto si třeba databáze vedou žurnál svých operací ještě samy bokem (a nejlépe vůbec nepoužívají souborový systém), ale pro běžné operace, kdy se zapisují data jen na konec (stahování, kopírování ap.), to dostane soubor do stavu, kdy lze operaci bezpečně navázat a nemusí se to celé dělat znovu.
2.4.2015 15:11 Filip Jirsák
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Pokud se zapisují nejprve data, a až poté metadata, nemělo by k něčemu takovému dojít. Data se sice zapsala do alokovaného místa, ale v metadatech o tom není záznam, takže ve výsledku je jen jiné „smetí“ v nepoužívané části disku.

Tomu vnitřnímu poškození předchází spousta programů (hlavně těch ze světa Windows) tak, že zapíší soubor s novým jménem, a pak jej přejmenují na původní název. A pak se uživatelé nestačí divit, že z toho souboru mizí práva (ACL) a že přestávají fungovat hardlinky.
2.4.2015 16:04 Sten
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Vždyť píšu, že se to týká případu, kdy data v žurnálu nejsou
2.4.2015 17:39 Filip Jirsák
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Já jsem psal o případu, kdy data v žurnálu nejsou, a přesto se po výpadku neprovádí odebírání místa, kam se data nezapsala - protože takové místo nevznikne.

Žurnál obvykle funguje tak, že jde v čase pouze dopředu, tj. jsou v něm zapsané akce, které se mají provést, a nikdy se akce neruší. Vámi popsaný způsob implementace, kdy žurnál popisuje nějaký stav, do kterého se má systém po výpadku vrátit, je sice také možný, ale je mnohem komplikovanější. Třeba zpětné smazání zapsaných dat je ještě relativně jednoduché, ale opačná operace - zápis vymazaných dat, by byla mnohem komplikovanější. Mimo jiné i proto, že byste při mazání musel data přesouvat do žurnálu, aby bylo odkud je v případě výpadku obnovit.
2.4.2015 15:06 Filip Jirsák
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
On ví, že měl vytvořit soubor nějakého názvu a velikosti, s nějakými oprávněními, vlastníkem, etc a že do něj měly přijít nějaká data.
Souborový systém nedostane příkaz „vytvořit soubor a zapsat do něj data“. Ten příkaz zápisu dat je samostatný, a interně se provedou dvě operace – zápis samotných dat, a změna metadat souborového systému (změna velikosti souboru, změna prázdného místa na souborovém systému). Ten zápis dat se ve výchozím nastavení provede bez žurnálu, tj. data se hned přepíšou. Když uprostřed zápisu vypadne proud, budete mít v souboru půlku nových dat a půlku starých (v ext3/4, které přepisují data na místě). Žurnáluje se pouze zápis metadat – tj. do žurnálu se zapíše, jak se změnila velikost souboru a volné místo na disku, a pokud pak během zápisu údajů na správná místa na disku dojde k výpadku, po obnovení se pouze znovu přehraje žurnál s metadaty a ty údaje se obnoví. Nebo-li při náhlém výpadku můžete přijít o data (přepsal se kus starých dat novými, nebo se nová data zapsala na volné místo, ale ještě se nestihly aktualizovat metadata), ale souborový systém zůstane konzistentní. Bez žurnálování metadat se může dostat souborový systém do nekonzistentního stavu – např. se stihne zapsat změna velikosti souboru, ale už se nestihne zapsat údaj o volném místu. Proto se pak po obnovení musí projít celý disk a uvést jej do konzistentního stavu. To je asi hlavní důvod, proč se v ext3 žurnál zavedl – disky už jsou tak velké, že jejich kontrola po neočekávaném výpadku trvá příliš dlouho. Pokud máte žurnál na metadatech, není ta kontrola nutná – a na druhou stranu metadat není tolik, aby režie s žurnálováním spojená nějak výrazně zpomalovala práci. Žurnálováním dat byste samozřejmě získal vyšší spolehlivost (v souboru byste měl buď stará data, nebo nová, ale ne jejich mix), ale za cenu zpomalení zápisu na disk. Žurnál dat se tak používá jenom tam, kde je opravdu potřeba – typicky databáze, které si tradičně žurnál řeší samy. I když je pravda, že moderní souborové systémy (ZFS, btrfs), které umožňují vytvářet snapshoty a podobné vylomeniny, mají už žurnál i na datech, protože bez toho by těch nových vlastností nebylo možné dosáhnout.
FrostyX avatar 2.4.2015 15:16 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc / Jeseník
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Děkuji za vysvětlení. Vaše odpovědi označuji jako řešení.
FrostyX.cz | 1984 was not supposed to be an instruction manual.
2.4.2015 16:14 Sten
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
brtfs ani ZFS nemají žurnál vůbec, používají COW, kdy se veškeré změny dělají stranou a pak se „jen“ přehodí odkaz (není to tak jednoduché, jinak by se to používalo už dávno). Díky tomu je jejich strom souborů vždy v konzistentním stavu (buď obsahuje stav před změnou nebo stav po změně, bez ohledu na to, kdy vypadne proud) a jako bonus to umí snapshoty, reflinky a vyšší životnost na SSD discích.
2.4.2015 17:21 chrono
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
O tej vyššej životnosti SSD diskov pochybujem (pretože takmer určite bude na takom disku viac dát, ako pri iných FS a firmware disku sa aj tak sám stará o to, aby sa sektory využívali rovnomerne).
Josef Kufner avatar 2.4.2015 18:59 Josef Kufner | skóre: 66
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Ono jde spíš o to, jak moc se musí přepisovat ostatní bloky při přepisu. To SSD si to přemapuje, aby se neopotřebovávalo příliš, ale při zápisu nového souboru může odpadnou starost o malý sousední soubor.

Dat tam více nebude trvale, to jen do doby, než se bloky použité starým souborem označí jako volné (viz trim/discard).
Hello world ! Segmentation fault (core dumped)
2.4.2015 09:05 R
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Vyskusaj si to takto: daj si stahovat subor z webu a v polovici resetuj PC. Vo Windows 98 (FAT) sa ti spusti kontrola filesystemu a ten subor bude v prdeli, mozno aj s niecim dalsim. Na ext3 sa len pri dalsom mounte len prehra zurnal a subor bude obsahovat zmysluplne data, takze mozes pokracovat v stahovani.
FrostyX avatar 2.4.2015 11:10 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc / Jeseník
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Smysluplné ano, nejspíš tam bude prostě ta stažená část souboru. Takže pokud to bude video, podaří se mi ho do půlky přehrát a pak se ukončí. A to znamená, že jsou konzistentní? Možná jsem si jenom špatně vykládal to slovo. Moje představa byla taková, že ty data jsou konzistentní pouze v případě, že se na disk uloží přesně to, co jsem původně chtěl (celé video). Tzn pokud odpovídá checksum zdrojového a cílového souboru.
FrostyX.cz | 1984 was not supposed to be an instruction manual.
2.4.2015 11:37 NN
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Konzistentni znamena, ze neobsahuje chyby. To, ze se kopirovani prerusilo v pulce je smula..
FrostyX avatar 2.4.2015 12:18 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc / Jeseník
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Aha. Takže jsem v tom vlastně hledal něco úplně jiného :-D
FrostyX.cz | 1984 was not supposed to be an instruction manual.
2.4.2015 12:18 Pepa
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Tak to používej XFS, tam při výpadku budeš mít konzistentně nulové soubory. Přesně podle tvé představy, buď nic nebo vše. Ale fakt to nechceš :-)
FrostyX avatar 2.4.2015 12:26 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc / Jeseník
Rozbalit Rozbalit vše Re: Jak žurnálování zajišťuje konzistenci dat?
Ne, to opravdu nechci. Jen mi šlo o pochopení principů toho žurnálování. :-)
FrostyX.cz | 1984 was not supposed to be an instruction manual.

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.