Configurar swap y zram en Linux¶
Cuando un servidor se queda sin RAM, el kernel recurre al swap para seguir funcionando. Sin una buena configuración, eso puede provocar caídas de rendimiento o incluso la terminación de procesos.
Qué hace¶
Se configuran dos mecanismos complementarios:
- zram — swap comprimido en memoria RAM, para reducir el uso de swap en disco.
- Swapfile — red de seguridad adicional en disco por si la RAM se agota.
zram¶
Instalar¶
-
Comprobar si ya está instalado:
dpkg -l | grep zram-toolsrpm -qa | grep zram-tools -
Instalar:
sudo apt install zram-toolssudo dnf install zram-tools
Configurar¶
-
Editar la configuración:
sudo vim /etc/default/zramswapContenido (ajustar
PERCENTsegún el análisis):ALGO=zstd PERCENT=50A diferencia de
sshd_config.d/,sysctl.d/olimits.d/,/etc/default/no tiene mecanismo de drop-ins:zramswapno busca fragmentos adicionales, así que este es el único fichero de configuración que soporta el paquete — no hay forma de hacerlo en uno nuevo sin tocar este. Es la misma excepción queunattended-upgradesen el paso anterior.sudo vim /etc/systemd/zram-generator.conf.d/00-zram.confContenido (ajustar
zram-sizesegún el análisis):[zram0] compression-algorithm = zstd zram-size = ram / 2Fedora usa
zram-generator, un generador de unidades de systemd. La configuración vive en/etc/systemd/zram-generator.conf.d/y sí soporta drop-ins — puedes añadir más ficheros.confsin tocar el original. La sintaxis es distinta de Ubuntu:zram-sizeadmite expresiones comoram / 2o un porcentaje fijo.
Verificar¶
-
Aplicar y confirmar que zram está activo:
sudo service zramswap restart sudo zramctlzramctlvive en/usr/sbin, que no está en elPATHde un usuario normal — de ahí elsudo.
Swap¶
Usa el swapfile como red de seguridad adicional en disco. Analiza el disco y la RAM para decidir el tamaño del swapfile:
df -h /
free -h
Instalar¶
-
Comprobar si ya hay swap configurado:
sudo swapon --show sudo systemctl list-units --type swapswapontambién vive en/usr/sbin— hace faltasudopara encontrarlo como usuario normal. Estelist-unitsy lossystemctl daemon-reload/enablede abajo se quedan comosystemctl: listar unidades o activarlas en el arranque son cosas queserviceno sabe hacer (solo envuelve start/stop/restart/reload/status). -
Si no hay, crear el swapfile (ajustar tamaño
2Gsegún el análisis):sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile
Configurar¶
-
Crear una unidad de systemd para activarlo en el arranque:
sudo vim /etc/systemd/system/swapfile.swapContenido:
[Unit] Description=Swapfile [Swap] What=/swapfile [Install] WantedBy=multi-user.target -
Activar y arrancar la unidad:
sudo systemctl daemon-reload sudo systemctl enable --now swapfile.swap -
Ajustar
swappiness(priorizar RAM/zram sobre el swapfile) con un drop-in propio:sudo vim /etc/sysctl.d/99-swap.confContenido:
vm.swappiness=10Aplicar:
sudo sysctl --system📝 Nota
No todo se pudo sacar a fichero nuevo del todo "gratis" — la unidad
swapfile.swapnecesitasystemctl daemon-reloadpara que systemd la detecte, y depende de que el servidor use systemd (estándar en Ubuntu, pero no universal). Si en algún momento tuvieras que volver al método clásico de/etc/fstab, sería la única excepción real a la convención de "solo ficheros nuevos" de esta guía.
Verificar¶
-
Confirmar que el swap está activo y la unidad corriendo:
sudo swapon --show sudo systemctl status swapfile.swapswapfile.swapes una unidad de tipo.swap, no.service—serviceno la reconoce, así que aquí también se quedasystemctl.
Y ahora qué
El swap está optimizado: zram aligera la carga en RAM y el swapfile actúa como red de seguridad en disco. El siguiente paso es instalar un agente de Monitorización para detectar problemas de carga o memoria.