ext4 | |
---|---|
Vyvíjí | Mingming Cao, Andreas Dilger, Alex Tomas, Dave Kleikamp, Theodore Ts'o, Eric Sandeen, Sam Naghshineh a další |
Plný název | Fourth extended file system |
Představeno | Stabilní: 21. říjen 2008 Nestabilní: 10. říjen 2006 (Linux 2.6.19) |
Identifikátor oddílu | 0x83 (MBR) EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT) |
Struktury | |
Obsah adresáře | Spojový seznam, htree |
Alokace souborů | Extents/Bitmap |
Chybné bloky | Tabulka |
Limity | |
Maximální velikost souboru | 16 TiB (pro 4KiB bloky) |
Maximální počet souborů | 4 miliardy (určeno při vytvoření systému souborů) |
Maximální délka názvu souboru | 256 bajtů |
Maximální velikost svazku | 1 EiB |
Povolené znaky v názvech souborů | Všechny znaky mimo NULL ('\0') a '/' |
Hlavní rysy | |
Zaznamenané časy | změna (mtime), změna atributu (ctime), přístup (atime), smazáno (dtime), vytvořeno (crtime) |
Rozsah dat | 14. prosinec 1901–25. duben 2514 |
Přesnost dat | Nanosekunda |
Podpora více větví souboru | Ne |
Atributy | extents, noextents, mballoc, nomballoc, delalloc, nodelalloc, data=journal, data=ordered, data=writeback, commit=nrsec, orlov, oldalloc, user_xattr, nouser_xattr, acl, noacl, bsddf, minixdf, bh, nobh, journal_dev |
Oprávnění v systému souborů | POSIX |
Transparentní komprese | Ne |
Transparentní šifrování | Ano, od Linux 4.1 |
Ukládání jediné instance | Ne |
Podporované operační systémy | Linux |
ext4 (fourth extended filesystem) je žurnálovací souborový systém vyvinutý pro linuxové jádro, jehož vývoj začal 10. října 2006 jako zpětně kompatibilní nástupce ext3 (přejímá všechny jeho výhody), do jádra byl začleněn nejprve jako vývojový (tzv. ext4dev) a dne 11. prosince 2008 byl v jádře verze 2.6.28 přejmenován na ext4 a tím označen za stabilní a vhodný k běžnému užívání. Ext4 přináší mnoho novinek typických pro moderní souborové systémy, jako je odstranění limitů ext3 (velikost souborového systému, souborů, počtu souborů v adresáři), podporu extentů, prealokaci místa na disku, odloženou alokaci, kontrolní součet žurnálu, online defragmentaci, rychlejší kontrolu, multiblokový alokátor a zvýšenou přesnost uložených časových údajů a přináší také zvýšení výkonu.
Vývoj ext4 započal 10. října 2006, kdy vývojář Andrew Morton oznámil úmysl přidat do ext3 zpětně kompatibilní vylepšení souborového systému ext3, které mělo přidat 64bitové limity velikosti a další vylepšení, jejichž úkolem bylo zlepšit výkonnost souborového systému. Vývojáři linuxového jádra však nesouhlasili s přijetím takových rozšíření do ext3 a navrhli vytvořit nový souborový systém ext4, který vznikne jako fork původního ext3 (tj. zkopírováním zdrojového kódu ext3, jeho přejmenováním na ext4 a následným přidáním požadovaných vylepšení, takže nedojde k ovlivnění původního systému souborů ext3). Tento návrh byl přijat a dne 10. června 2006 vývojář Theodore Ts'o, který byl zodpovědný za ext3, zveřejnil nový plán dalšího vývoje pro ext4. Předběžná vývojová verze byla zahrnuta do linuxového jádra verze 2.6.19 a byla označena jako ext4dev. Dne 11. října 2008 byly zahrnuty do Linuxu verze 2.6.28 změny, které přejmenovaly vývojovou verzi na ext4 a označily ji jako stabilní kód, čímž došlo k uzavření vývojové fáze ext4.[1] Jádro verze 2.6.28, obsahující oficiální podobu ext4, bylo vydáno dne 11. prosince 2008.
Systém ext4 může být použit na svazku o velikosti až 1 EiB (1024 PiB – pebibytů, přibližně 1018 bajtů), podporuje extenty a odstraňuje limit původního systému ext3, jež mohl obsahovat v adresáři maximálně 32 768 podadresářů. S původním ext3 je kompatibilní zpětně i dopředně (pod typem ext4 je možné namountovat ext3, a naopak pod typem ext3 lze připojit ext4 svazek, pokud nepoužívá extenty).
Mezi další vlastnosti patří podpora nanosekundových časových razítek a pre-alokace i zpožděná alokace místa pro soubory. Ovladač ext4 obsahuje (stejně jako předchozí verze souborového systému) nástroje, které omezují fragmentaci již při ukládání dat na disk. Nově však ext4 umožňuje nasazení online defragmentátoru na úrovni souborů nebo celého souborového systému. Díky označování nepoužitých oblastí disku mohou nástroje pro opravu systému (fsck) pracovat rychleji než na ext3.[2]
ext3 | ext4 | |
---|---|---|
Max. velikost oddílu | 16 TiB | 1 EiB |
Max. velikost souboru | 2 TiB | 16 TiB |
Max. počet souborů | 4 miliardy | 4 miliardy (232) |
Max. počet podadresářů | 32 768 | neomezeno |
Systém souborů ext4 může podporovat svazky až o velikosti 1 EiB a soubory s maximální velikostí 16 TiB.
Extenty nahrazují tradiční schéma blokového mapování, které využívají předchozí systémy ext2 a ext3. Extent je rozsah navazujících fyzických bloků (resp. alokačních jednotek), který zlepšuje výkon při práci s velkými soubory a zmenšující fragmentaci. Jeden extent se tak může stát v systému souborů ext4 alokační jednotkou o velikosti až 128 MiB souvislého místa na disku, místo mnoha jednotlivých datových bloků o standardní velikosti 4 KiB.
Systém souborů ext4 je zpětně kompatibilní s ext3, což umožňuje připojit systém souborů ext3 jako ext4.
Systém souborů ext4 je částečně dopředně kompatibilní s ext3, takže oddíl s ext4 může být připojen jako ext3, pokud nejsou v ext4 použity extenty.
V ext3 je počet podadresářů jednoho adresáře omezen na 32 000. Tento limit byl v ext4 navýšen na 64 000 a pomocí rozšíření dir_nlink může tuto hranici dále prolomit (ačkoliv to zastaví zvyšování počtu odkazů z rodiče). Tato vlastnost je implementována do jádra Linuxu od verze 2.6.23. Podpora vysokého počtu položek v adresáři pomocí stromu Htree je obsažena již v systému souborů ext3, pomocí zapnutí rozšíření dir_index.