Comando parted in Linux: leggere partizioni e spazio non assegnato

parted è lo strumento GNU per consultare e modificare la tabella delle partizioni di un disco. Per vedere la struttura usa print; con print free puoi vedere anche lo spazio non assegnato a partizioni, che è diverso dallo spazio libero dentro un file system.

Separa sempre consultazione e modifica: i comandi di modifica possono scrivere subito sul dispositivo. Non esiste una fase finale di salvataggio equivalente a w in fdisk. Inoltre, resizepart cambia il confine finale della partizione e non ridimensiona il file system contenuto.

Sintassi e scelta del dispositivo

parted [opzioni] [disco] [comando]

Le parentesi indicano parti della sintassi e non si digitano. Specifica esplicitamente il disco quando lavori su un dispositivo; senza un comando, parted può aprire una sessione interattiva. Controlla parted --version, parted --help e man parted per la versione installata e le sue opzioni.

Un disco e una sua partizione hanno ruoli diversi: /dev/sdb indica qui il disco, /dev/sdb1 una partizione. I nomi possono essere diversi su altri sistemi. Non scegliere un disco soltanto perché il suo nome coincide con quello dell'esempio.

Consultare partizioni e spazio non assegnato

Elencare le tabelle dei dischi

sudo parted -l

Elenca le tabelle dei dispositivi individuati e accessibili al programma. sudo fornisce i privilegi necessari per leggere dispositivi protetti, ma non verifica che tu abbia scelto l'host o il disco corretto.

Leggere gli spazi tra le partizioni di un disco

sudo parted /dev/sdb unit MiB print free

unit MiB imposta l'unità della sessione; un mebibyte (MiB) corrisponde a 1.048.576 byte. print free mostra partizioni e intervalli non assegnati. Un intervallo libero nella tabella non descrive quanti file puoi ancora salvare in una partizione esistente: per l'occupazione del file system usa df.

Questi sono comandi di consultazione, ma non sono una protezione che imponga l'apertura del dispositivo in sola lettura. Se compaiono avvisi e proposte di correzione della tabella, non accettare Fix senza averne verificato il motivo e preparato il recupero. Non aggiungere opzioni di correzione automatica a una semplice verifica.

Confrontare modello, capacità e montaggi

lsblk -o NAME,SIZE,MODEL,TYPE,MOUNTPOINTS

Usa lsblk per confrontare il disco con le sue partizioni e controllare i punti di montaggio. Verifica anche l'inventario della macchina: modello e capacità possono essere uguali su più unità. Un campo di montaggio vuoto non dimostra che non vi siano dati. Per il significato del montaggio consulta la guida a mount.

Distinguere confini della partizione e file system

sudo parted /dev/sdb print

Il comando mostra il tipo di tabella e le posizioni delle partizioni. Questo estratto indica soltanto la struttura dell'output; non è il risultato di una verifica del tuo disco e omette righe e colonne:

Model: ...
Disk /dev/sdb: 20.0GB
Partition Table: gpt
Number  Start   End     Size    File system  Name

gpt identifica la GUID Partition Table. Start ed End sono posizioni rispetto all'inizio del disco, mentre Size è la dimensione della partizione. Le posizioni non sono lo spazio usato dai file. La colonna File system, quando valorizzata, indica un formato riconosciuto e non certifica l'integrità dei dati.

Le unità contano: MB e GB sono decimali, MiB e GiB binarie. GNU Parted tratta le posizioni espresse in settori e nelle unità binarie come precise, mentre per alcune unità decimali può cercare una posizione vicina. Non ricavare confini da copiare su un disco reale da numeri arrotondati nell'output.

Cambiare la tabella non formatta una partizione né espande automaticamente il file system. Per una crescita normalmente si allarga prima la partizione e poi il file system; per una riduzione occorre prima ridurre il file system con uno strumento che la supporti, poi il confine della partizione. Questa indicazione generale non sostituisce la procedura specifica per il file system e gli altri livelli presenti.

Opzioni e comandi principali

Opzione o comando Significato
-l Elenca le tabelle delle partizioni dei dispositivi individuati.
-s Esegue in modalità script, senza chiedere l'intervento dell'utente; non è una simulazione.
unit unità Imposta l'unità predefinita per visualizzare e interpretare valori privi di suffisso.
print free Mostra partizioni e spazio non assegnato.
resizepart numero fine Cambia il confine finale della partizione, senza ridimensionare il file system.

-s, forma breve di --script, non rende sicuro un comando errato e non equivale a rispondere sempre sì. Una condizione che richiede una decisione può far fallire l'operazione: controlla stato d'uscita, messaggi e tabella risultante. Non usare il mancato completamento come prova che non sia stata eseguita alcuna scrittura precedente.

Precauzioni prima di una modifica reale

mklabel sostituisce la tabella esistente; rm rimuove una voce di partizione. Una voce rimossa può rendere inaccessibili i dati anche se non li sovrascrive tutti immediatamente. Prima di modificare prepara backup ripristinabili della tabella e dei dati e una procedura di recupero.

Controlla l'utilizzo del disco, i montaggi e gli eventuali livelli di cifratura o LVM (Logical Volume Manager, gestore dei volumi logici). Pianifica l'ordine di crescita o riduzione per ciascun livello e l'eventuale manutenzione offline. Una riduzione oltre la fine dei dati può danneggiare il file system. Non applicare l'esempio seguente a un disco in produzione.

Domande frequenti

Devo salvare prima di uscire con quit?

I comandi di modifica di parted possono aver già scritto sul disco. quit chiude la sessione e non annulla tali operazioni. La logica di fdisk, dove si scrive la tabella con w, non va trasferita a parted; per il confronto vedi la guida a fdisk.

Provare resizepart su un nuovo file immagine

Per questa prova serve Linux con GNU Parted e i comandi mktemp e truncate disponibili. Il blocco crea una nuova directory temporanea e modifica solo il suo file da 64 MiB: non usa dispositivi /dev, non monta nulla e non crea un file system. Non sostituire il percorso dell'immagine con quello di un dispositivo.

(
set -eu
labdir=$(mktemp -d)
image="$labdir/disk.img"
truncate -s 64M "$image"
parted --script "$image" mklabel gpt
parted --script "$image" mkpart lab ext4 1MiB 33MiB
parted "$image" unit MiB print free
parted --script "$image" resizepart 1 49MiB
parted "$image" unit MiB print free
printf 'Lab image: %s\n' "$image"
)

Le parentesi eseguono il blocco in una subshell; set -e interrompe il blocco se uno di questi comandi fallisce e set -u segnala variabili non definite. Non procedere manualmente con i comandi successivi dopo un errore. mktemp -d evita di riutilizzare un'immagine esistente e le virgolette proteggono il percorso. Il suffisso M di GNU truncate indica qui multipli di 1.048.576 byte.

Nel primo print free cerca la partizione 1, con nome lab, inizio vicino a 1 MiB e fine vicino a 33 MiB. Nel secondo l'inizio deve restare uguale e la fine risultare vicina a 49 MiB, con meno spazio non assegnato dopo la partizione. Differenze di arrotondamento sono normali. ext4 in mkpart è un'indicazione per il tipo di partizione: non esegue mkfs.ext4 e non garantisce che la colonna del file system mostri ext4.

La prova riguarda soltanto i confini della partizione, non il ridimensionamento di un file system. Conserva il percorso stampato alla fine. Per ripartire dalla situazione iniziale esegui il blocco in una nuova directory temporanea; per pulire rimuovi soltanto disk.img nella directory creata da questa prova e poi la directory, dopo averne verificato il percorso. Non usare percorsi generici o dispositivi reali. Se il blocco termina prima della stampa finale, individua la directory temporanea prima di eliminare qualunque file.

Documentazione di riferimento

Il manuale ufficiale di GNU Parted descrive modalità interattiva, unità, print e resizepart. Il pacchetto ufficiale GNU Parted 3.6 include lo stesso tipo di documentazione nel file doc/parted.texi; confronta sempre le funzionalità con la versione installata.