Mi è capitato di recente, di dover migrare un piccolo server Linux su un server ESXi 4. La memoria ram della versione virtualizzata è stata espansa di 512 MB rendendo necessario una espansione della partizione di swap. Come accade per diverse distribuzioni che utilizzano LVM per gestire il file system (CentOS, Fedora,…) per variare le dimensioni di una partizione (resizing) bisogna tenere in considerazione alcuni fattori critici come ad esempio il rischio di perdere dati importanti presenti sul disco.
L’esempio che segue mostra come ridurre la partizione LVM destinata al sistema operativo al fine di estenderne quella di swap. I comandi elencati però possono essere utilizzati ovunque sia necessario fare il resize di partizioni LVM.
Individuare e gestire le partizioni LVM
Nel caso in cui il sistema operativo sia stato installato come consigliato dalla distribuzione, allora i volumi logici presenti sul disco conterranno l’intera distribuzione ad esclusione della partizione di boot. Questo vuol dire che per accedere al disco per fare le opportune modifiche è necessario accedervi dall’esterno. Per fare questo è sufficiente fare il boot da chiavetta usb o da distribuzione live.
A me piace tanto Fedora, di conseguenza, per questo esempio, prenderò in considerazione il cd live di Fedora, disponibile sul sito:
http://fedoraproject.org/get-fedora
Una volta fatto il boot da cdrom avremo la possibilità di verificare l’esistenza di partizioni LVM sul disco fisso. Basta aprire una finestra terminale ed impartire i seguenti comandi con credenziali di root:
[root@localhost liveuser]# su [root@localhost liveuser]# pvscan PV /dev/sda2 VG VolGroup01 lvm2 [79.88 GB / 0 free] Total: 1 [79.88 GB] / in use: 1 [79.88 GB] / in no VG: 0 [0 ] [root@localhost liveuser]# vgscan Reading all physical volumes. This may take a while... Found volume group "VolGroup01" using metadata type lvm2 [root@localhost liveuser]# lvscan ACTIVE '/dev/VolGroup01/LogVol00' [78.88 GB] inherit ACTIVE '/dev/VolGroup01/LogVol01' [1.00 GB] inherit
Si tratta di un disco da 80 GB (sda) con due partizioni fisiche: sda1 per il boot ed sda2 per LVM.
Dai comandi impartiti si evince che il dispositivo /dev/sda2 contiene un gruppo logico (VolGroup01) con due partizioni (LogVol00 per il sistema operativo e LogVol01 per lo swap).
Prima di procedere con il resize delle partizioni logiche bisogna essere certi che non vi siano dati nella parte finale del primo volume (LogVol00) altrimenti questi saranno irrimediabilmente persi. Questa considerazione va fatta dal momento che per aggiungere un numero variabile di byte alla partizione di swap, bisogna prima sottrarli a quella del sistema operativo. Ovvio che se la partizione del SO è piena, il resize non sarà possibile.
Il resize delle partizioni logiche
Poichè LogVol00 è di tipo ext3, possiamo deframmentare l’unità in modo da lasciare libero lo spazio in coda (shrinking):
[root@localhost liveuser]# e2fsck -f /dev/VolGroup01/LogVol00 e2fsck 1.41.9 (22-Aug-2009) Adding dirhash hint to filesystem. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/VolGroup01/LogVol00: ***** FILE SYSTEM WAS MODIFIED ***** /dev/VolGroup01/LogVol00: 107628/20676608 files (1.3% non-contiguous), 1409699/20676608 blocks
Fatto questo procediamo con il resize della partizione ext3
[root@localhost liveuser]# resize2fs /dev/VolGroup01/LogVol00 77880M resize2fs 1.41.9 (22-Aug-2009) Resizing the filesystem on /dev/VolGroup01/LogVol00 to 19937280 (4k) blocks. The filesystem on /dev/VolGroup01/LogVol00 is now 19937280 blocks long.
Con il comando precedente abbiamo tolto alla partizione 1 G definendo le nuove dimensioni (77880M)
Adesso finalmente possiamo contrarre la partizione logica del primo volume ed estendere la seconda:
[root@localhost liveuser]# lvresize /dev/VolGroup01/LogVol00 --size -1G WARNING: Reducing active logical volume to 77.88 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce LogVol00? [y/n]: y Reducing logical volume LogVol00 to 77.88 GB Logical volume LogVol00 successfully resized [root@localhost liveuser]# lvresize /dev/VolGroup01/LogVol01 --size +1G Extending logical volume LogVol01 to 2.00 GB Logical volume LogVol01 successfully resized
In questo caso abbiamo utilizzato valori relativi (-/+1 G)
Per finire, possiamo procedere con la formattazione della nuova partizione di swap
[root@localhost ~]# mkswap /dev/VolGroup01/LogVol01 Setting up swapspace version 1, size = 2147479 kB
Dopo un reboot tutto è pronto.
Alla prossima.
1 Comments.