Estendere un disco LVM su CentOS

0 Flares Twitter 0 Facebook 0 LinkedIn 0 Email -- 0 Flares ×

Da sempre uno delle funzioni più comode di vmware è la possibilità di estendere secondo necessità la dimensione degli hard disk, senza dover reinstallare niente.

Se con Windows 2003 abbiamo necessità di tool di terze parti, se con Windows 2008 il tutto può essere fatto nativamente all’interno del pannello di controllo, cosa facciamo con un sistema linux come CentOS?

Ipotizziamo di avere un web server CentOS 5.5, con un singolo disco da 13 Gb. Se abbiamo fatto un’installazione classica di CentOS, ci troveremo davanti un partizionamento di questo tipo:

Come sempre, CentOS crea una piccola partizione da 100M per /boot, e il restante spazio viene gestito tramite LVM. Se ipotizziamo di estendere il singolo disco fino a 20 Gb tramite vmware (ricordo a tutti:fatevi prima un backup o una snapshot!!!), ci potremmo ritrovare in seguito questa schermata:

Il disco è effettivamente diventato da 21,4 Gb (tralasciamo pignolerie sul valore effettivo), ma se fate caso alla partizione /dev/sda2, il cilindro di fine è sempre il 1566 così come è invariato il numero di blocchi utilizzati. Dobbiamo procedere quindi a ridimensionare la partizione.

Per fare ciò utilizzeremo sempre fdisk, avviato col comando fdisk /dev/sda. In sequenza daremo questi comandi:

d, per cancellare una partizione

2, dato che dobbiamo rifare appunto sda2

n, per ricreare una nuova partizione

p, vogliamo ricrearla primaria come l’originale

2, stiamo ricreando sda2

enter, accettiamo il primo cilindro libero come inizio

enter, accettiamo l’ultimo cilindro come fine (e già qua notiamo che non è più 1566 ma 2610)

Perchè possiamo fare bellamente questa operazione da “macellai”? Perchè la partition table non viene riscritta fintanto che col comando w non la salviamo, e viene in ogni caso riletta al boot dal sistema o in seguito a comandi particolari che vedremo.

Manca ancora una cosa: se adesso dessimo il comando p per visualizzare le partizione, sda2 risulta essere di tipo 83, ovvero linux standard. Dobbiamo farla tornare ad essere di tipo lvm:

t, per cambiare il tipo di partizione

2, vogliamo sempre lavorare su sda2

8e, è il codice esadecimale delle partizioni lvm

Diamo infine w per salvare la nuova tabella delle partizioni. Riceveremo questo errore:

Procederemo quindi a riavviare il server, attendendo fiduciosi che riparta (Ovviamente sarà stata nostra precauzione fare un backup preventivo della virtual machine!!!).

Caricata la nuova tabella, verifichiamo le dimensioni del physical volume lvm:

Alcune informazioni che ricaviamo: il disco è visto da 12 gb ancora, e non ci sono slot liberi sul volume fisico per estendere poi il volume group (Free PE = 0). Diamo quindi il comando:

e riproviamo con pvdisplay:

Questa volta il volume fisico è di 20 gb e abbiamo 256 Free PE (Physical Extends). Usiamo quindi il comando

per ottenere il nome corretto del volume logico. In un’installazione classica sarà /dev/VolGroup00/LogVol00. Diamo quindi il comando:

dove 256 è appunto il numero di PE liberi a nostra disposizione. Rieseguendo pvdisplay dovremo trovare nuovamente i Free PE uguali a 0.

Ultimo passaggio, estendiamo il filesystem per occupare interamente il logical volume:

E voila! Una riesecuzione di df -h ci mostrerà lo spazio libero aumentato.

10 thoughts on “Estendere un disco LVM su CentOS

  1. Non e’ meglio aggregare un’altra partizione/spazio livero al VG esistente?

  2. Non e’ meglio aggregare un’altra partizione/spazio libero/nuovo disco al VG esistente?

    • Beh, sicuramente è più semplice da fare.
      Sul meglio non lo so, iniziare ad avere numerosi PV sparsi in giro e poi ricordarseli tutti non sempre diventa facile, anche se nell’operatività giornaliera lvm mi nasconde effettivamente tutto in un unico LV.

  3. Anch’io prima procedevo creando un LVM adesso in ambiente virtualizzato sto ritornando all'”antiche” partizioni linux, perche’ creare un LVM su un disco virtuale mi sembra poco performante.
    E’ solamente una senzazione non ho mai fatto prove in tal senso, in ogni caso dal punto di vista dell’operativita’ l’unica attenzione che bisogna avere e’ nel fare le giuste partizioni. Quando ho bisogno di estenderne una, estendo il disco virtuale, smonto la partizione d’interesse e la estendo tramite parted rimonto la partizione ed il gioco e’ fatto

    • Ciao Edoardo,
      grazie per la spiegazione. Tenete presente che la mia conoscenza su linux è data da anni di uso molto settoriale, mi sono nel tempo imparato quello che mi serviva al momento.
      Ben vengano quindi ulteriori precisazioni o correzioni. Grazie!

  4. Ciao Edoardo,
    anche io ho sempre usato il metodo che Luca ha esposto in questo post. Tuttavia spesso mi trovo a dover “lottare” con partizioni che non sono LVM. Potresti indicarmi più precisamente i passaggi da fare con parted con semplice partizioni ext3? Grazie mille 🙂

  5. Ciao a tutti
    in effetti l’argomento non e’ banale, in ogni caso vedo di rispondere in maniera esaustiva e veloce alla richiesta, ora purtroppo sono un po’ incasinato con un ds3400, comunque per usare il parted per sommi capi funziona cosi:
    se hai un disco solo con piu partizioni lanci il parted, lanci il comando print e vedi il numero della partizione che interessa ed infine lanci il comando resize.
    Esempio concreto:
    disco /dev/sda
    partizioni: /dev/sda1 /dev/sda3 /dev/sda6
    print:
    Number Start End Size Type File system Flags
    1 32.3kB 77.6GB 77.6GB primary ext4
    3 77.6GB 77.7GB 105MB primary ext4 boot
    4 77.7GB 160GB 82.4GB extended
    resize 4 77.7GB 170GB
    in questo caso avrei aumentato la partizione 4 di 10 GB
    naturalmente prima di procedere un bel backup e’ sempre cosa gradita

  6. Ciao Edoardo, quindi ricapitolando:
    1)aumento lo spazio del vdisk da VI client
    2)(a meno che non sia una partizione diversa da /) spengo la VM
    3)avvio la VM con una live, monto il disco e faccio resize con parted
    3.5) (devo creare prima una partizione sul disco aggiunto?)
    4) riavvio e bon…il gioco è fatto?

    Grazie mille per il tuo contributo,
    buona serata.
    Michele

  7. se la partizione non e’ di root (/) non c’e’ bisogno di spegnere la macchina ne di usare una live, basta fermare i servizi che accedono alla partizione, smontarla ed usare parted, spero di essere stato sufficentemente chiaro
    ciao
    p.s se ha piu’ dischi quando lanci parted devi specificare il disco

  8. grazie per l’ottima guida. L’ho seguita alla lettera e sono riuscito ad espandere di 200 GB la dim. dell’hard disk inizialmente settata a 400 GB. L’unica cosa assurda che vedo è che il vsphere client, sotto la scheda virtual machine mi fa vedere i seguenti valori:
    provisioned space: 401 GB (e già qua non va bene visto che sono ora 600)
    used space :2,40 KB ?!?!?!?!?!?!?!?!?
    Anche Veeam backup, quando seleziono la vm da backupare mi dice che lo spazio occupato è di 2 kB. Il backup effettivo ci impiega poi un paio di ore (come solitamente impiega) ma quei valori sballati mi allarmano.
    Qualche suggerimento?
    Grazie
    Max

Comments are closed.