ARTICULO: Creación de chunks en raw para sistemas Linux

Cuando nos estamos quedando sin espacio en los dbspaces, es necesario añadir chunks. Si los queremos añadir en raw, tendremos que seguir un procedimiento diferente al que seguiríamos si fuera tipo fichero.

Todo este procedimiento es válido para sistemas Linux, ya que el procedimiento para sistemas windows es muy diferente

Primeramente averiguaremos cual es el dbspace que se está quedando sin espacio mediante una sencilla select, que nos dice cuántos chunks tenemos con un porcentaje de ocupación superior al 90%:

# select name as d.dbspace,d.dbsnum,sum(nfree)/sum(chksize)*100 from sysdbspaces as d,syschunks as c where d.dbsnum=c.dbsnum group by name,d.dbsnum having sum(nfree)/sum(chksize)*100<10

Mediante esta select, lanzada contra sysmaster, vemos en la primera entrada el dbspace con menos espacio disponible y su número. A continuación queremos localizar los chunks de este dbspace, para lo cual debemos anotar el número de dbspace, por ejemplo el 3, y realizar una consulta que nos diga qué chunks tiene y dónde están localizados:

# select chknum,fname from syschunks where dbsnum=3

Vamos a suponer que la ruta que obtenemos para el chunk de ese dbspace es /INFORMIXPATH/chunk_7.

A continuación nos logaremos como root y buscaremos el volumen lógico donde están almacenados los chunks, en nuestro caso INFORMIX:

# pvscan
PV /dev/sdc1 VG INFORMIX lvm2 [1023.99 GB / 151.99 GB free]

Posteriormente buscaremos nuestro volumen lógico chunk_7, en concreto miraremos todos los que aparezcan como chunk_X

# lvdisplay |grep chunk
LV Name /dev/INFORMIX/chunk_7

Por lo que crearemos otro, chunk_8 con las mismas caracteristicas que los anteriores,de 4GB y en el volúmen lógico INFORMIX, comprobando después que ha sido añadido:

# lvcreate -n chunk_8 -L 4G IFMX_PRI
Logical volume «chunk_8» created

# lvdisplay |grep chunk
LV Name /dev/INFORMIX/chunk_7
LV Name /dev/INFORMIX/chunk_8

Una vez creado, comprobamos en los dispositivos como lo ve el sistema operativo siguiendo los links creados si procediera:

# ls -l /dev/INFORMIX/chunk_*
lrwxrwxrwx 1 root root 30 Feb 6 15:46 /dev/INFORMIX/chunk_7 -> /dev/mapper/INFORMIX_chunk_7
lrwxrwxrwx 1 root root 30 Jul 2 11:04 /dev/INFORMIX/chunk_8 -> /dev/mapper/INFORMIX_chunk_8

# ls -l /dev/mapper/INFORMIX_chunk_*
brw-rw—- 1 informix informix 253, 239 Jul 2 11:04 /dev/mapper/INFORMIX_chunk_7
brw-r—– 1 root disk 253, 248 Jul 2 11:04 /dev/mapper/INFORMIX_chunk_8

Observamos que el dispositivo se ha creado, pero que por defecto no tiene ni los permisos necesarios(660), ni pertenece a usuario y grupo de informix, por lo que le cambiamos los permisos y comprobamos que todo ha ido correctamente:

# chown informix:informix /dev/mapper/INFORMIX_chunk_8

# chmod 660 /dev/mapper/INFORMIX_chunk_8

# ls -l /dev/mapper/INFORMIX_chunk_*
brw-rw—- 1 informix informix 253, 248 Jul 2 11:04 /dev/mapper/INFORMIX_chunk_8

Una vez creado el volumen lógico, volvemos al directorio donde están alojados los chunks para mantener coherencia distributiva en los dbspaces. Nos fijamos en como están puestos los chunks pertenecientes a nuestro dbspace:

# ls -l /INFORMIXPATH/chunk_*
lrwxrwxrwx 1 root root 30 Feb 6 15:48 /INFORMIXPATH/chunk_7 -> /dev/INFORMIX/chunk_7

Luego tenemos que añadir el link a nuestro nuevo volumen y comprobar que todo se ha realizado de forma correcta:

# ln -s /dev/INFORMIX/chunk_8 /INFORMIXPATH/chunk_8

# ls -l /INFORMIXPATH/chunk_*
lrwxrwxrwx 1 root root 30 Feb 6 15:48 /INFORMIXPATH/chunk_7 -> /dev/INFORMIX/chunk_7
lrwxrwxrwx 1 root root 23 Jul 2 11:18 /INFORMIXPATH/chunk_8 -> /dev/INFORMIX/chunk_8

Ahora solo queda crear el chunk, por lo que volvemos al usuario informix, y comprobaremos de nuevo el estado de los dbspaces:

# onstat -d |grep chunk
9b7b189e8 226 12 0 1000000 0 PO-B /INFORMIXPATH/chunk_7

Es importante saber, que llegado a este punto, si se tiene un entorno de alta disponibilidad HDR, habrá que realizar todos y cada uno de los pasos realizados anteriormente en el primario en todos los secundarios. De no ser así no dejaría añadir el nuevo chunk.

Añadiremos el nuevo chunk creado al dbspace que estaba falto de espacio y comprobaremos que todo ha ido correctamente:

# onspaces -a dbspace -p /INFORMIXPATH/chunk_8 -o 0 -s 4000000
Verifying physical disk space, please wait …
Chunk successfully added.

# onstat -d |grep chunk
9b7b189e8 226 12 0 1000000 0 PO-B /INFORMIXPATH/chunk_7
9f59a0b90 234 12 0 2000000 1999997 PO-B /INFORMIXPATH/chunk_8

En caso de cualquier duda sobre Informix u Optim no dude en consultarnos.

Proyectos y Soluciones
Proyectos y Soluciones
Artículos: 163