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,…).
Ú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ě.
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.
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é.
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 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 je desktopová verze FreeBSD, který má stejnou podporu podobnou FreeNAS.
Ř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.
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).
Souborový systém NTFS byl představen s operačním systémem Windows NT v roce 1993.
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.
Různé souborové systémy mohou mít různá omezení, například:
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 (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í:
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 (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ě.
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.[zdroj?]
Souborový systém | Maximální délka názvu souboru | Použitelné znaky v názvech adresářů[1] | Maximální délka cesty | Maximální velikost souboru | Maximální velikost diskového oddílu[2] | Vyvinul | Používáno od r. | Původní operační systém |
---|---|---|---|---|---|---|---|---|
V6FS | 14b[3] | libovolný bajt kromě NULL a / [3] | Bez omezení[4] | 8MB | 2TB | Bell Labs | 1972 | Version 6 Unix |
V7FS | 14b[3] | libovolný bajt kromě NULL a / [3] | Bez omezení[4] | 1GB | 2TB | Bell Labs | 1979 | Version 7 Unix |
FAT12 | 255b | Unicode kromě NULL[5] [3] | Bez omezení[4] | 32MiB | 32MiB až (??) 512MiB | Microsoft | 1980 | QDOS |
FAT16 | 8b (původně) / 255b (pouze LFN / VFAT) | Unicode kromě NULL[5] [3] | Bez omezení[4] | 2 Gib / 4GiB | 16MiB až 4GiB | Microsoft | 1983 | MS-DOS verze 2 |
FAT32 | 8b (DOS bez LFN) / 255b (pouze LFN / VFAT) | Unicode kromě NULL[5] [3] | Bez omezení[4] | 2 Gib / 4GiB | 2 TiB[6] | Microsoft | 1997 | Windows 95c |
FATplus | 255b | Unicode kromě NULL[5] [3] | Bez omezení[4] | 256GiB | 2TiB | Udo Kuhnt a další | 2006 | Enhanced DR-DOS |
MFS | 30b | libovolný bajt kromě NULL [3] | Bez omezení[4] | ? | ? | Apple | 1983 | Mac OS |
HFS | 30b[5] | libovolný bajt kromě NULL [3] | Bez omezení[4] | ? | ? | Apple | 1985 | Mac OS |
OFS | ? | ? | ? | ? | ? | Metacomco pro Commodore | 1985 | Amiga OS |
HPFS | 255b | Všechny bajty kromě NULL[7] | Bez omezení[4] | 4GB | 8GB až 2TB[8] | IBM & Microsoft | 1988 | OS/2 |
NTFS | 255b | Unicode kromě NULL | Bez omezení[4] | 16TB | 16EB | Microsoft, Gary Kimura, Tom Miller | 1995 | Windows NT |
HFS+ | 255 znaků[9] | Unicode kromě NULL[10] [3] | ? | 8EB | 8EB | Apple | 1998 | Mac OS |
FFS | 255b | Libovolný bajt kromě NULL[3] | Bez omezení[4] | 4GB | 256TB | Kirk McKusick | 1983 | 4.2BSD |
Amiga FFS (Amiga) | 255b | Libovolný bajt kromě NULL[3] | Bez omezení[4] | 4GB | 256TB | Commodore | 1987 | Amiga OS verze 1.3 |
UFS1 | 255b | Libovolný bajt kromě NULL[3] | Bez omezení[4] | 4GB až 256TB | 256TB | Kirk McKusick | 1994 | 4.4BSD |
UFS2 | 255b | Libovolný bajt kromě NULL[3] | Bez omezení[4] | 512GB až 32PB | 1YB | Kirk McKusick | 2002 | FreeBSD 5.0 |
NILFS | ? | ? | ? | ? | ? | NTT | 2005 | Linux |
ext2 | 255b | libovolný bajt kromě NULL a / [3] | Bez omezení[4] | 16GB až 2TB[2] | 2TB až 32TB | Rémy Card | 1993 | Linux |
ext3 | 255b | libovolný bajt kromě NULL a / [3] | Bez omezení[4] | 16GB až 2TB[2] | 2TB až 32TB | Stephen Tweedie | 1999 | Linux |
ext4 | 255b | libovolný bajt kromě NULL a / [3] | Bez omezení | 16TB | 1EB | Theodore Ts'o a další | 2006 | Linux |
ReiserFS V3 | 4032b/255znaků | Libovolný bajt kromě NULL[3] | Bez omezení[4] | 8TB[11] | 16TB | Namesys | 2001 | Linux |
Reiser4 | ? | ? | Bez omezení[4] | 8TB na x86 | ? | Namesys | 2004 | Linux |
XFS | 255b | Libovolný bajt kromě NULL[3] | Bez omezení[4] | 9EB[4] | 9EB[4] | SGI | 1994 | IRIX |
JFS | 255b | Libovolný bajt kromě NULL[3] | Bez omezení[4] | 8EB | 512TB až 4PB | IBM | 1990 | AIX[12] |
JFS2 | 255b | Libovolný Unicode znak kromě NULL | Bez omezení[4] | 4PiB | 32PiB | IBM | 1999 | OS/2 WSeB |
Be File System | 255b | Libovolný bajt kromě NULL[3] | Bez omezení[4] | 12288b až 260GB[13] | 256PB až 2EB | Be Inc., D. Giampaolo, C. Meurillon | 1996(?) | BeOS |
NSS | ? | Závisí na použitém jmenném prostoru[14] | Omezení limitované klientem | 8TB | 8TB | Novell | 1998 | Netware 5 |
NWFS | 80b | Závisí na použitém jmenném prostoru[14] | Bez omezení[4] | 4GB | 1TB | Novell | 1985 | Netware 286 |
ODS-2 | ? | ? | ? | ? | ? | DEC | 1979 | OpenVMS |
ODS-5 | 236b[15] | ? | 4096b[16] | 1TB | 1TB | DEC | 2003 | OpenVMS verze 8 |
UDF | 255b | Libovolný Unicode znak kromě NULL | 1023b | 16EB | ? | ISO/ECMA/OSTA | 1995 | - |
UFS | 255b | Libovolný bajt kromě NULL | Bez omezení[4] | 4 GiB až 256 TiB | 256 TiB | Kirk McKusick | 1994 | 4.4BSD |
UFS2 | 255b | Libovolný bajt kromě NULL | Bez omezení[4] | 512 GiB až 32 PiB | 1 YiB | Kirk McKusick | 2002 | FreeBSD 5.0 |
QNX 4.x | 255b | libovolný bajt kromě NULL | 255b | 4GB | 8GB až 2TB (?) | QNX Software Systems QNX | 1990 | QNX |
VxFS | 255b | Libovolný bajt kromě NULL[3] | Bez omezení[4] | 16EB | ? | VERITAS | 1991 | SVR4.0 |
Plan9 Fosil+Venti | ? | ? | ? | ? | ? | Bell Labs | 2003 | Plan9 verze 4 |
ZFS | 255b | Libovolný Unicode znak kromě NULL | Bez omezení[4] | 16EB | 16EB | Sun Microsystems | 2004 | Solaris 10 |
LFFS | ? | ? Unicode znak kromě NULL | ?[4] | ? | ? | Symbian OS | 2003 | Symbian OS S60 6.1 |
Souborový systém | Typ souboru metadata | Vlastník uložených souborů | Přístupová práva k souborům podle POSIX | Čas vytvoření | Čas poslední změny | Čas posledního přístupu | Last entry change timestamps | Čas poslední archivace | Seznam přístupových práv | Zabezpečení/MAC labels | Pevné odkazy | Symbolické odkazy | Alternate data stream / resource fork |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FAT12 | ? | N | N | A | A | A | N | N | N | N | N | N | N |
FAT16 | ? | N | N | A | A | A | N | N | N | N | N | N | N |
FAT32 | ? | N | N | A | A | A | N | N | N | N | N | N | N |
FATplus | ? | N | N | A | A | A | N | N | N | N | N | N | N |
HPFS | ? | A[17] | N | A | A | A | N | N | N | ? | N | N | N |
NTFS | ? | A | N[18] | A | A | A | A | N | A | ? | A | A[19] | A |
HFS+ | ? | A | A | A | A | ? | ? | ? | ? | ? | A | A | A |
Souborový systém | Žurnálovací systém | Meta-data only journaling | Citlivost na velikost znaků | Case-preserving | Logování změn souborů | Delayed allocation | Rozšíření | Proměnlivá velikost datového bloku[20] |
---|---|---|---|---|---|---|---|---|
FAT12 | N | N | N | N | N | N | N | N |
FAT16 | N | N | N | N | N | N | N | N |
FAT32 | N | N | N | N | N | N | N | N |
FATplus | N | N | N | N | N | N | N | N |
HPFS | N | N | N | A | N | N | A | ? |
NTFS | Obnova[21] | A | A | A | A | N | ? | ? |
HFS+ | N | ? | A | A | N | N | N | ? |
FFS | N | N | A | A | N | N | N | N |
UFS1 | N | N | A | A | N | N | N | N |
UFS2 | N | A | A | A | N | N | N | A |
macOS UFS | N | N | A | A | N | N | N | N |
ext2 | N | N | A | A | N | N | N | N |
ext3 | A | A | A | A | N | N | N | ? |
ReiserFS V3 | A | A | A | A | N | N | N | ? |
Reiser4 | A | A | A | A | N | N | A | ? |
XFS | A | A | A | A | A | A | A | ? |
JFS | A | A | A | A | N | N | ? | ? |
Be File System | N | A | A | A | ? | N | N | ? |
NSS | ? | A | A | A | A | N | N | ? |
NWFS | N | N | A | A | A | N | N | ? |
ODS-5 | N | A | N | A | A | N | N | ? |
VxFS | A | N | A | A | A | N | N | ? |
ZFS | N | ? | A | A | N | N | ? | ? |