Corso Linux / Distinguere dischi, partizioni, file system e mount

Un disco è un dispositivo di memorizzazione a blocchi, una partizione è una regione definita del dispositivo e un file system organizza file e directory. Il montaggio collega un file system all’albero delle directory: dispositivo, partizione, file system e punto di mount sono livelli distinti.

Questa lezione distingue i livelli dello spazio di archiviazione. La lezione su mount e utilizzo dello spazio (in inglese) spiega come collegare il file system a una directory e verificarne la sorgente effettiva.

L’ambiente di riferimento è una macchina virtuale con un’installazione ordinaria di Ubuntu 26.04 LTS o Rocky Linux 9. Container, Windows Subsystem for Linux (WSL) e altri rilasci possono differire per servizi e pacchetti. Prepara una console di recupero e annota le versioni seguendo la lezione sull’ambiente di prova in macchina virtuale (in inglese).

Leggere l’archiviazione come una serie di livelli

Livello Che cosa controllare Strumenti tipici
Dispositivo a blocchi Capacità, tipo e relazioni con altri dispositivi lsblk
Partizione o volume logico Regione definita o assegnazione logica dello spazio lsblk, strumenti per partizioni o LVM
File system Formato, per esempio ext4 o XFS, e UUID lsblk -f, blkid
Mount Percorso e opzioni di accesso findmnt, df

Una disposizione comune è disco → partizione → file system → punto di mount, ma non è l’unica possibile. LVM (Logical Volume Manager) gestisce lo spazio fisico tramite volumi logici; cifratura e RAID software, cioè una combinazione di più dispositivi gestita dal sistema, possono aggiungere altri livelli. Un file system può occupare anche un dispositivo intero. L’assenza di partizioni non dimostra che un disco sia vuoto.

UUID significa Universally Unique Identifier: è un identificatore del file system distinto dal nome del dispositivo. Copiare un’immagine può copiare anche il suo UUID, quindi l’identificatore non elimina la necessità di verificare quale oggetto si sta usando.

Controllare i nomi dei dispositivi insieme all’uso effettivo

lsblk -o NAME,TYPE,SIZE,FSTYPE,UUID,MOUNTPOINTS
findmnt -T /
df -hT /

Nomi come sda, vda e nvme0n1 dipendono dal tipo di dispositivo e dal modo in cui viene rilevato. Una partizione NVMe compare comunemente come nvme0n1p1. Non identificare il disco del sistema operativo o un disco nuovo soltanto dal nome: confronta capacità, mount e identificatori del volume nel pannello del fornitore cloud. Se una versione meno recente di lsblk non supporta MOUNTPOINTS, usa MOUNTPOINT, che mostra un solo punto di mount.

lsblk mostra le relazioni tra dispositivi e le colonne richieste con -o. findmnt -T / identifica il file system che contiene la directory radice, mentre df -hT / ne mostra uso, capacità e tipo; -h rende leggibili le dimensioni e -T mostra il tipo. In container o ambienti con mount particolari la sorgente può essere, per esempio, un overlay invece di una singola partizione.

Spazio riservato, metadati, unità di misura e livelli di archiviazione possono spiegare differenze tra i valori. Il fatto che un dispositivo non compaia in df non prova che sia inutilizzato: potrebbe essere smontato, usato per swap o appartenere a un altro livello. Questi sono comandi di consultazione; non modificano la tabella delle partizioni o il file system.

Distinguere la tabella delle partizioni dal formato del file system

GUID Partition Table (GPT) e Master Boot Record (MBR) descrivono la disposizione delle partizioni; ext4 e XFS sono formati di file system. Una partizione su un disco GPT può contenere ext4: non sono alternative dello stesso livello. Sostituire la tabella delle partizioni può rendere inaccessibili dati esistenti. In questa lezione non si crea né si modifica la tabella di un disco reale.

ext4 e XFS usano strumenti di amministrazione e riparazione differenti; anche le operazioni di ridimensionamento supportate e le condizioni che richiedono di smontare il file system dipendono dal formato e dalle versioni. Valuta supporto della distribuzione, manutenzione e procedure di ripristino. Non forzare uno strumento destinato a un altro file system sui dati esistenti.

Creare un file system in un’immagine temporanea

Il blocco seguente crea una directory temporanea nella home dell’utente e un file di 128 MiB, cioè 134.217.728 byte. mkfs.ext4 e dumpe2fs sono normalmente forniti da e2fsprogs su Ubuntu e Rocky Linux; verifica che siano presenti insieme a truncate e file. Se mancano, installa i pacchetti appropriati nella VM tramite il gestore della distribuzione. Quell’installazione modifica il sistema.

La formattazione inizializza il contenuto del bersaglio. Non sostituire il percorso con un dispositivo reale /dev/... e non aggiungere sudo a questa prova su un file di tua proprietà. La catena di && interrompe le operazioni successive se un passaggio fallisce; i test verificano che il bersaglio sia un file ordinario e non un dispositivo a blocchi. Usa lo stesso terminale per conservare la variabile lab.

lab=$(mktemp -d "$HOME/linux-storage-lab.XXXXXX") &&
truncate -s 128M "$lab/disk.img" &&
test -f "$lab/disk.img" && test ! -b "$lab/disk.img" &&
mkfs.ext4 -F "$lab/disk.img" &&
file "$lab/disk.img" &&
dumpe2fs -h "$lab/disk.img" &&
printf "lab=%s\n" "$lab"

mkfs.ext4 -F forza la creazione anche su un file ordinario: non è una protezione contro la scelta del bersaglio sbagliato. Il suo uso qui riguarda soltanto il nuovo disk.img. truncate imposta la dimensione logica; il file può essere sparso e occupare inizialmente meno spazio fisico, mentre la creazione del file system scrive metadati al suo interno.

Ci si aspetta che file riconosca un file system della famiglia ext e che dumpe2fs -h mostri i metadati del superblocco, fra cui UUID e numero di blocchi. Il contenuto preciso dipende dalla versione e da /etc/mke2fs.conf. Qui viene mostrato l’intero riepilogo, senza nascondere gli errori con 2>/dev/null o limitare l’output alle prime righe. Se un comando fallisce, leggi l’errore prima di continuare.

Il file system esiste dentro l’immagine ma non è ancora montato, quindi non è accessibile come una normale directory. La dimensione del file immagine e lo spazio utilizzabile al suo interno non coincidono, perché servono anche metadati e possono esserci blocchi riservati.

Verificare il risultato e rimuovere soltanto i dati di prova

L’obiettivo è distinguere i livelli, non memorizzare una formattazione. Questa immagine contiene ext4 direttamente, senza una tabella delle partizioni: confrontala con la struttura dei dispositivi mostrata da lsblk. Finché non viene associato a un dispositivo loop, un normale file immagine non compare in lsblk come un nuovo disco. Conserva il percorso stampato se vuoi proseguire con l’esercizio di montaggio.

Se non serve più, apri il percorso temporaneo nel gestore dei file, controlla che sia proprio la directory creata per la prova e rimuovi soltanto quei file. Se hai proseguito con altri esercizi, verifica prima che l’immagine non sia montata o ancora in uso. Non eliminare una directory scelta soltanto perché il nome sembra simile.

Per modificare dispositivi reali occorrono prima una copia di sicurezza ripristinabile, un’identificazione certa del dispositivo e la verifica di mount, swap, LVM e appartenenza a RAID. Se lo stato non è chiaro, conserva le informazioni e prepara il recupero prima di formattare o riscrivere le partizioni.

Documentazione ufficiale