Linux LVM: ridimensionare un volume

resize lvm volumeLinux Logical Volume Manager, abbreviato in LVM, è un software avanzato per la gestione dei dischi. Se hai la fortuna (perché di fortuna si tratta) di averlo installato sui server su cui lavori, prima o poi ti capiterà la necessità di dover ridimensionare un volume.

Esclusa forse l’installazione e configurazione iniziale, dover ridimensionare un volume (ingrandirlo o rimpicciolirlo) è forse una delle attività più frequenti che capita, lavorando con LVM. Per quale motivo dovrebbe essere necessario ridimensionare un volume? I motivi potrebbero essere due, a seconda che sia necessario ingrandirlo o rimpicciolirlo.

Per quale motivo dovremmo voler ingrandire un volume? Ovviamente perché è troppo piccolo. Lo spazio che avevamo assegnato inizialmente non è sufficiente perché i dati sono cresciuti più del previsto, oppure perché le stime iniziali non erano corrette.

E per quale motivo dovremmo voler rimpicciolire un volume? Partendo dal presupposto che lo spazio non è mai troppo, l’unico motivo che mi viene in mente per voler rimpicciolire un volume è quello di assegnare lo spazio liberato ad un altro volume, che nel frattempo è diventato troppo piccolo.

Per cui, in quest’ultimo caso dovremo fare due operazioni, quella di rimpicciolire il volume, per creare dello spazio libero, e quella di ingrandire l’altro volume con lo spazio creato con la precedente operazione. E questa situazione probabilmente si è venuta a creare perché non hai seguito il mio consiglio di non assegnare tutto lo spazio disponibile durante l’installazione del sistema.

In ogni caso sia l’operazione di ingrandire un volume, sia l’operazione di rimpicciolire un volume sono estremamente semplici e, tutto sommato, veloci. Ecco perché all’inizio del post ti dicevo che era una fortuna lavorare con Linux LVM.

L’ho detto e lo ripeto, avere il Logical Volume Manager sul proprio sistema è una fortuna, quando si devono fare simili operazioni. Se non avessi LVM, cosa dovresti fare? Dovresti ridimensionare le partizioni del disco, perché in quel caso lo spazio deve essere contiguo. Con LVM non è necessario che lo spazio sia fisicamente contiguo sul disco, per cui abbiamo eliminato una attività lunga e potenzialmente pericolosa come ridimensionamento di una partizione.

Visto che un problema (il ridimensionamento della partizione) lo abbiamo eliminato sul nascere, vediamo in pratica come si ridimensiona un volume con Linux LVM. Incominciamo a vedere come si rimpiccolisce un volume.

Linux LVM: rimpicciolire un volume

Rimpicciolire un volume su Linux LVM comporta due operazioni: rimpicciolire il volume e rimpicciolire il filesystem. In questo caso (rimpicciolire il volume), l’operazione è leggermente lunga e deve essere fermato il sistema. O almeno deve essere smontato il filesystem su cui dobbiamo lavorare.

L’operazione è lunga non tanto perché si va a restringere il volume, ma perché il rimpicciolimento del filesystem quasi sicuramente comporterà uno spostamento di dati che devono essere tolti dalla zona da liberare.

Quindi ti dico subito una cosa importante, puoi rimpicciolire un volume (e il relativo filesystem), ma le dimensioni finali devono essere superiori allo spazio utilizzato. Quindi se vuoi rimpicciolire un volume da 20 Gb, dove ne sono occupati 12, potrai fare in modo che alla fine il volume sia grande 15 Gb, ma non potrai farlo diventare da 10 Gb perché avresti una perdita di dati.

Sembra una considerazione banale, ma non sempre ci si pensa, e spesso la perdita di dati avviene perché, per errore, la dimensione del volume finale è minore dello spazio necessario per contenere i dati presenti. Altro accorgimento importantissimo, il filesystem deve essere smontato perché non può essere rimpicciolito se nel frattempo sta continuando a scriverci sopra. Sarebbe un’altra ricetta per il disastro.

Prima di vedere quali sono i comandi da dare per la riduzione di un volume, ti dico due parole sull’ordine in cui vanno rimpiccioliti gli oggetti, in parole povere bisogna rimpicciolire prima il volume o prima il filesystem?

Bisogna rimpicciolire prima il filesystem e poi il volume. Quando si tratterà di ingrandirli, dovremo fare il contrario. Questo perché devi immaginare il filesystem e i volume, come dei contenitori, uno dentro l’altro. Il volume è il contenitore più esterno, al cui interno viene creato il filesystem, il contenitore interno.

Quindi, quando si tratta di ridurre le dimensioni, devi prima ridurre quello più interno, ovvero il filesystem, poi passerai a ridurre le dimensioni del volume. Questo perché se riduci prima il volume, potresti cancellare delle parti di filesystem dove sono contenuti dei dati.

La sequenza classica per rimpicciolire un volume dovrebbe essere quindi:

  • smontare il filesystem
  • fsck del filesystem
  • rimpicciolire il filesystem
  • rimpicciolire il volume
  • rimontare il filesystem

Questo è quello che va fatto in teoria. Nella pratica ti sconsiglio di procedere in questo modo, soprattutto perché il ridimensionamento di un volume viene arrotondato per via delle dimensioni delle physical extension e quindi il filesystem potrebbe essere troppo grande o troppo piccolo, con esiti disastrosi.

Il modo più semplice e sicuro per ridimensionare un volume è utilizzare l’opzione ‘-r‘ del comando lvresize che ridimensiona in automatico il filesystem contenuto. Quindi, una volta smontato il filesystem (è necessario, NON te lo dimenticare), il comando da dare sarà:

Ti mostro ora come si fa per ingrandire un volume.

Linux LVM: ingrandire un volume

L’operazione di ingrandimento di un volume è molto semplice. Molto più semplice di quella precedente. Questo perché, per ingrandire il volume e il relativo filesystem non è necessario fermare il sistema. Un filesystem ext2/3/4 può essere ingrandito anche mentre lavora e l’intera operazione necessita solamente poche frazioni di secondo.

La sequenza “classica” per ingrandire un volume è la seguente:

  • ingrandire il volume
  • ingrandire il filesystem contenuto

Per ingrandire il volume, il comando da dare è lvresize, specificando le dimensioni del volume. Possiamo specificare le dimensioni finali del volume, oppure dire al sistema di quanto vogliamo ingrandirlo. Nel primo caso diremo con l’opzione ‘-L‘ quale saranno in megabyte/gigabyte le dimensioni finali:

Nel secondo caso usando sempre l’opzione ‘-L‘ diremo di quanto vogliamo ingrandirlo aggiungendo il carattere ‘+‘ alla quantità di spazio che vogliamo aggiungere:

Dopo aver ingrandito il volume, passiamo ad ingrandire il filesystem. In questo caso non è necessario specificare le dimensioni, sarà occupato tutto lo spazio del volume. Quindi sarà sufficiente dare il comando:

Come avrai notato, non è stato nemmeno necessario smontare il filesystem…

Anche in questo caso, come nell’esempio della riduzione del volume, è possibile utilizzare l’opzione ‘-r‘ del comando lvresize per includere nell’operazione di ingrandimento anche il resize del filesystem. Quindi, ad esempio, il comando da dare sarà:

Ridimensionamento su Linux LVM: conclusioni

Ti ho mostrato entrambe le operazioni da fare per il ridimensionamento di un volume su Linux Logical Volume Manager. Come ultima raccomandazione per evitare perdite di dati ti ricordo di fare MOLTA attenzione alle dimensioni del volume finale quando lo vai a rimpicciolire.

Allo stesso modo, presta molta attenzione quando lo vai a ingrandire, se lo vuoi ingrandire di 10, 15 Gb, che sia presente il “+“, altrimenti sarà quella la dimensione finale del volume, non la dimensione iniziale +10, o +15 Gb. Piccole accortezze a parte, ti rendi conto perché sei fortunato a lavorare con Linux LVM quando devi ridimensionare un volume?

i 5 errori da evitare con Linux LVM

 

Filed in: Linux LVM | Tags:

Leave a Reply

Trackback URL | RSS Feed for This Entry