Súborový systém

**Súborový systém** je spôsob ukladania a organizovania počítačových súborov a údajov, ktoré obsahujú tak, aby k nim bol umožnený jednoduchý prístup. Súborový systém môže používať počítačové záznamové zariadenie ako pevný disk či CD-ROM a zaoberať sa fyzickým umiestnením súborov, alebo môže byť virtuálny a existovať iba ako prístupová metóda k virtuálnym údajom alebo prístupu cez sieť (napr. NFS).

Formálne môžeme povedať, že súborový systém je súbor abstraktných údajových typov implementovaných za účelom ukladania, hierarchickej organizácie, prístupu, manipulácie, navigácie a získavania údajov.

## Aspekty súborových systémov
Najbežnejšie typy súborových systémov využívajú záznamové zariadenie ponúkajúce prístup k poľu blokov s pevne určenou veľkosťou, spravidla 512 bajtov. Súborový systém je zodpovedný za organizáciu týchto sektorov do súborov a adresárov a udržiavanie informácie o ich asociácii a využití.

Súborové systémy však nemusia vôbec využívať záznamové zariadenie. Súborový systém je možné využiť na prístup k akémukoľvek druhu údajov, či už uloženému alebo dynamicky generovanému (napr. prenášané sieťovým spojením).

Či už systém používa záznamové zariadenie alebo nie, súborové systémy zvyknú mať adresáre asociujúce jednotlivé **názvy súborov** s ich indexami vo forme tabuľky ako napr. alokačná tabuľka súborov (File Allocation Table) vo FAT, súborovom systéme MS-DOSu alebo v súborovom systéme ext2. Adresárová štruktúra môže byť plochá alebo môže používať hierarchie, kde adresáre môžu obsahovať podadresáre. V niektorých súborových systémoch sú názvy súborov štruktúrované, so špeciálnou syntaxou pre rozšírenie názvu súboru a čísla verzií. V iných sú názvy tvorené jednoduchými reťazcami, keďže metadáta o jednotlivých súboroch sa ukladajú inde.

Hierarchické súborové systémy boli predmetom skorých výskumov Dennisa Ritchieho; predchádzajúce implementácie boli obmedzené iba do hĺbky niekoľkých úrovní, menovite implementácie IBM, dokonca aj skoré databázy ako IMS. Po úspechu UNIXu rozšíril Denis Ritchie koncept súborového systému na každý objekt vo svojich neskorších operačných systémoch ako Plan 9.

Tradičné súborové systémy poskytujú prostriedky na vytváranie, presúvanie a mazanie súborov aj adresárov. Chýbajú im prostriedky na tvorbu ďalších odkazov na adresáre (hard linky v UNIXe), premenovanie odkazov na nadradený adresár („..“ v UNIXových OS) a tvorbu obojsmerných odkazov na súbory.

Tradičné súborové systémy tiež poskytujú prostriedky na skrátenie súboru (truncate), pridávanie na koniec súboru (append), a modifikáciu súborov na mieste. Neponúkajú možnosť pridať pred, alebo skrátiť od začiatku súboru a už vôbec nie ľubovoľné pridávanie alebo mazanie zo súboru. Poskytnuté funkcie sú vysoko asymetrické a na to, aby boli užitočné v netriviálnych kontextoch im chýba všeobecnosť. Napríklad rúry (pipes) pre komunikáciu medzi procesmi ako objekty súborového systému musia byť implementované mimo súborového systému, pretože nie je možné skrátenie od začiatku súboru.

Riadenie prístupu k základným operáciám nad súborovým systémom môže byť zabezpečené schémami zoznamov prístupových práv (ACL - access control lists) alebo capabilities. Výskum ukázal, že správna a bezpečná implementácia zoznamov prístupových práv je náročná, čo je dôvodom, že experimentálne operačné systémy používajú capabilities. Komerčné súborové systémy stále používajú zoznamy prístupových práv. Pozri počítačová bezpečnosť.

## Typy súborových systémov
Súborové systémy môžeme rozdeliť na diskové, sieťové, databázové a súborové systémy na špeciálne účely.

### Diskové súborové systémy
*Diskový súborový systém* je určený na ukladanie súborov na záznamových zariadeniach, najčastejšie pevných diskoch, ktoré môžu byť priamo alebo nepriamo pripojené k počítaču. Príkladmi sú FAT, NTFS, ext2, ISO 9660, ODS-5 a UDF.

Niektoré súborové systémy sú tiež žurnálovacie (ext3, reiserFS, XFS, JFS) alebo používajú verzie.

### Sieťové súborové systémy
*Sieťový súborový systém* (tiež známy ako distribuovaný súborový systém) je súborový systém, kde sa k súborom pristupuje prostredníctvom siete, prípadne simultánne z viacerých počítačov. V ideálnom prípade by mal byť prístup prostredníctvom siete transparentný. Príkladmi sú NFS, CIFS, Lustre a Global File System.

### Databázové súborové systémy

Novým konceptom správy súborov sú súborové systémy založené na databázach. Namiesto hierarchicky štruktúrovanej správy sú súbory identifikované charakteristikami ako typ súboru, názov, téma, autor a podobné metadáta. Tak je možné hľadanie súborov formulovať ako SQL dotaz alebo v prirodzenej reči. Príklad na obrázku napravo ukazuje výsledky vyhľadávania dotazu „Filmy režírované Stevenom Spielbergom“. Príkladmi sú BFS, GNOME Storage, WinFS, dbfs.

### Súborové systémy na špeciálne účely
Sem patria ostatné, teda nie diskové ani sieťové súborové systémy. To zahŕňa systémy, kde sú súbory vytvárané dynamicky softvérom za účelmi ako komunikácia medzi procesmi alebo dočasné odkladacie miesto.

Súborové systémy na špeciálne účely spravidla používajú súborovo zamerané operačné systémy ako UNIX. Príkladmi sú súborový systém "/proc" používaný v niektorých variantoch UNIXu, ktorý umožňuje prístup k systémovým informáciám, napríklad o procesoch a zariadeniach.

Vesmírne výskumné sondy ako Voyager I a II používali špeciálne súborové systémy založené na páskach. Väčšina dnešných sond ako Cassini-Huygens používajú systémy založené na alebo ovplyvnené RTOS. Automatické prieskumné vozidlá na Marse sú príkladom, v tomto prípade boli použité flash pamäte.

## Súborové systémy a operačné systémy
Väčšina operačných systémov poskytuje súborový systém, keďže súborový systém je integrálnou súčasťou každého moderného operačného systému. Jedinou skutočnou úlohu raných operačných systéov mikropočítačov bola správa súborov -- fakt, ktorý reflektujú ich názvy (DOS, QDOS). Niektoré rané operačné systémy mali separátny komponent na obsluhu súborového systému nazývaný *diskový operačný systém*. Na niektorých mikropočítačoch sa nahrával separátne od zvyšku operačného systému.

Z tohto dôvodu musí existovať rozhranie (poskytované operačným systémom) medzi používateľom a súborovým systémom. Toto rozhranie môže mať textovú formu (to poskytuje rozhranie príkazového riadka ako UNIXový shell alebo OpenVMS DCL) alebo grafickú (vo forme GUI poskytovanú prehliadačmi súborov). V grafickom rozhraní sa niekedy používa metafora zakladač a vnorené zakladače namiesto adresár a podadresáre.

### Súborové systémy UNIXu
UNIX a UNIXové operačné systémy priraďujú každému zariadeniu názov zariadenia, ale takýmto spôsobom sa nepristupuje k súborom na zariadení. UNIX vytvorí virtuálny súborový systém, ktorý zaraďuje všetky súbory na všetkých zariadeniach do jedinej hierarchie. To znamená, že v UNIXe je jeden koreňový (root) adresár a každý súbor existujúci v systéme sa nachádza na niektorej jeho podúrovni. Ďalej, koreňový adresár nemusí mať fyzické umiestnenie – nemusí byť na prvom pevnom disku, dokonca ani len na lokálnom počítači. Ako koreňový adresár je možné použiť zdieľaný sieťový zdroj.

Aby bol umožnený prístup k súborom na inom zariadení je potrebné informovať operačný systém, kde v hierarchii by sa mali objaviť. Tento proces sa nazýva *montovanie* (mounting) súborového systému. Napríklad, aby bol umožnený prístup k CD-ROM, treba povedať operačnému systému „Vezmi tento súborový systém z CD-ROM a nech sa objaví v adresári /mnt“. Uvedený adresár (v tomto prípade „/mnt“) sa nazýva *mount point*. Adresár „/mnt“ existuje na všetkých UNIXových systémoch a jeho zmysel je špecifický ako mount point pre dočasné médiá ako diskety alebo CD. Môže byť prázdny alebo môže obsahovať podadresáre ako mount pointy pre jednotlivé zariadenia. Vo všeobecnosti, iba administrátor (root) je oprávnený montovať súborové systémy.

UNIXové operačné systémy často obsahujú softvér a nástroje uľahčujúce proces montovania a poskytujúce novú funkcionalitu. Pre niektoré z týchto stratégií sa zaviedol termín „auto-mounting“ (automatické montovanie) ako odraz ich účelu.
# V mnohých situáciách je potrebné zabezpečiť dostupnosť iných súborových systémov ako koreňového hneď ako operačný systém nabootuje. Preto všetky UNIXové systémy poskytujú prostriedok na montovanie súborových systémov počas bootovania. Administrátori definujú tieto súborové systémy v konfiguračnom súbore fstab, kde sa tiež definujú možnosti a mount pointy.
# V niektorých prípadoch nie je potrebné montovať súborový systém v čase bootovania, ale ich dostupnosť môže byť požadovaná neskôr počas behu systému. Existujú nástroje umožňujúce montovanie preddefinovaných súborových systémov na požiadanie.
# Vymeniteľné médiá sa stali na mikropočítačových platformách bežnými. Umožňujú prenos programov a údajov medzi počítačmi bez fyzického spojenia. Dvomi bežnými príkladmi sú CD-ROM a DVD. Preto boli vyvinuté nástroje na detekciu ich prítomnsti v mechanike a dostupnosti súborového systému a ich následné namontovanie bez zásahu používateľa.
# Progresívne UNIXové systémy zaviedli tiež koncept známy ako supermounting. Napríklad supermontovaná disketa môže byť fyzicky odstránená zo systému. Za normálnych okolností by disk mal byť pred odstránením *synchronizovaný* (sync) a potom odmontovaný. Za podmienky, že prebehla synchronizácia, je možné uskutočniť výmenu média. Systém automaticky zaregistruje, že bol vymenený disk a aktualizuje obsah mount pointu obsahom nového média.

### Súborové systémy Mac OS X
Mac OS X používa súborový systém zdedený od Mac OS nazývaný HFS plus. HFS plus je súborový systém bohatý na metadáta, zachovávajúci ale nerozlišujúci veľkosť písmen v názvoch súborov. Vďaka UNIXovému pôvodu Mac OS X boli do HFS Plus pridané prístupové práva (*permissions*). Neskoršie verzie HFS Plus pridali žurnálovanie a zaviedli niekoľko optimalizácií alokačných algoritmov v snahe automaticky defragmentovať súbory bez nutnosti použiť externý defragmentačný program.

Dĺžka názvu súboru je obmedzená na 255 znakov, používa kódovanie sa Unicode. Na Mac OS X sa určuje typ súboru z poľa „Type code“ uloženého v metadátovom zázname súboru.

HFS Plus má tri druhy liniek: Hard linky, symbolické linky a aliasy. Aliasy sa používajú na udržiavanie linku na pôvodný súbor aj ak sa premiestni alebo premenuje.

### Súborové systémy Plan 9
Plan 9 bol pôvodne navrhnutý, aby rozvíjal niektoré prednosti UNIXu a aby priniesol vlastné myšlienky. Čo sa týka súborových systémov, používa systém reprezentácie objektov pomocou súborov, avšak v Plan 9 je *každý* objekt operačného systému súborom a je k nemu možné pristupovať ako k súboru. V druhom rade bol implementovaný protokol 9P, aby sa zaistil prakticky bezrozdielny prístup k súboru existujúcom na vzdialenom a lokálnom súborovom systéme (okrem možného rozdielu v latencii). To prináša výhodu, že je možné používať zariadenia na vzdialenom reprezentované ako súbory ako keby to boli zariadenia lokálneho systému. V terminológii Plan 9; viaceré súborové servery poskytujú prístup k zariadeniam, pričom ich klasifikujú ako špeciálne súborové systémy.

Každý objekt Plan 9 je abstrahovaný ako súbor. Napríklad FTP spojenia neobsluhuje na to určený program, ale server ftpfs namontuje vzdialenú hierarchiu ako súčasť hierarchie lokálneho súborového systému a prístup je rovnaký ako k lokálnym súborom. Iným príkladom je poštový systém používajúci súborové servery na syntetizáciu virtuálnych súborov a adresárov, ktorými reprezentuje poštovú schránku ako /mail/fs/mailbox.

### Súborové systémy Microsoft Windows
Microsoft Windows sa vyvinul zo skoršieho operačného systému MS-DOS (ktorý je zasa založený na CP/M-80, ktorý preberá významné myšlienky z ešte skorších systémov, menovite DEC) a pridáva myšlienky v oblasti súborového systému a používateľského rozhrania z iných systémov od svojho prvého uvoľnenia (UNIX, OS/2 atď.). Windows ako taký používa súborové systémy FAT alebo NTFS. Staršie verzie súborového systému FAT mali zásadné obmedzenia dĺžky názvu súboru a maximálnej veľkosti diskov a partícií.

NTFS zavedený so systémom Windows NT umožňoval riadenie prístupu založené na ACL. Hard linky, viaceré súborové toky, indexovanie atribútov, kvóty, kompresiu a mout pointy pre iné súborové systémy (nazývané „junctions“) sú tiež podporované, ale sú nedostatočne zdokumentované.

Na rozdiel od mnohých iných operačných systémov používa Windows abstrakciu vo forme *písmen diskovej jednotky* na používateľskej úrovni na odlíšenie jednotlivých diskových partícií. Napríklad cesta „C:\WINDOWS\“ reprezentuje adresár „WINDOWS“ na partícii označenej písmenom C. Partícia C sa bežne používa pre prvú primárnu partíciu disku, z ktorého bootuje Windows. Táto tradícia sa stala tak pevne zakorenená, že v starších verziách systému existovali predpoklady, že partícia, kde je nainštalovaný Windows musí byť C. Tradíciu používania písmen na označovanie partícií môžeme vystopovať späť do MS-DOSu, kde boli písmená A a B rezervované pre disketové mechaniky. Tiež je možné na písmená mapovať sieťové disky.

Keďže Windows používa na interakciu s používateľom grafické rozhranie, jeho dokumentácia používa pojmy ako *priečinok*, ktorý obsahuje súbory a je reprezentovaný grafickou ikonou priečinka.

### Súborové systémy OpenVMS
Pozri Files-11.

## Pozri aj
* Zoznam súborových systémov
* Porovnanie súborových systémov
* Rozšírenie názvu súboru
* Virtuálny súborový systém

## Externé odkazy
* Špecifikácie a dokumentácia k súborovým systémom (en)