Cómo crear swapfile en cualquier distribución GNU/Linux?

Que es la memoria SWAP?
A grandes rasgos, una memoria virtual SWAP utiliza una parte del disco duro como si fuese memoria RAM.
Swap es espacio en un disco reservado para su uso como memoria virtual. Cuando un equipo con GNU/Linux se queda sin memoria, el kernel puede mover procesos inactivos al espacio de intercambio para dejar espacio para procesos activos en la memoria principal o memoria RAM.
Como se crea una memoria virtual swap?
Las memorias virtuales SWAP son de gran ayuda, sobre todo, cuando nuestros recursos de hardware escasean. Estas son creadas utilizando una partición con un tamaño indicado (según las necesidades), para que posteriormente sea signado en su totalidad como área de intercambio.
Como podemos observar en la imagen, en este equipo se creo una partición /dev/sda4
de poco menos de 1G y fue asignada en su totalidad como memoria virtual SWAP. Pero, que sucede cuando no hemos creado o no contamos una partición especial para SWAP?
Bueno, una de las opciones mas inmediatas es la de crear un archivo para que éste sea asignado como memoria virtual en nuestro equipo, un archivo de intercambio.
Que es un archivo de intercambio?
El archivo de intercambio o swapfile no es mas que un archivo que creamos para que sea utilizado como memoria virtual. De forma predeterminada, una partición de intercambio no está presente en nuestros equipos, pero se puede agregar el intercambio a un equipo asignándolo a un archivo. (A esta altura es importante que se distinga partición de intercambio de archivo de intercambio)
El rendimiento de un archivo de intercambio es similar al de una partición de intercambio. Sin embargo, el uso de un archivo de intercambio facilita el control del tamaño de intercambio sin tener que trabajar sobre las particiones. Puedes controlar la agresividad con la que el equipo usa este espacio de intercambio modificando el valor de intercambio del sistema. Es una forma fácil de aumentar la capacidad de respuesta de tu equipo y evitar los problemas con el consumo de la memoria RAM.
Como crear el archivo de intercambio?
Antes de crear un archivo de intercambio, al que le empezaremos a llamar swapfile, debemos saber si en nuestro equipo no hay un área de intercambio ya funcionando. Para ello ejecutamos.
swapon -S
Donde si contamos con una memoria virtual, se nos imprimirá los siguiente:
Y por el contrario:
No nos imprimirá nada a la salida.
Si la respuesta es que no tenemos memoria virtual, comencemos a crear nuestro swapfile.
Creando archivo de intercambio swapfile
Son varios pasos los que vamos a seguir, si bien las guiás carecen de la particularidad de ajustarse a cada necesidad, es importante que entiendas cada etapa para que lo puedas ajustar a la tuya.
Espacio disponible
En primera instancia te recomiendo averiguaremos el espacio disponible en el disco, para saber así si vamos a tener disponibilidad de almacenamiento suficiente para crear el swapfile. Para ello haremos uso de comando df seguido del parámetro -h, siendo este quien nos indicara las unidades de medida de almacenamiento según la Comisión Electrotécnica Internacional (CEI).
df -h
Donde observamos que en la partición /dev/sda3
, donde se encuentra el directorio /
y donde pretendemos crear el SWAPFILE contamos con 19G disponibles, más que suficiente para crear nuestro archivo de intercambio.
Creando swapfile
Para crear nuestro archivo de intercambio o swapfile, haremos uso del comando dd, sin hacer una descripción extensa del comando en cuestión, mostraremos la ejecución de la linea completa y describiremos los parámetros para que puedan jugar con ellos según sus necesidades.
Sintaxis
El comando dd, se corresponde con la siguiente sintaxis:
sudo dd if=$input_data of=$output_data [opciones]
Parámetros para crear SWAPFILE
Con los parámetros If y of, indicamos indicamos que vamos a crear y donde respectivamente. Donde indicaremos:
if=/dev/zero: Para creara un archivo vacío como partición.
of=/swapfile: La ruta absoluta de el directorio donde se creara el SWAPFILE (en este caso /)y nombre del archivo por crear (swapfile).
Parámetros de tamaño de bloques y memoria
bs: Capacidad o tamaño del clúster o bloque de almacenamiento. El tamaño conviene que sea un múltiplo de 4, debido a que el kernel escribe páginas de memoria (memory pages), de 4 kb de tamaño. Si el tamaño no es múltiplo de 4 los últimos kilobytes del archivo pueden ser desperdiciados.
count: Cantidad de veces que el tamaño del clúster indicado por bs, va a ser copiado.
– bs=: 4k
– count=: 1000k
El tamaño de la memoria estará defino por la multiplicación de ambos parámetros, es decir que si usamos los parámetros del ejemplo, se nos creara una memoria de 4.2GB o 3.9GiB.
Entendiendo cada uno de los parámetros y opciones Puedes ajustar todos estos a tus necesidades.
Ejecución
Elegidos los parámetros que vamos a utilizar para crear nuestro SWAPFILE, ejecutamos…
sudo dd if=/dev/zero of=/swapfile bs=4k count=1000k
Este proceso suele tardar un poquito. Dependerá, caro, de los recursos de hardware que dispongas. Una vez concluido, se nos imprimirá en pantalla lo siguiente.
Asignando permisos
El archivo swapfile creado en el paso anterior, necesita permisos de lectura y escritura para llevar adelante su tarea (al igual que una memoria RAM, cuyos tipos de accesos son de lectura/escritura). Para ello, usamos el comando chmod, con el que asignaremos los permisos necesarios. Entonces ejecutamos:
sudo chmod 600 /swapfile
Una vez realizada la ejecución, tendremos los permisos necesarios para seguir trabajando con swapfile.
Haciendo a swapfile un archivo swap
El siguiente paso es muy simple, solo debemos hacer que que nuestro archivo swapfile sea un archivo swap. Para ello solo necesitamos ejecutar la siguiente orden:
sudo mkswap /swapfile
Activando memoria virtual swap
Por ultimo debemos encender nuestra memoria virtual swap, creada con anterioridad. De esta forma la memoria virtual de intercambio quedara activa.
sudo swapon /swapfile
Comprobar que este activa la memoria SWAP
Solo por las dudas vamos a verificar que la memoria se encuentre ya disponible. Haremos uso de un comando ya usado con anterioridad. nos bastara con ejecutar:
swapon -s
Agregar swapfile al fstab
Necesitamos editar el fstab para agregar el swapfile, para ello haremos uso de nuestro editor de texto favorito. y editamos
sudo nano /etc/fstab
y agregamos la siguiente linea /swapfile swap swap defaults 0 0
al fichero de configuración de fstab
Guardamos y ya contamos con nuestra memoria virtual funcionando y debidamente configurada.
Modificando SWAPFILE
Una de las ventajas de crear un archivo de intercambio como memoria virtual, es la facilidad con la que podemos modificarlo sin tener que trabajar con las dimensiones de particiones de unidades de discos.
Desactivar el archivo de intercambio o swapfile actual
En primera instancia debemos apagar el swapfile para que el sistema deje de trabajar con el, de esta forma, si algún proceso en uso se encuentra allí, lo llevara a RAM antes de deshabilitarla.
sudo swapoff -v /swapfile
Eliminamos el archivo de intercambio que tenemos creado
Una ves deshabilitada el SWAPFILE ya podremos eliminarlo. Nos bastaría con ejecutar.
sudo rm /swapfile
Repetimos el proceso de creación de swapfile
Iniciamos el proceso de creado de un swapfile nuevo. Si no vamos a crear ninguno, es necesario eliminar el swapfile del fstab.
Puedes seguirnos en:
Ayudanos a mantener el sitio con una contribución.
Muchas gracias!
Espero sea de utilidad.
Saludos, Cristian Bellini.