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

4. Diskové oddíly

Podkapitoly: 4.1 Btrfs; 4.2 LVM; 4.3 Softwarový RAID;

Řada 2.x vanilkové příchuti Linuxu: Knihy kouzel je od 15. července 2022 do 1. března 2025 ve stavu dlouhodobé pasivní údržby; nahlášené chyby budou opravovány, ale aktivní vývoj se již věnuje jiným projektům. Máte-li zájem pokračovat v tvorbě Linuxu: Knihy kouzel pro novější verze linuxových operačních systémů, kontaktujte autora nebo rovnou vytvořte odnož.
@Formátovat na ext4#1 (1)(2)
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 btrfs#2
sudo mkfs.btrfs [-f] [-L "Jmenovka"] [-U UUID] /dev/zařízení-nebo-oddíl
sudo mkfs.btrfs -f -L "Můj nový oddíl" /dev/sda3
@Formátovat na NTFS#3
sudo mkntfs [-f] [-v] [-L jmenovka] [-C] [-U] /dev/zařízení-nebo-oddíl
sudo mkntfs -f -v -L MůjDisk /dev/sda3

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, btrfs, FAT32 a NTFS), údržbou a připojováním (ručním i automatickým). Zabývá se také prací s ramdisky a odkládacím prostorem.

Tato verze kapitoly pokrývá jen částečně: dělení pevného disku na oddíly.

Tato verze kapitoly nepokrývá: připojovaní souborových systémů obyčejnými uživateli; šifrování a nastavování kvót; další typy systému souborů (např. ZFS); síťové souborové systémy; vypalování DVD; práci s ISO obrazy CD a DVD; práci se systémem souborů SquashFS.

2. Definice

2/1 Obecné definice

  • Virtuální souborový systém (VFS) je způsob, jakým Linux nahlíží na strukturu adresářů. Při startu počítače obsahuje jen prázdný kořenový adresář „/“, na který jádro „připojí“ (viz níže) kořenový adresář kořenového systému souborů.
  • Systém souborů je vymezená část adresářové struktury zpřístupněná jednotným způsobem (např. na jednom oddílu pevného disku). Každý systém souborů má svůj kořenový adresář, který může být „připojen“ (viz níže) na některý z existujících adresářů VFS. Systémy souborů mohou být fyzické (uložené fyzicky na nějakém paměťovém médiu), virtuální (generované za běhu jádrem operačního systému), vzdálené (připojované přes síť) nebo vnořené (uložené v souboru – to bývá např. SquashFS). Konkrétní způsob fyzické organizace systému souborů na úložném médiu nazývá typ systému souborů, to je např. ext4 nebo NTFS.
  • Připojení systému souborů znamená, že jádro vezme existující adresář ve VFS a „překryje“ ho kořenovým adresářem připojovaného systému souborů (včetně jeho vlastnictví, příznaků a přístupových práv). Podstrom původního adresáře tímto z VFS odpadne a místo něj se stane součástí VFS celá adresářová struktura nově připojeného systému souborů. Opačným úkonem je odpojení, při němž z VFS odpadne adresářová struktura připojeného systému souborů a dojde k opětovnému zapojení podstromu původního adresáře do VFS. Zvláštním (ale komplikovaným a méně častým) případem je připojení jiného než kořenového adresáře systému souborů.
  • Přípojný bod (anglicky „mount point“) je adresář VFS, kam je připojený systém souborů.
  • Odkládací oddíl je úložný prostor sloužící k odkládání paměťových stránek, popř. k hibernaci. V linuxu se s ním zachází podobně jako se souborovým systémem, proto je předmětem této kapitoly.

2/2 Identifikátory souborových systémů

K identifikaci konkrétního systému souborů se používá několik druhů identifikátorů:

  • UUID je identifikátor přidělovaný souborovému systému při formátování (tzn. dalším formátováním se změní, ale naopak překopírování po bajtech ho neohrozí); ne všechny souborové systémy mají nějakou formu UUID, ale ext4, btrfs, FAT32 a NTFS ano.
  • PARTUUID je identifikátor oddílu na disku, je-li dělen metodou GPT (na discích dělených starší metodou MBR se emuluje, u logických oddílů LVM není dostupný vůbec).
  • Jmenovka je textový identifikátor souborového systému přidělovaný uživatelem, zpravidla při formátování.
  • Poslední možností je cesta k zařízení v /dev, např. „/dev/sda1“. Tato možnost je preferována u logických oddílů LVM; u oddílů na discích se nedoporučuje, protože cesta k zařízení se může snadno změnit.

2/3 Co a kam připojit

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

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

  • UUID souborového systému ve tvaru „UUID=61bbd562-0694-4561-a8e2-4ccfd004a660“.
  • PARTUUID ve tvaru „PARTUUID=0337a362-e7b3-4c50-a81d-9a5d45755e75“.
  • Jmenovka ve tvaru LABEL="Jmenovka".
  • Cesta diskového oddílu či zařízení (např. „/dev/sda1“).
  • U některých typů souborových systémů je to jiný řetězec (např. „tmpfs“, „none“ apod.)
  • Existuje ještě tvar pro síťový souborový systém, viz manuálovou stránku „man 5 fstab“.

kam-připojit je zpravidla cesta nastávajícího přípojného bodu (v /etc/fstab musí být absolutní, v příkazu „mount“ stačí i relativní), výjimka platí pro odkládací prostor, kde se uvádí „none“.

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

volby-připojení je 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 (3)
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 (4)
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 (5)
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 (6)
[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řepnout již připojený systém souborů do režimu jen pro čtení/do režimu čtení i zápis#5 (7)
sudo mount -o remount,ro[,další-volba] /přípojný/bod/nebo/zařízení
sudo mount -o remount,rw[,další-volba] /přípojný/bod/nebo/zařízení
@změnit volby připojení pro již připojený systém souborů#6 (8)
sudo mount -o remount,nové,volby /přípojný/bod/nebo/zařízení
@připojit adresář z již připojeného systému souborů na nový přípojný bod#7 (9)
sudo mount --bind /cesta/k/adresáři /nový/přípojný/bod
@přesunout systém souborů na jiný přípojný bod (alternativa 1)#8
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)#9
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
@zjistit volby připojení#4
findmnt -nu -o OPTIONS /přípojný/bod
@typ souborového systému#5
findmnt -nu -o FSTYPE /přípojný/bod
@UUID/PARTUUID/jmenovka#6
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í?#7
findmnt -nu -o OPTIONS /přípojný/bod | tr ,\\n \\n, | fgrep -x ro
@zjistit kapacitu systému souborů (pro člověka/pro skript)#8
df -h /přípojný/bod
findmnt -bnu -o SIZE /přípojný/bod
@zjistit zdrojové zařízení z přípojného bodu/naopak#9 (10)
findmnt -nu -o SOURCE /přípojný/bod
findmnt -nu -o TARGET /dev/disknebooddíl [ | head -n 1]
@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
@zjistit cestu připojeného adresáře uvnitř připojeného systému souborů#11

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
@aktuální počet přečtených bajtů od připojení zařízení (pro člověka/pro skript)#2
lkk diskstat /dev/zařízení-nebo-oddíl | cut -f 2 | LC_ALL=en_US.UTF-8 numfmt --to=iec --format=%.3f
lkk diskstat /dev/zařízení-nebo-oddíl | cut -f 2
@aktuální počet zapsaných bajtů od připojení zařízení (pro člověka/pro skript)#3
lkk diskstat /dev/zařízení-nebo-oddíl | cut -f 3 | LC_ALL=en_US.UTF-8 numfmt --to=iec --format=%.3f
lkk diskstat /dev/zařízení-nebo-oddíl | cut -f 3
@přehled přečtených a zapsaných bajtů pro člověka#4
lkk diskstat | LC_ALL=en_US.UTF-8 numfmt --to=iec --field=2,3 --format=%12.3f
@typ souborového systému#5
[sudo] lsblk -ln -o FSTYPE /dev/oddíl
@vypsat místní zařízení a oddíly (pro člověka/pro skript)#6 (11)
[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#7
sudo blockdev --getsize64 /dev/oddíl
sudo blockdev --getsize64 /dev/disk
@je oddíl či zařízení jen pro čtení?#8 (12)
sudo blockdev --getro /dev/oddíl-nebo-zařízení
@zjistit velikost fyzického bloku/logického sektoru (v bajtech)#9
sudo blockdev --getbsz /dev/zařízení
sudo blockdev --getss /dev/zařízení
@je zařízení otočný pevný disk (HDD)?#10

3/5 Formátování

@formátovat na ext4 (obecně/příklad)#1 (13)(14)
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 samostatný oddíl na btrfs (obecně/příklad)#2
sudo mkfs.btrfs [-f] [-L "Jmenovka"] [-U UUID] /dev/zařízení-nebo-oddíl
sudo mkfs.btrfs -f -L "Můj nový oddíl" /dev/sda3
@formátovat zrcadlené oddíly na btrfs (obecně/příklad)#3 (15)(16)
sudo mkfs.btrfs -d raid1 -m raid1 [-f] [-L "Jmenovka"] [-U UUID] /dev/zařízení-nebo-oddíl-1 /dev/zařízení-nebo-oddíl-2
sudo mkfs.btrfs -d raid1 -m raid1 -f -L "Zrcadlo" /dev/sda3 /dev/sdb1
@formátovat na FAT32 (obecně/příklad)#4 (17)(18)
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)#5
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 typu ext4 (na udanou velikost/na celý oddíl)#6 (19)
sudo e2fsck -f /dev/oddíl && sudo resize2fs /dev/oddíl velikost
sudo e2fsck -f /dev/oddíl && sudo resize2fs /dev/oddíl
@„odformátovat“ oddíl (přepsat: jen značky/celou hlavičku/celý oddíl)#7
sudo wipefs -a [--backup] /dev/oddíl
sudo dd iflag=fullblock if=/dev/zero of=/dev/oddíl [status=progress]
@změnit velikost souborového systému typu btrfs (na udanou velikost/na celý oddíl)#8 (20)
sudo btrfs filesystem resize cílová-velikost-P /přípojný/bod
sudo btrfs filesystem resize max /přípojný/bod

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

@připojit odkládací oddíl či soubor (obecně/příklady)#1 (21)
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 (22)
[sudo] swapon --show[=NAME,USED,SIZE,PRIO,LABEL,UUID] [--noheadings] [--bytes]
@vytvořit odkládací soubor#4 (23)
[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 Jmenovka (nastavit)

@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 btrfs#3 (24)
sudo btrfs filesystem label specifikace/oddílu "Nová jmenovka"
sudo btrfs filesystem label specifikace/oddílu ""
@nastavit/smazat jmenovku FAT32#4 (25)
sudo fatlabel /dev/oddíl "novájmenovka"
sudo fatlabel /dev/oddíl ""
@nastavit/smazat jmenovku NTFS#5 (26)
sudo ntfslabel [--new-serial] /dev/oddíl "novájmenovka"
sudo ntfslabel [--new-serial] /dev/oddíl ""
@zjistit jmenovku jakéhokoliv oddílu#6 (27)
lsblk -ln -o LABEL /dev/oddíl
@zjistit jmenovku oddílu btrfs (připojeného/nepřipojeného)#7
sudo btrfs filesystem label /přípojný/bod
sudo btrfs filesystem label /dev/oddíl

3/8 Degrafmentace, kontrola, TRIM apod.

@zkontrolovat a opravit souborový systém (kromě btrfs/btrfs)#1 (28)
sudo fsck [-V] /dev/oddíl
@zkontrolovat souborový systém typu btrfs#2
sudo btrfs check --readonly [--progress] /dev/oddíl
@uvolnit bloky na zařízení či oddílu (TRIM ručně) (všechny/vybrané)#3 (29)
sudo blkdiscard /dev/zař-nebo-oddíl
sudo blkdiscard -o začátekM [-l délkaM] /dev/zař-nebo-oddíl
@vynulovat volné bloky (ext4/btrfs/FAT32/NTFS)#4 (30)
sudo zerofree [-v] /dev/oddíl
@najít chybné bloky (obecně/příklad)#5 (31)
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é)#6
sudo fstrim [-v] /přípojný/bod
sudo fstrim -a [-v]
@defragmentovat oddíl typu btrfs (pozor!)#7
@zkontrolovat fragmentaci oddílu typu ext4#8
sudo e4defrag -c /dev/oddíl
@defragmentovat oddíl typu ext4 (pozor!)#9 (32)
sudo e4defrag /dev/oddíl

3/9 Ostatní

@je adresář přípojným bodem?#1 (33)
mountpoint [-q] cesta
@zálohovat diskový oddíl do souboru (přímo/komprimovaný)#2
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ý)#3 (34)
sudo dd if=cesta of=/dev/oddíl [status=progress]
zcat cesta.gz | sudo dd of=/dev/oddíl [status=progress]

4. Zaklínadla: Dělení disku

4/1 Dělení disku interaktivně

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

4/2 Skript pro sfdisk: tabulka GPT

@vytvořit novou tabulku oddílů#1
label: gpt
@vytvořit oddíl (obecně)#2 (35)
[start=první-sektor,] [size=velikost,] type=typ [, bootable] [, uuid=požadované-PARTUUID] [, name="jméno oddílu]
@vytvořit datový oddíl GPT#3
[start=první-sektor,] [size=velikost,] type=0FC63DAF-8483-4772-8E79-3D69D8477DE4 [, bootable] [, uuid=požadované-PARTUUID] [, name="jméno oddílu]
@vytvořit odkládací oddíl GPT#4
[start=první-sektor,] [size=velikost,] type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F [, uuid=požadované-PARTUUID] [, name="jméno oddílu]
@vytvořit oddíl EFI#5
[start=první-sektor,] [size=velikost,] type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B [, bootable] [, uuid=požadované-PARTUUID] [, name="jméno oddílu]

4/3 Skript pro sfdisk: tabulka MBR

Poznámka: pro vytvoření oddílů v rozšířeném oddílu musíte nejprve vytvořit rozšířený oddíl do konce disku; další oddíly pak budou vytvářeny uvnitř tohoto rozšířeného oddílu.

@vytvořit novou tabulku oddílů#1
label: dos
@vytvořit oddíl (obecně)#2 (36)
[start=první-sektor,] [size=velikost,] type=typ [, bootable] [, uuid=požadované-PARTUUID] [, name="jméno oddílu]
@vytvořit datový oddíl#3
[start=první-sektor,] [size=velikost,] type=83 [, bootable] [, uuid=požadované-PARTUUID] [, name="jméno oddílu]
@vytvořit odkládací oddíl GPT#4
[start=první-sektor,] [size=velikost,] type=82 [, uuid=požadované-PARTUUID] [, name="jméno oddílu]
@vytvořit oddíl EFI#5
[start=první-sektor,] [size=velikost,] type=EF [, bootable] [, uuid=požadované-PARTUUID] [, name="jméno oddílu]

4/4 Skript pro sfdisk: Ostatní

@komentář#1
#komentář do konce řádky
@příklad skriptu#2
label: gpt
# datový oddíl:
size=120GiB, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4
# odkládací oddíl:
size=4GiB, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
# zbytek jako další datový oddíl:
type=0FC63DAF-8483-4772-8E79-3D69D8477DE4

5. Nejdůležitější volby připojení

5/1 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.

5/2 Zobrazení ve správcích souborů (pro všechny typy)

Poznámka: funkčnost těchto voleb ve správcích souborů může být různá; mám vyzkoušeno, že Thunar je respektuje; v ostatních správcích raději nejprve vyzkoušejte, zda tam budou fungovat, než se na ně spolehnete.

○ x-gvfs-show ○ x-gvfs-hideSystém souborů se má/nemá zobrazovat ve správcích souborů jako jednotka. Pozor: volby „nofail“ a „noauto“ uvedené před touto volbou nemusejí správně fungovat, proto je uvádějte až za ní.
☐ x-gvfs-name=zakódované%20jménoNastaví název, pod kterým se bude zobrazovat ve správcích souborů. Může obsahovat i ne-ASCII znaky; naopak ASCII znaky kromě obyčejných písmen a číslic musejí být zakódovany do hexadecimální formy sestávající z procenta a dvou hexadecimálních číslic; nejužitečnější jsou „%20“ (mezera) a „%2C“ (čárka).
☐ x-gvfs-icon=id-ikonyNastaví ikonu, s jakou se bude zobrazovat ve správcích souborů; zkuste např. „folder-download“.

5/3 Pro ext4, ext3 a ext2

○ 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.)
☐ init_itable=0Nastaví maximální prioritu inicializaci souborového systému. Výhodné při inicializaci souborových systémů na otočných pevných discích, kdy by normální pomalá inicializace delší dobu snižovala výkon disku. (Zkoušeno jen na ext4.)
◉ 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).

5/4 Pro „vfat“ (FAT32, FAT16, 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ě).

5/5 Pro „ntfs“ (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.

5/6 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ě příkazu zerofree a nástroje GNOME Disky, které v případě potřeby musíte doinstalovat:

sudo apt-get install gnome-disk-utility zerofree

7. Tipy a zkušenosti

  • Pomocí příkazu „mount --bind“ můžete jeden ramdisk připojit na několik různých míst VFS!
  • Zadáte-li výměnnou jednotku (např. USB flash disk) v /etc/fstab a tato jednotka nebude dostupná při startu systému, zavádění selže a nabídne vám přechod do záchranného režimu. Proti tomu pomohou volby „nofail“ (v případě jakékoliv chyby se připojení systému souborů tiše přeskočí) a „noauto“ (systém se vůbec nepokusí o připojení, ale oddíl či jednotku půjde připojit zkrácenou syntaxí příkazu „mount“).
  • Určitý konkrétní adresář může být použit jako přípojný bod vícenásobně, ale nedoporučuji to (nedává to příliš smysl). Také je možné připojením jiného souborového systému na adresář nadřazený přípojnému bodu překrýt přípojný bod i s jeho obsahem, ale rovněž to nedoporučuji.

8. Typy pro vytvoření oddílu pomocí sfdisku

  • Oddíl linuxového souborového systému (např. ext4 nebo btrfs): „0FC63DAF-8483-4772-8E79-3D69D8477DE4“ (GPT), „83“ pro MBR.
  • Odkládací oddíl: „0657FD6D-A4AB-43C4-84E5-0933C84B4F4F“ (GPT), „82“ (MBR).
  • Oddíl FAT32: „EBD0A0A2-B9E5-4433-87C0-68B6B72699C7“ (GPT), „0C“ (MBR).
  • Oddíl NTFS: „EBD0A0A2-B9E5-4433-87C0-68B6B72699C7“ (GPT), „07“ (MBR).
  • Rozšířený oddíl MBR: „5“ (nezkoušeno).
  • Oddíl EFI: „C12A7328-F81F-11D2-BA4B-00A0C93EC93B“ (GPT), „EF“ (MBR).

9. Další zdroje informací

Pokud hledáte nástroj pro dělení disku ze skriptu, zkuste sfdisk (anglicky).

10. Pomocné funkce a skripty

@lkk diskstat – vypíše počty čtených a zapsaných bajtů#1
#!/bin/sh
exec perl -CSDAL -Mv5.26.0 -Mstrict -Mutf8 -MEnglish -e '
my %data; my %rps; my $počet_chyb = 0;
sub array {return @ARG}
$OFS = "\t"; $ORS = "\n";
{ open(my $f, "<:utf8", "/proc/diskstats") or die("Nemohu otevřít /proc/diskstats");
my $l;
while (defined($l = scalar(readline($f)))) {
my @f = split(/\s+/, $l =~ s/\A\s+//r);
$data{$f[2]} = [512 * $f[5], 512 * $f[9], $f[2]]; # čtení, zápis, označení
}}
if (scalar(@ARGV) == 0) {
foreach my $x (do { no locale; array(sort {fc($a) cmp fc($b)} keys(%data)); }) {
my @x = @{$data{$x}};
print("/dev/" . $x[2], @x[0, 1]) if ($x[0] + $x[1] > 0);
}} else {
foreach my $x (@ARGV) {
my $z = $rps{$x} // do {
my $s = ($x =~ s/\x{27}/$&\x{5c}$&$&/rg);
use open("IN", ":utf8"); local $RS = undef;
$rps{$x} = (scalar(readpipe("realpath -- \x{27}${s}\x{27}")) =~ s/\n\z//r);
};
if (defined($z) && $z =~ /\A\/dev\// && defined($data{$z = substr($z, 5)})) {
$z = $data{$z};
print($x, $z->[0], $z->[1]);
} else {++$počet_chyb}}
exit($počet_chyb < 254 ? $počet_chyb : 254);
}' -- "$@"

11. Zákulisí kapitoly

V této verzi kapitoly chybí:

  • použití programu „sfdisk“
  • ovládání programu „fdisk“
  • šifrování oddílů
  • připojování obyčejným uživatelem

Tato kapitola záměrně nepokrývá:

  • nic
1 Maximální velikost jmenovky je 16 bajtů.
2 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).
3 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.
4 2 v posledním poli zapne automatickou kontrolu systému souborů 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 režimu jen pro čtení (ro).
5 Velikost se udává nejčastěji v mebibajtech (s příponou M – např. „256M“) nebo gibibajtech (s příponou G – např. „10G“). Lze ji udat také v procentech dostupné paměti RAM (např. „150%“ pro 1,5-násobek velikosti RAM).
6 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.
7 Tato operace selže, pokud je některý soubor z daného systému souborů otevřený pro zápis. Otevření pro čtení nevadí.
8 Tento příkaz je výhodný především pro nastavování voleb připojení u souborových systémů na výměnných zařízeních, které si necháte připojit automaticky. Ne všechny volby takto jdou nastavit, proto doporučuji po změně ověřit příkazem „findmnt -nu -o OPTIONS /přípojný/bod“, zda byla úspěšná.
9 Poznámka: Tímto příkazem se vytvoří nové, nezávislé připojení téhož systému souborů do nového přípojného bodu. Tento příkaz umožňuje připojit i jiný než kořenový adresář připojovaného systému souborů.
10 Jedno zdrojové zařízení může být připojeno na víc přípojných bodů (např. při použití příkazu „mount --bind“); v tom případě příkaz „findmnt“ vypíše každý přípojný bod na samostatný řádek!
11 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ý/á.
12 Odpověď 0 znamená, že zařízení je i pro zápis; odpověď 1 znamená, že je jen pro čtení.
13 Maximální velikost jmenovky je 16 bajtů.
14 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).
15 Poznámka: zrcadlené oddíly jsem zatím nezkoušel/a.
16 Zrcadlené oddíly by měly být stejně velké a nacházet se na dvou různých fyzických úložištích. Také se doporučuje, aby obě úložiště nabízela přibližně stejnou rychlost čtení i zápisu, jinak mohou nastat problémy s výkonem. Při připojování pak stačí připojit jen jeden z oddílů a systém automaticky najde a připojí i to druhé.
17 Poznámka: jmenovka systémů FAT může být maximálně 11 znaků dlouhá!
18 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í.
19 Velikost se zadává s příponou (např. „2048M“ nebo „4G“). Tip: velikost ext4 lze obvykle změnit i tehdy, když je souborový systém připojený.
20 Souborový systém musí být připojený, aby bylo možno změnit jeho velikost!
21 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!
22 Bez sudo vynechá jmenovky a UUID.
23 Velikost můžete zadat také v megabajtech (s příponou „M“) či gigabajtech (s příponou „G“). Poznámka: odkládací soubor by měl být na souborovém systému ext4 (popř. ext3 nebo ext2). Umístění na btrfs nedoporučuji, ale prý je možné při dodržení zvláštních podmínek.
24 „Specifikace oddílu“ je v případě nepřipojeného oddílu „/dev/oddíl“, v případě připojeného oddílu je nutno uvést jeho přípojný bod. Příkaz selže s chybou, pokud uvedete připojený oddíl označením ve tvaru /dev/oddíl! Jmenovka může mít pravděpodobně maximálně 256 bajtů a nesmí obsahovat znak konce řádku nebo nulový bajt.
25 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ší. Souborový systém typu FAT32 by při nastavování jmenovky měl být odpojený.
26 Souborový systém typu NTFS by při nastavování jmenovky měl být odpojený.
27 Poznámka: pokud byla jmenovka od startu systému (resp. od připojení příslušného zařízení) změněna, tento příkaz může u některých souborových systémů ukazovat původní jmenovku (podle mých zkušeností to tak dělá obyčejným uživatelům u oddílů btrfs; superuživateli však ukáže již aktuální jmenovku).
28 Příkaz „fsck“ pravděpodobně lze použít i se souborovým systémem v souboru, ale nezkoušel/a jsem to.
29 Hodnoty „začátek“ a „délka“ se (s příponou „M“) udávají v celých mebibajtech. Pozor, tento příkaz zahodí všechna data v uvolňovaných blocích!
30 Příkaz „zerofree“ lze použít jen s odpojeným souborovým systémem!
31 Poznámka: Tento příkaz chybné bloky najde, ale neudělá nic proto, aby se je systém souborů nesnažil používat.
32 Pokud jste začátečník, nedefragmentujte oddíly typu ext4! Obvykle to není potřeba.
33 Tento příkaz následuje symbolické odkazy. To, že adresář reprezentuje pododdíl btrfs, ho pro účely tohoto příkazu přípojným bodem nečiní.
34 Pozor! Tato operace je 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í!
35 Velikost může být udána třemi způsoby: číslo bez přípony (např. 1024000) znamená přesný počet sektorů; číslo s příponou „KiB“, „MiB“, „GiB“ nebo „TiB“ znamená požadovanou velikost v kibibajtech, mebibajtech atd. Třetí možnost je položku „size“ vůbec neuvést; v takovém případě se vytvoří oddíl do konce disku. Položky „start“ a „uuid“ doporučuji uvádět jen tehdy, když se snažíte obnovit dříve existující oddíl a jejich hodnoty bezpečně znáte. „Typ“ musíte učit podle seznamu uvedeného v sekci „Tipy a zkušenosti“.
36 Velikost může být udána třemi způsoby: číslo bez přípony (např. 1024000) znamená přesný počet sektorů; číslo s příponou „KiB“, „MiB“, „GiB“ nebo „TiB“ znamená požadovanou velikost v kibibajtech, mebibajtech atd. Třetí možnost je položku „size“ vůbec neuvést; v takovém případě se vytvoří oddíl do konce disku. Položky „start“ a „uuid“ doporučuji uvádět jen tehdy, když se snažíte obnovit dříve existující oddíl a jejich hodnoty bezpečně znáte. „Typ“ musíte učit podle seznamu uvedeného v sekci „Tipy a zkušenosti“.
Líbí se vám tento projekt a chcete, aby byl ještě lepší? Můžete mi s tím pomoci. Zmiňte se o něm technicky zdatným přátelům, opravte překlepy a nahlašte nefunkční zaklínadla, aby mohla být opravena; poskytněte mi zpětnou vazbu nebo se zapojte do vývoje nových kapitol. Další informace na GitHubu v dokumentu Jak se zapojit.
[BY-SA]

Veškerý obsah této stránky (text, obrázky, zdrojový kód) je možno upravovat a šířit pod podmínkami licence Creative Commons Attribution-ShareAlike 4.0 International. Upozorňuji, že uvedená licence vyžaduje uvedení seznamu autorů, licence a zdroje a poskytnutí stejné či kompatibilní licence k provedeným změnám, jsou-li nějaké. Příslušné údaje jsou dostupné na stránce „Přehled autorů“. Šíření obsahu bez těchto údajů nebo šíření upravené verze bez poskytnutí adekvátní licence k provedeným úpravám je pravděpodobně porušení licenčních podmínek a může být postihováno. Poskytování zdrojového kódu při šíření není touto licencí vyžadováno.

Pro nové verze, další informace, aktuální zdrojový kód a možnost se zapojit do projektu „Linux: Kniha kouzel“ navštivte jeho repozitář na GitHubu.