ext4

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

ext4 (ang. Fourth Extended File System) – czwarta wersja rozszerzonego systemu plików, następca ext3. Obecnie jeden z najpopularniejszych systemów plików dla Linuksa. Obecny jest w źródłach Linuksa od wersji 2.6.19. Od wersji jądra 2.6.28, wydanego 25 grudnia 2008 roku, uznany za stabilny.

Historia[edytuj]

ext4 powstał jako seria wstecznie kompatybilnych rozszerzeń do ext3. Wiele z nich, oryginalnie rozwijanych przez Cluster File Systems dla systemu plików Lustre w latach 2003-2006, miało rozszerzać limity pojemności oraz dodawać poprawki wydajności. Developerzy jądra Linux sprzeciwili się jednak zaakceptowaniu rozszerzeń do ext3 ze względów na stabilność i zaproponowali zforkowanie kodu źródłowego ext3, a następnie przeniesienie rozwoju do nowej gałęzi ext4. Miało to umożliwić rozwój bez wpływu na dotychczasowych użytkowników ext3. Propozycja ta została zaakceptowana i 28 czerwca 2006 Theodore Ts'o, opiekun ext3, ogłosił nowy plan rozwoju ext4.

Wstępna wersja rozwojowa ext4 została włączona do wersji 2.6.19 jądra Linux. 11 października 2008, kod ext4, oznaczony już jako stabilny, został włączony do repozytoriów jądra Linux w wersji 2.6.28. Jądro 2.6.28, zawierające system plików ext4, zostało wydane 25 grudnia 2008. 15 stycznia 2010, Google ogłosiło zamiar aktualizacji swojej infrastruktury przechowywania danych z ext2 do ext4. 14 grudnia 2010 ogłoszono również że ext4 będzie używany również zamiast YAFFS w systemie Android z serii 2.3.

Własności[edytuj]

większe limity rozmiaru

Umożliwia obsługę woluminów do 1 eksbibajta (EiB). Wielkość pojedynczego pliku nie może przekraczać 16 terabajtów (TiB)[1].

obsługa extents

Za pomocą mechanizmu extents zmieniona została filozofia organizacji bloków, w których przechowywany jest plik na dysku. W systemie ext4 pliki przechowywane są w ciągłym zbiorze bloków, nazywanym extent. W i-węźle przechowywane mogą być maksymalnie 4 informacje o extent, a każdy taki zbiór może zawierać maksymalnie 128 MiB przy rozmiarze bloku 4kiB (przy większym rozmiarze pliku używane jest pośrednie adresowanie). Dane te są przechowywane zamiast wskaźników do bloków.

prealokacja

System plików z włączoną obsługą extents może realizować prealokację bloków należących do pliku. Aby z niej skorzystać program użytkownika musi użyć funkcji fallocate() informującej system plików jaki rozmiar należy zablokować. Algorytm alokacji bloków uwzględnia to, że powinny być one ciągłe.

opóźniona alokacja

System plików pozwala na alokację opóźnioną (allocate-on-flush), pozwalającą na zaalokowanie bloków dopiero w trakcie zapisu całego pliku na dysku. Stosując tą technikę jądro zapisuje plik na dysku dopiero podczas zapisywania brudnych buforów, lub gdy program użytkownika wywoła funkcję fsync().

kompatybilność wsteczna

ext4 jest wstecznie kompatybilny z ext3 oraz ext2, co pozwala na zamontowanie ext3 oraz ext2 jako ext4. Pozwala to nieznacznie poprawić wydajność ponieważ niektóre z nowych funkcji ext4, jak na przykład nowy algorytm alokacji bloków, mogą być również użyte z ext3 oraz ext2. ext3 jest częściowo kompatybilny wprzód z ext4, co oznacza że ext4 może być zamontowany jako ext3 (używając "ext3" jako system plików podczas montowania). Jednak jeżeli partycja ext4 używa extents (głównej nowej funkcji ext4), wtedy nie ma możliwości zamontowania jako ext3.

zwiększona liczba obsługiwanych podfolderów

W systemie ext3 katalog może posiadać maksymalnie 31 998 podkatalogów. W ext4 limit ten został usunięty[2].

Zobacz też[edytuj]

Przypisy

  1. Migrating to ext4
  2. Ext4 (ang.). kernelnewbies.org. [dostęp 2016-05-30].

Linki zewnętrzne[edytuj]