Añadir swap a un servidor ubuntu/debian ya montado


 

En ocasiones nos podemos encontrar con que nuestro servidor no tiene configurada una memoria de intercambio, esto se lleva bastante en servidores con disco duro SSD.

Al no existir una memoria de intercambio nos podemos encontrar con que el servidor, al quedarse sin memoria RAM, mate algún proceso como MySQL en servidores web cuando no tiene recursos.

Para configurarla vamos a seguir unos sencillos pasos:

1. Comprobar que realmente no hay swap.

Los siguientes comandos nos pueden decir si hay o no swap configurada en el servidor

# swapon -s

Este comando nos devolverá columnas vacías si no hay swap.

# free -m

Hará lo mismo que el anterior pero mostrará una fila llamada Swap con todos los valores a 0 en el caso de no existir.

2. Crear un archivo swap.

Esto se puede hacer de varias formas, aquí vamos a usar la más rápida.

Creamos un archivo y reservamos, 4Gb, en nuestro caso para él. Lo normal suele ser el doble de la memoria RAM hasta 2Gb pero cada situación es diferente.

# fallocate -l 4G /swap

Le damos al archivo permisos de lectura y escritura al fichero.

# chmod 600 /swap

3. Activar la swap.

Con el siguiente comando le diremos al sistema que configure y active la swap

# mkswap /swap

# swapon /swap

Ya podemos comprobar que la swap está activa con los comandos del punto 1 o con este comando

# swapon -s

Aunque aún no hemos acabado, si reiniciamos en este momento tendremos que reactivar la swap de nuevo.

4. Hacer permanentes los cambios.

Para ello, lo haremos como si de una partición o disco duro se tratara, en el fichero fstab.

Lo abrimos con nuestro editor de texto preferido, aquí vamos a usar nano.

# nano /etc/fstab

Al final del archivo añadiremos la siguiente línea:

/swap   none    swap    sw    0   0

5. Configuramos la swap.

Hay varias opciones interesantes que determinan la manera del sistema para usar la swap. Tenemos el comando swappiness que, mediante un porcentaje, le dirá al sistema con qué frecuencia paginará a la swap, los valores cercanos 0 harán que el sistema sólo use la swap cuando sea absolutamente necesario.

Podemos comprobar el valor actual con el siguiente comando:

# cat /proc/sys/vm/swappiness

Este comando nos devolverá en número actual de swappiness. Para un entorno servidor querremos valores más cercanos a 0, en nuestro caso lo vamos a configurar en 25.

# sysctl vm.swappiness=25

Este cambio persistirá hasta el próximo reinicio, para hacerlo permanente editamos el fichero /etc/sysctl.conf y agregamos lo siguiente al final:

vm.swappiness=25

Otra opción interesante a configurar es la frecuencia con la que nuestro sistema refresca la caché que, en un entorno servidor, querremos que sea lo menos frecuentemente posible. Para ello tenemos la opción vfs_cache_pressure. Lo mismo de antes, valores cercanos al 100 harán que se refresque muy frecuentemente así que en nuestro caso le vamos a dar el valor 50.

# sysctl vm.vfs_cache_pressure=50

Como antes, este cambio persistirá hasta que reiniciemos, para hacerlo permanente volvemos a editar /etc/sysctl.conf y agregamos al final la siguiente línea:

vm.vfs_cache_pressure=50

Con estos cambios ya tendremos configurada nuestra swap persistente en el sistema.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *