Pojmy adresářová struktura, soubor, souborové systémy

Pojmy adresářová struktura, soubor, souborové systémy. Metody plánování disku. Ochrana souborů a adresářů v reálných OS.

Adresářová struktura

Je organizační struktura souborového systému. Adresáře slouží k seskupování souborů a další adresářů. Z pohledu OS je adresář jen speciální soubor, který obsahuje informace o adresářích a souborech v něm obsažených. Nejvyšší adresář se nazývá kořen (root) (v UNIXech /, u Windows má každý oddíl vlastní root, např. C:\).

Složka vs adresář

  • adresář (directory)
    • označuje skutečný prvek souborového systému
    • např. /bin/bash
  • složka (folder)
    • abstrakce používaná v grafickém rozhraní
    • nemusí označovat jen adresář, ale i např. tiskárnu či ovládací panely ve Windows
    • cílem je zjednodušení a unifikace přístupu uživatele k různým prvkům

Zjednodušeně, adresář se tomu říká z pohledu FS, složka z pohledu grafického rozhraní.

Druhy adresářových struktur

  • jednoúrovňová
    • existuje pouze adresář root a vše jev něm
    • nejstarší metoda
    • příklad OS: CP/M
  • dvouúrovňová
    • v rootu jsou adresáře, ale ty už mohou obsahovat jen soubory
    • příklad OS: RSX
  • stromová
    • v každém adresáři mohou byt další soubory i adresáře
    • příklad OS: FAT
  • acyklická
    • organizace je rovněž stromová
    • soubory a adresáře mohou být ve více adresářích (pomocí odkazů (linků))
    • nesmí dojít k cyklení (dva adresáře se nemohou odkazovat navzájem)
    • nejpoužívanější
    • příklad OS: NTFS, Ext
  • cyklická
    • může obsahovat cykly

Soubor

Soubor je základní jednotkou pro ukládání dat v rámci souborového systému. Jedná se o označenou (pojmenovanou) množinu dat uloženou na paměťovém médiu, se kterou může OS pracovat. Formát dat v souboru je definován typem souboru. Ten lze rozpoznat následujícími způsoby:

  • podle hlavičky
    • prvních několik bytů souboru
    • je to jednoznačné
    • trochu pomalejší (musí se projít tabulka známých formátů)
    • používá se UNIXových systémech
  • podle přípony
    • např .jpg
    • přípona není jednoznačná, lze ji jednoduše změnit a BFU poté soubor neotevře
    • používá se ve Windows
  • podle metadat
    • ta jsou uložena mimo soubor
    • spravuje to souborový systém
    • při přenosu mezi systémy se musí konvertovat
    • existují různé varianty, nejběžnější je MIME type, který se používá hlavně na internetu (např. application/json, text/html)

Soubory můžeme kategorizovat podle různých hledisek, např.:

  • kolik souborů ve skutečnosti obsahuje
    • jednoduchý - jen jeden soubor (obyčejný textový dokument, obrázek, atd.)
    • složený - obsahuje více souborů (archivy (.zip, .tar.gz), multimédia (video + titulky), atd.)
  • podle typu obsahu
    • textový - prostý text, HTML, MD, atd.
    • binární - aplikace, obrázky, audio, atd.
  • podle účelu z pohledu OS
    • standardní - klasické soubory
    • adresáře - viz výše
    • simulované - reprezentují I/O zařízení
    • odkládací - SWAP
  • podle přístupu k médiu
    • přímý - můžeme přistoupit na kterýkoliv soubor kdykoliv (např. pevný disk, CD)
    • sekvenční - musíme projet celé médium od aktuálního místa až na požadované (např. magnetická páska)
    • indexový - lze přecházet přímo na vybraná místa - indexy (např. magnetická páska s přeskakováním)

OS zajišťuje nad souborem následující operace:

  • vytvoření
  • čtení
  • zápis
  • vyhledání/změna místa v souboru (odkud čteme, kam zapisujeme)
  • smazání

Fragmentace

Podobně jako u primární paměti, dochází k fragmentaci i u sekundární. Máme opět dva druhy:

  • vnitřní - malé soubory nezabírají celý cluster, ve kterém potom zbývá nevyužité místo
  • vnější - jednotlivé clustery, ze kterých se soubor skládá jsou rozmístěny po celém disku (jejich čtení trvá dlouho)

Souborové systémy

Souborový systém je způsob organizace dat na paměťovém médiu. Určuje jejich strukturu a další vlastnosti, které ovlivňují to, jak se s nimi pracuje.

Jednou z důležitých vlastností souborových systémů jsou způsoby zápisu dat na úložiště. Ty jsou následující:

  • okamžitý zápis
    • zápis probíhá ihned po zadání požadavku
    • v daném okamžiku probíhá jen jedna operace zápisu
    • nedojde ke ztrátě dat, ale je to pomalé
    • např. FAT
  • opožděný zápis
    • data se nejprve zapisují do cache paměti a poté postupně na trvalé místo (až když není systém zaneprázdněn)
    • rychlejší, ale při výpadku může dojít ke ztrátě dat (těch co byla zatím pouze v cache)
  • opatrný zápis
    • používají se transakce (jako u DB)
  • žurnálovací systémy
    • uchovávají se informace (metadata) o provedených operacích
    • při výpadku je možné data obnovit
    • doplňuje opožděný zápis
    • tvorba žurnálu zpomaluje souborový systém (cca o 30%)
    • např. EXT4, NTFS

Související pojmy:

  • RAID (Redundant Arrays of Inexpensive/Independent Disks)
    • použití více disků dohromady
    • verze (jen ty nejpoužívanější):
      • RAID 0 (stripping) - zápis na více disků najednou - vyšší rychlost
      • RAID 1 (mirroring) - stejná data na více discích - vyšší bezpečnost
      • RAID 5 - data se zapisují na více disků a jeden se používá k ukládání kontrolních součtů (přijdeme-li o nějaký disk, jeho obsah se po náhradě dopočítá z kontrolních součtů) - vyšší rychlost i bezpečnost
      • RAID 6 - pro kontrolní součty se používá více disků (každý může mít jinou metodu tvorby kontrolních součtů)
    • můžeme mít HW (dedikované HW zařízení v PC - je rychlejší) a SW (stará se o něj OS - v případě problému s OS můžeme přijít o data) RAID
  • síťové souborové systémy
    • spojování více úložišť z fyzicky oddělených PC do jednoho FS (něco jako RAID)
    • Ceph, GlusterFS
  • VFS (Virtual File System) - definice operací, které musí zvládnout každý souborový systém bez ohledu na skutečné HW umístění (nezáleží na tom, na jakém zařízení se nachází); cílem je uniformita
  • LVM (Logical Volume Manager) - kombinování fyzických disků pomocí logických (které potom můžeme upravovat podle potřeby)

FAT

  • nejstarší dosud používaný systém (od MS-DOS)
  • na začátku disku se nachází FAT (File Allocation Table), ve které se nacházejí informace o souborech
  • FAT se snadno prohledává → systém je velmi rychlý
  • pokud dojde k poškození FAT, znamená to ztrátu všech dat (ve skutečnosti je lze obnovit pomocí různých nástrojů); aby se tomu předešlo, obsahují nové verze FAT tabulky dvě, na různých místech disku
  • nepoužívá žurnálování
  • používá se tam, kde je potřeba spíše rychlost než spolehlivost → paměťové karty, flash disky
  • verze (chronologicky): FAT12, FAT16, VFAT (Virtual FAT), FAT32, exFAT (Extended FAT)
  • omezení:
    • v rootu (kořenovém adresáři) může být maximálně 255 souborů
    • maximální velikost souboru je \( 2^n \) bytů, kde \( n \) odpovídá číslu v názvu verze, tedy např. 32 pro FAT32
    • maximální velikost oddílu (ve Windows) 32 GB
    • původně maximální délka názvu souboru 8 znaků + 3 přípona (s VFAT došlo k prodloužení)
    • používá stromovou strukturu, kvůli které nepodporuje odkazy
    • neumožňuje přidávat k souborům a adresářům přístupová práva (pouze lze soubor označit jako read-only)

NTFS

  • New Technology File System
  • poprvé u Windows NT (dnes prakticky na všech strojích s Windows)
  • proprietární
  • používá žurnálování
  • názvy používají Unicode (lze použít jiné znaky než ASCII)
  • umožňuje nastavení práv
  • má indexování souborů (= rychlé vyhledávání)
  • umožňuje odkazy (i pevné (vydrží i po přemístění původního souboru))
  • lze jej šifrovat
  • efektivně ukládá soubory, které obsahují převážně 0 (řídké soubory)
  • vyhledává, opravuje a případně blokuje vadné sektory za běhu

EXT (Extended)

  • používá se v UNIXových systémech
  • disk se dělí na bloky (o velikosti 512, 1024, 2048 nebo 4096 B)
    • první je boot block (na systémovém disku obsahuje zavaděč, jinde je nevyužit)
    • další se dělí do skupin, z nichž každá obsahuje superblock s informacemi o celém disku (při poškození superblocku se může použít jiný)
  • podporuje odkazy
    • soft link - odkazuje na místo (jako zástupce na Windows)
    • hard link
      • odkazuje přímo na soubor
      • cíl ten nelze smazat, dokud existuje hard link
      • nesmí se zacyklit
      • nemůže odkazovat na jiný disky a sám na sebe
  • informace o souboru jsou obsaženy v tzv. i-node (uzlech)
  • volný prostor je evidován v řetězovém seznamu
  • verze:
    • Ext - již se nepoužívá
    • Ext2
      • nemá žurnálování
      • používá se u zaváděcích oddílů UNIXových systémů (lze i tam, kde FAT)
      • maximální velikost souboru je 12 TB
      • maximální velikost oddílu je 16 TB
    • Ext3 - již se nepoužívá (je jako Ext4, ale má více omezení velikosti)
    • Ext4
      • používá se jako hlavní FS pro Linux
      • maximální velikost souboru je 16 TB
      • maximální velikost oddílu je 1 EB

XFS

  • od IBM
  • je 64 bitový
  • používá se v rozsáhlých UNIXových úložištích
  • žurnálují se jen metadata (rychlejší a méně bezpečné než klasické žurnálování souborů)

ZFS

  • Zetabyte File System
  • původně od SUN (pro OS Solaris)
  • licence blokuje použití v Linuxu
  • je 128 bitový
  • umí automaticky opravovat chyby

btrfs

  • B-tree File System
  • podobný ZFS
  • vznikl kvůli licenčním problémům ZFS
  • obsah adresářů má strukturu B-stromů
  • začíná být v Linuxu populární (např. Fedora jej využívá jako hlavní FS)

APFS

  • Apple File System
  • pro MacOS
  • nahradil starší HFS

ISO 9660

  • pro CD, DVD a BR
  • délka souboru maximálně 32 znaků
  • maximální hloubka adresářové struktury je 7 úrovní
  • existují rozšíření:
    • Joliet - dlouhá jména pro Windows
    • Rock Ridge - totéž pro UNIXy
    • El Torito - umožňuje boot

Metody plánování disku

Je činnost, která nám říká, jakým způsobem dochází k vyřizování požadavků na čtení a zápis, aby byly minimalizovány zbytečné pohyby čtecí hlavy, otáčení ploten a prodleva mezi požadavky (týká se tedy jen HDD).

Metody:

  • FCFS (First-Come First-Served)
    • požadavky jsou vyřizovány v pořadí, v jakém došly (tedy FIFO)
    • může docházet k větším prodlevám, pokud jsou požadované oblasti daleko od sebe
  • SSTF (Shortest-Seek-Time-First)
    • nejprve se vyřídí ten požadavek, který vyvolá nejmenší posun hlavy
    • hrozí zastarání vzdálenějších požadavků
  • SCAN plánování
    • hlava projíždí disk tam a zpět z jednoho konce na druhy a cestou vyřizuje požadavky (tzv. Elevator algoritmus)
  • C-SCAN
    • ještě lepší než SCAN
    • hlava se po dojeti na konec disku vrátí na začátek, jako by začátek navazoval na konec
    • možné vylepšení: pokud už dále není žádný požadavek, vrací se rovnou (bez dojetí na konec), a to na místo prvního požadavku (ne na začátek)

Ochrana souborů a adresářů v reálných OS

Linux

  • systém oprávnění z UNIXu
  • neřeší se dědění (kromě práva vstupu do adresáře)
  • velmi jednoduché
  • každý soubor (adresář) má tři kategorie oprávnění:
    • vlastník
    • skupina
    • ostatní
  • každá z těchto kategorií se skládá z následujících práv (každému z práv náleží jedno oktální číslo):
    • čtení - r (4)
    • zápis - w (2)
    • spuštění souboru/vstup do adresáře - x (1)
  • celková oprávnění pro každý soubor (adresář) se skládají ze tří oktálních čísel, která odpovídají součtu práv pro každou kategorii
  • příkladem může být: 764, což znamená, že vlastník může vše (4 + 2 + 1), příslušník skupiny souboru může číst a zapisovat (4 + 2) a ostatní mohou jen číst (4)
  • často se používá rozložený zápis (např. při použití ls -l), který pro předešlý příklad vypadá takto: -rwxrw-r-- (první pomlčka neznamená oprávnění, ale typ souboru: - obyčejný soubor, d adresář, l linka, b blokové zařízení, c znakové zařízení, p roura, s soket)
  • pokud uživatel spadá do více kategorií, bere se v potaz vždy ta nejkonkrétnější kategorie, tedy ta nejvíce vlevo (v oktálních číslech)
  • vždy je nutné, aby uživatel měl právo na vstup ke všem nadřazeným adresářům
  • k editaci oprávnění se používá příkaz chmod, např.: sudo chmod a+x soubor.sh přidá (+) právo spouštět soubor (x) všem třem kategoriím (a)

Windows

  • oprávnění lze přidělit nejen souborům a adresářům, ale i objektům registrů, systémovým objektům nebo Active Directory objektům
  • oprávnění lze přidělit:
    • skupinám, uživatelům a dalším objektům s identifikátory zabezpečení v doméně
    • skupinám a uživatelům v této doméně a ve všech důvěryhodných doménách
    • místním skupinám a uživatelům (v počítači, kde se objekt nachází)
  • lze přidělit tato oprávnění:
    • full control - umožňuje dělat prakticky vše (včetně úpravy oprávnění a přebírání vlastnictví)
    • modify - umožňuje všechny úpravy a samozřejmě čtení (vytvářet, editovat a mazat soubory, vytvářet a mazat adresáře)
    • read & execute - čtení (jak dat souborů, tak obsahu adresářů) a spouštění aplikací
    • list folder contents - čtení obsahu adresářů a podadresářů (ne souborů)
    • read - jako list folder contents + obsah souborů
    • write - jako read + tvorba adresářů a souborů a mazání souborů
  • vlastník souboru (adresáře) může bez ohledu na oprávnění vše
  • je možno oprávnění dědit, tedy soubory a podadresáře dostávají oprávnění od svého předka

macOS

  • používá UNIXová oprávnění, stejně jako Linux

ACL

  • Access Control List
  • tabulka se záznamy o oprávněních ke každému souboru (adresáři)
  • umožňuje jemnější nastavení oprávnění (každý záznam v ACL se váže ke konkrétnímu uživateli/skupině)
  • lze je použít jak ve Windows, tak UNIXových systémech (nejsem si jistý, ale Windows je možná užívají ve výchozím stavu - nebo je jejich model dost podobný)

Zdroje