close

Uniksowy system plików

Przejdź do nawigacji Przejdź do wyszukiwania
SFU
deweloper CSRG
Pełne imię i nazwisko System plików UNIX
Obsługiwane systemy operacyjne A/UX , DragonFlyBSD , FreeBSD , FreeNAS , HP-UX , NetBSD , Linux , OpenBSD , Solaris , SunOS , Tru64 UNIX , UNIX System V i inne
Wstęp ( 4.2BSD )
Struktury
zawartość katalogu Stół
Granic
Maksymalny rozmiar pliku 2 73 bajty (8 ZB )
Maksymalny rozmiar nazwy pliku 255 bajtów
Maksymalny rozmiar woluminu 2 73 bajty (8 ZB )
Charakterystyka

Unix File System (UFS) to system plików używany przez różne systemy operacyjne UNIX i POSIX . Jest to pochodna Berkeley Fast File System ( FFS ), który jest rozwijany z FS UNIX (ten ostatni opracowany w Bell Labs ).

Prawie wszystkie pochodne BSD , w tym FreeBSD , NetBSD , OpenBSD , NeXTStep i Solaris używają wariantu UFS. W systemie Mac OS X jest dostępny jako alternatywa dla HFS . W systemie Linux , istnieje częściowe wsparcie dla systemu plików UFS tylko do odczytu i używa natywnego systemu plików typu ext3 , z projektem inspirowanym UFS.

Projekt

System plików UFS składa się z następujących części:

  • kilka bloków na początku partycji zarezerwowanej dla ładowania początkowego (która musi być inicjowana oddzielnie od systemu plików).
  • superblok zawierający magiczną liczbę identyfikującą go jako UFS i kilka innych ważnych liczb opisujących parametry dostrajania geometrii i zachowania.
  • zbiór grup cylindrów. Każda grupa butli ma następujące elementy:
    • kopia zapasowa superbloku.
    • nagłówek cylindra ze statystykami, listą wolnego miejsca itp. o tym bloku cylindrów, podobnie jak w superbloku.
    • liczba i- węzłów , z których każdy zawiera atrybuty pliku.
    • szereg bloków danych.

I-węzły są ponumerowane sekwencyjnie. Kilka pierwszych i-węzłów jest zarezerwowanych ze względów historycznych, po których następują i- węzły katalogu głównego .

Pliki katalogów zawierają tylko listę plików w katalogu i skojarzony i-węzeł dla każdego pliku. Wszystkie metadane ( metadane ) są przechowywane w i- węźle .

Historia i ewolucja

Najwcześniejsze wersje systemu UNIX wykorzystywały system plików zwany po prostu FS . FS zawierał tylko blok startowy, superblok, garść i-węzłów i bloki danych. Działało to dobrze w przypadku małych dysków, dla których zaprojektowano wówczas system UNIX , ale zaawansowana technologia i dyski zaczęły rosnąć, przesuwając głowami tam iz powrotem między pulą i-węzłów a blokami danych, do których się odnosiły. ”, szum spowodowany przez obracające się głowice dysków wykonujące szybkie, powtarzające się wyszukiwanie danych z dala od magnetycznych talerzy dysku. BSD zoptymalizowało to w FFS , odwracając grupy cylindrów, dzieląc dysk na mniejsze grupy, z których każda ma własną pulę i-węzłów i bloków danych.

To, co robi BSD FFS, to próba zlokalizowania powiązanych bloków danych i metadanych w tej samej grupie cylindrów, a najlepiej, całej zawartości katalogu (dane i metadane dla całego pliku) w tym samym lub w pobliżu przez grupę cylindry, dzięki czemu udało się zmniejszyć fragmentację spowodowaną rozproszeniem zawartości katalogów na całym dysku.

Niektóre parametry wydajności w superbloku obejmują liczbę ścieżek i sektorów, prędkość obrotową dysku oraz wyrównanie sektorów między ścieżkami. W w pełni zoptymalizowanym systemie głowicę można przesuwać między sąsiednimi ścieżkami, aby odczytać pofragmentowane sektory naprzemiennych ścieżek podczas oczekiwania na obrót dysku.

W miarę jak dyski stawały się coraz większe, optymalizacje na poziomie sektorów stały się przestarzałe (zwłaszcza w przypadku dysków, które używały numeracji liniowej i zmiennych sektorów na ścieżkę ). Przy większych dyskach i większych plikach pofragmentowane odczyty stały się większym problemem. Aby temu zaradzić, BSD zwiększyło rozmiar bloku systemu plików z jednego sektora do 8k. Miało to różne skutki. Szansa, że ​​sektory plików są ciągłe, jest znacznie większa. Zmniejsza się ilość narzutu na wyliczenie bloków pliku. Zwiększono liczbę bloków reprezentowanych w szerokości ustalonego bitu (pozwalając na większe dyski).

Przy większych rozmiarach bloków dyski z wieloma małymi plikami mogą stracić dużo miejsca, więc BSD dodało „fragmentację na poziomie bloku”, gdzie ostatni częściowy blok danych z wielu plików może być przechowywany w jednym bloku „fragmentu” zamiast wielu puste bloki.

Realizacje

Większość producentów systemów POSIX dostosowała UFS do własnych potrzeb, dodając zastrzeżone rozszerzenia, które mogą nie być rozpoznawane przez wersje UNIX innych programistów . Co zaskakujące, wielu nadal używa oryginalnego rozmiaru bloków i pól danych o tej samej szerokości co oryginalny UFS, więc pewien stopień zgodności (odczytu) jest zachowany na różnych platformach.

FreeBSD 5.0 ​​wprowadził UFS2 , który dodaje obsługę woluminów powyżej 1TB ( TeraByte ) oraz obrazów systemu plików. Został przeniesiony do NetBSD .

System plików Linux ext2 został napisany od podstaw w oparciu o koncepcje UFS. ext2 umożliwia konfigurowanie rozmiarów bloków w czasie tworzenia systemu plików w celu obsługi większych dysków. Posiada również 64-bitowe pola danych w i-węźle do akceptowania większych plików. Ext3 dodaje kronikowanie . ReiserFS był pierwszym systemem plików z księgowaniem zawartym w jądrze Linuksa i jest szybszy podczas pracy z małymi plikami. Linux zawiera implementację UFS w celu zapewnienia zgodności binarnej na poziomie odczytu z innymi systemami UNIX , ale ponieważ nie ma standardowej implementacji rozszerzeń zewnętrznych dostawców, Linux ma obecnie tylko eksperymentalną obsługę zapisu dla UFS.

Począwszy od Solaris 7 firma Sun Microsystems włączyła rejestrowanie UFS do środowiska operacyjnego Solaris, które udostępnia systemowi plików z obsługą kronikowania systemowi UFS . Solaris UFS ma również rozszerzenia dla dużych plików, dużych dysków i innych funkcji.

Linki zewnętrzne