Cómo agregar swap en Debian 10

Introducción

Una de las formas más fáciles de protegerte contra los errores de falta de memoria en las aplicaciones es agregar algo de espacio de intercambio (swap) a tu servidor. En esta guía, cubriremos cómo agregar un archivo swap a un servidor Debian 10.

Advertencia: Aunque swap generalmente se recomienda para sistemas que usan discos duros tradicionales, el uso de swap con SSD puede causar problemas con la degradación del hardware con el tiempo.

Debido a esta consideración, no recomendamos habilitar el intercambio en este tipo de unidades de almacenamiento SSD. Hacerlo puede afectar la confiabilidad del hardware subyacente para ti y tus vecinos.

¿Qué es Swap?

Swap es un área en un disco duro que se ha designado como un lugar donde el sistema operativo puede almacenar temporalmente datos que ya no puede almacenar en la RAM.

Básicamente, esto te brinda la capacidad de aumentar la cantidad de información que tu servidor puede mantener en su “memoria” de trabajo, con algunas advertencias.

El espacio de intercambio o swap en el disco duro se utilizará principalmente cuando ya no haya suficiente espacio en la RAM para almacenar los datos de la aplicación en uso.

La información escrita en el disco será significativamente más lenta que la información almacenada en la RAM, pero el sistema operativo preferirá seguir ejecutando los datos de la aplicación en la memoria y usar swap para los datos más antiguos.

En general, tener swap como respaldo para cuando se agota la RAM de tu sistema puede ser una buena red de seguridad contra las excepciones de falta de memoria, en sistemas con almacenamiento no SSD disponible.

Paso 1:  Verificación del sistema para obtener información de swap

Antes de comenzar, podemos verificar si el sistema ya tiene swap disponible. Es posible tener múltiples archivos de swap o particiones de swap, pero generalmente una debería ser suficiente.

Podemos ver si el sistema tiene un swap configurado escribiendo:

Si no obtienes ningún resultado, esto significa que tu sistema no tiene partición swap disponible actualmente.

Puedes verificar que no haya swap activo utilizando la utilidad free:

Como puedes ver en la fila de Swap de la salida, no hay ningún swap activo en el sistema.

Paso 2: comprobación del espacio disponible en la partición del disco duro

Antes de crear nuestro archivo de swap, verificaremos nuestro uso actual del disco para asegurarnos de que tenemos suficiente espacio. Has esto ingresando:

El dispositivo con / en la columna Mounted on es nuestro disco en este caso. Tenemos mucho espacio disponible en este ejemplo (solo se usa 1.4G). tu uso probablemente será diferente.

Aunque hay muchas opiniones sobre el tamaño apropiado de un espacio swap, realmente depende de tus preferencias personales y los requisitos de tu aplicación.

Generalmente, una cantidad igual o el doble a la cantidad de RAM en tu sistema es un buen punto de partida. Otra buena regla general es que cualquier cosa por encima de 4G de swap es probablemente innecesario si solo lo estás utilizando como reserva RAM.

Paso 3: Crear un archivo de swap

Ahora que conocemos nuestro espacio disponible en el disco duro, podemos crear un archivo de swap en nuestro sistema de archivos. Asignaremos un archivo del tamaño de swap que queremos llamar swapfile en nuestro directorio raíz (/).

La mejor manera de crear un archivo de swap es con el programa fallocate. Este comando crea instantáneamente un archivo del tamaño especificado.

Dado que el servidor en nuestro ejemplo tiene 1G de RAM, crearemos un archivo 1G en esta guía. Debes ajustar esto para satisfacer las necesidades de tu propio servidor:

Podemos verificar que se haya reservado la cantidad correcta de espacio escribiendo:

Nuestro archivo ha sido creado con la cantidad correcta de espacio reservado.

Paso 4: habilitar el archivo de swap

Ahora que tenemos un archivo del tamaño correcto disponible, necesitamos convertirlo en espacio de swap

Primero, necesitamos bloquear los permisos del archivo para que solo los usuarios con privilegios de root puedan leer el contenido. Esto evita que los usuarios normales puedan acceder al archivo, lo que tendría implicaciones de seguridad significativas.

Has que el archivo solo sea accesible para root escribiendo:

Debes verificar el cambio de permisos escribiendo:

Como puedes ver, solo el usuario root tiene habilitados los permisos de lectura y escritura.

Ahora podemos usar el archivo como swap escribiendo:

Después de marcar el archivo, podemos habilitar el archivo de swap, permitiendo que nuestro sistema comience a usarlo:

Debes verificar que swap esté disponible escribiendo:

Podemos verificar la salida de la utilidad free nuevamente para corroborar nuestros hallazgos:

Nuestro swap se ha configurado correctamente y nuestro sistema operativo comenzará a usarlo según sea necesario.

Paso 5: hacer que el archivo de intercambio sea permanente

Nuestros cambios recientes han habilitado el archivo de swap para la sesión actual. Sin embargo, si reiniciamos, el servidor no guardará la configuración de swap automáticamente. Podemos cambiar esto agregando el archivo de swapa nuestro archivo /etc/fstab.

Haz una copia de seguridad del archivo /etc/fstab en caso de que algo salga mal:

Agrega la información del archivo de swap al final de tu archivo /etc/fstab escribiendo:

A continuación, revisaremos algunas configuraciones que podemos actualizar para ajustar nuestro espacio de swap.

Paso 6: ajuste la configuración de intercambio

Hay algunas opciones que puede configurar que tendrán un impacto en el rendimiento de su sistema al tratar con el intercambio.

Ajuste de la propiedad de xwap

El parámetro swappiness configura con qué frecuencia tu sistema intercambia datos de RAM al swap. Este es un valor entre 0 y 100 que representa un porcentaje.

Con valores cercanos a cero, el núcleo no intercambiará datos al disco a menos que sea absolutamente necesario. Recuerda, las interacciones con el archivo de swap son “costosas” ya que toman mucho más tiempo que las interacciones con RAM y pueden causar una reducción significativa en el rendimiento.

Decirle al sistema que no confíe mucho en swap generalmente hará que tu sistema sea más rápido.

Los valores que están más cerca de 100 intentarán intercambiar más datos en un esfuerzo por mantener más espacio libre de RAM.

Dependiendo del perfil de memoria de tus aplicaciones o para qué estás utilizando tu servidor, esto podría ser mejor en algunos casos.

Podemos ver el valor de swap actual escribiendo:

Para una computadora de escritorio, una configuración de intercambio de 60 no es un mal valor. Para un servidor, es posible que desees acercarlo a 0.

Podemos establecer el intercambio a un valor diferente utilizando el comando sysctl.

Por ejemplo, para establecer el intercambio en 10, podríamos escribir:

Esta configuración persistirá hasta el próximo reinicio. Podemos establecer este valor automáticamente al reiniciar agregando la línea a nuestro archivo /etc/sysctl.conf:

Guarda y cierra el archivo cuando hayas terminado.

Ajuste de la configuración de Cache Pressure

Otro valor relacionado que es posible que desees modificar es el vfs_cache_pressure. Esta configuración configura la cantidad que el sistema elegirá para almacenar en caché el inodo y negar información sobre otros datos.

Básicamente, se trata de datos de acceso sobre el sistema de archivos. Por lo general, es muy costoso buscarlo y solicitarlo con mucha frecuencia, por lo que es excelente para tu sistema almacenar en caché. Puedes ver el valor actual consultando nuevamente proc el sistema de archivos:

Como está configurado actualmente, nuestro sistema elimina la información de inodo del caché demasiado rápido. Podemos configurar esto en una configuración más conservadora como 50 escribiendo:

Nuevamente, esto solo es válido para nuestra sesión actual. Podemos cambiar eso agregándolo a nuestro archivo de configuración como lo hicimos con nuestra configuración de swap:

En la parte inferior, agrega la línea que especifica el nuevo valor:

Guarda y cierra el archivo cuando hayas terminado.

Conclusión

Seguir los pasos de esta guía te dará algo de espacio para respirar en casos que, de lo contrario, provocarían excepciones de falta de memoria.

Swap puede ser increíblemente útil para evitar algunos de estos problemas comunes.

Si te encuentras con errores OOM (sin memoria), o si encuentras que tu sistema no puede usar las aplicaciones que necesitas, la mejor solución es optimizar las configuraciones de tus aplicaciones o actualizar tu servidor.