Portál AbcLinuxu, 17. července 2025 22:55


Dotaz: Princip lokalizace souborů v ext2/3/4

19.4.2011 09:34 morales
Princip lokalizace souborů v ext2/3/4
Přečteno: 341×
Odpovědět | Admin
Ahoj. Nevíte někdo jak přesně se systém dostane k souboru na souborovém systému ext2/3/4? Dejme tomu, že chci soubor /home/pepa/text.txt. Z toho co jsem pochopil musí systém projet inode tabulku adresáře / aby našel /home, pak /home aby našel /home/pepa a pak už projíždí inode tabulku /home/pepa než najde text.txt. Mám pravdu nebo jsem to špatně pochopil? Používají se nějaké optimalizační metody (nějaké indexy apod.) nebo je náročnost nalezení souboru v adresáři lineární rovnající se N-tému umístění souboru? Jde mi hlavně o to zjistit, kdy se vyplatí vytvářet nové podadresáře, než mít všechny soubory v jednom.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Heron avatar 19.4.2011 09:54 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Princip lokalizace souborů v ext2/3/4
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vyhledání cílového adresáře funguje zhruba tak, jak jsi popsal (vyhledání ve stromě, logaritmická složitost).

Vyhledání v adresáři funguje buď lineárně, nebo (při povoleném rozšíření ext3 a ext4 dir_index) je vyhledání dané položky konstantní v hashovací tabulce.

Ovšem pokud chceš ukládát skutečně velké množství souborů, obecně se doporučuje mít nějaký adresářový strom takový, aby v každém adresáři bylo jisté maximum položek. Update malého indexu daného adresáře je rychlejší, než update indexu megadresáře.

Je také nutno upozornit, že výpis obsahu adresáře má vždy lineární složitost, i proto je lepší udržovat adresáře rozumně malé.
Heron
rADOn avatar 19.4.2011 16:49 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Princip lokalizace souborů v ext2/3/4
Odpovědět | | Sbalit | Link | Blokovat | Admin
Záleží to na filesystému a na tom jak je nastavený. Třeba reiser3 neměl s milionem souborů v adresáři žádný problém, naopak na ext2 to bylo nemožné. xfs a ext4 mají tolik ladících knoflíků, že je nejspíš možné přimět je k čemukoliv.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
19.4.2011 22:45 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Princip lokalizace souborů v ext2/3/4
naopak na ext2 to bylo nemožné

Jen aby nedošlo k nedorozumění, pro jistotu zdůrazním slovo "bylo".

19.4.2011 17:31 Sten
Rozbalit Rozbalit vše Re: Princip lokalizace souborů v ext2/3/4
Odpovědět | | Sbalit | Link | Blokovat | Admin
Adresář je mapa jméno => inode. inode tabulka je mapa inode => (atributy, data). Takže Linux nejdříve projde adresář, najde podle jména inode dané položky (adresáře či souboru) a potom v inode tabulce najde jeho obsah. inode tabulka je extrémně optimalizovaná, tam je složitost hledání většinou konstantní.

Adresáře mohou být různě indexované, záleží na konkrétním nastavení daného souborového systému, takže to hledání nemusí být lineárně složité, ale může to být v logaritmickém čase.

Obecně ať už je to nastavené, jak chce, tak hledání ve stromu nebo v ploše je stejně náročné, protože buď je to O(N) pro plochu, O(X * N/X) pro dvě úrovně dělené podle X a tak dále. Rozdělení do podadresářů se vyplácí kvůli jiným výkonnostním důvodům (čtení obsahu celého adresáře, vytvoření nového souboru ap.)

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.