it-swarm-eu.dev

Vytvořit oddíl zarovnán pomocí parted

Rozděluji pevný disk non-SSD s rozděleným , protože chci tabulku oddílů GPT.

parted /dev/sda mklabel gpt

Nyní se snažím vytvořit oddíly správně zarovnány, takže pomocí následujícího příkazu vím, kde začíná první sektor:

parted /dev/sda unit s p free

Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End         Size        File system  Name      Flags
        34s    488397134s  488397101s  Free Space

Vidíme, že začíná v sektoru 34 (to je výchozí při použití této tabulky oddílů).

Chcete-li tedy vytvořit první oddíl, který jsem zkusil:

parted /dev/sda mkpart primary 63s 127s

zarovnat ji na sektor 64, protože se jedná o násobek 8, ale ukazuje:

pozornění: Výsledný oddíl není správně zarovnán, aby byl zajištěn nejlepší výkon.

Velikost logického i fyzického sektoru na mém pevném disku je 512 bytů:

cat /sys/block/sda/queue/physical_block_size
512

cat /sys/block/sda/queue/logical_block_size 
512

Jak mohu vytvořit oddíly správně zarovnány? Co dělám špatně?

72
Marc

Chcete-li oddíl zarovnat s parted, můžete použít --align možnost. Platné typy zarovnání jsou:

  • žádné - Použijte minimální zarovnání povolené typem disku.
  • válec - Zarovnejte oddíly k válcům.
  • minimální - Použijte minimální zarovnání podle informací o topologii disku. Tato hodnota a hodnota opt použije informace o rozvržení poskytnuté diskem k zarovnání adres tabulky logických oddílů se skutečnými fyzickými bloky na discích. Hodnota min je minimální zarovnání potřebné pro správné zarovnání oddílu k fyzickým blokům, což zabraňuje snížení výkonu.
  • optimální Použijte optimální zarovnání podle informací o topologii disku. Tím se zarovná k násobku velikosti fyzického bloku způsobem, který zaručuje optimální výkon.

Dalším užitečným tipem je, že můžete nastavit velikost pomocí procent, aby byla zarovnána. Začněte na 0% a končte na 100%. Například:

parted -a optimal /dev/sda mkpart primary 0% 4096MB

73
lik

Z Arch Wiki :

Při vytváření diskových oddílů by se parted mohl varovat před nesprávným zarovnáním diskových oddílů, ale nenaznačuje správné zarovnání. Například:

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

Varování znamená, že oddíl start není zarovnán.

Zadejte Ignore a pokračujte dále , vytiskněte tabulku oddílů v sektorech, abyste zjistili, kde začíná, a oddíl odeberte/znovu vytvořte start sektoru se zaokrouhlil nahoru na rostoucí síly 2, dokud se varování nezastavilo. Jako jeden příklad, na flash disku s 512B sektory, chtěl Parted začít oddíly na sektorech, které byly násobkem 2048, což je zarovnání 1 MB.

Kromě toho právě nad touto částí prohlašují, že přesnější IEC binární jednotky KiB, MiB, GiB atd.) Jsou přijatelné pro jednotky i pro méně přesné KB, MB, GB , atd.

Osobně můj přesný příkaz, který to vyřešil, byl:

mkpart hd ext4 1024KiB 8470MB

To si nestěžovalo, myslím, že to chtělo 1MB zarovnání.

9
Travis Rodman

Mým řešením bylo použít gdisk, které může ve výchozím nastavení provádět automatické zarovnání oddílů na 2048 sektorech (1024 kB), ačkoli to lze změnit v nabídce expertů.

9
Marc

Drobná korekce. Jak to chápu, disky GPT již nemají typy diskových oddílů, všechny jsou „primární“. Příkaz 'mkpart primární' nevytváří primární oddíl jako na discích msdos, pouze vytvoří oddíl nazvaný primární. Stejně tak můžete použít příkaz

(parted) mkpart Parted-FUN! 21476MB 4000787MB
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start    End        Size       File system  Name         Flags
 1      1.05MB   17181MB    17180MB    ext4         raid-var
 2      17181MB  21476MB    4295MB                  raid-swap
 3      21476MB  4000786MB  3979310MB               Parted-FUN!

To může způsobit zmatek, pokud se pokusíte vytvořit logické oddíly, vím, že to udělal pro mě.

(parted) mkpart extended 21476MB 4000787MB
(parted) mkpart logical 21476MB 1000787MB
Warning: You requested a partition from 21476MB to 1000787MB.
The closest location we can manage is 4000786MB to 4000786MB.
Is this still acceptable to you?
Yes/No? Yes
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start      End        Size       File system  Name       Flags
 1      1.05MB     17181MB    17180MB    ext4         raid-var
 2      17181MB    21476MB    4295MB                  raid-swap
 3      21476MB    4000786MB  3979310MB               extended
 4      4000786MB  4000786MB  0.00MB                  logical

Nelze vytvořit oddíl nazvaný „logický“ uvnitř oddílu nazvaného „rozšířený“.

7
Miksa

přijatá odpověď @lik ukazuje, jak můžete zadat preferované zarovnání. Parted však vždy použije toto zarovnání pro kontrolu výsledného oddílu, ale ne vždy vytvoří oddíly s tímto zarovnáním.

TL; DR: Když je 1MiB optimální zarovnání, zadání 0% bude fungovat pro disky o velikosti 200 MB a větší. U menších disků nebo většího zarovnání by určení 0G mohlo fungovat tam, kde 0% ne. Viz níže o tom proč.

Parted se při vytváření oddílu snaží splnit omezení zarovnání, ale také se příliš neodchyluje od požadovaných hodnot. To, co se počítá jako „příliš mnoho“, závisí na tom, jak jste určili pozice.

Když určíte počáteční (nebo koncovou) polohu příkazu mkpart, interně vygeneruje rozsah přijatelných hodnot. Tento rozsah je zaměřen na hodnotu, kterou určíte, a rozšiřuje se rovnoměrně na obou stranách o polovinu velikosti jednotky, kterou jste použili (to je to, co jsem čtení z kód , řeknou komentáře jeden plná velikost jednotky na obou koncích).

Pokud například zadáte „10M“, pokusí se použít jakoukoli pozici mezi 9,5 a 10,5 milionu. Totéž platí pro procenta, takže pokud zadáte 0%, použije se jakákoli hodnota mezi 0% a 0,5% (zjevně nejde záporně).

Výjimkou je, že když používáte sílu dvou jednotek (jako je KiB pro 1024, na rozdíl od K pro 1000), parted předpokládá, že se pokoušíte určit přesnou polohu a vezme v úvahu pouze přesnou hodnotu, kterou jste zadali.

Protože se optimální uspořádání obvykle jeví jako 1MiB-zarovnané, jednotky K a M často nebudou mít dostatečný prostor pro dosažení optimálního srovnání. Určování pozic v G by mělo mít dostatek místa, ale% je obvykle také v pořádku.

To je důvod, proč obvykle 0% funguje, i když i to má limity.

7
Matthijs Kooijman