Cómo agregar espacio de intercambio en Ubuntu 20.04

Introducción

Índice
  1. Introducción
  • ¿Qué es Swap?
  • Paso 1: Comprobación de la información de swap en el sistema
  • Paso 2: Comprobación del espacio disponible en la partición del disco duro
  • Paso 3 – Creación de un archivo de intercambio
  • Paso 4 – Habilitar el archivo de intercambio
  • Paso 5 – Hacer que el archivo de intercambio sea permanente
  • Paso 6 – Ajuste de la configuración de intercambio
    1. Ajuste de la propiedad Swappiness
    2. Ajuste de la configuración de presión de caché
  • Conclusión
  • Una forma de protegerse contra errores de falta de memoria en las aplicaciones es agregar espacio de intercambio a su servidor. En esta guía, explicaremos cómo agregar un archivo de intercambio a un servidor Ubuntu 20.04.

    ¿Qué es Swap?

    El espacio de intercambio es una parte del almacenamiento del disco duro que se ha reservado para que el sistema operativo almacene temporalmente los datos que ya no puede almacenar en la RAM. Esto le permite aumentar la cantidad de información que su servidor puede mantener en su memoria de trabajo, con algunas salvedades. El espacio de intercambio del disco duro se utilizará principalmente cuando ya no haya suficiente espacio en la RAM para almacenar los datos de las aplicaciones en uso.

    La información que se escribe en el disco será significativamente más lenta que la que se guarda en la RAM, pero el sistema operativo preferirá mantener los datos de las aplicaciones en ejecución en la memoria y utilizar la memoria de intercambio para los datos más antiguos. En general, tener espacio de intercambio como respaldo para cuando se agote la RAM del sistema puede ser una buena red de seguridad contra excepciones de falta de memoria en sistemas con almacenamiento que no sea SSD disponible.

    Paso 1: Comprobación de la información de swap en el sistema

    Antes de comenzar, podemos comprobar si el sistema ya tiene algo de espacio de intercambio disponible. Es posible tener varios archivos de intercambio o particiones de intercambio, pero por lo general uno debería ser suficiente.

    Podemos ver si el sistema tiene algún swap configurado escribiendo:

    1. sudo swapon --show

    Si no obtiene ningún resultado, significa que su sistema no tiene espacio de intercambio disponible actualmente.

    Puedes verificar que no haya ningún intercambio activo usando la freeutilidad:

    1. free -h
    Output              total        used        free      shared  buff/cache   availableMem:          981Mi       122Mi       647Mi       0.0Ki       211Mi       714MiSwap:            0B          0B          0B

    Como puede ver en la fila 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 intercambio, comprobaremos el uso actual del disco para asegurarnos de que tengamos suficiente espacio. Para ello, introduzca lo siguiente:

    1. df -h
    OutputFilesystem      Size  Used Avail Use% Mounted onudev            474M     0  474M   0% /devtmpfs            99M  932K   98M   1% /run/dev/vda1        25G  1.4G   23G   7% /tmpfs           491M     0  491M   0% /dev/shmtmpfs           5.0M     0  5.0M   0% /run/locktmpfs           491M     0  491M   0% /sys/fs/cgroup/dev/vda15      105M  3.9M  101M   4% /boot/efi/dev/loop0       55M   55M     0 100% /snap/core18/1705/dev/loop1       69M   69M     0 100% /snap/lxd/14804/dev/loop2       28M   28M     0 100% /snap/snapd/7264tmpfs            99M     0   99M   0% /run/user/1000

    En este caso, el dispositivo que aparece /en la Mounted oncolumna es nuestro disco. En este ejemplo, tenemos mucho espacio disponible (solo se utilizan 1,4 G). Probablemente, el uso que hagas será diferente.

    Aunque existen muchas opiniones sobre el tamaño adecuado de un espacio de intercambio, en realidad depende de sus preferencias personales y de los requisitos de su aplicación. En general, una cantidad igual o el doble de la cantidad de RAM de su sistema es un buen punto de partida. Otra buena regla general es que cualquier cantidad superior a 4 GB de espacio de intercambio probablemente sea innecesaria si solo la está utilizando como reserva de RAM.

    Paso 3 – Creación de un archivo de intercambio

    Ahora que conocemos el espacio disponible en el disco duro, podemos crear un archivo de intercambio en nuestro sistema de archivos. Asignaremos un archivo del tamaño que queremos que se llame en nuestro directorio swapfileraíz ( )./

    La mejor forma de crear un archivo de intercambio es con el fallocateprograma. Este comando crea instantáneamente un archivo del tamaño especificado.

    Como el servidor de nuestro ejemplo tiene 1 GB de RAM, crearemos un archivo de 1 GB en esta guía. Ajústelo para satisfacer las necesidades de su propio servidor:

    1. sudo fallocate -l 1G /swapfile

    Podemos verificar que se reservó la cantidad correcta de espacio escribiendo:

    1. ls -lh /swapfile
    1. -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

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

    Paso 4 – Habilitar el archivo de intercambio

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

    En primer lugar, debemos bloquear los permisos del archivo para que solo los usuarios con privilegios de root puedan leer el contenido. Esto impide que los usuarios normales puedan acceder al archivo, lo que tendría importantes implicaciones de seguridad.

    Haga que el archivo sea accesible sólo para el root escribiendo:

    1. sudo chmod 600 /swapfile

    Verifique el cambio de permisos escribiendo:

    1. ls -lh /swapfile
    Output-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

    Como puede ver, solo el usuario root tiene habilitadas las funciones de lectura y escritura.

    Ahora podemos marcar el archivo como espacio de intercambio escribiendo:

    1. sudo mkswap /swapfile
    OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

    Luego de marcar el archivo, podemos habilitar el archivo de intercambio, permitiendo que nuestro sistema comience a usarlo:

    1. sudo swapon /swapfile

    Verifique que el intercambio esté disponible escribiendo:

    1. sudo swapon --show
    OutputNAME      TYPE  SIZE USED PRIO/swapfile file 1024M   0B   -2

    Podemos verificar freenuevamente la salida de la utilidad para corroborar nuestros hallazgos:

    1. free -h
    Output              total        used        free      shared  buff/cache   availableMem:          981Mi       123Mi       644Mi       0.0Ki       213Mi       714MiSwap:         1.0Gi          0B       1.0Gi

    Nuestro intercambio 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 intercambio para la sesión actual. Sin embargo, si reiniciamos, el servidor no conservará la configuración de intercambio automáticamente. Podemos cambiar esto agregando el archivo de intercambio a nuestro /etc/fstabarchivo.

    Realice una copia de seguridad del /etc/fstabarchivo en caso de que algo salga mal:

    1. sudo cp /etc/fstab /etc/fstab.bak

    Agregue la información del archivo de intercambio al final de su /etc/fstabarchivo escribiendo:

    1. echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

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

    Paso 6 – Ajuste de la configuración de intercambio

    Hay algunas opciones que puedes configurar y que tendrán un impacto en el rendimiento de tu sistema al trabajar con intercambio.

    Ajuste de la propiedad Swappiness

    El swappinessparámetro configura la frecuencia con la que el sistema intercambia datos de la RAM al espacio de intercambio. Es un valor entre 0 y 100 que representa un porcentaje.

    Con valores cercanos a cero, el núcleo no intercambiará datos con el disco a menos que sea absolutamente necesario. Recuerde que las interacciones con el archivo de intercambio son “costosas” porque toman mucho más tiempo que las interacciones con la RAM y pueden causar una reducción significativa en el rendimiento. Si le dice al sistema que no dependa demasiado del archivo de intercambio, generalmente el sistema será más rápido.

    Los valores más cercanos a 100 intentarán colocar más datos en la memoria de intercambio para intentar mantener más espacio libre en la RAM. Según el perfil de memoria de sus aplicaciones o para qué esté utilizando su servidor, esto podría ser mejor en algunos casos.

    Podemos ver el valor de swappiness actual escribiendo:

    1. cat /proc/sys/vm/swappiness
    Output60

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

    Podemos establecer el swappiness a un valor diferente usando el sysctlcomando.

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

    1. sudo sysctl vm.swappiness=10
    Outputvm.swappiness = 10

    Esta configuración se mantendrá hasta el próximo reinicio. Podemos configurar este valor automáticamente al reiniciar agregando la línea a nuestro /etc/sysctl.confarchivo:

    1. sudo nano /etc/sysctl.conf

    En la parte inferior puedes agregar:

    /etc/sysctl.conf

    vm.swappiness=10

    Guarde y cierre el archivo cuando haya terminado.

    Ajuste de la configuración de presión de caché

    Otro valor relacionado que quizás quieras modificar es el vfs_cache_pressure. Esta configuración configura la cantidad de información de inodo y de entrada que el sistema elegirá almacenar en caché en lugar de otros datos.

    Básicamente, se trata de datos de acceso sobre el sistema de archivos. Su consulta suele ser muy costosa y se solicita con mucha frecuencia, por lo que es una excelente opción para almacenar en caché en el sistema. Puede ver el valor actual consultando procnuevamente el sistema de archivos:

    1. cat /proc/sys/vm/vfs_cache_pressure
    Output100

    Tal como está configurado actualmente, nuestro sistema elimina la información de inodo de la memoria caché demasiado rápido. Podemos configurarlo en un valor más conservador, como 50, escribiendo lo siguiente:

    1. sudo sysctl vm.vfs_cache_pressure=50
    Outputvm.vfs_cache_pressure = 50

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

    1. sudo nano /etc/sysctl.conf

    En la parte inferior, agregue la línea que especifica su nuevo valor:

    /etc/sysctl.conf

    vm.vfs_cache_pressure=50

    Guarde y cierre el archivo cuando haya terminado.

    Conclusión

    Si sigue los pasos de esta guía, tendrá un margen de maniobra en casos que, de otro modo, darían lugar a excepciones por falta de memoria. El espacio de intercambio puede resultar increíblemente útil para evitar algunos de estos problemas comunes.

    Si se encuentra con errores OOM (sin memoria) o descubre que su sistema no puede utilizar las aplicaciones que necesita, la mejor solución es optimizar las configuraciones de sus aplicaciones o actualizar su servidor.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

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

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion