zram y Swap
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. Esta guía explica cómo configurar dos mecanismos complementarios: zram (swap comprimido en memoria) y un swapfile en disco como red de seguridad.
zram¶
zram comprime la memoria en RAM para reducir el uso de swap en disco. Analiza la RAM disponible antes de decidir qué PERCENT usar (más útil cuanta menos RAM haya):
free -h
top -bn1 | head -20
-
Comprobar si ya está instalado:
dpkg -l | grep zram-tools -
Instalar:
sudo apt install zram-tools -
Configurar:
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. -
Aplicar y verificar:
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. En vez de tocar /etc/fstab y /etc/sysctl.conf (ficheros de sistema ya existentes), la activación en el arranque se hace con una unidad de systemd y el ajuste de swappiness con un drop-in de sysctl — ambos ficheros nuevos. Analiza el disco y la RAM para decidir el tamaño del swapfile:
df -h /
free -h
-
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 -
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:
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.