Guida verificata con Ubuntu: 20.04 22.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Questa guida illustra la procedura per spostare in partizione separata la cartella /home, oppure altre directory quali /temp, /var ecc., senza reinstallare il sistema operativo.
Si raccomanda di eseguire una copia di backup di tutti i propri dati prima di procedere con le operazioni descritte di seguito.
Descrizione
In fase di installazione è possibile impostare il sistema affinché siano collocate alcune directory del filesystem (/home, /boot, /tmp, /etc/fstab, /usr, /var, /opt ecc.) in apposite partizioni dedicate (create contestualmente o in precedenza, presenti su uno o più dischi fisici), diverse da quella di sistema (/, root), assegnando i relativi punti di mount. Per maggiori informazioni consultare questo paragrafo.
Tuttavia potrebbe capitare di avere necessità di partizioni separate per specifiche directory di sistema successivamente all'installazione.
Spostare alcune cartelle in partizioni separate dalla / (root) può essere utile in certi casi:
Per installare il sistema (/) in dischi fisici di dimensioni ridotte, utilizzando quindi dischi supplementari per specifiche cartelle.
- Per mantenere sotto controllo efficienza, dimensioni e impostazioni delle partizioni.
Per ripristinare facilmente i file degli utenti e le impostazioni dei programmi, salvati in /home, in caso di reinstallazione;
- Per proteggere i dati dell'utente in caso di perdita di dati (ad esempio in caso di guasti fisici al disco, oppure formattazioni accidentali della root di sistema);
Per allungare il ciclo di vita di SSD, riducendone le scritture (ad esempio, spostando /home, /tmp e /var su disco meccanico separato, dove verranno salvati i download dell'utente, i file temporanei e la cache degli aggiornamenti di apt).
Prerequisiti
Le operazioni di seguito descritte comportano la conoscenza dei seguenti argomenti:
creazione e utilizzo di dispositivi live (USB o DVD e loro avvio);
identificazione delle partizioni;
editor di partizioni GParted;
il file fstab.
Procedura
Le operazioni di seguito descritte comprendono, in sintesi, i seguenti passaggi:
- Verifica dello spazio disponibile
- Modifica e/o predisposizione delle partizioni
- Copia della/e cartella/e
Modifica del file /etc/fstab
- Verifica del funzionamento
- Eliminazione della/e cartella/e precedentemente utilizzate.
Nella procedura descritta di seguito verrà riportato come esempio lo spostamento della cartella /home (caso assai comune). Va da sé che la medesima procedura è compatibile anche con altre cartelle di sistema (/tmp, /var, /opt ecc.) applicando nei passaggi descritti di seguito le opportune modifiche dei nomi delle directory interessate.
La partizione che ospiterà la cartella spostata dovrà essere sempre maggiore alla cartella di origine.
Si raccomanda di dedicare spazio adeguato per tutte le cartelle spostate.
Si raccomanda lo spostamento di /boot solo agli utenti esperti, specialmente per i sistemi multiboot e/o Uefi.
Verifica dello spazio occupato dalla directory da spostare
Digitare nel terminale il comando:
sudo du -kshP /home
L'output sarà simile al seguente:
1,3G /home
Si dovrà pertanto creare successivamente una partizione di dimensioni superiori a 1,3 GB.
Verifica dimensioni delle partizioni
Verificare e annotare la dimensione delle proprie partizioni digitando il seguente comando in un terminale:
df -h
L'output sarà simile al seguente:
File system Dim. Usati Disp. Uso% Montato su /dev/sda1 18G 4,4G 13G 26% / /dev/loop0 90M 90M 0 100% /snap/core/6130 /dev/loop1 91M 91M 0 100% /snap/core/6405
Modifica delle partizioni
Se per creare lo spazio destinato alla nuova partizione è necessario ridurre la partizione di sistema / (root), utilizzare una DVD/USB live per compiere questa operazione.
Se invece la partizione è già disponibile passare al punto successivo.Formattare la partizione di destinazione con lo stesso filesystem utilizzato per / (ext3, ext4, ecc.).
Copia delle partizioni
Per montare la partizione appena creata, digitare il seguente comando nel terminale:
sudo mkdir /media/home && sudo mount /dev/sdxy /media/home
mettendo al posto di sdxy il nome della propria partizione.
Copiare la vecchia /home nella nuova posizione digitando il seguente comando nel terminale:
sudo cp -priv /home/nome_utente /media/home
sostituendo nome_utente con il proprio nome utente. La durata del processo dipenderà dalla quantità di dati da trasferire.
Verificare che la dimensione della /home originale e della sua copia coincidano confrontando i comandi
df -h /home
e
df -h /media/home
Modifica di /etc/fstab/
Ricavare l'UUID della partizione in cui è stata copiata la /home digitando il seguente comando in un terminale:
sudo blkid /dev/sdxy
sostituendo sdxy con il nome della propria partizione.
Il comando restituirà un output simile al seguente:
/dev/sda2: UUID="41800cf0-acb6-4845-b05e-479e9258f25f" TYPE="ext4"
Prendere nota del valore dell'UUID ottenuto, in questo caso:
41800cf0-acb6-4845-b05e-479e9258f25f
Creare una copia di backup di /etc/fstab:
sudo cp /etc/fstab /etc/fstab.backup
Aprire il file /etc/fstab con un editor di testo e con i privilegi di amministrazione.
In una nuova riga inserire:
UUID=uid /home ext4 defaults 0 2
sostituendo uid con l'UUID individuato in precedenza e ext4 qualora sia in uso un filesystem differente.
- Salvare e chiudere il file.
- Riavviare il sistema.
Verifica
Al riavvio, per verificare che la cartella /home sia stata effettivamente spostata, si può utilizzare il comando:
df -h
che restituirà un output simile al seguente:
File system Dim. Usati Disp. Uso% Montato su /dev/sda1 8,6G 4,0G 4,2G 49% / none 245M 256K 245M 1% /dev none 249M 112K 249M 1% /dev/shm none 249M 88K 249M 1% /var/run none 249M 0 249M 0% /var/lock none 249M 0 249M 0% /lib/init/rw /dev/sda2 6,3G 1,4G 4,6G 24% /home
in cui si può notare che la /home si trova adesso in una partizione diversa da / (in questo esempio in /dev/sda2).
Risoluzione di problemi
Qualora la procedura non avesse avuto esito positivo, durante il boot del sistema potrebbe comparire un messaggio di errore simile al seguente:
L'unità disco per /home non è ancora pronta o non è presente
Per risolvere il problema premere il tasto M sulla tastiera. Comparirà quindi una shell di ripristino. A questo punto:
Ripristinare il file /etc/fstab originale digitando il comando
cp -f /etc/fstab.backup /etc/fstab
Riavviare quindi il sistema con il comando
shutdown -r now
Il sistema sarà riavviato e si tornerà alla condizione preesistente. La partizione che è stata creata non verrà però eliminata.
Pertanto sarà possibile, a seconda dei casi, effettuare le opportune verifiche al sistema per individuare la causa dell'errore (es.: valore errato dell'UUID nel file /etc/fstab) e ritentare lo spostamento, oppure ripristinare la situazione iniziale.
Eliminazione delle cartelle precedenti
Se la procedura ha avuto esito positivo, sarà infine possibile eliminare le cartelle precedenti (come da esempio, la vecchia /home, interna alla partizione root di sistema). Per eseguire l'operazione si raccomanda di utilizzare un DVD o USB live, per agevolare il riconoscimento della directory da eliminare.