Linux: Kniha kouzel, vanilková příchuť 1.17 (27. února 2022)
Veškerá moc příkazové řádky/příkazového řádku přehledně, pro začátečníky i pokročilé

5. Diskové oddíly

Řada 1.x vanilkové příchuti Linuxu: Knihy kouzel je od 1. října 2020 do 1. března 2023 ve stavu dlouhodobé pasivní údržby; nahlášené chyby budou opravovány, ale aktivní vývoj se již věnuje novější vývojové řadě určené pro novější verze operačního systému a programů. Pokud nejste vázáni na starší verze programů, doporučuji vyhledat novou verzi z aktivně vyvíjené vývojové řady.
LVM odkládací prostor ramdisk systém tematický okruh

1. Úvod

Tato kapitola se zabývá dělením pevného disku na oddíly, jejich formátováním (zejména souborové systémy ext4, FAT32 a NTFS), údržbou a připojováním (ručním i automatickým). Zabývá se také prací s ramdisky, odkládacím prostorem a LVM.

Tato verze kapitoly nepokrývá připojovaní souborových systémů obyčejnými uživateli; šifrování a nastavování kvót a další typy systému souborů, např. BTRFS a ZFS. Rovněž nepokrývá síťové souborové systémy, vypalování DVD ani práci s ISO obrazy CD a DVD. Rovněž nepokrývá práci se systémem souborů SquashFS. U LVM nepokrývá „layouty“ a „snapshoty“.

2. Definice

2/1 Obecné definice

2/2 LVM

LVM (logical volume management) je metoda rozložení oddílů na pevném disku, která má odstínit uživatele od fyzického rozložení dat a poskytnout nové možnosti, např. rozložení jednoho oddílu přes několik fyzických disků nebo snadné přesouvání oddílů a změnu jejich velikosti, často i bez nutnosti restartu počítače.

2/3 Co a kam připojit

V následujících zaklínadlech platí:

co-připojit může být:

kam-připojit může být:

typ-soub-sys je identifikátor typu systému souborů (např. ext4, vfat, ntfs, tmpfs apod.) Lze použít i „auto“; systém se pak pokusí typ systému souborů detekovat automaticky.

volby-připojení jsou seznam čárkami oddělených voleb nebo klíčové slovo „defaults“, které má význam „rw,suid,dev,exec,auto,nouser,async“.

3. Zaklínadla

3/1 Položky v /etc/fstab

připojit kořenový systém souborů (obecně/příklad)#1 (1)
co-připojit / typ-soub-sys volby-připojení 0 1
UUID="61bbd562-0694-4561-a8e2-4ccfd004a660" / ext4 errors=remount-ro,discard,nouser_xattr 0 1
připojit jiný než kořenový systém souborů (obecně/příklad)#2 (2)
co-připojit kam-připojit typ-soub-sys volby-připojení 0 2-nebo-0
/dev/skupina/muj-oddil ext4 defaults 0 2
připojit ramdisk#3 (3)
tmpfs kam-připojit tmpfs size=velikost[,nosuid][,nodev][,noexec][,mode=práva-číselně][,uid=UID-vlastníka][,gid=GID-skupiny][,další,volby] 0 0
připojit odkládací oddíl/odkládací soubor#4
co-připojit none swap sw 0 0
/cesta/k/souboru none swap sw 0 0
připojit adresář z již připojeného systému souborů na nové místo#5
/původní/adresář /nový/adresář none bind 0 0

3/2 Připojení a odpojení systému souborů

připojit systém souborů uvedený v /etc/fstab (alternativy)#1
[sudo] mount kam-připojit
[sudo] mount co-připojit
připojit systém souborů libovolně (obecně/příklad)#2
sudo mount -t typ-soub-sys -o volby,připojení /co/připojit /kam/připojit
sudo mount -t ext4 -o defaults,nosuid,nodev,lazytime,discard UUID=61bbd562-0694-4561-a8e2-4ccfd004a660 /mnt/abc
odpojit systém souborů a vysunout zařízení (alternativy)#3 (4)
[sudo] eject [-v] /dev/oddíl
[sudo] eject [-v] /dev/zařízení
[sudo] eject [-v] /cesta/přípojného/bodu
odpojit systém souborů#4
[sudo] umount kam-připojit
připojit adresář z již připojeného systému souborů na nový přípojný bod#5 (5)
sudo mount --bind /cesta/k/adresáři /nový/přípojný/bod
přesunout systém souborů na jiný přípojný bod (alternativa 1)#6
sudo mount --bind /původní/přípojný/bod /nový/přípojný/bod
sudo umount /původní/přípojný/bod
přesunout systém souborů na jiný přípojný bod (alternativa 2)#7
sudo mount --make-private /nadřazený/přípojný/bod &&
sudo mount --move /původní/přípojný/bod /nový/přípojný/bod

3/3 Již připojené systémy souborů (vypsat/zjistit údaje)

vypsat (pro člověka/pro skript)#1
findmnt -D -t nofuse.gvfsd-fuse,nodevtmpfs,nosquashfs
findmnt -nu -o SOURCE | egrep '^/' | LC_ALL=C sort -u
vypsat seznam přípojných bodů#2
findmnt -ln -o TARGET
velikost dostupného (volného) místa (pro člověka/pro skript)#3
df -h /přípojný/bod
findmnt -bnu -o AVAIL /přípojný/bod
typ souborového systému#4
findmnt -nu -o FSTYPE /přípojný/bod
UUID/PARTUUID/jmenovka#5
findmnt -nu -o UUID /přípojný/bod
findmnt -nu -o PARTUUID /přípojný/bod
findmnt -nu -o LABEL /přípojný/bod
je připojený jen pro čtení?#6
findmnt -nu -o OPTIONS /přípojný/bod | tr ,\\n \\n, | fgrep -x ro
zjistit kapacitu systému souborů (pro člověka/pro skript)#7
df -h /přípojný/bod
findmnt -bnu -o SIZE /přípojný/bod
zjistit zdrojové zařízení z přípojného bodu/naopak#8
findmnt -nu -o SOURCE /přípojný/bod
findmnt -nu -o TARGET /dev/disknebooddíl
zjistit volby připojení#9
findmnt -nu -o OPTIONS /přípojný/bod
zjistit velikost použité části souborového systému (pro člověka/pro skript)#10
df -h /přípojný/bod
findmnt -bnu -o USED /přípojný/bod

3/4 Oddíly a zařízení (vypsat/zjistit údaje)

UUID/PARTUUID/jmenovka oddílu#1
[sudo] lsblk -ln -o UUID /dev/oddíl
[sudo] lsblk -ln -o PARTUUID /dev/oddíl
[sudo] lsblk -ln -o LABEL /dev/oddíl
typ souborového systému#2
[sudo] lsblk -ln -o FSTYPE /dev/oddíl
vypsat místní zařízení a oddíly (pro člověka/pro skript)#3 (6)
[sudo] lsblk [--all]
[sudo] lsblk -ln -o NAME | sed -E 's!--!\x00!g;s!-!/!g;s!\x00!-!g;s!^!/dev/!' | LC_ALL=C sort
přesná velikost oddílu/disku v bajtech#4
sudo blockdev --getsize64 /dev/oddíl
sudo blockdev --getsize64 /dev/disk
je oddíl či zařízení jen pro čtení?#5 (7)
sudo blockdev --getro /dev/oddíl-nebo-zařízení
zjistit velikost fyzického bloku/logického sektoru (v bajtech)#6
sudo blockdev --getbsz /dev/zařízení
sudo blockdev --getss /dev/zařízení

3/5 Formátování

formátovat na ext4 (obecně/příklad)#1 (8)(9)
sudo mke2fs -t ext4 [-c[c]] -v [-E root_owner=UID:GID] [-L jmenovka] [-U UUID] [-d cesta] [-F] /dev/zařízení-nebo-oddíl
sudo mke2fs -t ext4 -c -v -U 977bda6f-ce11-4549-9325-c48c360069ef /dev/sda3
formátovat na FAT32 (obecně/příklad)#2 (10)(11)
sudo mkfs.fat -F 32 [-c] [-h počet-skrytých-sektorů] [-n "JMENOVKA"] [-v] /dev/oddíl
formátovat na NTFS (obecně/příklad)#3
sudo mkntfs [-f] [-v] [-L jmenovka] [-C] [-U] /dev/zařízení-nebo-oddíl
sudo mkntfs -f -v -L MůjDisk /dev/sda3
změnit velikost souborového systému ext4#4 (12)
sudo e2fsck -f /dev/oddíl
sudo resize2fs /dev/oddíl [velikost]

3/6 Odkládací oddíly a soubory

připojit odkládací oddíl či soubor (obecně/příklady)#1 (13)
sudo swapon co-připojit
sudo swapon /mujswap
sudo swapon UUID="977bda6f-ce11-4549-9325-c48c360069ef"
odpojit odkládací oddíl či soubor/všechny odkládací prostory#2
sudo swapoff co-připojit
sudo swapoff -a[v]
vypsat aktivní odkládací oddíly a soubory#3 (14)
[sudo] swapon --show[=NAME,USED,SIZE,PRIO,LABEL,UUID] [--noheadings] [--bytes]
vytvořit odkládací soubor#4 (15)
[sudo] fallocate -l velikost-v-bajtech název-souboru
[sudo] chmod 600 název-souboru
[sudo] mkswap název-souboru
sudo chown root:root název-souboru
smazat odpojený odkládací soubor#5
sudo rm název-souboru
naformátovat odkládací oddíl#6
sudo mkswap [-L jmenovka] [-U požadované-UUID] /dev/oddíl

3/7 Dělení disku

GUI (grafické uživatelské rozhraní)#1
sudo gparted
TUI (textové uživatelské rozhraní)#2
sudo cfdisk /dev/zařízení
CLI (ovládání z terminálu)#3
sudo fdisk /dev/zařízení

3/8 Jmenovka (nastavit)

Poznámka: při nastavování jmenovky musí být souborový systém zpravidla odpojený!

nastavit/smazat jmenovku odkládacího oddílu#1
sudo swaplabel -L "novájmenovka" /dev/oddíl
sudo swaplabel -L "" /dev/oddíl
nastavit/smazat jmenovku ext4#2
sudo e2label /dev/oddíl "novájmenovka"
sudo e2label /dev/oddíl ""
nastavit/smazat jmenovku FAT32#3 (16)
sudo fatlabel /dev/oddíl "novájmenovka"
sudo fatlabel /dev/oddíl ""
nastavit/smazat jmenovku NTFS#4
sudo ntfslabel [--new-serial] [--verbose] /dev/oddíl "novájmenovka"
sudo ntfslabel [--new-serial] [--verbose]/dev/oddíl ""
zjistit jmenovku jakéhokoliv oddílu#5
lsblk -ln -o LABEL /dev/oddíl
lsblk -ln -o LABEL /dev/oddíl

3/9 Degrafmentace, kontrola, TRIM apod.

zkontrolovat a opravit souborový systém#1 (17)
sudo fsck [-V] /dev/oddíl
najít chybné bloky (obecně/příklad)#2 (18)
sudo badblocks [-v[v]] [-w] /dev/zařízení-nebo-oddíl
sudo badblocks -vv /dev/sda1
oznámit zařízení nevyužité bloky souborového systému (operace TRIM)(konkrétní soub.systém/všechny dostupné)#3
sudo fstrim [-v] /přípojný/bod
sudo fstrim -a [-v]
zkontrolovat fragmentaci oddílu typu ext4#4
sudo e4defrag -c /dev/oddíl
defragmentovat oddíl typu ext4 (pozor!)#5 (19)
sudo e4defrag /dev/oddíl

3/10 Ostatní

zálohovat diskový oddíl do souboru (přímo/komprimovaný)#1
sudo dd if=/dev/oddíl of=cesta [status=progress]
sudo dd if=/dev/oddíl [status=progress] | gzip -n[9] >cesta.gz
obnovit diskový oddíl (přímo/komprimovaný)#2 (20)
sudo dd if=cesta of=/dev/oddíl [status=progress]
gunzip -cd cesta.gz | sudo dd of=/dev/oddíl [status=progress]

4. Zaklínadla (LVM)

4/1 Fyzické svazky

vytvořit z celého zařízení/jeho oddílu#1
sudo pvcreate /dev/zařízení [-v[v]]
sudo pvcreate /dev/oddíl [-v[v]]
smazat#2
sudo pvremove /dev/zařízení-nebo-oddíl [-v[v]]
zkontrolovat#3
sudo pvck /dev/zařízení-nebo-oddíl
vypsat (pro člověka/pro skript)#4
sudo pvs
sudo pvs --noheadings | sed -E 's/^\s*(\S+)\s.*$/\1/'
uvolnit všechno místo na fyzickém svazku#5
sudo pvmove /dev/zařízení-nebo-oddíl

4/2 Skupiny svazků

vytvořit#1
sudo vgcreate id-skupiny /dev/fyzický-svazek [-v[v]]
přidat fyzický svazek do skupiny#2
sudo vgextend id-skupiny /dev/fyzický-svazek [-v[v]]
odebrat fyzický svazek ze skupiny#3
sudo pvmove /dev/fyzický-svazek
sudo vgreduce id-skupiny /dev/fyzický-svazek
přejmenovat#4
sudo vgrename id-skupiny nove-id-skupiny
vypsat (pro člověka/pro skript)#5
sudo vgs
smazat#6
sudo lvremove id-skupiny
sudo vgremove id-skupiny

4/3 Logické oddíly

vytvořit (velikost zadat: absolutně/v procentech velikosti skupiny/v procentech velikosti volného místa/všechno volné místo)#1 (21)
sudo lvcreate id-skupiny --name id-oddílu --size gibibajtůG [-v[v]] [/dev/fyzický-svazek]
sudo lvcreate id-skupiny --name id-oddílu --extents procenta%VG [-v[v]]
sudo lvcreate id-skupiny --name id-oddílu --extents procenta%FREE [-v[v]]
sudo lvcreate id-skupiny --name id-oddílu --extents 100%FREE [-v[v]]
vypsat (pro člověka/pro skript)#2
sudo lvs
zvětšit (na velikost/relativně)#3 (22)
sudo lvextend id-skupiny/id-oddílu --size gibibajtůG [-v[v]]
sudo lvextend id-skupiny/id-oddílu --size +gibibajtůG [-v[v]] [--resizefs]
zmenšit (na velikost/relativně)#4 (23)
sudo lvreduce id-skupiny/id-oddílu --size gibibajtůG [-v[v]]
sudo lvreduce id-skupiny/id-oddílu --size +gibibajtůG [-v[v]] [--resizefs]
přejmenovat oddíl#5
sudo lvrename id-skupiny/id-oddílu nové-id-oddílu
smazat oddíl/všechny oddíly ve skupině#6
sudo lvremove id-skupiny/id-oddílu [-v[v]]
sudo lvremove id-skupiny [-v[v]]
přesunout do jiné skupiny svazků#7

4/4 Ostatní

aktualizovat systémový přehled LVM podle připojených zařízení#1
sudo lvscan --mknodes

5. Parametry příkazů

5/1 Volby připojení

Nejdůležitější volby připojení pro všechny typy systému souborů:

◉ rw ○ roPřipojit pro čtení i zápis/jen pro čtení.
◉ dev ○ nodevPovolit/zakázat speciální zařízení na připojeném systému souborů. (Doporučuji vždy „nodev“.)
◉ exec ○ noexecPovolit/zakázat spouštění souborů z připojeného systému souborů.
◉ suid ○ nosuidPovolit/zakázat respektování příznaků „u+s“ a „g+s“. V případě „nosuid“ tyto příznaky půjde měnit a číst, ale nebudou mít žádný vliv.
☐ syncZakáže používání systémové mezipaměti. Všechny operace budou prováděny přímo se zařízením.
○ lazytime ◉ nolazytimelazytime: Časové známky u souborů se nebudou zapisovat na disk, dokud to nebude nutné; budou se aktualizovat pouze v paměti, což umožní výrazně snížit počet zápisů na disk. Příkaz „sync“ a některé další situace způsobí zapsání všech provedených změn časových známek na disk.
◉ relatime ○ strictatime ○ noatimeČasovou známku přístupu při čtení (access time) aktualizovat: jen pokud soubor či adresář od poslední změny nebyl čten/pokaždé/nikdy.
☐ nodiratimeU adresářů časovou známku přístupu pro čtení (access time) neaktualizovat nikdy.
☐ nofailJen se pokusit o připojení; případné selhání tiše ignorovat.
☐ noautoNepřipojovat automaticky při startu systému (resp. příkazem „mount -a“).
☐ X-mount.mkdirPokud přípojný bod neexistuje, vytvoří ho s přístupovými právy „u=rwx,go=rx“. (Poznámka: připojený adresář tato práva zpravidla přepíše.) Podle manuálové stránky je tato volba dovolena pouze superuživateli.

Nejdůležitější volby připojení pro ext4, ext3ext2:

○ errors=remount-ro ○ errors=panic ○ errors=continueV případě kritické chyby: připojí systém jen pro čtení/zhroutí se/pokračuje. (Nezkoušel/a jsem.)
◉ user_xattr ○ nouser_xattrPovolí/zakáže uživatelské rozšířené atributy. (ext3/ext4) V případě nouser_xattr budou uživatelské rozšířené atributy stávajících souborů a adresářů zachovány, ale nepůjdou číst ani zapisovat.
◉ acl ○ noaclPovolí/zakáže rozšířená přístupová práva. (Zatím jsem nezkoušel/a.)
○ discard ○ nodiscardZapne/vypne automatické označování prázdného prostoru na SSD discích (operace TRIM).

Nejdůležitější volby připojení pro vfat (FAT32, FAT16, popř. FAT12):

☐ uid=UIDNastaví vlastníka všech položek.
☐ gid=GIDNastaví skupinu všech položek.
○ umask=mód ○ dmask=mód,fmask=módNastaví přístupová práva všech adresářových položek/všech adresářů a souborů.
☐ quietPokusy o změnu vlastníka, skupiny či přístupových práv nevyvolají chybu.
○ fat=12 ○ fat=16 ○ fat=32Vynutí konkrétní verzi FAT (obvykle není potřeba, autodetekce pozná typ správně).

Nejdůležitější volby připojení pro ntfs:

☐ uid=UIDNastaví vlastníka všech položek.
☐ gid=GIDNastaví skupinu všech položek.
○ umask=módNastaví přístupová práva všech adresářových položek.

Nejdůležitější volby připojení pro tmpfs (ramdisk):

☐ size=velikostNastaví kapacitu „ramdisku“; typicky se používá s příponami „M“ pro mebibajty a „G“ pro gibibajty (např. „size=4G“).
☐ uid=UIDNastaví počátečního vlastníka kořenového adresáře.
☐ gid=GIDNastaví počáteční skupinu kořenového adresáře.
○ umask=módNastaví počítační přístupová práva a příznaky kořenového adresáře.

6. Instalace na Ubuntu

Všechny použité nástroje jsou základními součástmi Ubuntu, kromě nástrojů pro práci s LVM a nástroje GParted. Pokud chcete používat LVM, musíte doinstalovat:

sudo apt-get install lvm2

Nástroj GParted najdete v balíčku „gparted“:

sudo apt-get install gparted

7. Tipy a zkušenosti

8. Další zdroje informací

1 Poznámka: Připojení kořenového systému souborů by mělo být v /etc/fstab první řádkou kromě komentářů a prázdných řádek.
2 2 v posledním poli zapne automatickou kontrolu souboru systémů při startu; tato volba je vhodná pro místní souborové systémy. 0 v posledním poli automatickou kontrolu vypne, ta je vhodná především pro výměnná média a síťové systémy souborů. Rovněž je vhodná pro místní systémy souborů připojované výhradně pro čtení.
3 Velikost se udává nejčastěji v mebibajtech (s příponou M – např. „256M“) nebo gibibajtech (s příponou G – např. „10G“).
4 Příkaz „eject“ pro jistotu používejte se sudo, popř. vyzkoušejte, zda bez něj ve vašem konkrétním případě funguje. Často se mi stává, že i uživateli, který je ve skupinách „cdrom“ a „plugdev“ selže s chybou „Nemohu otevřít zařízení“ a zatím se mi nepodařilo zjistit, jaké tam platí pravidlo.
5 Poznámka: Tímto příkazem se vytvoří nové, nezávislé připojení existujícího systému souborů.
6 Poznámka: vypsaný seznam může obsahovat i zařízení nedostupná či k ukládání dat nevhodná. Buďte při jejich zkoumání opatrní.
7 Odpověď 0 znamená, že zařízení je i pro zápis; odpověď 1 znamená, že je jen pro čtení.
8 Maximální velikost jmenovky je 16 bajtů.
9 Parametr -U přijímá také speciální hodnoty „random“ (vygenerovat náhodné UUID), „time“ (vygenerovat UUID závislé na čase), „clear“ (zrušit UUID).
10 Poznámka: jmenovka systémů FAT může být maximálně 11 znaků dlouhá!
11 Pro formátování na FAT16 či FAT12 nahraďte hodnotu 32 u parametru -F. Tyto staré souborové systémy se dnes už ale v praxi nepoužívají.
12 Velikost se zadává s příponou (např. „2048M“ nebo „4G“). Pokud ji nezadáte, souborový systém se zvětší tak, aby pokud možno zaplnil celý oddíl. Tip: velikost souborového systému lze obvykle změnit i tehdy, když je souborový systém připojený.
13 Pro odkládací oddíl či soubor platí totéž, co pro běžné diskové oddíly — aby se připojil automaticky při startu systému, musí být odpovídající záznam zapsaný v /etc/fstab!
14 Bez sudo vynechá jmenovky a UUID.
15 Velikost můžete zadat také v megabajtech (s příponou „M“) či gigabajtech (s příponou „G“).
16 Jmenovka souborového systému FAT32 může mít nejvýše 11 znaků. Z důvodu kompatibility by měla být tvořena pouze velkými písmeny anglické abecedy, číslicemi, pomlčkami a podtržítky. Ostatní typy systému souborů mají omezení na jmenovku podstatně volnější.
17 Příkaz „fsck“ pravděpodobně lze použít i se souborovým systémem v souboru, ale nezkoušel/a jsem to.
18 Poznámka: Tento příkaz chybné bloky najde, ale neudělá nic proto, aby se je systém souborů nesnažil používat.
19 Pokud jste začátečník, nedefragmentujte oddíly typu ext4! Obvykle to není potřeba.
20 Pozor! Tato operace je velmi nebezpečná! Pokud zadáte chybný cílový oddíl, daný oddíl se nevratně přepíše daty určenými pro ten správný. Pokud velikost zálohy neodpovídá přesně velikosti cílového oddílu, nemusí být oddíl po obnově dobře použitelný. Tento příkaz používejte s velkou opatrností!
21 Pro přesnější určení rozměru můžete zadat velikost oddílu v mebibajtech místo gibibajtů (místo přípony „G“ uveďte příponu „M“), ale v takovém případě počítejte s možností, že systém zadanou hodnotu mírně zaokrouhlí nahoru.
22 Volba --resizefs je podporována pouze pro některé typy systému souborů, zejména pro ext4.
23 Pozor! Pokud je na zmenšovaném oddíle souborový systém, musíte ho před zmenšením oddílu zmenšit na odpovídající velikost, jinak dojde ke ztrátě dat! To neplatí, použijete-li zde parametr --resizefs.
Správa procesůZpracování textových souborůHledání souborů