Data na disku nejsou uložená jen tak „volně". Aby se v nich systém vyznal, jsou navrstvené jako cibule: fyzický disk → rozdělený na oddíly → každý oddíl naformátovaný na souborový systém → ten připojený (mount) do jednoho velkého stromu, který začíná v
/. Když pochopíš těchto pár vrstev a jak do sebe zapadají, přestane ti disk v Linuxu nahánět strach — a zjistíš, proč tolik věcí vypadá jako soubor.
Pár pojmů na úvod
- Blokové zařízení = disk (nebo jeho část), do kterého se čte/zapisuje po blocích. V Linuxu se
tváří jako soubor v
/dev— třeba/dev/sdanebo/dev/nvme0n1. - Oddíl (partition) = kus disku vyhrazený pro jeden účel. Jeden fyzický disk můžeš rozdělit na víc
oddílů (
/dev/sda1,/dev/sda2…). Oddíly popisuje tabulka oddílů (dnes GPT). - Souborový systém (filesystem) = formát, jakým jsou v oddílu uložené soubory a složky (
ext4,btrfs,xfs). Určuje, jak se data organizují — oddíl je „police", filesystém je „způsob, jak do ní skládáš krabice". - Mount (připojení) = navěšení naformátovaného oddílu na nějaké místo ve stromu (mount point),
třeba
/nebo/home. Teprve po mountu vidíš soubory. /etc/fstab= tabulka, která říká, co se má připojit automaticky při bootu a kam.- LVM / LUKS = volitelné vrstvy mezi diskem a filesystémem — LVM pro flexibilní správu místa, LUKS pro šifrování. K nim se dostaneme dál.
Vrstvy: od disku k souboru
Každý řádek je jedna vrstva a žádnou nemůžeš přeskočit: prázdný disk nejdřív rozdělíš na oddíly, oddíl naformátuješ na filesystém, ten připojíš do stromu — a teprve pak do něj ukládáš soubory. Když něco nefunguje, skoro vždy se ptáš „na které vrstvě je problém?".
Bloková zařízení: jak vypadají disky
Disky najdeš v /dev. Pojmenování ti hned řekne, o co jde:
/dev/sda,/dev/sdb— klasické SATA/USB disky.sda= první,sdb= druhý (podle pořadí, jak je jádro našlo — a to se může mezi boot změnit, viz UUID níže)./dev/nvme0n1— NVMe SSD (moderní rychlé disky).nvme0= první NVMe řadič,n1= první disk.- Oddíly se připisují na konec:
sda1= první oddíl nasda; u NVMe se vkládáp:nvme0n1p3= třetí oddíl nanvme0n1.
Přehled ti dá lsblk (list block devices) — stromově ukáže disky a jejich oddíly:
lsblk # strom disků a oddílů, velikosti, mount pointy
lsblk -f # navíc typ filesystému, UUID a kam je co připojeno
Detaily o formátu a UUID vytáhne blkid:
blkid # UUID, typ (ext4/btrfs…) a label každého oddílu
blkid /dev/nvme0n1p3 # jen jeden konkrétní oddíl
💡
lsblk -fje asi nejužitečnější „co tu vlastně mám" příkaz. Než něco uděláš s diskem, vždycky se nejdřív podívej sem — abys omylem nesáhl na špatný disk.
Oddíly a tabulka oddílů
Aby systém věděl, kde jeden oddíl končí a druhý začíná, drží disk na začátku tabulku oddílů. Dnes standard je GPT (GUID Partition Table) — nahradil starší MBR, který uměl max 4 primární oddíly a disky do 2 TB. GPT tyhle limity nemá a je robustnější (drží si zálohu tabulky).
Oddíly se dělají nástroji fdisk nebo parted (případně GUI jako GParted):
sudo fdisk -l # jen VYPÍŠE oddíly na všech discích (bezpečné, čte)
sudo parted /dev/sdb print # totéž pro jeden disk přes parted
⚠️ Editace tabulky oddílů maže data. Interaktivní režim
fdisk /dev/sdXnebopartedumí oddíl smazat či přepsat. Dokud si nejsi jistý, používej jen-l/lsblk) —sdbmístosdaje rozdíl mezi „nový prázdný disk" a „můj systém".
Souborový systém: formát, ne oddíl
Tohle je nejčastější zmatek: oddíl je jen vyhrazené místo; souborový systém je formát, kterým se do toho místa ukládá. Prázdný oddíl neumí držet soubory, dokud ho nenaformátuješ. Nejběžnější volby v Linuxu:
ext4— výchozí, roky prověřený, spolehlivý, nenáročný. Když nevíš, co zvolit, zvolext4.btrfs— moderní, umí snapshoty (zamrznutý obraz stavu) a subvolumes (logické oddíly uvnitř jednoho filesystému). Výchozí na řadě distribucí (Fedora, openSUSE). Za flexibilitu platíš trochu vyšší složitostí.xfs— výborný na velké soubory a vysokou zátěž (často na serverech, výchozí na RHEL).
Formátuje se rodinou příkazů mkfs (make filesystem):
sudo mkfs.ext4 /dev/sdb1 # naformátuje oddíl sdb1 na ext4
sudo mkfs.btrfs /dev/sdb1 # ...nebo na btrfs
🚩
mkfsje nevratné — přepíše celý oddíl a smaže všechno, co v něm bylo. Není „formátovat jestli chceš". Než ho spustíš,lsblk -fa ujisti se, že cílíš na správný a prázdný oddíl.
Mount: připojení do stromu
Naformátovaný oddíl ještě není vidět. Musíš ho připojit (mount) na nějaké místo ve stromu — na
mount point (což je obyčejná složka). V Linuxu totiž není C: a D: jako ve Windows — všechno
je jeden strom začínající v /, a další disky se do něj „navěšují" jako složky.
mount # co je aktuálně připojené (dlouhý výpis)
sudo mount /dev/sdb1 /mnt # připoj oddíl sdb1 do složky /mnt
sudo umount /mnt # odpoj ho zase
Po mount /dev/sdb1 /mnt uvidíš obsah disku pod /mnt. Po umount složka /mnt zase zeje prázdnotou —
disk je pořád tam, jen není navěšený. /mnt a /media jsou tradiční místa pro ruční/dočasné mounty
(USB flashky ti dnes desktop připojí sám do /run/media/...).
💡 Právě proto platí „všechno je jeden strom":
/homemůže fyzicky ležet na jiném disku než/, a ty to při běžné práci vůbec nepoznáš — vidíš jen souvislé složky.
/etc/fstab: automatické připojení při bootu
Ruční mount po každém rebootu by byl nesmysl. Co se má připojit automaticky, je zapsané v souboru
/etc/fstab (filesystem table). Každý řádek = jeden mount: co, kam, jaký filesystém, volby.
# <zařízení> <mount point> <typ> <volby> <dump> <pass>
UUID=1a2b3c4d-...-9f8e / ext4 defaults 0 1
UUID=aa11bb22-...-cc33 /home ext4 defaults 0 2
Všimni si, že se tam píše UUID=..., ne /dev/sda1. Proč? Protože jména /dev/sdaX nejsou
zaručeně stálá — přehodíš disky, přidáš USB, jindy je jádro najde v jiném pořadí, a z sda je najednou
sdb. Kdyby fstab říkal „připoj /dev/sda1 jako /", po přehození kabelů by systém připojil špatný
disk nebo nenabootoval. UUID je unikátní identifikátor konkrétního filesystému a nemění se —
proto je to bezpečná volba. UUID zjistíš přes lsblk -f nebo blkid.
⚠️ Špatný řádek ve
/etc/fstab= systém nenabootuje a spadne do emergency módu. Po každé úpravě to otestuj bez rebootu:sudo mount -azkusí připojit vše z fstabu; když to projde bez chyby, jsi (skoro jistě) v pohodě. Na systemd navíc udělejsudo systemctl daemon-reload, ať si systemd přegeneruje mount unity z nové verze fstabu. Nikdy nerebootuj s neověřeným fstabem.
Kolik je místa a co ho žere
Když dojde místo, dva příkazy vyřeší 90 % situací.
df -h (disk free) — kolik volného místa mají filesystémy (-h = čitelné jednotky):
df -h # přehled všech připojených filesystémů a jejich zaplnění
df -h / # jen kořenový filesystém
du -sh (disk usage) — kolik zabírají konkrétní složky, ať víš, co mazat:
du -sh * # velikost každé položky v aktuální složce (souhrn)
du -sh /var/* | sort -h # co žere místo ve /var, seřazené od nejmenšího
💡
dfodpovídá na „kolik mi zbývá?",duna „kdo mi to sežral?". Když je/plný, nejdřívdf -h(potvrď, který filesystém), pakdu -shv podezřelých místech (/var/log,/home,~/.cache).
LVM: pružná vrstva navíc
Klasický oddíl má pevnou velikost — zvětšit ho jde těžko. LVM (Logical Volume Manager) vloží mezi disk a filesystém mezivrstvu, díky které můžeš svazky zvětšovat, zmenšovat a přesouvat za běhu a skládat víc disků do jednoho logického celku. Tři pojmy:
- PV (Physical Volume) = fyzický zdroj — oddíl nebo celý disk, který dáš k dispozici LVM.
- VG (Volume Group) = „bazén" místa poskládaný z jednoho či víc PV.
- LV (Logical Volume) = kus vykrojený z VG, který se chová jako oddíl — naformátuješ ho a připojíš.
Proč to chtít: potřebuješ /home větší? Když je na LV a ve VG je volno, zvětšíš ho jedním příkazem bez
přerozdělování disku. LVM navíc umí snapshoty (zamrznutý stav pro zálohu). Pro jeden notebook to
nemusíš řešit; na serverech je to standard.
Šifrování (LUKS) — jen na okraj
Mezi oddíl a filesystém můžeš vložit i šifrovací vrstvu — LUKS. Oddíl je pak na disku „nečitelná kaše" a teprve po zadání hesla se odemkne a nad ním se objeví normální filesystém, který připojíš. Tak funguje full-disk encryption (celý disk zašifrovaný, heslo se ptá při bootu). Detailně to rozebereme v samostatné kapitole o šifrování — tady jen věz, že je to další vrstva ve stejné cibuli: disk → oddíl → LUKS → filesystém → mount.
Failure modes — čím si nejčastěji rozbiješ disk
- Špatný řádek ve
/etc/fstab→ boot do emergency módu. Překlep v UUID nebo v typu filesystému a systém při startu nedokáže připojit/nebo/home→ spadne do záchranného režimu. Prevence:sudo mount -apo každé úpravě, nikdy nerebootovat naslepo. mkfsna špatný disk → smazaná data. Zaměníš/dev/sdbza/dev/sdaa naformátuješ systémový disk.mkfsse neptá dvakrát. Prevence:lsblk -fa ověř velikost + label + že je oddíl prázdný.umount: target is busy. Nejde odpojit, protože v tom mountu má někdo otevřený soubor nebo tam „stojí" (má tamcd). Zjistíš viníka přeslsof /mntnebofuser -vm /mnt, ukončíš proces / odejdeš ze složky, pakumount. (Nouzověumount -l= lazy, ale radši najdi příčinu.)- Plný
/→ systém se chová divně. Nejde se přihlásit, aplikace padají, logy se nezapisují. Diagnostika:df -h(který FS je na 100 %) →du -sh(co ho žere). Časté oběti:/var/log, staré balíčky,~/.cache, zapomenuté Docker image. - Zmatení
/dev/sdavs/dev/sdb. Jména podle pořadí detekce nejsou stálá — po přehození disků nebo připojení USB se mění. Proto se ve fstabu i skriptech používá UUID, ne/dev/sdX.
🛠️ Cvičení
- Zmapuj si disky. Spusť
lsblk -fa přečti z výstupu: kolik máš fyzických disků, kolik oddílů, jaký filesystém je na kořenovém oddílu (/) a jaké má UUID. Zkus totéž přesblkid— kde je rozdíl? - Najdi žrouta místa. Pomocí
df -hzjisti, který filesystém je nejvíc zaplněný, a pak v jeho rámci najdi přesdu -shtři největší složky. Napiš, co konkrétně u tebe zabírá nejvíc. - Rozmysli fstab (bez editace!). Otevři
/etc/fstabjen ke čtení (cat /etc/fstab) a u každého řádku popiš: co, kam a jak se připojuje. Proč je tam UUID, a ne/dev/sdaX? - Vrstvy vlastními slovy. Popiš cestu od holého nového disku k tomu, aby na něm ležel tvůj soubor: které příkazy (a v jakém pořadí) použiješ a co dělá každý z nich?
- Simuluj „busy" mount (nepovinné, bezpečně). Vejdi terminálem do nějaké připojené složky (
cd), z jiného terminálu zkus tu jednotkuumounta sleduj chybu. Pak přeslsofnajdi, kdo ji drží.
Náčrt řešení — rozbal, až si cvičení zkusíš sám
- Mapa disků —
lsblk -fukáže strom disků/oddílů s typem FS, UUID a mount pointem; kořenový je ten s mount pointem/.blkiddá stejné UUID/typy, ale plochým výpisem bez stromu a bez zaplnění. Pozor:lsblkje na rychlý přehled nejlepší,blkidse hodí do skriptů na jedno UUID. - Žrout místa —
df -hnajde nejplnější filesystém (sloupec Use%), pak v podezřelé cestědu -sh * | sort -h(nebodu -sh /var/* | sort -h) seřadí složky podle velikosti. Pozor:duna/bez omezení může běžet dlouho a sahat i tam, kam nemáš práva — cil konkrétní podsložky. - Fstab — každý řádek má 6 polí: zařízení (
UUID=...), mount point, typ FS, volby (defaults), dump a pass (pořadí kontroly při bootu,/má 1). UUID se používá, protože je stálé —/dev/sdaXse může po přehození disků/USB změnit a fstab by pak připojil špatný oddíl. Pozor: fstab se needituje naslepo — po změněsudo mount -a. - Cesta k souboru —
sudo fdisk/partedvytvoří oddíl →sudo mkfs.ext4 /dev/sdXNho naformátuje na filesystém →sudo mount /dev/sdXN /mntpřipojí do stromu → teprve teď do/mntuložíš soubor (pro trvalé připojení přidáš řádek s UUID do/etc/fstab). Pozor:fdiskimkfsjsou nevratné, ověř písmeno disku přeslsblk. - Busy mount —
umountvypíšetarget is busy, protože v adresáři „stojíš" (nebo tam máš otevřený soubor).lsof /cesta(nebofuser -vm /cesta) ukáže proces, který ji drží; pocdpryč / ukončení procesuumountprojde. Pozor:umount -l(lazy) to „odpojí na oko", ale skrytý problém nechá být — radši najdi příčinu.
🧠 Otázky & odpovědi
Jaký je rozdíl mezi oddílem a souborovým systémem?
Oddíl je vyhrazené místo na disku (kus disku popsaný v tabulce oddílů, třeba /dev/sda1).
Souborový systém je formát, jakým se do toho místa ukládají soubory a složky (ext4, btrfs,
xfs) — vytvoříš ho příkazem mkfs. Prázdný oddíl neumí držet soubory, dokud ho nenaformátuješ.
Přirovnání: oddíl je police, filesystém je způsob, jak do ní skládáš a značíš krabice. Teprve
naformátovaný oddíl se dá připojit (mount) a používat.
Proč se ve fstabu používá UUID místo /dev/sda1?
Protože jména jako /dev/sda1 nejsou zaručeně stálá — jádro přiděluje písmena podle pořadí, jak
disky najde, a to se změní, když přehodíš kabely, přidáš disk nebo připojíš USB. Z sda se pak stane
sdb. Kdyby fstab říkal „připoj /dev/sda1 jako /", po takové změně by systém připojil špatný disk
nebo vůbec nenabootoval. UUID je unikátní a napevno svázané s konkrétním filesystémem — nemění se,
takže mount vždycky trefí ten správný oddíl. UUID zjistíš přes lsblk -f nebo blkid.
Co znamená chyba target is busy při umount a jak ji vyřešit?
Znamená, že mount právě někdo používá — buď v té složce „stojíš" (máš tam cd), nebo v ní má
nějaký program otevřený soubor. Linux ti proto odmítne jednotku odpojit, aby nepřišel o rozepsaná data.
Řešení: odejdi ze složky (cd ~) a najdi viníka přes lsof /mnt nebo fuser -vm /mnt — ukáže procesy,
které tam sahají. Ty ukonči (nebo počkej, až doběhnou) a umount projde. Existuje i umount -l (lazy),
ale ten problém jen zamete pod koberec — radši najdi příčinu.
Systém hlásí plný disk, jak zjistím čím to je?
Dvěma příkazy. Nejdřív df -h — ukáže všechny filesystémy a jejich zaplnění (sloupec Use%), takže víš,
který je na 100 %. Pak v jeho rámci du -sh * (nebo cíleně du -sh /var/* | sort -h), který ukáže,
které složky místo žerou, ať víš, co mazat. Časté oběti: /var/log (nabobtnalé logy), stažené
balíčky, ~/.cache, zapomenuté Docker image. Zkráceně: df říká „kolik zbývá", du říká „kdo to
sežral" — a používají se v tomhle pořadí.
K čemu je LVM a proč bych ho chtěl?
LVM (Logical Volume Manager) je mezivrstva mezi diskem a filesystémem, díky které nejsi svázaný pevnou velikostí oddílů. Poskládáš fyzické disky/oddíly (PV) do společného fondu (VG) a z něj krájíš logické svazky (LV), které se chovají jako oddíly. Výhoda: LV zvětšíš, zmenšíš nebo přesuneš za běhu a snadno spojíš víc disků do jednoho celku — plus umí snapshoty (zamrznutý stav pro zálohu). Pro jeden notebook to není nutnost; na serverech, kde se místo mění a plánuje, je to standard.
