15 dic 2014

Redimensionar un disco virtual de un VPS que usa LVM o particion comun Linux (83)

Hoy, por fin, lo hice sin tener errores, y es que me saltaba un paso... y nunca busque el porque, el reboot para que mdadm busque de nuevo los volumenes logicos. Quizas haya otro modo, pero a mi asi me funcionó perfecto.
Convenciones: negrita comando, italica salida de comando


Aclaro que esto es para los admin, dado que el cliente nunca ve esto, es transparente para el y para los usuarios que usen VPS (Boxes Gnome3 o virt-manager) en sus pc a modo de maquinas virtuales, es mejor aprovechar (para mi) que tenemos lectora y estamos ahi, para usar particiones comunes y no volumenes logicos que dependen de un demonio para ser escaneados y tal.

Bueno, empecemos por el caso mas basico, tenemos un VPS con 2 particiones, / y swap, primarias en Ext3 o Ext4, y la / se nos quedo chica con apenas 1Gb libre y es de 5GB totales usando 1GB de swap, que hacemos?.

Primero que nada, apagamos la VM, hacemos backup del .img usando cp -p -v (verbose mode y preservar permisos) a por ejemplo a /tmp o bien mas seguro a /root/.

Entonces:

1.- virsh shutdown devuan
2.- sync
3.- cp -p -v /var/lib/libvirt/images/devuan.img /root/ && sync

Luego de eso, hacemos esto:

qemu-img resize /var/lib/libvirt/images/devuan.img +25G

NOTA: Si quieren antes del resize pueden iniciar y chequear el tamaño total, haciendo esto: vgdisplay VolGroup

Con eso, añadimos 25Gigas al disco, se hace de inmediato asi que no se preocupen por el hecho de que sean 25GB o 40GB.

Luego de eso, iniciamos la maquina:

virsh start Devuan

Luego de iniciada, ingresamos por ssh o consola, segun como lo usemos.
Entonces, con el comando fdisk -l vamos a ver que nos dice que la particion 2 o 3, segun hayan tenido, no termina en el ultimo cilindro disponible. Esto es porque hay espacio de mas que no esta dentro de ningun formato ni volumen.

Suponiendo que el espacio adicional o sea, la particion que teniamos era /dev/vda2 ahora, tenemos un vda3, entonces, hacemos:

cfdisk /dev/vda

NOTA: Pueden usar fdisk o lo que quieran, a mi me gusta cfdisk.

Van a ver un espacio libre del mismo tamaño que añadieron con el qemu-img (25GB), a ese espacio, le ponen nueva, particion primaria y cuando seleccionen el tipo ponen 8e que es LVM.

Graban y salen de cfdisk. Acto seguido, le dan reboot a la VM con el comando reboot.

Una vez reiniciada, ejecutan esto:

pvcreate /dev/vda3 (para que se cree el volumen fisico)

Añadimos el volumen fisico:

vgextend VolGroup /dev/vda3
Volume group "VolGroup" successfully extended

Miramos el Volumen y determinamos el espacio libre para asignar:

vgdisplay VolGroup

 Alloc PE / Size       1154 / 4,51 GiB
 Free  PE / Size       6399 / 25,00 GiB <- Los 25GB que añadimos


Asignaremos el espacio disponible al volumen (el numero en negrita son los bloques libres, en realidad segun la manpage son extents)

lvextend -l +6399 /dev/mapper/VolGroup-lv_root

Size of logical volume VolGroup/lv_root changed from 3,54 GiB (906 extents) to 28,54 GiB (7305 extents).
  Logical volume lv_root successfully resized



Se realiza el resize al volumen para que tome el espacio asignado como disponible:

resize2fs -p /dev/mapper/VolGroup-lv_root

resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 7480320 (4k) blocks.
El sistema de ficheros en /dev/mapper/VolGroup-lv_root tiene ahora 7480320 bloques.


df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       29G  2,0G   25G   8% /
tmpfs                 313M     0  313M   0% /dev/shm
/dev/vda1             477M   15M  437M   4% /boot



lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                RWO7eo-pcmS-bm48-fbU5-tCCo-bWpD-CPo62S
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2012-10-28 02:57:27 -0300
  LV Status              available
  # open                 1
  LV Size                28,54 GiB
  Current LE             7305
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0


Como ven en segments nos dice 2, quiere decir que 2 volumenes logicos integran un volumen logico total de 25GB (es un caso real este asi se ve claro).

Y luego:

vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               29,50 GiB
  PE Size               4,00 MiB
  Total PE              7553
  Alloc PE / Size       7553 / 29,50 GiB
  Free  PE / Size       0 / 0  
  VG UUID               lMFT5o-XX26-vB2L-KFHb-3Huj-d4Pi-qNmsW1


Como ven, ahora en Free PE / Size vemos 0 / 0 a diferencia de antes, es decir, los 7553 bloques asignados son los 29.50GiB que tenemos ahora.

Esto es todo, espero que les sirva, a mi me sirve de anotador jeje.

No hay comentarios: