GNU/Linux >> Linux Esercitazione >  >> Linux

Ridimensionamento in tempo reale di una partizione GPT su Linux

Il modo più sicuro per farlo è avviare utilizzando un supporto di emergenza (un CD live o simile) e utilizzare GParted, che ridimensionerà sia la partizione che il filesystem che contiene. Ciò funzionerà solo se la partizione non è attualmente in uso.

Se non puoi permetterti alcun tempo di inattività, però, puoi provare a utilizzare gdisk invece di parted . Dovrai eliminare la partizione che desideri ridimensionare e crearne una nuova al suo posto con lo stesso punto di partenza, proprio come avresti fatto con fdisk . gdisk è disposto a lavorare su un disco in uso, anche se il kernel potrebbe non registrare alcuna modifica. In tal caso, potrebbe essere necessario utilizzare partprobe o kpartx per fare in modo che il kernel accetti la nuova tabella delle partizioni, o anche riavviare il computer se non funziona. (Dovrebbe essere tutto abbastanza simile all'uso di fdisk .)


Questo di solito funziona solo con le distribuzioni Linux più recenti. Strumenti necessari:

  • partprobe (solitamente parte di parted)
  • gdisk / sgdisk

Una partizione GPT memorizza un'intestazione di backup alla fine del disco. Se hai ridimensionato il dispositivo sottostante, l'intestazione del backup sarà da qualche parte nel mezzo. Il primo passo è spostare l'intestazione della partizione alla fine del disco.

Supponendo che il disco sia /dev/sda e la partizione sia /dev/sda3 (deve essere anche l'ultima partizione):

sgdisk -e /dev/sda

Quindi elimina l'ultima partizione e ricreala:

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

Di solito vedrai un messaggio che indica che il kernel non è in grado di ricaricare la tabella delle partizioni. Devi eseguire partprobe in modo che la partizione sia registrata con la nuova dimensione:

partprobe /dev/sda

Se questo non ha successo, dovrai riavviare la macchina virtuale. Successivamente puoi far crescere il tuo filesystem con lo strumento appropriato, per ext4 ecc.:

resize2fs /dev/sda3

Attenzione :l'esecuzione di sgdisk può essere distruttiva. Assicurati di disporre di procedure di backup adeguate.


Ecco un esempio che uno strumento automatizzato utilizza per ridimensionare una partizione online, in un'unica esecuzione:

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

Ecco l'elenco delle opzioni del comando sgdisk:

  • -d 1 la prima partizione di delete
  • -n 1:2048:0 dice create new partition "number 1", con settore iniziale 2048. End sector ="0" che significa "usa tutto lo spazio disponibile per questa partizione
  • -u imposta un guid univoco per quella partizione (questo è specifico per le partizioni GPT); potresti usare 'R' per GUID da impostare su un valore casuale. Puoi anche ottenere l'ID delle partizioni correnti tramite gdisk /dev/xvda; p output per riutilizzare lo stesso uid
  • -t 1:0700 in pratica significa che la prima partizione è di typecode '0700'.

/dev/xvda era il disco che abbiamo ripartizionato.

Quindi elimina e crea subito una nuova partizione al suo posto.

PS. Alcune note sul typecode '0700'. Da man 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 

descritto in precedenza o un valore GUID completamente specificato, ad esempio EBD0A0A2-B9E5-4433-87C0-68B6B72699C7.

Ho trovato la migliore spiegazione del significato di "0700" qui:http://www.rodsbooks.com/gdisk/walkthrough.html

"Ma aspetta", dici, "pensavo che il disco avesse una partizione FAT!" In effetti lo fa. Windows utilizza un unico codice GUID per tutte le sue partizioni di dati, siano esse FAT o NTFS. In passato, lo stesso codice è stato utilizzato in Linux per le sue partizioni dati. (Maggiori informazioni su questo a breve...) Pertanto, in questo caso diversi codici MBR vengono tutti tradotti in un unico codice GUID GPT. GPT fdisk usa, in qualche modo arbitrariamente, il codice 0x0700 (o più precisamente, EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) per tutti questi.

Nel mio caso credo che fosse una partizione Linux ext4, ma il typecode della partizione non significa il tipo di filesystem, quindi '0700' sembra più un tipo catchall per sgdisk. Almeno nei casi che ho visto.

PS. Potrebbe essere necessario eseguire partprobe affinché il kernel venga a conoscenza della modifica del partizionamento senza riavviare il sistema.


Linux
  1. Come partizionare un disco in Linux

  2. Come ridimensionare (estendere) un file system basato su partizioni in Linux

  3. Come abilitare la partizione di swap Linux?

  4. È possibile avviare Linux da un disco GPT su un sistema BIOS?

  5. Ridimensiona la partizione /var su un sistema remoto (Linux Debian Lenny)

Tutto è un file in Linux – Parte 2

Gestione delle partizioni Linux

Come crittografare la partizione su Linux

Crea una partizione in Linux:una guida passo passo

9 Esempi di comandi Linux Parted – mkpart, mkpartfs, ridimensionare le partizioni

Comprensione dell'utilità separata di Linux