18 Sep
18Sep

A veces tenemos un buen equipo con un procesador eficiente y suficiente memoria RAM (8 Gb o más) y al instalar nuestra distribución GNU/Linux preferida no consideramos la idea de crear un archivo de memoria de intercambio o SWAP para cuando nos quedemos cortos de memoria física entonces, nuestro equipo echa mano de esa parte del disco duro que dejamos dedicada para tal fin y no colgar los procesos que tengamos abiertos.

Pero como no la creamos en la instalación y vemos que nos hace falta porque tenemos poca memoria física (RAM) hay dos formas de hacerlo. Una es con la herramienta de GParted desde un Live USB y otra desde la misma terminal de nuestra distribución como lo detallo a continuación.

Es importante mencionar que no puede usar un archivo de intercambio con un sistema de archivos BTRFS

Además, la hibernación (en disco) ya no funcionará de forma inmediata cuando se utilice un archivo de intercambio. La mayoría de las distribuciones de Linux usan suspender (a RAM) en lugar de hibernar (a disco) de forma predeterminada. Si necesita habilitar la hibernación con un archivo de intercambio, al final encontrará información. Suspender (a ram) no se ve afectado por esto.

Todo se hace como root, para eso en la terminal se coloca:

$ su -

Lo primero que haremos es ver cuánto espacio tenemos disponible en nuestro disco, lo miramos… por ejemplo con el comando:

# df

Desde la consola o terminal (en el ejemplo creamos una swap de 4GB)

# fallocate -l 4G /swapfile

Así hemos creado un archivo de 4 gigas en la partición /root llamado swapfile, ¿hasta ahí sencillo no? Ahora si quieres ver las características del archivo, ejecuta:

# ls -lh /swapfile

Ejemplo de salida: -rw------- 1 root root 4,0G sep 18 13:33 /swapfile

Una vez que tenemos el archivo creado procedemos a activarlo. Primero le concedemos permisos. Use esto para que otros usuarios no puedan leer su archivo de intercambio, que puede contener información confidencial.

# chmod 600 /swapfile

Verificamos con:

# ls -lh /swapfile

Ejemplo de salida: -rw------- 1 root root 4,0G sep 18 13:34 /swapfile

Formatee el archivo recién creado como intercambio. Indicamos al sistema que configure el nuevo archivo swap:

# mkswap /swapfile

Habilite el archivo de intercambio recién creado. Activamos con:

# swapon /swapfile

Si la terminal le devuelve lo siguiente:

# swapon: /swapfile: swapon failed: Invalid argument

entonces utilizar el siguiente comando:

# dd if=/dev/zero of=/swapfile count=4096 bs=1MiB

Luego:

# chmod 600 /swapfile

# mkswap /swapfile

# swapon /swapfile

Ejecutamos nano:

# nano /etc/fstab

Y al final adicionamos esta línea:

/swapfile swap swap sw 0 0

Verificamos que la swap ya está activa:

# swapon -s

Ejemplo de salida:

Bien, en estos momentos nuestra swap está funcionando correctamente, pero… en modo temporal, por tanto en el momento que reiniciemos el sistema, desaparecerá nuestra swap.

Para crear una swap de manera permanente editamos el archivo /etc/fstab como expliqué arriba:

# nano /etc/fstab

Y en archivo que se abre, al final del archivo agregar la siguiente linea:

/swapfile none swap sw 0 0

Guarda (Ctrl + O) luego Enter y cierra el editor (Ctrl + X) luego Enter, ahora cuando se reinicie el sistema el archivo swapfile estará montado y activo como si fuera una swap. Nuevamente, recuerde no modificar nada más en el archivo /etc/fstab. ¡Cambiar cualquier otra cosa en este archivo puede evitar que su sistema se inicie!

Si está usando systemd este paso es necesario para las distribuciones de GNU/Linux basadas en Ubuntu y Debian (no estoy seguro de que otros también lo necesiten).

Necesita editar el archivo /etc/initramfs-tools/conf.d/resume y comentar (agregue un # al principio de la línea) la línea RESUME = UUID = .... En la prueba que se hizo, no hacer esto resultó en unos 15-20 segundos de tiempo de arranque adicional. El comando systemd-analyse blame no dio ninguna información sobre por qué está sucediendo, así que tuve que investigar un poco para descubrir que esto es lo que está causando el retraso en el arranque.

Para nuestra fortuna, mostró un mensaje: "Gave up waiting for suspend/resume device" (Renuncié a la espera de suspender/reanudar el dispositivo) durante un breve momento durante el arranque, lo que puede deberse a no tener el UUID de intercambio correcto en /etc/initramfs-tools/conf.d/resume

Este archivo se usa cuando se reanuda desde la hibernación y causó retrasos en el arranque porque ya no tenemos una partición de intercambio. Para comentar esta línea en /etc/initramfs-tools/conf.d/resume, todo lo que tiene que hacer es ejecutar el siguiente comando:

$ sudo sed -i 's/^RESUME=UUID/#RESUME=UUID/g' /etc/initramfs-tools/conf.d/resume

También necesitará actualizar initramfs y después de eso habrá terminado:

$ sudo update-initramfs -u

Espero les sea de utilidad y dejen sus comentarios.

Comentarios
* No se publicará la dirección de correo electrónico en el sitio web.
ESTE SITIO FUE CONSTRUIDO USANDO