ext2 - ext2

ext2
Vývojáři Rémy Card
Celé jméno Druhý rozšířený souborový systém
Představeno Leden 1993 s Linuxem
Identifikátor oddílu Apple_UNIX_SVR2( Apple Partition Map )
0x83( Master Boot Record )
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7( GPT )
Struktury
Obsah adresáře Stůl
Přidělení souboru bitmapa (volné místo), tabulka (metadata)
Špatné bloky Stůl
Limity
Max. velikost svazku 2–32 TiB
Max. velikost souboru 16 GiB - 2 TiB
Max. počet souborů 10 18
Max. délka názvu souboru 255 bajtů
Povolené znaky v názvech souborů Všechny bajty kromě NUL ('\ 0') a '/'
Funkce
Zaznamenaná data modifikace (mtime), modifikace atributu (ctime), přístup (atime)
Časové období 14. prosince 1901-18. Ledna 2038
Rozlišení data 1 s
Oprávnění systému souborů POSIX
Transparentní komprese Ne (k dispozici prostřednictvím oprav)
Transparentní šifrování Ne
jiný
Podporované operační systémy Linux , BSD , ReactOS , Windows (přes IFS ), macOS (přes IFS )

Ext2 nebo Druhý rozšířený souborový systém je souborový systém pro linuxové jádro . Původně byl navržen francouzským vývojářem softwaru Rémy Card jako náhrada za rozšířený souborový systém (ext). Byl navržen podle stejných principů jako Berkeley Fast File System od BSD a byl to první souborový systém komerční úrovně pro Linux.

Kanonickou implementací ext2 je ovladač souborového systému „ext2fs“ v jádře Linuxu. Další implementace (různé kvality a úplnosti) existují v GNU Hurd , MINIX 3 , některých jádrech BSD , v MiNT a jako ovladače Microsoft Windows a macOS třetích stran .

ext2 byl výchozí souborový systém v několika distribucích Linuxu , včetně Debianu a Red Hat Linux , dokud nebyl nahrazen ext3 , který je téměř zcela kompatibilní s ext2 a je žurnálovací souborový systém . ext2 je stále zvoleným souborovým systémem pro paměťová média typu flash (jako jsou karty SD a USB flash disky ), protože jeho nedostatek žurnálu zvyšuje výkon a minimalizuje počet zápisů a flash zařízení mohou vydržet omezený počet cyklů zápisu. Od roku 2009 jádro Linux podporuje režim ext4 bez deníku, který poskytuje výhody, které u ext2 nebyly nalezeny, jako jsou větší velikosti souborů a svazků.

Dějiny

Počáteční vývoj linuxového jádra proběhl jako křížový vývoj pod operačním systémem MINIX . Jako první souborový systém Linux byl použit souborový systém MINIX . Souborový systém Minix byl většinou bez chyb , ale používal interně 16bitové posuny a měl tak maximální limit velikosti pouze 64 megabajtů a byl zde také limit délky souboru 14 znaků. Kvůli těmto omezením byly zahájeny práce na náhradním nativním systému souborů pro Linux.

K usnadnění přidání nových souborových systémů a poskytuje generické souboru API , VFS , virtuální souborový systém vrstev, byla přidána do linuxového jádra. Rozšířený souborový systém ( ext ) byl vydán v dubnu 1992 jako první souborový systém využívající VFS API a byl součástí Linuxu verze 0.96c. Systém souborů ext vyřešil dva hlavní problémy v systému souborů Minix (omezení maximální velikosti oddílu a délky názvu souboru na 14 znaků) a umožnil 2 gigabajty dat a názvy souborů až do 255 znaků. Ale stále to mělo problémy: neexistovala podpora samostatných časových razítek pro přístup k souborům, úpravu inode a úpravu dat.

Jako řešení těchto problémů byly v lednu 1993 vyvinuty dva nové souborové systémy pro linuxové jádro 0,99: xiafs a druhý rozšířený souborový systém ( ext2 ), což byla generální oprava rozšířeného souborového systému zahrnující mnoho nápadů z Berkeley Fast File System . ext2 byl také navržen s ohledem na rozšiřitelnost, přičemž v mnoha jeho datových strukturách na disku zbylo místo pro použití v budoucích verzích.

Od té doby je ext2 testovací stanicí pro mnoho nových rozšíření VFS API. Funkce jako stažený návrh ACIX POSIXu a stažený návrh rozšířeného atributu byly obecně implementovány nejprve na ext2, protože jeho rozšíření bylo relativně jednoduché a jeho interní prvky byly dobře pochopeny.

V jádrech Linuxu před 2.6.17 znamenají omezení v ovladači bloků, že souborové systémy ext2 mají maximální velikost souboru 2 TiB.

Ext2 je stále doporučován pro žurnálování souborových systémů na zaváděcích jednotkách USB flash a jiných jednotkách SSD . ext2 provádí méně zápisů než ext3, protože neexistuje žurnálování. Protože hlavním faktorem stárnutí flash čipu je počet mazacích cyklů, a protože k mazacím cyklům dochází často při zápisu, snižování zápisů prodlužuje životnost polovodičového zařízení. Další dobrou praxí pro souborové systémy na flash zařízeních je použití možnosti no atime mount, a to ze stejného důvodu.

datové struktury ext2

Prostor v ext2 je rozdělen do bloků . Tyto bloky jsou seskupeny do skupin bloků, analogicky jako skupiny válců v systému souborů Unix . Ve velkém systému souborů jsou obvykle tisíce bloků. Data pro jakýkoli daný soubor jsou obvykle obsažena v rámci jedné skupiny bloků, kde je to možné. To se provádí za účelem minimalizace počtu vyhledávání disku při čtení velkého množství souvislých dat.

Každá skupina bloků obsahuje kopii tabulky deskriptorů superbloků a skupin bloků a všechny skupiny bloků obsahují bitovou mapu bloku, bitovou mapu inodu, tabulku inodů a nakonec skutečné datové bloky.

Superblock obsahuje důležité informace, které jsou zásadní pro spuštění operačního systému . Záložní kopie jsou tedy vytvářeny ve více blokových skupinách v systému souborů. Při zavádění se však obvykle používá pouze jeho první kopie, která se nachází v prvním bloku systému souborů.

Skupinový deskriptor ukládá umístění blokové bitmapy, bitové mapy inodů a začátku tabulky inodů pro každou skupinu bloků. Ty jsou zase uloženy v tabulce skupinového deskriptoru.

Inody

Každý soubor nebo adresář je reprezentován inodem. Termín „inode“ pochází z „indexového uzlu“ (postupem času se z něj stal i-uzel a poté inode). Inode obsahuje data o velikosti, oprávnění, vlastnictví a umístění souboru nebo adresáře na disku.

Příklad struktury inode ext2:

Stavba

Citace z dokumentace jádra Linuxu pro ext2:

"Existují ukazatele na prvních 12 bloků, které obsahují data souboru v inodu. Existuje ukazatel na nepřímý blok (který obsahuje ukazatele na další sadu bloků), ukazatel na dvojnásobně nepřímý blok a ukazatel na trojnásobně nepřímý blok. "

V ext2 tedy existuje struktura, která má 15 ukazatelů. Ukazatele 1 až 12 ukazují na přímé bloky, ukazatel 13 ukazuje na nepřímý blok, ukazatel 14 ukazuje na dvojitě nepřímý blok a ukazatel 15 ukazuje na trojitě nepřímý blok.

Adresáře

Každý adresář je seznamem položek adresáře. Každá položka adresáře spojuje jeden název souboru s jedním číslem inodu a skládá se z čísla inodu, délky názvu souboru a skutečného textu názvu souboru. Chcete-li najít soubor, hledá se v adresáři zepředu dozadu přidružený název souboru. Pro rozumné velikosti adresářů je to v pořádku. Ale pro velmi velké adresáře je to neefektivní a ext3 nabízí druhý způsob ukládání adresářů ( HTree ), který je efektivnější než pouhý seznam názvů souborů.

Kořenový adresář je vždy uložen v uzlu číslo dvě, aby jej kód systému souborů mohl najít v době připojení. Podadresáře jsou implementovány uložením názvu podadresáře do pole názvu a čísla inodu podadresáře do pole inode. Pevné odkazy jsou implementovány uložením stejného čísla inodu s více než jedním názvem souboru. Přístup k souboru pod libovolným názvem vede ke stejnému číslu inodu, a tedy ke stejným datům.

Speciální adresáře "." (aktuální adresář) a ".." (nadřazený adresář) jsou implementovány uložením jmen "." a ".." v adresáři a číslo inodu aktuálního a nadřazeného adresáře v poli inode. Jediné zvláštní zacházení s těmito dvěma položkami je, že jsou automaticky vytvořeny při vytvoření nového adresáře a nelze je odstranit.

Přidělení dat

Když je vytvořen nový soubor nebo adresář, ext2 musí rozhodnout, kam data uložit. Pokud je disk většinou prázdný, lze data uložit téměř kamkoli. Seskupování dat se souvisejícími daty však minimalizuje dobu hledání a maximalizuje výkon.

ext2 se pokouší přidělit každý nový adresář ve skupině obsahující jeho nadřazený adresář, na základě teorie, že přístupy k nadřazeným a podřízeným adresářům budou pravděpodobně úzce souviset. ext2 se také pokouší umístit soubory do stejné skupiny jako jejich položky adresáře, protože přístup k adresáři často vede k přístupům k souborům. Pokud je však skupina plná, nový soubor nebo nový adresář se umístí do jiné neplné skupiny.

Datové bloky potřebné k ukládání adresářů a souborů lze nalézt v bitmapě pro přidělování dat. Jakýkoli potřebný prostor v tabulce inodů lze nalézt v bitmapě přidělení inode.

Omezení systému souborů

Teoretické limity ext2 pod Linuxem
Velikost bloku: 1 KiB 2 KiB 4 KiB 8 KiB
max. velikost souboru: 16 GiB 256 GiB 2 TiB 2 TiB
max. velikost souborového systému: 4 TiB 8 TiB 16 TiB 32 TiB

Důvodem některých omezení ext2 je formát souboru dat a jádro operačního systému. Tyto faktory budou většinou určeny jednou při sestavování systému souborů. Závisí na velikosti bloku a poměru počtu bloků a inodů. V Linuxu je velikost bloku omezena velikostí stránky architektury .

Existují také některé programy v uživatelském prostoru, které nedokáží zpracovat soubory větší než 2 GiB .

Pokud b je velikost bloku, je maximální velikost souboru omezena na min. (((( B /4) 3 + ( b /4) 2  +  b /4 + 12) ×  b , (2 32  - 1) × 512) ke struktuře i_block (pole přímých / nepřímých EXT2_N_BLOCKS) a i_blocks (32bitová celočíselná hodnota) představujících počet 512 bajtových „bloků“ v souboru.

Maximální počet podúrovňových adresářů je 31 999, kvůli limitu počtu odkazů. Indexování adresářů není v ext2 k dispozici, takže u adresářů s velkým počtem souborů (> 10 000) existují problémy s výkonem. Teoretický limit počtu souborů v adresáři je 1,3 × 10 20 , i když to není pro praktické situace relevantní.

Poznámka: V systému Linux 2.4 a starších byly bloková zařízení omezena na 2 TiB, což omezovalo maximální velikost oddílu bez ohledu na velikost bloku.

Kompresní rozšíření

e2compr je modifikace ovladače ext2 v jádře Linuxu za účelem podpory komprese a dekomprese souborů systémem souborů bez jakékoli podpory ze strany uživatelských aplikací. e2compr je malá oprava proti ext2.

e2compr komprimuje pouze běžné soubory; administrativní data (superblock, inody, soubory adresářů atd.) nejsou komprimována (hlavně z bezpečnostních důvodů). Přístup ke komprimovaným blokům je poskytován pro operace čtení a zápisu. Kompresní algoritmus a velikost clusteru je uvedena na základě jednotlivých souborů. Adresáře lze také označit pro kompresi, v takovém případě bude každý nově vytvořený soubor v adresáři automaticky komprimován se stejnou velikostí klastru a stejným algoritmem, který byl určen pro adresář.

e2compr není nový souborový systém. Jedná se pouze o opravu ext2 vytvořenou na podporu příznaku EXT2_COMPR_FL. Nevyžaduje, aby uživatel vytvořil nový oddíl, a bude nadále číst nebo zapisovat stávající systémy souborů ext2. Lze to považovat za jednoduchý způsob, jak rutiny čtení a zápisu přistupovat k souborům, které mohly být vytvořeny jednoduchým nástrojem podobným gzipu nebo kompresi. Komprimované a nekomprimované soubory koexistují pěkně na oddílech ext2.

Nejnovější větev e2compr je k dispozici pro aktuální verze Linuxu 2.4, 2.6 a 3.0. Nejnovější oprava pro Linux 3.0 byla vydána v srpnu 2011 a poskytuje podporu více jader a vysoké paměti . Existují také pobočky pro Linux 2.0 a 2.2.

Pod jinými operačními systémy

Přístup k oddílům ext2 v systému Microsoft Windows je možný prostřednictvím systému instalovatelných souborů , například ext2ifs nebo ext2Fsd . Systém souborů v uživatelském prostoru lze použít v systému macOS.

Viz také

Reference

Poznámky

Další čtení

externí odkazy