GNU/Linux >> Znalost Linux >  >> Linux

Živá změna velikosti oddílu GPT v systému Linux

Nejbezpečnější způsob, jak toho dosáhnout, je zavést systém pomocí nouzového média (živé CD nebo podobně) a použít GParted, který změní velikost oddílu i souborového systému, který obsahuje. To však bude fungovat pouze v případě, že oddíl není aktuálně používán.

Pokud si však nemůžete dovolit žádné prostoje, můžete zkusit použít gdisk místo parted . Budete muset odstranit oddíl, jehož velikost chcete změnit, a vytvořit na jeho místě nový se stejným počátečním bodem, podobně jako byste to udělali s fdisk . gdisk je ochoten pracovat na používaném disku, ačkoli jádro nemusí registrovat žádné změny. V takovém případě možná budete muset použít partprobe nebo kpartx přimět jádro, aby přijalo novou tabulku oddílů, nebo dokonce restartovat počítač, pokud to nefunguje. (Vše by mělo být velmi podobné použití fdisk .)


To obvykle funguje pouze s novějšími distribucemi Linuxu. Potřebné nástroje:

  • partprobe (obvykle část parted)
  • gdisk / sgdisk

Oddíl GPT ukládá záhlaví zálohy na konec disku. Pokud jste změnili velikost základního zařízení, bude záhlaví zálohy někde uprostřed. Prvním krokem je přesunout hlavičku oddílu na konec disku.

Za předpokladu, že disk je /dev/sda a oddíl je /dev/sda3 (musí to být také poslední oddíl):

sgdisk -e /dev/sda

Poté smažte poslední oddíl a znovu jej vytvořte:

sgdisk -d 3 /dev/sda
sgdisk -N 3 /dev/sda

Obvykle uvidíte zprávu oznamující, že jádro není schopno znovu načíst tabulku oddílů. Musíte spustit partprobe, aby byl oddíl zaregistrován s novou velikostí:

partprobe /dev/sda

Pokud se to nezdaří, budete muset restartovat virtuální počítač. Poté můžete svůj souborový systém rozšířit pomocí vhodného nástroje pro ext4 atd.:

resize2fs /dev/sda3

Pozor :spuštění sgdisku může být destruktivní. Ujistěte se, že máte zavedeny správné postupy zálohování.


Zde je příklad, který automatický nástroj používá ke změně velikosti oddílu online v jednom spuštění:

sgdisk -d 1 -n 1:2048:0 -c 1:-u1:E485F29F-A1F4-4953-9DD8-799EAEA0119B -t 1:0700 /dev/xvda

Zde je seznam možností příkazu sgdisk:

  • -d 1 odstranit první oddíl
  • -n 1:2048:0 říká vytvořit nový oddíl „číslo 1“ se začínajícím sektorem 2048. Koncový sektor =„0“, což znamená „využít veškerý dostupný prostor pro tento oddíl
  • -u nastaví jedinečné guid pro daný oddíl (toto je specifické pro oddíly GPT); můžete použít 'R' pro nastavení GUID na náhodnou hodnotu. Aktuální ID oddílů můžete také získat pomocí gdisk /dev/xvda; p výstup pro opětovné použití stejného uid
  • -t 1:0700 v podstatě znamená, že první oddíl má typový kód '0700'.

/dev/xvda byl disk, který jsme přerozdělili.

Okamžitě se tedy smaže a na svém místě vytvoří nový oddíl.

PS. Několik poznámek k typovému kódu '0700'. Od muže SGDISK(8)

   -t, --typecode=partnum:{hexcode|GUID}
          Change a single partition's type  code.  You  enter  the  type  code  using  either  a  two-byte  hexadecimal  number,  as 

popsané výše nebo plně specifikovaná hodnota GUID, jako je EBD0A0A2-B9E5-4433-87C0-68B6B72699C7.

Nejlepší vysvětlení toho, co '0700' znamená, najdete zde - http://www.rodsbooks.com/gdisk/walkthrough.html

"Ale počkej," říkáš, "myslel jsem, že ten disk má oddíl FAT!" Opravdu ano. Windows používá jeden kód GUID pro všechny své datové oddíly, ať už FAT nebo NTFS. V minulosti byl stejný kód použit v Linuxu pro jeho datové oddíly. (Více o tom brzy....) V tomto případě je tedy několik různých kódů MBR přeloženo do jediného kódu GPT GUID. GPT fdisk používá, poněkud svévolně, kód 0x0700 (nebo přesněji EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) pro všechny z nich.

V mém případě se domnívám, že to byl oddíl Linux ext4, ale typový kód oddílu neznamená typ souborového systému, takže '0700' vypadá spíše jako typ catchall pro sgdisk. Alespoň v případech, které jsem viděl.

PPS. Možná budete muset spustit partprobe aby si jádro uvědomilo změnu rozdělení bez restartu systému.


Linux
  1. Jak změnit velikost (rozšířit) souborový systém založený na oddílech v Linuxu

  2. Jaký je ekvivalent linuxového příkazu sudo fdisk -l v MacOS?

  3. Je možné zavést Linux z disku GPT v systému BIOS?

  1. Jak rozdělit disk v Linuxu

  2. Vytvoření oddílu pro obnovení v Embedded Linuxu?

  3. Změna velikosti oddílu /var na vzdáleném systému (Linux Debian Lenny)

  1. Linux – instalace pomocí Gpt na 32bitovém systému s Biosem?

  2. Jak spravovat swapovací oddíl v Linuxu

  3. Jak přesunout oddíl v GNU/Linuxu?