Ext4

ext4 (fourth extended file system)
FejlesztőTheodore Ts'o et al.
Partícióazonosító0x83
Struktúra
KönyvtárszerkezetH-fa, táblázat
Fájlszerkezetbitkép (szabad hely), táblázat (metaadatok)
Hibásszektor-szerkezettáblázat
Korlátok
Maximális fájlméreta fájlrendszer mérete
Maximális fájlszám64 000
Fájlnév maximális hossza255 B
Maximális kötetméret1 EiB
Tiltott karakterek a fájlnevekben\0 (NULL) és „/”
Képességek
Dátumhatárok1901. december 14. – 2514. április 25.
Dátumfelbontás1 ns
Támogatott operációs rendszerekLinux

Az ext4 (fourth extended file system) naplózó fájlrendszer Linuxhoz, az ext3 utóda.

Az ext4 eredetileg az ext3 visszafelé kompatibilis bővítéseinek sora volt, melyek nagy részét a Cluster File Systems készítette a Lustre fájlrendszerhez 2003–2006 közt a tárhelyhatárok növelésére és más teljesítményjavításokhoz. Azonban más Linux-mag-fejlesztők stabilitási okokból nem fogadták el a kiterjesztéseket, és javasolták az ext3-kód leágazását, annak ext4-re való átnevezését és az ott történő fejlesztéseket a meglévő ext3-használók érintése nélkül. Ezt elfogadták, és 2006. június 28-án Theodore Ts'o, az ext3 karbantartója bejelentette az ext4 tervét.

Az ext4 előzetes verzióját tartalmazta a Linux 2.6.19. 2008. október 11-én az ext4-et stabilnak jelölő változtatások kerültek a Linux 2.6.28 repozitóriumokba, az ext4 fejlesztése befejeződött, bevezetése ajánlott lett. E verzió 2008. december 25-én jelent meg. 2010. január 15-én a Google közölte, hogy tárhely-infrastruktúráját ext2-ről ext4-re frissíti. 2010. december 14-én azt is közölte, hogy az Android 2.3 YAFFS helyett ext4-et használ.

Használat

Az ext4 számos Linux-disztribúció, például a Debian és az Ubuntu alapértelmezett fájlrendszere.

Jellemzők

Az fsck időfüggése inode-számtól (ext3 és ext4 összehasonlítása)

Korlátok

2008-ban az ext3 és ext4 fő fejlesztője, Theodore Ts'o kijelentette, hogy bár az ext4-nek számos jobb funkciója van, nem jelentős újítás: régi technológiát használ, és időleges megoldás. Szerinte a Btrfs jobb, mivel „jobban méretezhető, megbízhatóbb, és könnyebben kezelhető”. A Btrfs-ben ezenkívül „számos hasonló ötlet van a reiser3/4-hez”. Azonban az ext4 új funkciókat kapott, például titkosítást és metaadat-ellenőrzőösszegeket.

Az ext4 nem használja a „biztonságos törlés” attribútumot, mely törléskor a fájlok felülírását okozta volna. Egy ilyet tartalmazó változtatást javasoltak 2011-ben, de nem oldotta meg az érzékeny adatok naplóba kerülését.

Késleltetett hozzárendelés és lehetséges adatvesztés

Mivel a késleltetett hozzárendelés megváltoztatja az ext3-hoz képest a viselkedést, e funkció további lehetséges adatvesztést okozhat, amennyiben a rendszer összeomlik vagy leáll az összes adat kiírása előtt. Így az ext4 a 2.6.30 verziótól ez eseteket az ext3-hoz hasonlóan kezeli.

Általában ez egy fájl tartalmát a módosítások kiírásának fsynckel való kényszerítése nélkül módosító program esetén fordul elő. Két gyakori módja van egy fájl módosításának Unix-alapú rendszeren:

fd=open("file", O_TRUNC); write(fd, data); close(fd);

Ez esetben egy létező fájl nyitáskor megszűnik (az O_TRUNC paraméter miatt), majd új adatok kiírása történik. Mivel az írás eltarthat némi ideig, lehetséges ext3-mal is az adatvesztés, de ez ritka. Azonban mivel az ext4 képes hosszú ideig késleltetni a kiírást, ez gyakoribb lehet ekkor.
Számos probléma történhet:
  1. Ha az írás nem sikerül (például az íróprogram hibái vagy külső körülmények, például teli meghajtó miatt), mindkét fájlverzió elvész, és a fájl sérülhet, mivel csak egy részét írta ki a program.
  2. Ha más folyamatok férnek a fájlhoz annak írása közben, sérült változatot látnak.
  3. Ha más folyamatokban nyitva van a fájl, és nem várják annak megváltozását, ezek összeomolhatnak. Példa erre egy megosztott könyvtári fájl, mely futó programokba van leképezve.

Emiatt gyakran az alábbit használják inkább:

fd=open("file.new"); write(fd, data); close(fd); rename("file.new", "file");

Új ideiglenes fájl jön létre file.new néven az új tartalmakkal, majd annak az átnevezése történik meg a régi névre. A rename() révén történő felülírás atomiságát a POSIX szabványok biztosítják – vagyis vagy megmarad a régi fájl, vagy felülírja az új. Az ext3 alapértelmezett „rendezett” naplózása biztosítja, hogy a fájladatok a metaadatok előtt íratnak ki, biztosítva, hogy a régi és az új fájlok valamelyike megmarad. Az ext4 késleltetett hozzárendelése ezen elvárást nem teljesíti: a fájlírás hosszan késleltethető, és az átnevezés az új fájl tartalmainak kiírása előtt történik.

Az fsync() kockázatcsökkentésért való gyakoribb használata a legtöbb Linux-disztribúción alapértelmezett data=ordered paraméterrel csatlakoztatott ext3 fájlrendszereken teljesítménycsökkenést okozhat. Mivel mindkét fájlrendszer használatban lesz bizonyos időre, ez bonyolítja a fejlesztők feladatait. Az ext4 a Linux 2.6.30-tól észleli e gyakori eseteket, és kényszeríti a fájlok azonnali hozzárendelését. Ez az ext3 rendezett módjához hasonló szemantikát biztosít, és növeli az esélyét, hogy az egyik fájlváltozat túléli az összeomlást. Ez az új viselkedés az alapértelmezett, de letiltható a „noauto_da_alloc” beállítással.

E változtatások a fő mag 2.6.30 verziójában vannak jelen, de egyes disztribúciók 2.6.28-on és 2.6.29-en is működőképessé tették.

Ezek nem gátolják meg teljesen az adatvesztést, vagy segítenek az új fájlokkal. Az egyetlen biztonságos mód olyan szoftverek írása és használata, mely szükség esetén fsyncet használ. A teljesítményproblémák a fsyncet igénylő írási műveletek számának korlátozásával oldhatók meg.

Megvalósítás

A Linux-mag egyszerűsített szerkezete: az ext4 a virtuális fájlrendszer és a blokkréteg közt van

A Linux-mag virtuális fájlrendszere a Linux-magon belüli alrendszer, több fájlrendszer egy szerkezetbe való integrálására tett kísérlet eredménye. A Sun Microsystems alkalmazottainak 1986-ban végzett munkájára visszavezethető ötlet a minden fájlrendszerben közös rész kiemelése és önálló rétegbe helyezése, mely a fájlrendszereket hívja az adat tényleges kezeléséhez.

Minden fájlhoz vagy álfájlhoz tartozó rendszerhívás a Linux rendszermag virtuális fájlrendszeréhez kerül feldolgozásra. Ezek szabványos POSIX-hívások, például open, read, write, lseek stb.

Kompatibilitás Windowszal és macOS-szel

Jelenleg az ext4 teljes körűen támogatott Linuxon kívül is.

A Windows az ext4-hez a Windows 10 Build 20211 óta tud hozzáférni. A 2016. augusztus 2-án a Windows 10 1607-es verziójában bevezetett Windows Subsystem for Linux (WSL) révén lehetséges ez. WSL is available only in 64-bit versions of Windows 10 from version 1607. Ezenkívül elérhető a Windows Server 2019-ben is. A WSL-architektúrában a WSL 2 2019. június 12-i kiadásával történt nagy változás. A WSL 2 legalább Windows 10 Version 1903-at igényel (build 18362) x64-es, illetve legalább Version 2004-et (build 19041-től) ARM64-rendszerekre.

A Paragon Linux File Systems for Windows nevű terméke lehetővé teszi az ext2/3/4 írását-olvasását Windows 7 SP1-en, 8-on, 8.1-en, 10-en, Windows Server 2008 R2 SP1-en, 2012-n és 2016-on.

A macOS teljes ext2–4-írási/olvasási képességgel rendelkezik a kereskedelmi extFS for Mackel. A szabad szoftverek, például az ext4fuse csak olvasást támogatnak korlátozott mértékben.

Jegyzetek

  1. 1 2 Mathur, Avantika; Cao, MingMing; Bhattacharya, Suparna; Dilger, Andreas; Zhuravlev (Tomas), Alex; Vivier, Laurent (2007). "The new ext4 filesystem: current status and future plans" (PDF). Proceedings of the Linux Symposium. Ottawa, ON, CA: Red Hat. 2010. július 6. dátummal az eredeti (PDF) címről archiválva. Hozzáférés: 2008. január 15.
  2. ↑ Torvalds, Linus (2006. június 9.). "extents and 48bit ext3". Linux kernel mailing list.
  3. ↑ Ts'o, Theodore (2006. június 28.). "Proposal and plan for ext2/3 future development work". Linux kernel mailing list.
  4. ↑ Leemhuis, Thorsten (2008. december 23.). "Higher and further: The innovations of Linux 2.6.28 (page 2)". Heise Online. 2009. január 3. dátummal az eredeti címről archiválva. Hozzáférés: 2010. január 9.
  5. ↑ "ext4: Rename ext4dev to ext4". Linus' kernel tree. Hozzáférés: 2008. október 20.{{cite web}}: CS1 karbantartás: elavult archiválási szolgáltatás (link)
  6. ↑ Leemhuis, Thorsten (2008. december 23.). "Higher and further: The innovations of Linux 2.6.28". Heise Online.
  7. ↑ Paul, Ryan (2010. január 15.). "Google upgrading to Ext4, hires former Linux Foundation CTO". Ars Technica.
  8. ↑ "Android 2.3 Gingerbread to use Ext4 file system". The H Open. 2010. december 14.
  9. ↑ "FileSystem in debian". 2019. szeptember 14.
  10. ↑ "ext4 - High Level Design". kernel.org. Hozzáférés: 2023. január 8.
  11. ↑ Hal Pomeranz (2011. március 28.). "Understanding EXT4 (Part 3): Extent Trees". SANS Digital Forensics and Incident Response Blog. 2019. augusztus 18. dátummal az eredeti címről archiválva.
  12. ↑ "Mount of ext4 (created without extents) as ext3 fails on RH6.2". www.linuxquestions.org. Hozzáférés: 2018. április 7.
  13. ↑ "Ext4 - Linux Kernel Newbies". kernelnewbies.org.
  14. ↑ "New ext4 features - Ext4". ext4.wiki.kernel.org.
  15. ↑ Prabhakaran, Vijayan; Bairavasundaram, Lakshmi N.; Agrawal, Nitin; Gunawi, Haryadi S.; Arpaci-Dusseau, Andrea C.; Arpaci-Dusseau, Remzi H. "IRON File Systems" (PDF). CS Dept, University of Wisconsin. {{cite journal}}: Cite journal requires |journal= (súgó)
  16. ↑ "Ext4 Metadata Checksums - Ext4". ext4.wiki.kernel.org.
  17. ↑ "Linux_3.5 - Linux Kernel Newbies". kernelnewbies.org.
  18. ↑ "ext4: Fix handling of extended tv_sec". Linux-stable kernel tree. Hozzáférés: 2017. február 14.
  19. ↑ Ts'o, Theodore (2006. október 5.). "Re: creation time stamps for ext4 ?".
  20. ↑ Edge, Jake (2017. március 31.). "Extending statx()".
  21. ↑ Li, Xi (2016. január 12.). "Ext4 encryption".
  22. ↑ Ts'o, Theodore (2015. április 8.). "Ext4 encryption".
  23. ↑ "Ext4 Filesystem - Thomas-Krenn-Wiki". www.thomas-krenn.com.
  24. ↑ "kernel/git/torvalds/linux.git - Linux kernel source tree". git.kernel.org.
  25. ↑ "Ext4 - ArchWiki". wiki.archlinux.org.
  26. ↑ Paul, Ryan (2009. április 14.). "Panelists ponder the kernel at Linux Collaboration Summit". Ars Technica. Hozzáférés: 2009. augusztus 22.
  27. ↑ Theodore Ts'o (2008. augusztus 1.). "Re: reiser4 for 2.6.27-rc1". linux-kernel (Mailing list). Hozzáférés: 2010. december 31.
  28. ↑ Corbet, Jonathan (2011. október 11.). "Securely deleting files from ext4 filesystems".
  29. 1 2 "ext4 documentation in Linux kernel source". 2009. március 28.
  30. ↑ Ubuntu bug #317781 Long discussion between Ubuntu developers and Theodore Ts'o on potential data loss
  31. ↑ Thoughts by Ted blog entry, 12 March 2009 A blog posting of Theodore Ts'o on the subject
  32. ↑ Kleiman
  33. ↑ Brandon LeBlanc (2020. szeptember 10.). "Announcing Windows 10 Insider Preview Build 20211". Windows Blogs. Hozzáférés: 2021. május 25.
  34. ↑ Pierre Boulay (2020. szeptember 10.). "Access Linux filesystems in Windows and WSL 2". Windows Command Line. Hozzáférés: 2021. május 25.
  35. ↑ "Get started mounting a Linux disk in WSL 2". Microsoft Docs. Hozzáférés: 2021. május 25.
  36. ↑ Craig Loewen (2019. június 12.). "WSL 2 is now available in Windows Insiders". Windows Command Line. Hozzáférés: 2021. május 25.
  37. ↑ "Windows Subsystem for Linux Installation Guide for Windows 10". Windows Docs. Hozzáférés: 2021. május 25.
  38. ↑ "Linux File Systems for Windows". Paragon Software. Hozzáférés: 2021. május 25.
  39. ↑ "extFS for Mac". Paragon Software. Hozzáférés: 2021. május 25.

Fordítás

Kapcsolódó szócikkek

További információk