Spis treści

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), 

Reiser4 - wersja tworzona od podstaw, w porównaniu do reiserFS zawiera:

  • zmianę architektury systemu na bardziej obiektowy, 
  • używanie repackera - specjalnego programu, który upakowuje ogony, jeszcze bardziej oszczędzając miejsce, 
  • zwiększoną wydajność, 
  • lepsze zapewnienie bezpieczeństwa, 
  • możliwość dołączania własnych pluginów. 

Reiser4 wprowadza innowację w zakresie bezpieczeństwa – dzieli plik na mniejsze części, z których każda może mieć indywidualne uprawnienia i korzystać z różnych dodatków. Wadą Reiser4 jest wolne usuwanie danych, jednak deklasuje on rywali jeśli chodzi o zapisywanie wielu strumieni danych w jednym czasie. Nadaję się także idealnie do przechowywania dużej ilości małych plików, oszczędzając przy tym dużo miejsca. 

SWAP - jest to partycja wymiany, tworzy ona pamięć wirtualną, która jest rozszerzeniem pamięci RAM. Dzięki użyciu "partycji wymiany" RAM zwiększa swoją wydajność a co za tym idzie wydajność systemu również wzrasta. Zamiast partycji SWAP, system może utworzyć plik wymiany, jednak wymiana danych jest o wiele wolniejsza i wydajność systemu drastycznie spada. 

NFS - jest to usługa pozwalająca udostępniać zasoby dyskowe komputerom w sieci. Serwer udostępnia katalogi klientom, którzy mogą je pod montować i działać jak na lokalnym systemie plików. Montowanie: mount serwer.net:/usr/local /usr/local -t nfs. 

JFS (Journaled Filesystem) 

Właściwości:

  • obsługa bardzo dużych plików i partycji (rzędu kilku tysięcy TB), 
  • dynamiczna alokacja i-węzłów, 
  • efektywne wyszukiwanie i-węzłów, wolnego miejsca na dysku oraz plików w katalogach, 
  • zaawansowany system kronikowania operacji dyskowych, 
  • wbudowany bezpośrednio w system plików, a nie dodany do niego później jak w przypadku innych systemów plików, 
  • zastosowanie przedziałów bloków dyskowych (Extent) w celu zmniejszenia fragmentacji danych i zwiększenia efektywności odwołań do nich, 
  • przechowywanie małych plików (linków symbolicznych) oraz katalogów bezpośrednio w i-węzłach co znacznie zwiększa efektywność odwołań do nich, 
  • efektywna obsługa rozrzedzonych plików.

I-węzeł (inode) - jest to struktura danych opisująca pliki zapisane na dysku. I-węzeł zawiera informacje o: typie pliku, właścicielu, grupie, długości pliku, adresie, liczbie dowiązań i kilka innych informacji. Długość pliku to jego wielkość, ilość zajmowanego miejsca na dysku. Adres to numer sektora w którym znajduje się plik. Adresem są sektory dysku, w których należy szukać segmentów pliku (zwykle te sektory mają wielkość 512 bajtów). Liczba dowiązań jest to ilość skojarzonych "kopii" pliku ze zbiorem danych. 

XFS - 64-bitowy system plików zaprojektowany przez firmę Silicon Graphics Inc. z przeznaczeniem do użycia go w systemie operacyjnym IRIX (wersja UNIX-a firmy SGI). Aktualnie jest dostępna również jego implementacja dla systemu Linux rozwijana przez SGI jako projekt na licencji wolnego oprogramowania. 

Właściwości:

  • pozwala na obsługę dużych dysków twardych,(Maksymalny rozmiar woluminu jest ograniczony do 18 milionów TB.), 
  • rozmiar pojedynczego pliku może wynosić maksymalnie 2^63 bajtów czyli ponad 8 milionów TB (dokładnie 8 388 608 TB). 
  • rozmiar jednostki alokacji może wynosić od 512 bajtów (wielkość fizycznej jednostki alokacji) do 1 MB.