Souborové systémy

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (NTFS: Upřesnění verze.)
(Žurnálování: Upřesněn popis žurnálu a žurnálování.)
 
(Není zobrazeno 6 mezilehlých verzí od 1 uživatele.)
Řádka 1: Řádka 1:
 
[[Category:VSE]][[Category:Informatika]][[Category:OSY]][[Category:Ukládání_dat]]
 
[[Category:VSE]][[Category:Informatika]][[Category:OSY]][[Category:Ukládání_dat]]
 +
 
== Souborový systém ==
 
== Souborový systém ==
; Na disk ukládáme:
+
; K čemu je souborový systém?
* data souborů
+
* Pevný disk z pohledu HW je pouze dlouhá posloupnost stejně velkých sektorů, do kterých můžeme zapsat data.
* ''metadata''
+
* Abychom se ale v datech vyznali, potřebujeme je uspořádat do souborů, soubory umístit do složek a ty zase do nadřazených složek.
** pomocné informace, pomocí kterých data vyhledáváme
+
* Kromě samotných dat tedy musíme ukládat i pomocné informace.
** vlastník souboru, název souboru, velikost, práva,...
+
 
 +
; Na disk tedy ukládáme:
 +
* data (obsah souborů, to, co uživatel chce uložit)
 +
* ''metadata'' (pomocné informace)
 +
** ke kterému souboru daný kousek dat patří
 +
** informace pro vyhledávání: umístění ve složkách, názvy souborů,...
 +
** informace pro zabezpečení: vlastník souboru, práva pro přístup,...
 +
** další pomocné informace
  
 
; Souborový systém
 
; Souborový systém
Řádka 13: Řádka 21:
 
# označení pro konkrétní metadata na disku (''„Došlo k poškození souborového systému.“)
 
# označení pro konkrétní metadata na disku (''„Došlo k poškození souborového systému.“)
 
</div>
 
</div>
 +
 +
 +
== Formátování disku ==
 +
* Vytváření souborového systému na logickém oddílu se označuje slovem ''formátování disku''.
 +
  
 
== Cluster ==
 
== Cluster ==
*Základní součást datové oblasti logického disku.
+
* Podle konkrétního souborového systému se označuje ''cluster'', ''datový blok'' či ''alokační jednotka''.
*Nejmenší počet sektorů, které mohou tvořit soubor.
+
* Základní jednotka pro zápis dat do datové oblasti logického disku.
*Vliv velikosti clusteru na výkon FS
+
* Každý soubor zabírá vždy minimálně jeden cluster. Jeden cluster může zabírat jeden nebo více sektorů.
*Velikost nastavujeme při formátování.
+
* Všechny clustery jsou stejně veliké, velikost nastavujeme při formátování.
*Pro celý souborový systém musí být jednotná velikost.
+
* Pro celý souborový systém musí být jednotná velikost.
 +
* Velikost clusteru se obvykle nastavuje na 2&ndash;4&nbsp;kB. (U&nbsp;FAT32 se  musí nastavit větší velikost clusteru, protože rozsah počtu clusterů je malý.)
 +
 
 +
; Vliv velikosti clusteru na výkon FS
 +
* menší clustery: nižší [[Defragmentace#Vnit.C5.99n.C3.AD_.C3.97_vn.C4.9Bj.C5.A1.C3.AD_fragmentace|vnitřní fragmentace'']].
 +
* větší clustery:
 +
*# pokud mám na disku velké soubory, je třeba provést méně dílčích čtení pro načtení velkého souborů.
 +
*# bude docházet k&nbsp;menší [[Defragmentace#Vnit.C5.99n.C3.AD_.C3.97_vn.C4.9Bj.C5.A1.C3.AD_fragmentace|vnější fragmentaci]]
  
 
== Žurnálování ==
 
== Žurnálování ==
 
* Způsob práce s diskem, kdy využívám speciální datovou strukturu (''žurnál''), abych zabránil poškození souborového systému při havárii počítače.
 
* Způsob práce s diskem, kdy využívám speciální datovou strukturu (''žurnál''), abych zabránil poškození souborového systému při havárii počítače.
 +
* Na disku tedy vyhradím místo, do kterého budu zapisovat v&nbsp;dohodnutém formátu informace o&nbsp;tom, jaké operace na disku právě provádím. (Toto místo budu označovat žurnál.)
  
 
; Princip
 
; Princip
 
* Když chci provádět diskovou operaci (mazat soubor, měnit nebo vytvářet soubor, vytvářet složku,...), pak:
 
* Když chci provádět diskovou operaci (mazat soubor, měnit nebo vytvářet soubor, vytvářet složku,...), pak:
*#Nejprve do žurnálu zapíši, co budu provádět.
+
*# Nejprve do žurnálu zapíši, co budu provádět.
*# Pak provádím diskovou operaci.
+
*# Pak provedu diskovou operaci.
*# Pokud se operace dokončí v pořádku, potvrdím ji v žurnálu (commit).
+
*# Pokud se operace dokončí v pořádku, zapíši do žurnálu, že je operace dokončena (commit). (Nebo ji ze žurnálu úplně vymažu.)
  
; Co když dojde k přerušení operace?
+
; Co když dojde k přerušení operace uprosřed (například při havárii počítače)?
* Při dalším spuštění najdeme v žurnálu nepotvrzené operace.
+
* Při příštím spuštění počítače při startu operačního systému zkontrolujeme žurnál a&nbsp;najdeme tam informaci o&nbsp;operacích, které nejsou dokončené.
* Tyto přerušené operace musíme odvolat. (Některé možná půjdou i dokončit.)
+
* Tyto přerušené operace buď dokončíme (pokud to jde), nebo zrušíme všechny dílčí kroky provedené doposud. (Odvoláme tyto operace.)
 +
* Například pokud jsme mazali soubor, můžeme to dokončit, protože je v&nbsp;žurnálu zapsané, který soubor jsme mazali.
 +
* Na druhou stranu když jsme ukládali do nového souboru data z&nbsp;operační paměti, data jsou již ztracena, protože obsah operační paměti se ztratil. Můžeme ale odstranit metadata tohoto nového souboru, aby na disku nezůstal napůl vytvořený soubor s&nbsp;neplatnými daty.
  
 
<div class="Poznamka">
 
<div class="Poznamka">
 
; Poznámky
 
; Poznámky
* Funkce žurnálování může být narušeno užitím cache v disku. (Disk nahlásí dokončení operace, ale data jsou jen v cache, nikoli fyzicky zapsána na disk.)
+
* Funkce žurnálování může být narušeno užitím cache v disku. (Disk nahlásí dokončení operace, ale data jsou jen v cache, nikoli fyzicky zapsána na disk. Při havárii počítače se tedy data ztratí, ačkoli v&nbsp;žurnálu jsou vedeny jako dokončené.)
*Žurnálování nevyřeší ztrátu dat, která se nestihla zapisat na pevný disk! Nicméně zajišťuje, že nedojde k porušení souborového systému.
+
* Žurnálování nevyřeší ztrátu dat, která se nestihla zapisat na pevný disk! Nicméně zajišťuje, že nedojde k porušení souborového systému (metadat).
 
</div>
 
</div>
  
Řádka 47: Řádka 70:
 
* ...
 
* ...
  
== Typy souborových systémů ==
 
*diskové
 
*síťové
 
**nfs
 
**smb
 
*paměťové
 
**tmpfs
 
*virtuální
 
**procfs
 
**fdfs
 
 
== Příklady (diskových) FS: ==
 
=== NTFS ===
 
* Zaveden ve Windows NT.
 
* Podpora šifrování, komprese.
 
* Obvykle menší clustery než u FAT32.
 
* Názvy souborů v UTF8.
 
* Existuje více verzí, aktuální verze NTFS v. 3.1 (od Windows 2000), navíc se liší i verze ovladače NTFS.sys (pro Windows Vista a vyšší verze 6.0).
 
* Problematická podpora mimo Windows.
 
* Problémy s fragmentací, nutná pravidelná [[Defragmentace|defragmentace]]. (Ve Windows 7 se spouští automaticky.)
 
 
=== FAT/FAT32/exFAT ===
 
*Pochází z MS-DOSu resp. Windows 95.
 
*Dnes na disketách a paměťových kartách.
 
; FAT(16)
 
* Dnes již historický (omezení velikosti oddílu).
 
* Názvy souborů 8+3 znaky, bez podpory diakritiky.
 
; FAT32
 
* delší jména souborů než u FAT,
 
* soubory velikosti max. 2 GB,
 
* velké disky pouze za cenu vyšší velikosti clusteru.
 
* Zastaralý &mdash; princip zůstává stejný jako u FAT16.
 
* Náchylný k chybám, nemá žurnálování.
 
* Široká podpora (HW zařízení, operační systémy,...).
 
* Jednoduchý na implementaci.
 
; exFAT
 
* jen Microsoft, jako náhrada FAT32 pro flash-disky.
 
* rozšiřuje FAT32
 
* odstraňuje omezení velikosti souboru
 
* Může podporovat žurnálování, pokud to povolíme.
 
 
=== ext2/ext3/ext4 ===
 
* Implementovány v Unixových systémech, standardní volba pro většinu linuxových distribucí.
 
* Vzájemně kompatibilní.
 
; ext3
 
* Zpětně kompatibilní s ext2.
 
* Přidává žurnálování.
 
* Podporuje POSIX ACL (Access Control Lists).
 
* Není klasická defragmentace.
 
* Kontrola disku (<code>fsck</code>) jen v režimu read-only (viz [[Nástroje_pro_práci_s_diskem#Kontrola_souborového_systému|Nástroje pro práci s diskem]]).
 
* Není transparentní komprese.
 
* Viz také [http://en.wikipedia.org/wiki/Ext3 Wikipedia.org > Ext3]
 
; ext4
 
*dnes nativní pro běžné uživatelské distribuce Linuxu
 
 
=== btrfs ===
 
* Pokročilý souborový systém pro GNU/Linux, Solaris,...
 
* Subvoluming
 
** Jeden FS může být rozprostřen přes více fyzických zařízení.
 
** Prostor (raw storage) rozdělen na úseky (např. 1GB), které se pak spojují do subvolumes.
 
** Nahrazuje LVM (Logical Volume Manager) a ZFS.
 
* Snapshots (snímky disku)
 
** Ukládání současného stavu disku a změn oproti tomuto stavu.
 
* Copy on write
 
** Vytváření kopie svazku při současné práci se svazkem.
 
*<https://btrfs.wiki.kernel.org/index.php/Main_Page>
 
* Vyvinut firmou Oracle, dnes GPL.
 
* Teprve se chystá podpora kontroly a opravy (rok 2012).
 
; Vlastnosti:
 
*Velikost souboru až 2^64 B ~ 16 EiB
 
*Dynamic i-node allocation
 
*Podpora svazků (volumes) a RAID vestavěná ve FS
 
**RAID 0, 1 a 10
 
**chystá se RAID 5 a 6
 
*Kontrolní součty (checksumming)
 
*Body obnovení (snapshotting) &mdash; uchová stav systému před rizikovou operací.
 
*On-line defragmentation.
 
 
=== HFS+ ===
 
*MacOS X
 
*počítače Apple
 
 
=== swap ===
 
*Pro odkládání nepotřebných paměťových bloků na disk.
 
*Pod Windows se řeší speciálním souborem.
 
 
=== proc ===
 
*Pouze virtuální FS.
 
*Slouží k práci s procesy.
 
  
 +
== Typy souborových systémů ==
 +
* Diskové
 +
** Běžně známé FS: NTFS, ext2/ext3/ext4, FAT32, btrfs,...
 +
** Viz [[Příklady souborových systémů]].
 +
* Síťové (NFS, SMB,...)
 +
* Paměťové (<tt>tmpfs</tt>)
 +
* Virtuální (<tt>procfs</tt> &mdash; viz [[Adresář /proc| adresář <tt>/proc</tt>]], <tt>fdfs</tt>)
  
 
== Související pojmy ==
 
== Související pojmy ==
Řádka 150: Řádka 91:
 
* Nicméně nemohu využít celý součet kapacit všech disků, část celkové kapacity je využita pro kontrolní součty.
 
* Nicméně nemohu využít celý součet kapacit všech disků, část celkové kapacity je využita pro kontrolní součty.
 
Režimy: RAID 0, RAID 1, RAID 5,...
 
Režimy: RAID 0, RAID 1, RAID 5,...
 +
 +
=== TRIM ===
 +
* Týká se SSD disků. Jedná se o příkazy ATA/SCSI/PCIe, které disk buď podporuje, nebo nepodporuje (dnešní SSD disky obvykle podporují).
 +
* Podle rozhraní používají disky jiné příkazy, princip je ale stejný: TRIM u&nbsp;ATA (SATA rozhraní), UNMAP u&nbsp;SCSI rozhraní, DEALLOCATE u&nbsp;NVMe (PCIe rozhraní).
 +
* Umožňuje mazat jednotlivé stránky bez nutnosti přepisovat celý blok dat. Tím snižuje opotřebení disku a&nbsp;zvyšuje životnost.
 +
* Zároveň se při mazání bloky pouze označí jako nevyužité, samotné smazání dat lze provést až později. To umožňuje rychlejší zápis dat (není třeba blok nejprve přečíst, pokud je označen jako smazaný, mazání dat provede řadič až později).
 +
* Zapnutí TRIM viz: [[Nástroje pro práci s diskem#Funkce TRIM u SSD| Nástroje pro práci s diskem]].
 +
* Zdroje: [https://www.digitalcitizen.life/simple-questions-what-trim-ssds-why-it-useful DigitalCitizen.life &rarr; What is SSD TRIM], [https://searchstorage.techtarget.com/definition/TRIM TechTarget.com &rarr; TRIM]
 +
  
 
== Související stránky ==
 
== Související stránky ==
* [[Rozdělení disku]], [[Defragmentace]]
+
* [[Rozdělení disku]], [[Defragmentace]], [[Příklady souborových systémů]], [[Nástroje pro práci s diskem]]

Aktuální verze z 19. 11. 2020, 20:31


Obsah

Souborový systém

K čemu je souborový systém?
Na disk tedy ukládáme
Souborový systém

Souborový systém (FS) je:

  1. formát zápisu metadat („Používám souborový systém ext3.“)
  2. označení pro konkrétní metadata na disku („Došlo k poškození souborového systému.“)


Formátování disku


Cluster

Vliv velikosti clusteru na výkon FS

Žurnálování

Princip
Co když dojde k přerušení operace uprosřed (například při havárii počítače)?
Poznámky
  • Funkce žurnálování může být narušeno užitím cache v disku. (Disk nahlásí dokončení operace, ale data jsou jen v cache, nikoli fyzicky zapsána na disk. Při havárii počítače se tedy data ztratí, ačkoli v žurnálu jsou vedeny jako dokončené.)
  • Žurnálování nevyřeší ztrátu dat, která se nestihla zapisat na pevný disk! Nicméně zajišťuje, že nedojde k porušení souborového systému (metadat).

Další vlastnosti FS


Typy souborových systémů

Související pojmy

LVM

RAID

Režimy: RAID 0, RAID 1, RAID 5,...

TRIM


Související stránky

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje