Souborový systém

Souborový systém (anglicky file system) je v informatice označení pro způsob organizace dat ve formě souborů (a většinou i adresářů) tak, aby k nim bylo možné uživatelsky srozumitelně přistupovat. Souborové systémy jsou uloženy na vhodném typu elektronické paměti, která je umístěna přímo v počítači (pevný disk nebo CD nebo SSD disk,…) nebo může být zpřístupněna pomocí počítačové sítě (NFS, SMB, AppleTalk,…).

Účel souborového systému 
Údaje v elektronické paměti jsou přístupné v podstatě jako vektor dvojkových čísel. Přitom různé oblasti tohoto vektoru mohou být v závislosti na typu a okamžitém stavu paměti různě rychle dostupné. Například harddisk nebo CD-mechanika potřebuje určitý čas na přesun hlavičky na jinou stopu a než se pod hlavičku dostane oblast s požadovanými daty.

Souborový systém zajišťuje ukládání a čtení dat paměťového média tak, aby s nimi uživatelé mohli pracovat ve formě souborů a adresářů. Základní ideou souborového systému je tedy zpřístupnění a ukládání dat pomocí hierarchicky organizovaného systému adresářů a souborů. Představme si rozsáhlou knihovnu dokumentů, kde bychom mohli popsat přístup ke konkrétnímu dokumentu například následovně:
"budova C / 2. patro / místnost č. 12 / regál 3 / šuplík D2 / Šanon Akta-X / Dokument Vetřelec". V analogické abstraktní formě zpřístupňuje informace souborový systém, až na to že místo "budovy" nejspíše budeme mít písmeno označující logický disk, místo "patra" adresář 1. hierarchické úrovně, místo "místnosti" podadresář, dále podpodadresář, atp. Jednotlivým dokumentům v šanonech by pak odpovídaly soubory. Základním pravidlem každého souborového systému je, že data musí být jednoznačně určena svým jménem. Z toho vyplývá, že dva soubory nebo podadresáře umístěné ve stejném adresáři nesmí mít stejné jméno.

Jednoúčelová zařízení jako jsou mp3 přehrávače nebo digitální fotoaparáty mohou podporovat pouze omezenou podmnožinu funkcí souborového systému. Avšak s plnohodnotnými hierarchickými souborovými systémy se setkáváme stále častěji (například v mobilních telefonech).

Souborový systém zaznamenává kromě jména souboru a jeho umístění v hierarchii adresářů další informace sloužící pro správu souborů. Především jsou to časové známky (nejdůležitější je čas poslední změny). Dále může souborový systém vést informace o vlastnících souborů a přístupových právech, což je důležité ve víceuživatelských systémech, nebo při zpřístupňování dat na disku pomocí počítačové sítě.

Organizace dat na disku 
Pevné disky jsou obvykle logicky rozděleny na oddíly (partition), takže souborový systém se rozkládá jen na konkrétním oddílu a ne na celém disku. To umožňuje mít na pevném disku více nezávislých souborových systémů, které mohou být různého typu.

Informace uložené v systému souborů dělíme na metadata a data. Metadata popisují strukturu systému souborů a nesou další služební a doplňující informace, jako je velikost souboru, čas poslední změny souboru, čas posledního přístupu k souboru, vlastník souboru, oprávnění v systému souborů, seznam bloků dat, které tvoří vlastní soubor atd. Pojmem data pak míníme vlastní obsah souboru, který můžeme přečíst, když soubor otevřeme.

Software, který realizuje souborový systém, bývá obvykle součástí operačního systému. Většina operačních systémů podporuje několik různých souborových systémů. V Microsoft Windows nalezneme podporu pro souborové systémy FAT a NTFS a ISO 9660 pro ukládání souborů na CD a DVD. V Linuxu nalezneme kromě již zmíněných také ext2, ext3, ext4, ReiserFS, JFS, XFS a mnoho dalších. DOS podporuje systémy FAT, po instalaci CD/DVD driveru také ISO 9660. Solaris podporuje především UFS a ZFS, ale i mnoho dalších.

Souborový systém a operační systémy 
Mnoho operačních systémů podporuje více než jeden souborový systém. Občas jsou souborový systém a OS tak propojení, že je těžké je od sebe oddělit. Zde je potřeba, aby OS obsahoval rozhraní mezi uživatelem a souborovým systémem. Toto rozhraní může být textové (ovládané příkazovou řádkou) nebo grafické.

Unix a na Unixu založené systémy 
Souborový systém má v unixových operačních systémech jen jeden kořen (tj. existuje jen jeden adresářový strom). Případné další souborové systémy jsou připojeny do adresářů existujícího stromu a nevytvářejí proto další kořen (další samostatný adresářový strom). Pro připojování souborových systémů do adresářového stromu slouží nástroj mount.

Při startu unixového systému (tj. při bootu) je zavedeno do paměti jádro, které si připojí kořenový souborový systém. Další souborové systémy jsou připojeny do existujících adresářů při startu automaticky dle definice v souboru /etc/fstab. Správce počítače může připojit další souborové systémy později, případně jsou připojovány automaticky (např. USB flash disk).

macOS 
macOS používá souborový systém HFS+, který je převzat z klasického Mac OS. Firma Apple ho označuje termínem „Mac OS Extended“. Souborový systém HFS+ je velmi bohatý na metadata. Soubory mohou mít názvy délky až 255 znaků. HFS Plus používá pro kódování Unicode. Systém macOS podporuje též souborový systém UFS pocházející z BSD Unixu (souborový systém z NeXTSTEPu). Nové verze macOS jsou schopny číst a zapisovat do FAT. Umějí též číst novější NTFS z řady Windows NT.

Od roku 2017 používá Apple ve svém operačním systému IOS Apple souborový systém Apple File System APFS.

PC-BSD 
PC-BSD je desktopová verze FreeBSD, který má stejnou podporu podobnou FreeNAS.

Microsoft Windows 
Řada systémů Windows NT používá souborové systémy FAT, NTFS, exFAT, Live File System a ReFS (poslední z nich je podporován až Windows Server 2012 R2, ale Windows z nich nemůže nabootovat). Windows používá u každého souborového systému pro označení jeho kořene další písmeno abecedy. Například cesta C:\Windows představuje adresář Windows na disku pojmenovaném C. Označení C: je nejčastěji používáno jako označení primárního oddílu, na kterém bývá operační systém nejčastěji nainstalován.

FAT 
Rodina souborových systémů FAT je podporována téměř všemi operačními systémy pro osobní počítače, včetně všech verzí Windows a MS-DOS/PC DOS a DR-DOS (PC DOS je OEM verzí MS-DOS). Je to univerzální formát použitelný mezi počítači a zařízeními většiny typů a věku. Během let se tento souborový systém vyvíjel z FAT12 na FAT16 a nakonec FAT32. Byly do něj přidány funkce navíc, například podsložky a dlouhé názvy souborů. FAT12 a FAT16 měly limit pro počet položek v kořenovém adresáři a limit maximální velikosti. Standardní FAT12, FAT16 a FAT32 mají pro název souboru limit 8+3 znaky (osm znaků pro název souboru a tři znaky pro příponu, například .EXE).

NTFS 
Souborový systém NTFS byl představen s operačním systémem Windows NT v roce 1993.

exFAT 
ExFAT je patenty zatížený souborový systém, který není kompatibilní s FAT. Je podporován v nových operačních systémech Windows NT (Windows Vista, Windows Server 2008, Windows 7, Windows 8 a podpora může být dodána do Windows XP. ExFAT je podporován v macOS od verze 10.6.5 (Snow Leopard). Podpora v dalších operačních systémech je malá, protože Microsoft nepublikoval specifikace souborového systému. ExFAT je jediný souborový systém plně podporovaný na operačních systémech Windows a macOS, který dokáže pracovat se soubory většími než 4 GB.

Omezení souborových systémů 
Různé souborové systémy mohou mít různá omezení, například:
 velikost paměťového média, kterou je daný systém schopen pokrýt;
 délka souboru;
 délka jména souboru;
 počet zanořených podadresářů;
 podporovaná znaková sada.

Žurnálování v systému souborů 
Zápis dat a metadat do systému souborů probíhá v několika krocích. Proto nejsou data a metadata v každém okamžiku konzistentní. Dojde-li v takové chvíli k havárii počítače (např. výpadek elektrického proudu, chyba hardware, software a podobně), zůstane systém souborů v nekonzistentním stavu. Z tohoto důvodu je při dalším startu operačního systému vhodné, aby byla provedena kontrola a nekonzistentní data byla opravena. K tomu může dojít automaticky (např. v Linuxu nebo ve Windows 95 a novějších systémech) nebo je nutné spustit kontrolu ručně (systémy DOS).

Celková kontrola systému souborů a všech vazeb mezi daty a metadaty je časově velmi náročná operace, při které navíc může dojít ke zbytečné ztrátě již částečně zapsaných informací. Proto jsou moderní systémy souborů rozšířeny o žurnálování, které umožňuje po havárii rychlou opravu eventuálních nekonzistencí. Principem techniky je uchovávání chronologického záznamu prováděných operací, do kterého se zapisují všechny prováděné činnosti. Pokud dojde např. k výpadku napájení, je po restartu nekonzistence opravena návratem do předchozího zaznamenaného stavu za pomoci záznamů z žurnálu.

Mezi žurnálovací souborové systémy patří např. NTFS, HFS+, ext3, ext4, XFS nebo ReiserFS.

Kvóty 
Kvóty (anglicky quota) jsou limity nastavené správcem systému, které určitým způsobem omezují použití souborového systému.

Nejčastěji se kvóty používají na omezení následujících věcí:
 velikosti využitého místa (usage nebo block quota)
 počtu souborů (file nebo inode quota)

Dále může administrátor systému nastavit varování, tzv. soft quota, které uživatele informuje v případě, že se blíží ke svému limitu (který je pak nazýván hard quota). Často se také nastavuje tzv. grace interval, který v případě potřeby umožňuje krátkodobé mírné překročení kvóty.

Síťové souborové systémy 
Síťové souborové systémy (network filesystem) je označení pro systémy souborů, které jsou dostupné prostřednictvím počítačové sítě. Ve skutečnosti leží soubory a adresáře na jiném počítači a přistupujeme k nim pomocí speciálních síťových volání služeb (např. SMB, NFS, CODA apod.). Na vzdáleném počítači jsou pak soubory a adresáře fyzicky uloženy v podobě klasického systému souborů. Speciálními síťovými systémy souborů jsou distribuované souborové systémy (např. GFS v Linuxu), které se mohou rozkládat na několika počítačích, které jsou navzájem propojeny pomocí počítačové sítě.

Databázové souborové systémy 
V poslední době se začínají objevovat souborové systémy, které se odklánějí od klasické hierarchické struktury souborů a přiklánějí se více k databázovému pojetí reprezentace dat založené na jejich charakteristikách, tj. například na typu souboru, datu vytvoření, autoru a jiných metadat.

Přehledové tabulky

Tabulka omezení a doplňující informace

Vlastnosti souborového systému

Žurnálování

Poznámky

Externí odkazy 
 
 Velký test osmi linuxových souborových systémů