Linux - Estendere una partizione utilizzando lo spazio non allocato (CentOS, Ubuntu, VM) Come ridimensionare una partizione del disco, un volume logico e un filesystem di una VM CentOS, RHEL, Ubuntu, Debian Linux utilizzando strumenti nativi e senza dover ricorrere a un reboot

Linux - Come inviare E-Mail con sSMTP (con configurazioni-tipo per GMail, Aruba e Yahoo)

Espandere una partizione disco per utilizzare tutto lo spazio disponibile (non allocato) è una esigenza comune tra gli amministratori Linux, soprattutto quando si lavora in un ambiente cloud basato su macchine virtualizzate. Si tratta di una necessità piuttosto frequente quando si distribuisce una VM Linux da un template messo a disposizione da servizi gestiti come Amazon AWS o MS Azure, in quanto spesso in quei casi le partizioni riservati al filesystem principale della VM sono preimpostate - e inferiori rispetto allo spazio su disco che si vuole allocare a tale scopo; ma è una esigenza che può verificarsi anche dopo il deploy, ad esempio quando il filesystem principale della nostra VM occupa tutto lo spazio disponibile e si manifesta quindi la necessità di espanderlo ulteriormente: per far sì che questo avvenga, oltre ad allocare spazio aggiuntivo dal vCenter alla VM, è necessario fare in modo che questo spazio possa essere effettivamente utilizzato: in altre parole, "allocarlo" sulle unità logiche presenti, ampliando le dimensioni di queste ultime.

In questo articolo spiegheremo brevemente come svolgere questa operazione nella maggior parte dei sistemi operativi Linux - come CentOS, RHEL, Ubuntu, Debian e altri - utilizzando un approccio semplice e sicuro basato su quattro comodi strumenti integrati: parted, partx, pvresize e lvextend. Il vantaggio principale della tecnica che andremo ad illustrare è che non sarà richiesto alcun riavvio della VM: un vantaggio non da poco rispetto ad altri approcci (come quello descritto in questa guida pubblicata nel 2017), in quanto consente di effettuare questa operazione senza perdere continuità operativa.

STEP #1: recuperare i nomi

La prima cosa da fare è recuperare i nomi dei dischi e della partizione che vogliamo ridimensionare. Andremo quindi ad eseguire il comando lsblk, che mostra le informazioni relative a tutti i dispositivi di memorizzazione dati disponibili sul sistema. In questo tutorial prenderemo come esempio il seguente scenario:

Linux - Estendere una partizione utilizzando lo spazio non allocato (CentOS, Ubuntu, VM)

Osservando la screenshot di cui sopra possiamo facilmente recuperare le seguenti informazioni:

  • Il nome del disco principale della VM è sda e ha una dimensione totale di 200GB.
  • All'interno del disco sda vi sono due partizioni: sda1 (boot) e sda2 (nella quale è presente un Logical Volume Manager).
  • La partizione sda2 contiene un singolo volume group (vg) e due partizioni logiche: lv_root (97.4G), che ospita il filesystem principale, e lv_swap (2.1GB), ovvero la partizione di swap.

Come possiamo notare, la VM ha quindi a disposizione ~100GB di spazio attualmente non allocato sul disco sda: nel paragrafo successivo vedremo  come possiamo assegnare questo spazio non allocato al volume logico lv_root, in modo da portarlo da 97.4GB fino a circa 197.4GB.

E' importante tenere presente che i nomi degli elementi sopra riportati possono variare: ad esempio, il volume group potrebbe avere un nome diverso - come centos, ubuntu o qualcosa del genere; allo stesso modo, i volumi logici potrebbero essere più o meno di due, e/o avere nomi diversi, come ad esempio var e swap in luogo di lv_root e lv_swap. E' fondamentale identificare correttamente i nomi del disco, della partizione e del volume logico che si desidera espandere prima di procedere.

STEP #2: effettuare l'operazione di extend/resize

Una volta recuperati con successo i nomi del disco (sda), della partitione (sda2), del volume group (vg) e del logical volume (lv_root) che vogliamo ridimensionare, possiamo procedere con l'operazione.

Apriamo quindi una finestra terminal (con privilegi di root) ed eseguiamo i seguenti comandi, avendo cura di sostituire i nomi relativi alla nostra VM di esempio con quelli recuperati poco fa:

Di seguito una breve spiegazione dei quattro comandi utilizzati:

  • parted - questo comando estende le dimensioni della seconda partizione del disco sda (ovvero sda2) utilizzando il 100% dello spazio non allocato disponibile
  • partx - questo comando aggiorna la tabella delle partizioni presente in memoria
  • pvresize - questo comando ridimensiona il volume fisico della partizione sda2 utilizzando lo spazio allocato in precedenza
  • lvextend - questo comando ridimensiona il volume logico lv_root (e relativo filesystem) utilizzando il nuovo spazio disponibile sul volume fisico

Subito dopo aver eseguito i quattro comandi di cui sopra, possiamo digitare nuovamente il comando lsblk per vedere cosa è cambiato rispetto alla fotografia precedentemente effettuata dei dispositivi presenti sul nostro sistema:

Linux - Estendere una partizione utilizzando lo spazio non allocato (CentOS, Ubuntu, VM)

Come possiamo vedere analizzando la screenshot di cui sopra, l'operazione di resize/extend ha sortito l'effetto sperato: il volume logico lv_root (e relativo filesystem) è stato ridimensionato con successo da 97.4GB a 199.5 GB. Lo spazio aggiuntivo potrà essere utilizzato immediatamente, senza necessità di effettuare il reboot.

Conclusioni

Questo è tutto, almeno per ora: ci auguriamo che questo post possa essere utile ad altri amministratori di sistema alla ricerca di un metodo semplice, sicuro ed efficace per ridimensionare e/o estendere lo spazio su disco delle macchine virtuali Linux CentOS, RHEL, Ubuntu o Debian senza dover effettuare un reboot. Alla prossima!

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


The reCAPTCHA verification period has expired. Please reload the page.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.