¿Cómo incrementar la swap sin reformatear el disco?

Aunque no soy partidario de incrementar la swap, en realidad a veces sí nos hace falta.

En este artículo explicaremos cómo agregar mas swap al sistema sin tener siquiera que reiniciarlo. Para crear espacio swap no hay una ley definida, hay quien tiene por regla de oro el poner de swap 2 veces el tamanno de la RAM. Hay quien pone una sola vez el tamanno de RAM.

Yo, si mi maquina tiene menos de 512MB de RAM, pongo 2XRAM, si tiene mas de 512MB de RAM, pongo el mismo tamaño.

Pero ocurre a veces que ponemos digamos, 256M de swap porque teníamos 128 de RAM, qué pasa si un día incrementamos la RAM de la maquina a 512M por ejemplo, cómo hacemos para poner algo apropiado como digamos 1GB de SWAP?

Lo común es acomodar las particiones reinstalando el linux, o usando alguna utilería para acomodarlas, otra variante es poner un disco extra y ahi crear la nueva swap.

Bueno, yo no tenía ninguna de esas opciones, tenía que incrementar mi swap puesto que le habia agregado esa memoria a mi servidor (512MB) y solamente había 128MB de SWAP. Mis servidores estan en Norteamérica, no he tenido la suerte de ni siquiera ver como son mis servidores.. por lo tanto, tenia que encontrar alguna forma de incrementar la swap sin ninguna de las variantes anteriores y sin acceso físico al servidor.

Esto es muy simple, linux, desde los kernel 2.2 permite usar ficheros como espacio de swap. La idea entonces es crear un fichero de unos 256mb para agregárselo a mi espacio de swap actual.


En los kernels 2.2 el usar un fichero como espacio swap era un poco inconveniente, pues tenía que accederse a uno o varios inodos para poder usar el espacio swap, ya que a la final era un fichero. Sin embargo en las versiones de kernel >2.4 ya esto no es mayor problema y el performance de un fichero swap comparado con el performance de una particion swap es idéntico prácticamente. Repito, el performance es muy similar y no afecta al sistema.

Bueno, ¿cómo hacer? Veamos:

Primero reviso que swap existe en mi sistema:
free -m

Creo con dd un archivo llamado swap dentro de /home con un tamaño de 256M (262144K)
dd if=/dev/zero of=/home/swap bs=1024 count=262144

A este archivo lo convierto en swap:
mkswap /home/swap

Le quito algunos derechos innecesarios:
chmod go-rwx /home/swap

Activo la swap:
swapon /home/swap

Y ahora compruebo como ha cambiado la swap de mi sistema:
free -m

Si reinicio el sistema, se perderá esta memoria swap, por lo que, si vemos que la solución ha sido efectiva, debemos proceder a activar la swap desde el fstab por ejemplo:

editamos /etc/fstab y agregamos la siguiente linea:

/home/swap swap swap defaults 0 0

Esto levantará la swap con este fichero además de la swap original que tenía el sistema.

Supuestamente linux puede tener 8 particiones swap, cada una con hasta 2GB de tamaño. En éste caso sencillamente hemos agregado una 2 swap.

Para finalizar: no es una solución el agregar swap bajo ciertas condiciones. Lo mejor es agregar memoria y revisar qué pasa que esta consumiendo memoria.

Agregar swap no es una solucion común a problemas de memoria. Recomiendo esta opción cuando hemos cometido un error y hemos puesto poca swap al sistema o cuando hemos agregado mucho mas memoria que la original y ahora la swap nos queda pequeña.

La próxima vez hablaremos sobre como mejorar un poco la seguridad en nuestros sistemas sin tener que invertir mucho mas que un poco de seso.

eperez – Tue, 2006 – 01 – 31 17:09