Jak rozdělit disk správně s GNU Parted

13. 1. 2012
Doba čtení: 5 minut

Sdílet

Minulý týden jsme se podívali na nástroj GParted, který usnadňuje práci s oddíly a poradí si i s tabulkou oddílů GPT. Ne vždy má ale uživatel možnost všechno pohodlně naklikat a v tomto případě přijdou vhod další nástroje. Jedním z nich je parted. Není sice moc přívětivý, ale proti fdisku je to krok vpřed.

Parted je řádková utilitka o velikosti asi 80 kB, která byla navržena pro manipulování s diskovými oddíly na linuxových operačních systémech. Jak jste si mohli všimnout v titulku tohoto článku, parted patří do rodiny GNU. Snaží se k moderním diskům přistupovat moderně ve smyslu takzvaného zarovnávání velikosti oddílů. Na rozdíl třeba od známé utilitky fdisk už nepracuje s cylindry, takže vám nebude hlásit varování, pokud se netrefíte na dnes už nepoužívané rozměry podle cylindrů. Zato si dává pozor, abyste náhodou nenarušili velikost sektoru.

Dnešní disky mají sektory o velikosti 512 B a občas se najde i takový, který má sektor 4096 B (4 KiB). Hlavně u 4 KiB se občas programy pro rozdělení disku (například při instalaci systému) netrefily přesně na hranici 4 KiB, což způsobovalo výrazné zpomalení veškerých operací na disku. Ve skutečnosti ale nevíme, co přesně se v pevném disku děje, takže můžeme nastavení optimálních hodnot nechat na disku samotném, resp. na programu parted, který „správné“ hodnoty spočítá z informací, které mu disk sdělí. To provedeme tímto způsobem:

# parted -a optimal /dev/sda 

Parametr -a určitě typ zarovnání a může použít hodnoty:

  • none – použití co nejmenšího zarovnání, které disk umožňuje
  • cylinder – zarovnání na cylindry
  • minimal – zarovnání tak, aby nedošlo k degradaci výkonu (výchozí)
  • optimal – zarovná nové oddíly tak, aby byl maximální výkon zajištěn

Pokud už oddíly vytvořené máte a chcete zjistit, zda jsou dobře zarovnané, parted dokáže být užitečný. Nejprve si ho spusťte v interaktivním módu nad nějakým vaším diskem.

# parted /dev/sda 

A vypište si seznam oddílů.

(parted) print
Model: ATA ADATA SSD S510 6 (scsi)
Disk /dev/sda: 60,0GB
Sector size (logical/physical): 512B/512B
Tabulka oddílů: gpt

Číslo  Začátek  Konec   Velikost  Systém souborů  Název  Přepínače
 1     17,4kB   512MB   512MB     ext4
 2     512MB    10,5GB  10,0GB    ext4
 3     10,5GB   14,6GB  4096MB    linux-swap(v1)
 4     14,6GB   60,0GB  45,4GB    ext4 

Všimněte si vypsané velikosti sektoru, které se snažte držet při počítání velikostí jednotlivých oddílů. Pokud si chcete ověřit, jak na tom jsou vaše oddíly, použijte funkce align-check.

(parted) align-check minimal 1
1 aligned 

V případě použití optimal zarovnání to ale u mého disku už tak dobré není.

(parted) align-check optimal 1
1 not aligned 

Pokud jste na tom stejně nebo hůře, nezbývá než se pustit do vytvoření tabulky nové.

Na oddíly od píky

V dnešní době už není potřeba používat zastaralé MBR a vcelku s klidnou rukou můžete nasadit GPT. GRUB2 i linuxové jádro s tím nebudou mít problém. Pokud o GPT ještě nic nevíte, přečtěte si náš článek Na disky větší než 2 TB s GPT. S GPT si budete moct vytvořit hromadu oddílů bez zbytečných obezliček a průprava se vám bude hodit, až si pořídíte disk větší než 2 TB, resp. 4 TB, kde hranice MBR končí. V případě, že se rozhodnete pro GPT, stačí do parted zadat následující:

(parted) mktable gpt 

V případě, že GPT nedůvěřujete a postačí vám MBR, použijte toto:

(parted) mktable msdos 

A teď už můžete vytvářet nové oddíly. Zkusíme vytvořit boot, root, swap a home. Na testování tu mám jen 2 GB USB flash paměť, takže velikosti berte prosím s rezervou a na svém disku si zvolte, kolik potřebujete.

(parted) mkpart
Název oddílu?  []? boot
Typ souborového systému?  [ext2]? ext4
Začátek? 1
Konec? 100 

Parametry lze zadávat buď interaktivně nebo jako parametr pro příkaz mkpart. Není potřeba hledat kódy oddílů jako u fdisku, ale postačí zadat název souborového systému. Parted umí na cílovém oddílu souborový systém také vytvořit, ale tato funkce pravděpodobně zmizí v jednom z dalších vydání. Pokud si nějakým parametrem nejste jisti, můžete si ho nechat našeptat pomocí klávesy TAB.

(parted) mkpart root ext4 100 1000
(parted) mkpart swap linux-swap 1000 1250
(parted) mkpart home ext4 1250 2013 

Vytvořené oblasti pak vypadají takto:

Číslo  Začátek  Konec   Velikost  Systém souborů  Název  Přepínače
1     1049kB   99,6MB  98,6MB                    boot
2     99,6MB   1000MB  901MB                     root
3     1000MB   1250MB  250MB                     swap
4     1250MB   2012MB  762MB                     home 

Všechny jsou zarovnané pro maximální výkon a pokud použijete podobný postup, nemělo by se vám stát, že by IO operace na vašem disku byly pomalé. Pokud váháte, kde má začínat první oddíl, mělo by to být někde za 18 kB, protože kousek před touto hodnotou končí GPT tabulka. Řiďte se tím i v případě MBR, které je později možné překonvertovat na GPT bez ztráty dat. Nemusíte se bát, že by vás parted pustilo do nebezpečné oblasti, nedovolí vám přepsat ani tabulku oblastí, ani zavaděč, ani jinou oblast. Výchozí jednotky pro vytváření oblastí jsou MB. Stejně tak je možné použít B, KB (K), GB (G) a podobně. Když si nejste jisti, kolik máte v jaké oblasti disku místa, použijte print free.

Číslo  Začátek  Konec   Velikost  Systém souborů  Název  Přepínače
  17,4kB   1049kB  1031kB    Volné místo
1     1049kB   99,6MB  98,6MB                    boot
2     99,6MB   1000MB  901MB                     root
3     1000MB   1250MB  250MB                     swap
  1250MB   2013MB  763MB     Volné místo 

Další funkce, které Parted má, jako třeba změna velikosti nebo přesun oddílů, nefungují na všech souborových systémech. Změna polohy nebo velikosti oddílu se tak musí řešit vždy smazáním a znovuvytvořením. Dejte si také pozor na to, že parted se na potvrzení změn neptá a co mu zadáte, to udělá. Občas se vám může stát, že smažete důležitý oddíl, který jste původně smazat nechtěli. Naštěstí tu je příkaz rescue, který vás z problémů dostane, stačí znát přibližnou polohu (± 10 MB) původního oddílu.

(parted) rescue 990MB 1350MB
Informace: Byl nalezen oddíl ext4 primary na 1000MB -> 1250MB. Chcete jej přidat do tabulky oddílů?
Ano/Yes/Ne/No/Zrušit/Cancel? Cancel 

Co by se vám mohlo hodit, je změna flagů. Ty se nastavují pomocí toggle:

bitcoin_skoleni

(parted) toggle
Číslo oddílu? 1
Přepínač, který změnit?
atvrecv     bios_grub   boot        diag        hidden      hp-service  lvm         msftres     raid        skrytý
Přepínač, který změnit? boot 

Pokud byste váhali nad použitím nějakého příkazu nebo chcete vědět, co dalšího parted umí, podívejte se do nápovědy, kterou vyvoláte zadáním help, případně do man stránky. Na webu projektu je k dispozici také uživatelská příručka.

Shrnutí

Parted najdete téměř v každé distribuci a používají ho i instalátory některých distribucí. Pokud nemáte k dispozici GParted, měl by to být hned druhý nástroj tohoto typu, na který byste měli sahat. Na rozdíl od GParted, parted dává uživateli větší kontrolu nad tím, co se děje a pomáhá jen tam, kde to je potřeba. Pokud chcete použít GPT, ale parted se vám z nějakého důvodu nelíbí, zkuste třeba gfdisk, který najdete v balíčku gnu-fdisk.

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.