Cómo configurar swap en Linux Ubuntu: cuándo se necesita y cómo dimensionarlo

Aprende a configurar swap en Linux Ubuntu como buffer para VPS con poca RAM. Descubre cuándo se necesita, cómo dimensionar el swapfile y ajustar swappiness para producción.

Una VPS con 1 o 2 GB de RAM entra con frecuencia en situaciones donde un build de npm, una query pesada en PostgreSQL o un pico de tráfico empuja la memoria al límite. Sin swap configurado, el kernel Linux dispara el OOM killer y mata el proceso que esté consumiendo más — generalmente el servicio que más necesitas ejecutando. Con swap, el sistema tiene un buffer para absorber picos esporádicos antes de llegar a ese extremo.

El swap no es magia y no sustituye a la RAM. Cuando el kernel empieza a paginar activamente, el rendimiento se degrada brutalmente — la lectura de swap en SSD NVMe sigue siendo cientos de veces más lenta que la RAM. Pero como red de seguridad, el swap previene crashes que arruinarían el uptime del servidor por culpa de una excepción momentánea.

Este tutorial cubre el flujo completo: identificar si tu VPS necesita swap, crear y activar un swapfile dimensionado correctamente, ajustar swappiness para workloads de servidor y eliminar o redimensionar si es necesario. Destinado a: sysadmin Linux administrando Ubuntu 22.04 o 24.04 en VPS con poca RAM. Tiempo de ejecución: 10-15 minutos.

Requisitos previos

Requisitos previos

Ubuntu 22.04 LTS o 24.04 LTS con acceso sudo, sesión SSH activa y al menos 2 GB libres en disco (para un swapfile de 2 GB con holgura). También necesitas conocer la memoria RAM actual de la VPS — free -h lo muestra.

Antes de crear swap, confirma el estado actual de memoria y swap de la máquina. Las VPS modernas frecuentemente ya vienen con swap configurado por el proveedor o por la imagen base — verificar antes evita crear swap duplicado.

RAM mínima recomendada 1 GB
Swap default Ubuntu cloud 0 (no viene)
Path del swapfile /swapfile
Permiso del swapfile 600 (root only)

Cuándo crear swap en tu VPS

No toda VPS necesita swap. La decisión depende de la RAM disponible y del perfil de la carga. Para servidores con 8 GB+ de RAM ejecutando aplicaciones dimensionadas correctamente, el swap raramente se toca e incluso puede estorbar (ver sección de swappiness).

Escenarios donde el swap tiene sentido:

  • VPS con 1-4 GB de RAM ejecutando stack web (nginx + PHP-FPM + MySQL/Postgres)
  • Servidor que hace builds esporádicos (npm install, composer install, docker build) que consumen RAM por encima del steady-state
  • Aplicaciones con picos impredecibles (importación de archivo grande, procesamiento de imagen, generación de informe)
  • Bases de datos pequeñas ejecutándose junto con la app en la misma VPS sin cgroups aislando recursos

Escenarios donde el swap no resuelve:

  • Aplicación que necesita RAM constante por encima de la disponible — añade RAM o haz upgrade de la VPS
  • Servidor latency-sensitive (gateway, proxy inverso de alto QPS) donde cualquier swap mata el p99
  • Base de datos grande en producción — configura cgroups y swappiness=1 o desactiva swap completamente para evitar latencia de I/O impredecible
01

Verifica la RAM y el swap actuales:

free -h

Salida típica de VPS sin swap:

               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       420Mi       180Mi       2.0Mi       1.3Gi       1.4Gi
Swap:             0B          0B          0B

Si la línea Swap muestra valores distintos de cero, el swap ya existe — salta a la sección “Ajustando swappiness”.

02

Verifica el espacio libre en disco antes de asignar el swapfile:

df -h /

Confirma que / tiene al menos 3-4 GB libres. El swapfile va a consumir el tamaño asignado íntegramente — no es un archivo disperso.

Creando el swapfile

Vamos a crear un swapfile de 2 GB en /swapfile. Ese tamaño cubre la gran mayoría de los casos de VPS de 2-4 GB de RAM. Si tu VPS tiene solo 1 GB de RAM, ajústalo a 1 GB. Para 4 GB+ de RAM, 2 GB de swap sigue siendo suficiente — no escales linealmente.

01

Asigna el archivo con fallocate:

sudo fallocate -l 2G /swapfile

fallocate reserva el espacio instantáneamente sin escribir bloque a bloque (a diferencia de dd, que tardaría minutos). En sistemas de archivos modernos (ext4, xfs), funciona sin problemas.

02

Restringe los permisos del archivo:

sudo chmod 600 /swapfile

El swap contiene contenido de memoria de procesos — incluyendo contraseñas, tokens y datos sensibles que estaban en RAM. Dejarlo legible por otros usuarios es una falla grave de seguridad.

03

Formatea el archivo como área de swap:

sudo mkswap /swapfile

Salida esperada:

Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=abc123...
04

Activa el swap:

sudo swapon /swapfile

Sin salida en caso de éxito. Confirma con:

sudo swapon --show
free -h

La línea Swap en free -h ahora muestra 2.0Gi total.

Persistencia en el boot

El comando swapon activa el swap inmediatamente, pero la configuración no sobrevive al reboot. Sin editar /etc/fstab (siguiente paso), pierdes el swap cada vez que la VPS reinicia.

05

Añade el swap a /etc/fstab para montarlo automáticamente en el boot:

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

Revisa el archivo:

sudo cat /etc/fstab

La última línea debe ser exactamente /swapfile none swap sw 0 0.

Cuidado al editar fstab

Un error de sintaxis en /etc/fstab impide el boot de la VPS — necesitarás acceso a la consola serial del proveedor para recuperar. Usa sudo tee -a (append) en lugar de un editor para evitar sustituir el archivo entero accidentalmente.

Ajustando swappiness para workloads de servidor

Swappiness controla cuán agresivamente el kernel paginará memoria al swap. Los valores van de 0 (evita el swap al máximo) a 100 (pagina tan pronto como sea posible). El valor por defecto de Ubuntu es 60, optimizado para escritorio donde el swap libera RAM para caché de disco que mejora la UX. En servidor, este comportamiento es contraproducente — quieres que las apps se ejecuten en RAM real, incluso si cuesta un poco de caché.

01

Verifica el valor actual:

cat /proc/sys/vm/swappiness

La mayoría de las instalaciones Ubuntu retornan 60.

02

Redúcelo temporalmente a 10 (hasta el próximo reboot):

sudo sysctl vm.swappiness=10

Salida:

vm.swappiness = 10
03

Persiste el cambio en /etc/sysctl.conf para que sobreviva al reboot:

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

Comprueba la configuración después del próximo boot ejecutando cat /proc/sys/vm/swappiness — debe mostrar 10.

Swappiness para bases de datos

En VPS ejecutando PostgreSQL, MySQL o MongoDB como servicio principal, considera swappiness=1. Los bancos gestionan buffer pool propio en RAM y pierden rendimiento brutalmente cuando el kernel decide paginar páginas calientes. El valor 0 es aún más agresivo pero puede causar OOM en picos — 1 es el equilibrio práctico.

Verificación

Confirma que el swap está activo, dimensionado correctamente y configurado para persistir.

01

Estado completo de memoria y swap:

free -h
swapon --show
cat /proc/sys/vm/swappiness

Debes ver swap de 2 GB activo, prioridad -2 (default), y swappiness=10.

02

Verifica si se va a montar en el boot:

grep swapfile /etc/fstab

Línea esperada: /swapfile none swap sw 0 0.

03

Monitorea el uso real durante carga. Usa vmstat para ver actividad de swap:

vmstat 1 5

Enfócate en las columnas si (swap in, KB/s leídos del swap) y so (swap out, KB/s escritos en el swap). En VPS saludable, ambas se mantienen en 0 la mayor parte del tiempo. Actividad ocasional en picos es normal. Actividad constante de cientos de KB/s indica falta de RAM real.

Resolución de problemas

”swapon: /swapfile: insecure permissions 0644”

El permiso del archivo está demasiado abierto. Corrige con sudo chmod 600 /swapfile e intenta activarlo de nuevo. Error común si usaste dd en lugar de fallocate sin ajustar el permiso después.

”fallocate: fallocate failed: Operation not supported”

Algunas VPS usan sistemas de archivos antiguos o filesystem en capas (overlay en Docker, por ejemplo) que no soportan fallocate. Sustitúyelo por el método clásico con dd:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

Tarda 30-60s en SSD. Después sigue normalmente con chmod, mkswap y swapon.

Swap activo pero free -h sigue mostrando 0B

Confirma que el swapfile fue formateado con mkswap antes de swapon. Si saltaste la etapa de formateo, swapon falla silenciosamente en algunos kernels. Ejecuta sudo swapoff /swapfile, sudo mkswap /swapfile, sudo swapon /swapfile.

Sistema lento después de habilitar swap

Probablemente swappiness está alto y el kernel está paginando páginas calientes. Redúcelo a 10 conforme la sección anterior. Si el sistema sigue lento incluso con swappiness bajo y vmstat muestra si/so constante, la RAM es genuinamente insuficiente — considera el upgrade de la VPS.

Próximos pasos

Con el swap configurado, el servidor gana resiliencia contra picos esporádicos de memoria. Próximos puntos para cerrar la base de una VPS de producción:

  • Configura límites de memoria por servicio con systemd (MemoryMax= en unit files) para evitar que un proceso derribe a otros
  • Monitorea el uso de swap continuamente vía Netdata, Grafana o sistema propio — alerta cuando si/so supera un umbral
  • En VPS ejecutando contenedores, configura --memory y --memory-swap en Docker para aislar workloads
  • Evalúa si la aplicación tiene un leak real de memoria — el swap enmascara el síntoma pero no resuelve la causa
  • Si estás poniendo esto en producción, una VPS Hostini ya viene con NVMe rápido (latencia baja de swap cuando se necesita) y dimensionamiento de RAM transparente, evitando la mayoría de los escenarios donde el swap salva al servidor.

Preguntas frecuentes

¿El swap sustituye a la RAM en servidores de producción?

No. El swap es almacenamiento (SSD/NVMe) usado como extensión de la memoria — órdenes de magnitud más lento que la RAM real (latencia de cientos de microsegundos frente a decenas de nanosegundos). Sirve como buffer para picos esporádicos y para evitar el OOM kill, no para ejecutar la carga normal. Si la aplicación está en swap constante, falta RAM — añade memoria física.

¿Cuál es el tamaño ideal de swap para una VPS?

Regla práctica moderna: 1 GB de swap para VPS con 1-2 GB de RAM, 2 GB para VPS con 2-4 GB, y 2-4 GB para cualquier servidor con 4+ GB. La regla antigua de '2x la RAM' viene de la era del hibernate en escritorios y no tiene sentido en servidor. No pases de 4 GB de swap en VPS de producción — si lo estás usando, falta RAM.

¿Debo usar swapfile o partición de swap?

Swapfile. En VPS provisionadas con layout de disco listo, crear partición es complicado (implica reparticionar) y ofrece cero ventaja de rendimiento moderno. El swapfile es redimensionable, eliminable y funciona idéntico en workload real. Usa partición de swap solo en servidor físico con disco dedicado para swap.

¿Qué es swappiness y qué valor usar en servidor?

Swappiness (0-100) controla la agresividad del kernel al mover páginas inactivas al swap. El valor por defecto de Ubuntu es 60, optimizado para escritorio. En servidor, usa 10 — solo hace swap cuando la presión de memoria es real, manteniendo la caché de disco en RAM lo máximo posible. Para bases de datos (PostgreSQL, MySQL), usa 1 o incluso 0 con cgroups configurados.

¿Cómo eliminar el swap si ya no lo necesito?

Desactívalo con sudo swapoff /swapfile, elimina la línea de /etc/fstab para que no se monte en el boot, y borra el archivo con sudo rm /swapfile. Confirma con swapon --show — no debería retornar nada. Hazlo antes de redimensionar (no se puede resize un swapfile activo).

¿Por qué mi VPS está usando swap incluso con RAM libre?

Comportamiento normal. El kernel mueve páginas inactivas al swap proactivamente para liberar RAM para la caché de disco, incluso sin presión inmediata. Con swappiness=60 (default), esto es bastante agresivo. Redúcelo a 10 si te molesta. Solo vuelve un alerta cuando el swap está siendo leído/escrito activamente (vmstat mostrando si/so > 0 constante) — ahí sí falta RAM.

Temas:
Próximos pasos Cloud Ryzen con NVMe y protección DDoS siempre activa.Pon en producción en un VPS Hostini →
¿Te resultó útil este tutorial?
Hablar por WhatsApp