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í
×

dnes 15:00 | IT novinky

Broadcom kupuje firmu VMware za 61 miliard dolarů.

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

Google Chrome 102 byl s verzí 102.0.5005.61 prohlášen za stabilní. Opraveno bylo 32 bezpečnostních chyb. Přehled novinek na Chromium Blogu nebo na Chrome Platform Status. Oficiální přehled novinek (New in Chrome, YouTube) zatím nebyl publikován. Přehled novinek v nástrojích pro vývojáře je bez videa.

Ladislav Hagara | Komentářů: 0
dnes 01:55 | Komunita

The Open Source Software Security Mobilization Plan (pdf) je konsorciem The Linux Foundation zastřešen plán na zvýšení bezpečnosti open source softwaru.

Ladislav Hagara | Komentářů: 0
dnes 00:11 | Zajímavý článek

Minulý týden proběhla hackerská soutěž Pwn2Own Vancouver 2022. Máte-li na starost bezpečnost IT, výsledky vás nepotěší. Microsoft Teams, Oracle Virtualbox, Mozilla Firefox, Microsoft Windows 11, Ubuntu Desktop, Apple Safari, Tesla Model 3 Infotainment System. Vše potopeno. Demonstrované bezpečnostní chyby ve Firefoxu jsou již opraveny ve verzi 100.0.2.

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

Lokální úložiště Stratis (Wikipedie), alternativa k úložištím s ZFS a Btrfs, bylo vydáno ve verzi 3.1.0. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 5
včera 13:11 | IT novinky

Sdružení CZ.NIC dnes vrátilo do zóny dříve vyřazená jména domén dezinformačních webů.

Ladislav Hagara | Komentářů: 32
včera 11:11 | IT novinky

Před půl rokem představený webový vyhledávač You.com (Wikipedie) se zaměřuje také na kodéry. Vyzkoušet lze YouCode.

Ladislav Hagara | Komentářů: 1
včera 08:00 | Zajímavý software

RustDesk je open source alternativa k TeamVieweru. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPL-3.0.

Ladislav Hagara | Komentářů: 1
včera 07:00 | Nová verze

Po 4 měsících vývoje od vydání verze 5.9 byla vydána nová verze 6.0 svobodného open source redakčního systému WordPress. Kódové jméno Arturo bylo vybráno na počest jazzového hudebníka Artura O'Farrilla.

Ladislav Hagara | Komentářů: 0
24.5. 19:00 | Nová verze

Po více než roce vývoje od vydání verze 1.20.0 byla vydána nová stabilní verze 1.22.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.22.

Ladislav Hagara | Komentářů: 1
Na sociálních sítích nebo jiných webových diskuzích vystupuji pod
 (61%)
 (16%)
 (23%)
Celkem 336 hlasů
 Komentářů: 29, poslední 24.5. 00:02
Rozcestník


Moderní souborové systémy - 1. část

27. 11. 2002 | Petr Novický | Systém | 23073×

Úvod do tématiky žurnálovacích systémů.

Úvod

Mnozí z Vás se jistě chtěli seznámit s pojmem souborový systém hlouběji. Ačkoliv si myslím, že se drtivá většina s pojmem souborový systém setkala, přesto ho nejprve objasním. Je to software, který slouží k organizování a používání dat uložených na záznamových médiích (pevný disk, CD apod). Souborový systém zajišťuje integritu dat (přeloženo do českého jazyka ucelenost). Tudíž informace, které uložíme, budeme moci později vyvolat v nezměněné podobě.

Pro svou činnost filesystém ukládá informace o souborech a informace o sobě samotném (vlastnictví, datum, kontrola přístupu, délka souboru a jeho lokace na disku apod). Bez těchto informací, tzv. metadata, by souborový systém nemohl pracovat. Nebudu se tu zabývat souborovými systémy jako ext2fs (běžně používaný souborový systém v OS Linux), o něm byla jistě již spousta materiálu sepsána a tak nebudu nosit dříví do lesa. Navíc nové filesystémy mají lepší vlastnosti a nemají tak přísná omezení jako třeba právě ext2fs.

Motivace nových souborových systémů

Modernější filesystémy použijeme zvlášť, pokud chceme zajistit integritu dat i při náhlém přerušení práce počítače. Existuje několik možností, co se při náhlém přerušení práce může stát:

  • Systém stihl uložit soubor. Nic se neděje, můžeme pokračovat v práci.
  • Systém nestihl uložit soubor (ani nezačal). Přišli jsme tedy o všechny změny, ale alespoň máme zachovánu starou verzi.
  • Systém "spadl" během procesu ukládání. Toto je nejhorší případ! Dostáváme soubor, který se skládá částečně ze starého a částečně z nového. Když navíc zrovna zapisujeme metadata (jako třeba informace o adresářích), mužeme ztratit třeba celý adresář nebo dokonce data na diskovém oddílu (když se poruší metadata týkající se kořenového adresáře)!

Standardní linuxový souborový systém (ext2fs) svému poškození částečně předchází tím, že udržuje redundantní kopii metadat, takže se většinou nestává, že bychom o ně přišli. Pomocí kontroly integrity souborového systému (fsck), klasicky během bootování, je systém schopen zjistit, kde jsou metadata poškozená a nahradí je prostým zkopírováním redundantní verze. Nebo dojde ke smazání souboru, který byl přerušením poškozen. Samozřejmě že kontrola trvá tím déle, čím větší máme diskový oddíl a kontrola opravdu velkého disku může trvat velmi dlouho. Žádná z uvedených vlastností se samozřejmě nikomu z nás nelíbí, naštěstí existuje alternativa k těmto klasickým druhům filesystémů. Jsou jimi souborové systémy, které pracují s tzv. žurnálem.

Žurnálovací souborové systémy

O co se jedná. Stručně řečeno žurnálovací filesystém si uchovává informace o operacích, které provedl a je pak v případě výpadku schopen rychle se dostat zpět do konzistentního stavu. Změny jsou evidovány jako tzv. transakce. Jedná se o nezávislé atomické operace. Po každé transakci následuje potvrzení, když dojde k uskutečnění daného úkonu (např. zápis na disk). Proto pokud systém "spadne", můžeme najít v záznamech informace o provedených změnách a vrátit vše do původního stavu. Mezi tyto souborové systémy patří např. ext3, ReiserFS, XFS a JFS. V našem seriálu se postupně zmíníme o každém z nich podrobněji.

Omezení souborových systémů

Problémy při výpadcích však nejsou zdaleka jedinými nevýhodami tradičních souborových systémů jako ext2fs. Všechny byly navrženy v době, kdy záznamová média neměla takovou kapacitu jako v současné době. Dnes máme větší soubory, adresáře a také diskové oddíly a starší souborové systémy už nestačí ať už z hlediska různých omezení velikostí nebo výkonu. Tyto problémy jsou důsledkem interních struktur, na kterých jsou založeny. Hlavním problém je, že mají pevně danou délkou, což limituje jejich možnosti. Také metody, které v dřívější době vyhovovaly, jsou už při dnešních možnostech z hlediska výkonu nedostačující. Souborové systémy nové generace jsou navrhovány tak, aby problémům omezení předcházely.

V následující tabulce si můžete porovnat omezení jednotlivých souborových systémů:

Filesystém Max. velikost filesystému Velikost bloků Max. velikost souboru
Ext2 4 TB 1KB-4KB 2 GB
Ext3 4 TB 1KB-4KB 2 GB
ReiserFS 16 TB až 64KB 2^10 PB *1
XFS 18000 PB *1 512B - 64KB 9000 PB *1
JFS 512 B / 4 PB *2 512B, 1024B, 2048B, 4096B 512B / 512Tb *2

*1) 1PB = 10^15 B

*2) Maximální velikost souborového systému závisí na velikosti bloku dat, velikosti pro ostatní hodnoty dostaneme jednoduše pomocí trojčlenky.

Optimalizace výkonu nových souborových systémů

Vyhledávání volných bloků

Dalším problémem jsou struktury, pomocí kterých souborový systém hledá volné bloky při ukládání dat. Často se jedná o seznam, kde jsou udržována čísla jednotlivých volných bloků. UFS a ext2fs používá bitmapu, což je pole bitů, kde každý z nich odpovídá jednomu logickému bloku na diskovém oddílu. S narůstající kapacitou délka pole narůstá a výkon klesá.

Problémům, týkajících se hledání volných bloků dat, se vyvarujeme použitím tzv. "extents" a balancovaného stromu. Extents je skupina sousedících logických bloků, které jsou používány některými filesystémy. Deskriptor extents obsahuje 3 údaje:

  • adresa prvního bloku, kde extent začíná
  • velikost v blocích
  • údaj, který nám říká offset v rámci souboru, kde začínají data v daném záznamu uložená

V případě použití extents nezávisí velikost struktury, kde si uchováváme informace o volném místu, na velikosti filesystému. Také použitím balancovaného stromu místo prostého seznamu dochází k dalšímu zvýšení výkonu.

Problémy s velkými filesystémy

V případě velkého počtu položek adresáře je efektivita u starších souborových systému opět slabší. Často jsou položky adresáře ukládány do seznamu, a tudíž jejich následné vyhledávání je zbytečně zdlouhavé. Jedním z řešení je opět použití balancovaného stromu, kde jsou tyto položky uspořádány podle jmen.

Výkonnost však nedostačuje ani u velkých souborů. Pro vysvětlení této oblasti si musíme neprve objasnit pojem i-node. Jedná se o strukturu, kde souborový systém udržuje informace o souboru, jako jsou práva, typ souboru a hlavně ukazatele na bloky souborového systému, kde je soubor uložený. Obsahuje jednak přímé ukazatele, a také tzv. nepřímé ukazatelé, odkazující na bloky s ukazately přímými. Viz obrázek:

Obrazek inodu

Problém spočívá v navržení struktury i-nody. Starší souborové systémy byly vytvářeny převážně pro práci s menšími soubory. Struktura i-nodů je proto ne zrovna efektivní. Čím větší soubor používáme, tím vícekrát přistupujeme k disku díky nepřímým pointrům. Důvodem, proč nepřímé pointry vůbec ext2fs používá, je to, že i-node má pevnou velikost.

Problém velkých souborů může být odstraněn použitím dynamického alokování i-nodů. Bohužel musíme vyřešit otázky jak zařídit mapování logických bloků i-nodu a jaké použít struktury na vyhledávání v rámci i-nodu. Řešením je většinou použití balancovaných stromů.

Řídké soubory

Omezení externí fragmentace a podpora řídkých souborů (sparse files) je také jednou z výhod nových filesystémů (ovšem jejich podpora je už v ext2fs). Pojem fragmentace většina čtenářů jistě zná, jen připomenu že se jedná o rozptýlení jednotlivých bloků souboru po disku a hlavička disku pak při čtení musí přejíždět z místa namísto. Samozřejmě výhodnější je mít bloky za sebou, operace pak budou rychlejší.

Řídké soubory jsou soubory, které vzniknou následujícím způsobem:

Zapíšeme například několik počátečních bytů dat a poté se chceme zapsat data uvnitř souboru, která odpovídají offsetu třeba 50000. Pokud nemá náš filesystém podporu pro řídké soubory, alokujeme všechny byty mezi počátkem a těmi bloky uvnitř souboru. Bloky mezi počátkem a offsetem 50000 nás však nezajímají a vůbec by alokovány být nemusely. Pokud použijeme souborové systémy s podporou řídkých souborů, pak se alokuje jen tolik místa, kolik zapisovaná data skutečně zabírají.

Odkazy a zdroje

       

Hodnocení: 38 %

        špatnédobré        

Nástroje: Tisk bez diskuse

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

Komentáře

Vložit další komentář

27.11.2002 07:59 Quasar
Rozbalit Rozbalit vše Podivne hodnoty ReiserFS
Hm... Co se tyka FS, tak jsem uplny neznalec, ale neni mi jasne, jak se na filesystem velikosti 16TB vejde soubor velikosti 2^10 PB - viz ReiserFS. Diky za odpoved.
27.11.2002 09:31 Petr Adamek
Rozbalit Rozbalit vše Podivne hodnoty ReiserFS
Viz ridke soubory
27.11.2002 09:29 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše 2G
jakto ze ext3 ma omezeni na max velikost souboru 2G, kdyz mam normalne na disku soubory 4-5G?
-- Nezdar není hanbou, hanbou je strach z pokusu.
6.7.2008 15:30 Smajchl | skóre: 39 | blog: Drzy_Nazory | Praha
Rozbalit Rozbalit vše Re: 2G
+1
My máme všechno co chcem, my máme dobrou náladu!
houska avatar 23.6.2010 11:34 houska | skóre: 41 | blog: HW
Rozbalit Rozbalit vše Re: 2G

protoze to je zde uvedeno spatne ... wiki tvrdi ze je to zavisle na velikosti bloku:

ext3 has a maximum size for both individual files and the entire filesystem. For the filesystem as a whole that limit is 232 blocks.
Block size	Max file size	Max filesystem size
1 KB		16 GB		2 TB
2 KB		256 GB		8 TB
4 KB		2 TB		16 TB
8 KB[limits 1]	2 TB		32 TB
27.11.2002 09:34 zacatecnik stoural
Rozbalit Rozbalit vše velikost spoboru u ext2
Obavam se, ze omezeni velikosti souboru na 2GB u ext2 nebude uplne pravdive. Sam pouzivam fileserver s ext2 pro ukladani video souboru o velikostech pres 10GB - a bez potizi...
27.11.2002 10:29 Tom K | skóre: 21
Rozbalit Rozbalit vše ext2 a velikost souboru
Mozna by bylo vhodne napsat, ze velikost souboru 2GiB u ext2 bylo u 2.2.x jader, ale u 2.4 uz je tato velikost "trosku" jina (vetsi). Stejne tak maximalni velikost FS nepocita s limity jadra. Jeste u 2.4 lze udelat jen asi 2TiB veky FS. Tento limit je odbouran az od 2.5.42.
echo -n "u48" | sha1sum | head -c3; echo
28.11.2002 08:22 Martin Sedlacek
Rozbalit Rozbalit vše dotaz
Chtel bych se zeptat na extenty zminene v clanku. Pokud pouziji jen linearni seznam extentu (rekneme trojic: zacatek, delka, treti polozku jsem uplne nepochopil), tak ciste teoreticky muze nastat situace, kdy bude pocet extentu napr. polovina poctu bloku (kdyz bude prave kazdy druhy obsazeny). A to je docela zavisle na velikosti fs. Prehledl jsem neco?
29.11.2002 11:52 Petr Novický | skóre: 27
Rozbalit Rozbalit vše Re: dotaz
Ta treti polozka ukazuje proste na misto v souboru, kam data v danem extentu patri. No a tu tvou otazku jsem tedy tak docela nepochopil. Jestli jsi to myslel tak, ze bude filesystem, kde bude jeden blok obsazeny, druhy bude prazdny a tohle se bude opakovat... tak to bude samozrejme spatne... ale myslim, ze to je jen teorie.. k takovemu zpusobu naplneni jednoduse za normalnich podminek nedojde.
29.11.2002 16:17 Beda
Rozbalit Rozbalit vše velikos bloku XFS verze 1.1
je omezena na linux+x86 architekture velikosti stranky = 4Kbajty nic jineho se nepodari naformatofvat a kdyz jo, tak to stejnak nebude fungovat jako filesystem, ale spis jako hashovaci zarizeni s dalsimi nedokumentovanymi feature ;)
29.11.2002 16:21 Beda
Rozbalit Rozbalit vše velikos bloku XFS verze 1.1
ted me napada, ze novejsi x86 procesory maji vlastne 2 prepinatelny velikosti stranek, ale tusim, ze linux stejne nastavi velikost stranky na 4K a ne na 32K, ci kolik je ta druha velikost stranky.
22.8.2003 11:18 Mirek
Rozbalit Rozbalit vše nerozlišuje velká a malá písmena?
Existuje souborový systém pro linux, který nerozlišuje velká a malá písmena v názvu souboru?
4.2.2004 14:45 KIIV
Rozbalit Rozbalit vše nerozlišuje velká a malá písmena?
tusim ze rozlysovani pomoci dakritiky ponekud nezalezi na FS ale na jadre linuxu... BTW to rozlyseni velikosti je rychlejsi nez muset kazdej znak pri hledani a pod. prevest na nejakej treba upcase...

Založit nové vláknoNahoru

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