System plików Linuxa

System plików - metoda przechowywania plików, zarządzania plikami, informacjami o tych plikach, tak by dostęp do plików i danych w nich zgromadzonych był łatwy dla użytkownika systemu. Systemy plików stosuje się dla różnych nośników danych, takich jak dyski, dyskietki, a także w strumieniach danych, sieciach komputerowych, pamięciach. We współczesnych systemach operacyjnych bezpośrednie operowanie na danych w plikach zarezerwowane jest tylko dla systemu operacyjnego, aplikacje mają zabroniony bezpośredni dostęp do nośnika danych. 
Popularne systemy plików linuxa: Minix, xia, Ext, Ext2, Ext3, Ext4, umsdos, msdos, ReiserFS, vfat, XFS, proc, JFS, smb, NFS, ncp, Swap, iso9660, Sysv, hpfs, Affs, ufs 

Minix - pierwszy system plików wykorzystywany w linuxie, który został stworzony jeszcze przed powstaniem linuxa dla systemu operacyjnego o nazwie MINIX.

Posiadał kilka ograniczeń:

  • długość nazwy pliku maksymalnie 14 znaków, (po pewnym czasie zwiększono do 30 znaków) 
  • wielkość partycji nie większa niż 64 MB, 

Ext (EXTENDED FILE SYSTEM) - następca Minix File System, dopuszczał pliki i partycje do rozmiaru 2 GB oraz długości nazw plików do 255 znaków. Miał jedną dużą wadę, która spowodowała, że nie stał się popularny: sposób zapamiętywania wolnych bloków i węzłów doprowadzał do znacznej fragmentacji dysku co wpływało negatywnie na wydajność systemu. 

Ext2 - zastąpił ext i w krótkim czasie stał się podstawowym systemem plików dla linuxa. W porównaniu do poprzednika ma wiele zalet:

  • obsługuje partycje o wielkości do 4 TB, pliki o wielkości do 2 GB, 
  • rozpoznaje uszkodzenie systemu plików, 
  • automatycznie naprawia uszkodzone sektory za pomocą programu e2fsck, 
  • automatycznie sprawdza system po awarii i co określony czas, posiada wysoką wydajność dzięki przeciwdziałanie fragmentacji 

Wady:

  • długotrwałe sprawdzanie systemu plików po niepoprawnym zamknięciu, 
  • niska wydajność dla bardzo małych plików, 
  • mało efektywna obsługa katalogów. 

Ext3 - nowoczesny system plików oparty na ext2. Domyślny w większości dystrybucji systemu GNU/Linux opartych na jądrze2.4 oraz nowszych. 

Właściwości:

  • Journaling - mechanizm księgowania zwiększający bezpieczeństwo systemu, 
  • Indeksowane katalogi - znacznie zwiększają wydajność systemu przy dużej ilości plików, 
  • Zapis synchroniczny - w najnowszych wersjach systemu Ext3 (jądro 2.4.19) działa ponad 10 razy szybciej od wersji z Ext2, 
  • Kompatybilność z Ext2. 

Ext4 - Rozwój systemu ext4 rozpoczął się w 2006 roku wraz z opracowaniem dwóch zmian dla ext3. Pierwsza z nich rozszerzyła wielkość numeru bloku do 48 bitów, druga zaś zastąpiła mechanizm pośredniego adresowania bloków przez tzw. extenty, a więc obszary bloków danych. Ponieważ po zastosowaniu wspomnianych nowości zmianie ulega struktura danych na dysku, programiści zadecydowali, że aktualizacje te nie zostaną wprowadzone do starego systemu ext3, lecz na bazie jego kodu zostanie opracowana nowa wersja systemu plików o nazwie ext4. System plików ext4 pracuje z 48-bitowymi numerami bloków przy standardowej wielkości bloku nadal wynoszącej 4 kilobajty. Dzięki temu wielkość systemu plików może wynosić do 248 bloków po 4 kB, a więc jeden eksabajt (1024 petabajty), zamiast jak w przypadku ext3 – 16 terabajtów.

ReiserFS - zwany także Reiser3 to system plików zaprojektowany i zaimplementowany przez grupę kierowaną przez Hansa Reisera. ReiserFS jest obecnie obsługiwany przez GNU/Linuksa i może być w przyszłości włączony do innych systemów operacyjnych. ReiserFS to jeden z pierwszych systemów plików z księgowaniem dla GNU/Linuksa. 

Właściwości:

  • bardzo efektywny sposób przechowywania wszystkich informacji o plikach i katalogach,
  • zaawansowany system transakcji zapewniający spójność wszystkich danych zapisanych w systemie, 
  • kompresja wielu małych plików oraz tzw. ogonów (końcówek plików o rozmiarze mniejszym od wielkości bloku) w jednym bloku dyskowym pozwalająca w znacznym stopniu zminimalizować fragmentację wewnętrzną,
  • efektywna obsługa nawet dużych katalogów (stosowana jest w tym przypadku tablica haszująca, dla której klucze są generowane na podstawie nazwy pliku - bardzo szybkie wyszukiwanie pliku), 
  • zaawansowany system wtyczek (plugins) pozwalający niemal dowolnie modyfikować zachowanie warstwy semantycznej systemu (w przeszłości także w pewnym stopniu fizycznej),