Systemy plików
System plików to metoda i struktura danych, której system operacyjny używa do kontrolowania sposobu przechowywania i pobierania danych, organizując pliki i kata...
System plików (FS) to metoda i struktura danych, której system operacyjny (OS) używa do kontrolowania sposobu przechowywania i pobierania danych. Jest to kręgosłup zarządzania danymi, organizujący pliki i katalogi w sposób hierarchiczny lub inny ustrukturyzowany na urządzeniach pamięci masowej, takich jak dyski twarde, dyski SSD lub dyski USB. Podstawowe funkcje systemu plików obejmują tworzenie, usuwanie, odczytywanie, zapisywanie i organizowanie plików oraz katalogów. Zarządza metadanymi plików, takimi jak nazwy plików, rozmiary, daty utworzenia, daty modyfikacji, uprawnienia i własność. Różne systemy plików stosują różne techniki alokacji danych, takie jak alokacja ciągła, alokacja połączona lub alokacja indeksowana, z których każda ma własne charakterystyki wydajności i fragmentacji. Struktury katalogów mogą być płaskie, hierarchiczne lub kombinacją. Kluczowe kwestie przy projektowaniu systemów plików obejmują wydajność (przepustowość i opóźnienie), niezawodność (integralność danych, tolerancja błędów), skalowalność (obsługa dużej liczby plików i dużych rozmiarów plików), bezpieczeństwo (kontrola dostępu) i kompatybilność z różnymi systemami operacyjnymi. Przykłady obejmują proste warianty FAT dla nośników wymiennych, złożone systemy plików z dziennikiem, takie jak NTFS, ext4, APFS, oraz rozproszone systemy plików, takie jak HDFS lub Ceph.
graph LR
Center["Systemy plików"]:::main
Rel_database["database"]:::related -.-> Center
click Rel_database "/terms/database"
Rel_caching["caching"]:::related -.-> Center
click Rel_caching "/terms/caching"
Rel_arweave["arweave"]:::related -.-> Center
click Rel_arweave "/terms/arweave"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Wyjaśnij jak 5-latkowi
Pomyśl o systemie plików jak o bibliotekarzu pamięci masowej twojego komputera. Wie dokładnie, gdzie znajduje się każda książka (plik), śledzi, kto może je czytać, i upewnia się, że są odkładane na właściwe miejsce.
🤓 Expert Deep Dive
Systemy plików abstrakcyjnie traktują fizyczne medium przechowywania, prezentując logiczny widok nazwanych kolekcji danych (plików) zorganizowanych w przestrzeni nazw (katalogach). Podstawowe komponenty obejmują i-węzeł (lub równoważną strukturę) przechowujący metadane i wskaźniki do bloków danych oraz wpisy katalogów mapujące nazwy na i-węzły. Strategie alokacji znacząco wpływają na wydajność i fragmentację: alokacja ciągła zapewnia wysoką wydajność odczytu sekwencyjnego, ale cierpi na fragmentację zewnętrzną; alokacja połączona unika fragmentacji zewnętrznej, ale ma słabą wydajność dostępu losowego i jest podatna na uszkodzenie wskaźników; alokacja indeksowana (np. bloki plików Unix) zapewnia równowagę, chociaż schematy bloków bezpośrednich/pośrednich mogą ograniczać rozmiar pliku. Dziennikowanie (np. ext4, NTFS) zwiększa niezawodność, rejestrując zamierzone zmiany metadanych przed ich zatwierdzeniem, zapewniając spójność systemu plików po awariach. Systemy plików Copy-on-Write (CoW) (np. ZFS, Btrfs) dodatkowo poprawiają integralność danych, nigdy nie nadpisując danych w miejscu, zamiast tego tworząc nowe kopie, co umożliwia wydajne migawki i czyszczenie danych. Rozproszone systemy plików (np. HDFS, GlusterFS) rozwiązują problemy ze skalowalnością i tolerancją błędów poprzez rozproszenie danych na wiele węzłów, wymagając zaawansowanych modeli spójności i protokołów sieciowych.