Esta semana estuve frente al mismo problema en dos ambientes vSphere diferentes: falta de espacio en disco para la partición storage/seat la cual es exclusiva para la base de datos vPostgres de vCenter que almacena datos, tareas, estadísticas y eventos de vCenter.
Si esta partición llega a llenarse se tendrían problemas de inestabilidad al acceder a vCenter; en mi caso el problema fue que los objetos de inventario no se cargaban de manera correcta al ingresar al cliente web, y en otras ocasiones se mostraban los objetos de inventario; pero no se podían realizar acciones sobre ellos.
En circunstancias normales donde la base de datos no presenta problemas de corrupción, lo que debemos hacer es; reclamar espacio purgando las tablas de la base de datos con el proceso llamado “vacuum’.
¿Como reclamar espacio en /storage/db en vCenter 6.x?
Una de las mejores practicas antes modificar una base de datos de una maquina virtual en nuestro ambiente vSphere es realizar un snapshot; para así tener un punto de restauración en caso de que algo suceda y poder recuperar nuestro equipo.
Una vez que tengamos listo el snapshot vamos a proceder a purgar la base de datos vPostgres siguiendo los pasos a continuación:
- Abrir una sesión SSH al vCenter y habilitar el shell:
Command> shell.set --enabled true Command> shell VCSA:~ #
- Verificar el espacio libre en la partición storage/db
VCSA:~ # df -h | grep storage/db
Detener el servicio de vCenter:
VCSA:~ # service-control --stop vmware-vpxd
- Obtener la contraseña para la base de datos de vPostgres
VCSA:~ #cat /etc/vmware-vpx/embedded_db.cfg | grep PASSWORD
- Entrar a la base de datos utilizando uno de los siguientes comandos:
/opt/vmware/vpostgres/9.4/bin/psql -d VCDB postgres sudo /opt/vmware/vpostgres/9.4/bin/vacuumdb -a -e -v -f -U postgres > /tmp/vacuumdb.log
Nota: 9.4 es la versión de vPostgres la cual puede variar según su ambiente.
- Purgar las tablas de la base de datos:
VCDB=# TRUNCATE TABLE vpx_event CASCADE VCDB=# \q
Nota:solo es necesario si se utiliza el primer comando mostrado en el paso 4.
- Verificar el nuevo espacio libre en la partición storage/db
VCSA:~ # df -h | grep storage/db
- Iniciar el servicio vpxd nuevamente
VCSA:~ # service-control –-start vpxd
- Abrir una sesión SSH al vCenter y habilitar el shell:
Si luego de seguir los pasos mencionados la base de datos vPostgres sigue creciendo en circunstancias esperadas. Se deberá incrementar la capacidad del disco virtual de la maquina virtual de vCenter donde se encuentre la partición storage/seat y luego ejecutar el comando vpxd_servicecfg storage lvm autogrow, el cual va a extender automáticamente los volúmenes lógicos a los que se les haya aumentado su volumen físico.