Luego de instalar 2 discos de 2 TB a un arreglo en RAID5 (que ya tenía 3 discos de 2 TB) y esperar casi una semana a que la controladora reconstruyera el arreglo, logré que el disco virtual que estaba configurado en dicho servidor –un Dell Poweredge R540, controladora PERC H330– aumentara su capacidad a 7,5 TB, lo que permitiría que mis máquinas virtuales pudieran tener más espacio. Pero primero debía “extender” o “reclamar” el nuevo espacio para que XCP-ng usara ese nuevo espacio.
Como habrán adivinado, utilizo el Hypervisor XCP-ng, específicamente la versión 8.0.0 y siguiendo las instrucciones de algunos foros de por aquí y por allá logré mi cometido utilizando los siguientes comandos.
Primero, siempre es recomendable no hacerlo con la máquina en producción. Así nos evitamos un dolor de cabeza, de estomago y el regaño de alguna persona.
Luego que nuestra controladora termine el proceso de reconstruir el arreglo de discos o que el disco virtual muestre la capacidad deseada, accedemos al Hypervisor. Lo podemos hacer mediante ssh o la consola host, es decir, directamente a XCP-ng (a través de la pantalla física). En mi caso lo hice por ssh, así puedo respaldar los comandos en un fiel block de notas. Ahora comienza lo bueno: (P.D.: Asumo que la unidad de disco es la sda, puedes verificar la tuya haciendo un ls -la /dev/sd* )
- Reescanea el disco:
echo 1 > /sys/block/sda/device/rescan
- Verifica si “gdisk” es capaz de detectar el nuevo tamaño del disco:
gdisk -l /dev/sda | grep Disk
Algo como “Disk /dev/sda: 15623782400 sectors, 7.3 TiB” debería retornar. Este debería ser el nuevo tamaño del disco. - Se mueve la estructura de datos del disco al final usando lo siguiente:
gdisk /dev/sda
Debería bastar dando enter a todo (recuerda el numero asignado)
x
e
w - Agrega una nueva partición.
gdisk /dev/sda
Nuevamente, aquí debería bastar con dar enter hasta que termine. Lo que se realiza aquí es utilizar los bloques “libres” (que están al final del disco) y hacerlos una partición. El proceso termina escribiendo w y luego enter (escribe los cambios en el disco).
n - En el paso anterior, gdisk reclama que el sistema no reconocerá la nueva tabla de particiones hasta que se reinicie el sistema. No lo haremos, y con el siguiente comando haremos que se detecte la recién creada partición:
partprobe
- Para evitar el error “global/metadata_read_only” hacemos justamente lo que nos dice, hacemos que ya no sea solo de lectura. Para esto se modifica el archivo /etc/lvm/lvm.conf y se modifica la linea que dice metadata_read_only=1 a metadata_read_only=0. ¡Recordar volver a dejarlo como estaba antes cuando terminemos!
- Crea una nueva partición LVM PV en el punto de montaje indicado en el punto 3 (le llamaremos X).
pvcreate /dev/sdaX
Reemplaza la X por el número del punto 3 - Obtén la UUID de tu Storage
xe sr-list name-label=Local\ storage | grep uuid
- Extiende la partición (LVM VG) al nuevo PV (cambia el UUID por el indicado en el punto anterior y cambia la X por la del punto 3)
vgextend VG_XenStorage-7bbf95d9-b1a2-f8ae-89e3-35f472317086 /dev/sdaX
- Re escanea el Storage (cambia el UUID por el obtenido en el punto 8)
xe sr-scan uuid=7bbf95d9-b1a2-f8ae-89e3-35f472317086
Fin.
Disclaimer: Artículo en proceso de corrección. Te agradezco cualquier comentario o sugerencia que podría incluir acá.