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:
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ů
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é
- e2fsprogs
- StegFS - steganografický souborový systém založený na ext2
- cloop
- Seznam souborových systémů
- Porovnání souborových systémů
- Orlov block allocator , Linux Kernel - určený výchozí alokátor bloků pro ext2.
Reference
Poznámky
- Karta, Rémy. & Ts'o, Theodore. & Tweedie, Stephen (1994). „Návrh a implementace druhého rozšířeného souborového systému“ . Proceedings of the First Dutch International Symposium on Linux . ISBN 90-367-0385-9.CS1 maint: používá parametr autorů ( odkaz )
- Projekt Sourceforge e2compr
- Dokumentace Sourceforge e2compr
- Stránka projektu Sourceforge e3compr, komprese ext3, alfa
- Zpravodaj zpravodaje Dr. Dobba o komprimaci dat č. 46 - září 2003
Další čtení
-
John Newbigin. „Johnova specifikace druhého rozšířeného souborového systému“ . Citační deník vyžaduje
|journal=
( nápověda ) -
Dave Poirier (2009). „Druhý rozšířený souborový systém: vnitřní rozložení“ . Citační deník vyžaduje
|journal=
( nápověda ) - Theodore Ts'o; Stephen Tweedie (červen 2002). „Plánovaná rozšíření systému souborů Linux Ext2/Ext3“ . USENIX 2002 Výroční technická konference .
- Larry Ayers (červen 1997). „E2compr: Transparentní komprese souborů pro Linux“ . Linux Gazette (18). Archivovány od originálu na 2009-11-17.
-
Charles Cong; Jeremy H. Brown (1997-12-26). „Systém pro transparentní kompresi souborů s ukládáním do mezipaměti pod Linuxem“. CiteSeerX 10.1.1.51.4780 . Citační deník vyžaduje
|journal=
( nápověda ) -
Charles Cong; Jeremy H. Brown (1997-10-22). „Průzkum moderních technik komprese souborů“. CiteSeerX 10.1.1.50.9847 . Citační deník vyžaduje
|journal=
( nápověda )
externí odkazy
- nástroje uživatelského prostoru ext2fs
- Ovladač systému souborů Ext2Fsd GPL ext2/ext3 pro Windows 2000/XP/2003/VISTA/2008 (opensource, podporuje čtení a zápis, pracuje s FreeOTFE)