Gestión de memoria de intercambio (swap) en GNU/Linux.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org

Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.

Introducción.

Este manual se centra en el conocimiento fundamental para crear y gestionar espacio de swap, una habilidad esencial para la administración de sistemas. Cubre los métodos tradicionales ―archivos y particiones― e introduce conceptos modernos como zram, permitiendo una comprensión integral y actualizada.

¿Qué es y cómo funciona el espacio de intercambio?

El espacio de memoria de intercambio o swap constituye una extensión de la memoria física (RAM) que utiliza espacio reservado en la unidad de almacenamiento. Cuando la RAM se satura, el núcleo del sistema operativo traslada páginas de memoria inactivas a este espacio, liberando RAM para tareas prioritarias.

La principal ventaja del swap radica en proporcionar un colchón de memoria adicional, evitando que el sistema finalice procesos de manera abrupta por falta de RAM. Su desventaja principal es la velocidad, ya que los discos duros mecánicos (HDD) e incluso las unidades de estado sólido (SSD) son órdenes de magnitud más lentos que la RAM.

Criterios específicos para servidores y escritorios.

El dimensionamiento del swap dista de ser universal; depende críticamente del rol del sistema y de características operativas específicas como la hibernación.

Para servidores de producción (24/7/365)

En un entorno servidor, la hibernación (suspend-to-disk) carece por completo de utilidad. Un servidor debe permanecer operativo de manera continua, y apagarlo o hibernarlo implica interrumpir los servicios que ofrece.

En este contexto, el swap cumple dos funciones principales:

  1. Colchón de estabilidad: Absorbe picos imprevistos en el uso de memoria, previniendo que el Asesino de Out-Of-Memory (OOM Killer) termine procesos esenciales.
  2. Permitir volcados de memoria: En caso de un kernel panic, el sistema puede necesitar swap para escribir un volcado de memoria (core dump) que facilite el diagnóstico.

Recomendación para servidores modernos:

Para sistemas de escritorio y estaciones de trabajo.

En el escritorio, la decisión crucial es ¿desea usted poder hiberbar el sistema? La hibernación guarda el estado completo de la RAM en el swap antes de apagar, permitiendo recuperar la sesión exacta al encender.

⚠️ Consideración práctica para hibernación con mucha RAM: Hibernar un sistema con 32 GB de RAM requiere al menos 32 GB de espacio swap contiguo. Esto es:

  • Poco práctico en muchos SSD de capacidad moderada (ej: 256 GB), donde 32 GB representan una fracción significativa.
  • Potencialmente lento, ya que escribir/leer 32 GB en un disco, incluso SSD, lleva tiempo.

Por esta razón, muchos usuarios con sistemas de altas prestaciones prefieren utilizar únicamente la suspensión (suspend-to-RAM). Este modo mantiene la alimentación de la RAM (consumiendo mínima energía), recupera la sesión en segundos y no requiere swap. Es la opción predeterminada y recomendada en equipos con recursos abundantes donde la hibernación supone un costo de espacio y tiempo desproporcionado.

Creación y activación de espacio de swap.

Existen dos métodos primordiales para añadir swap a un sistema: mediante un archivo dedicado (flexible y recomendado para aprender) o una partición dedicada (tradicional y de rendimiento consistente).

Método 1: Utilizar un archivo como memoria de intercambio.

Este método es idóneo para aprender y para situaciones donde modificar la tabla de particiones resulta inconveniente. El archivo puede residir en cualquier sistema de archivos que lo soporte (ext4, Xfs).

  1. Crear el archivo: Utilice el mandato dd para crear un archivo del tamaño deseado. Por ejemplo, para crear un archivo de 2 GiB llamado /swapfile (ajuste count= al tamaño en MiB):
     dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
  2. Ajustar permisos: Por seguridad, el archivo de swap debe tener permisos restrictivos.
     chmod 600 /swapfile
  3. Formatear como swap: Utilice mkswap para darle el formato adecuado.
     mkswap /swapfile
  4. Activar el swap: Haga que el sistema comience a utilizar el archivo inmediatamente.
     swapon /swapfile
  5. Hacer la configuración permanente: Añada una entrada al archivo /etc/fstab para que el swap se active en cada arranque.
     echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

Método 2: Activar una partición de intercambio dedicada.

Este método ofrece un ligero beneficio de rendimiento y es el preferido para instalaciones tradicionales. Requiere una partición dedicada (ej. /dev/sdb1).

  1. Formatear la partición: Asegúrese de que la partición esté marcada con el tipo Linux swap (código 82 en fdisk/gdisk). Luego, formátela:
     mkswap -f /dev/sdb1

    La opción -f fuerza el procedimiento.

  2. Activar la partición:
     swapon /dev/sdb1
  3. Hacer la configuración permanente: Añada la línea correspondiente a /etc/fstab.
     echo '/dev/sdb1 swap swap defaults 0 0' >> /etc/fstab

Verificación del swap activo.

Tras cualquiera de los métodos, verifique que el nuevo espacio esté disponible y en uso:

free -h

O bien, para obtener un listado detallado:

swapon --show

Uso de zram para swap comprimido en RAM.

zram es un módulo del núcleo que crea un dispositivo de bloques comprimido en la propia RAM. Actúa como un swap de velocidad extraordinaria, ideal para sistemas con poca RAM o para mejorar la capacidad de respuesta en cualquier sistema. ALDOS lo habilita y pre-configura por defecto.

Configuración manual básica de zram.

El siguiente procedimiento crea un dispositivo zram utilizando un tercio de la RAM total y el algoritmo de compresión zstd (eficiente y rápido), configurándolo como swap de alta prioridad.

Puede ejecutar estos mandatos directamente como root o integrarlos en un script de inicialización (como /etc/rc.d/init.d/zram en ALDOS con SysVinit).

#!/bin/bash
# Calcular un tamaño recomendado (ej: 1/3 de la RAM)
TOTMEM=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
TOTZRAM=$(expr ${TOTMEM} \* 1024 / 3) # Resultado en kilobytes

# Cargar módulo, configurar dispositivo, formatear y activar
/sbin/modprobe zram num_devices=1
/sbin/zramctl --size ${TOTZRAM}K --algorithm zstd /dev/zram0
/sbin/mkswap /dev/zram0
/sbin/swapon --priority 100 /dev/zram0

💡 Ventaja de zram: Al comprimir los datos, permite "almacenar" más información swap en la misma cantidad de RAM física, mejorando drásticamente el rendimiento respecto del swap en disco. Su prioridad alta (-p 100) hace que el núcleo lo utilice antes que el swap tradicional.

Gestión y optimización avanzada.

Si se necesita sacar el mejor provecho posible, esta sección incluye recomendaciones adecuadas dependieno de la finalidad productiva del sistema.

Ajuste del parámetro vm.swappiness.

Este parámetro (rango 0-100) controla la propensión del núcleo a trasladar páginas de memoria a swap. Un valor bajo hace que el sistema evite el swap hasta que sea estrictamente necesario; un valor alto hace que lo utilice de manera más proactiva para liberar RAM.

Cambiar el valor en tiempo de ejecución:

sysctl -w vm.swappiness=30

Hacer el cambio permanente: Edite o añada la línea en /etc/sysctl.conf o en un archivo dentro de /etc/sysctl.d/ (ej: 99-swap.conf).

echo 'vm.swappiness = 30' >> /etc/sysctl.d/99-swap.conf

Asignación de prioridades al swap.

Cuando hay múltiples dispositivos swap (ej: un zram rápido y un archivo swap lento en disco), se pueden asignar prioridades con la opción -p de swapon (o pri= en /etc/fstab). El núcleo utilizará primero los dispositivos con prioridad más alta.

Ejemplo en /etc/fstab:

/dev/zram0  none  swap  defaults,pri=100  0  0
/swapfile   none  swap  defaults,pri=10   0  0

En este ejemplo, el zram se consumirá completamente antes de que el sistema comience a usar el archivo /swapfile. Esta configuración es ideal para maximizar el rendimiento.


🔧 Resumen de prácticas modernas y decisión clave

  1. Defina el propósito: ¿Es un servidor o un escritorio? ¿Requiere hibernación?

    • Servidor: Olvide la hibernación. Asigne swap como colchón (4-8 GB suele bastar).
    • Escritorio SIN hibernación: Un swap de 2-4 GB es suficiente, incluso con 32 GB de RAM. Considere zram como complemento de rendimiento.
    • Escritorio CON hibernación: El swap debe ser ≥ RAM total. Evalúe si el costo en espacio de disco vale la pena, o prefiera la suspensión (suspend-to-RAM).
  2. Prefiera zram: Es una mejora de rendimiento gratuita. Configúrelo con alta prioridad (pri=100).

  3. Ajuste swappiness acorde: Valores bajos (10-30) para priorizar RAM física; valores moderados (30-60) si cuenta con zram.

  4. Use archivos swap para flexibilidad: Son fáciles de crear, redimensionar o eliminar, perfectos para aprendizaje y ajustes.

Al dominar estos conceptos, podrá tomar decisiones informadas y eficientes para gestionar la memoria en cualquier distribución GNU/Linux contemporánea, desde un servidor potente hasta un escritorio de altas prestaciones.