Crear y activar un archivo de intercambio (Swap) en Linux

CompTIABeginner
Practicar Ahora

Introducción

En esta práctica de laboratorio, aprenderás la tarea administrativa fundamental de crear y activar un archivo de intercambio (swap) en Linux. Este proceso permite expandir la memoria virtual de tu sistema, algo crucial cuando la memoria RAM física resulta insuficiente. Obtendrás experiencia práctica con utilidades de línea de comandos esenciales para gestionar los recursos del sistema de manera eficiente, ofreciendo una alternativa flexible a la creación de una partición de intercambio dedicada.

Recorrerás todo el flujo de trabajo, comenzando con la revisión del espacio de intercambio actual mediante el comando swapon. A continuación, crearás un archivo destinado al área de intercambio con dd, le darás el formato adecuado para su uso como swap con mkswap y, finalmente, lo activarás. Para concluir la práctica, verificarás que el nuevo archivo de intercambio se haya configurado correctamente y sea reconocido por el sistema.

Esta es una Práctica Guiada, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y ganar experiencia práctica. Los datos históricos muestran que esta es una práctica de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de valoraciones positivas del 99% por parte de los alumnos.

Revisar el espacio de intercambio actual con swapon

En este paso, aprenderás a comprobar la configuración actual del espacio de intercambio en tu sistema Linux. El espacio de intercambio es una porción del disco duro que se utiliza como memoria virtual cuando la memoria física (RAM) está llena. Esto permite que el sistema ejecute más aplicaciones de las que cabrían únicamente en la RAM física.

Para empezar, utilizarás el comando swapon, una utilidad para especificar dispositivos y archivos para la paginación e intercambio. Lo usaremos con la opción --show para mostrar un resumen de los dispositivos de intercambio activos. Dado que la gestión del espacio de intercambio es una tarea administrativa, es necesario usar sudo para ejecutar el comando con privilegios de superusuario.

En tu terminal, que ya se encuentra en el directorio ~/project, ejecuta el siguiente comando:

sudo swapon --show

Verás una salida similar a la siguiente. Los detalles, como el nombre (NAME) y el tamaño (SIZE), pueden variar según la configuración inicial de tu máquina virtual. También es posible que no haya espacio de intercambio configurado, en cuyo caso este comando no producirá ninguna salida.

NAME        TYPE      SIZE USED PRIO
/dev/loop12 partition   2G   0B   -2

Desglosemos la salida:

  • NAME: El nombre del dispositivo o archivo de intercambio. En este ejemplo, es un dispositivo de bucle (/dev/loop12).
  • TYPE: El tipo de espacio de intercambio, que puede ser una partición (partition) o un archivo (file).
  • SIZE: El tamaño total del espacio de intercambio.
  • USED: La cantidad de espacio de intercambio que se está utilizando actualmente.
  • PRIO: La prioridad del espacio de intercambio. Si tienes varios espacios de intercambio, se utilizará primero el que tenga la prioridad más alta.

Al ejecutar este comando, has revisado con éxito la configuración de intercambio actual del sistema. En los siguientes pasos, aprenderás a crear y activar un nuevo archivo de intercambio, que es una forma flexible de añadir espacio de swap sin necesidad de reparticionar el disco.

Crear un archivo para el espacio de intercambio con dd

En el paso anterior, aprendiste a visualizar la configuración de intercambio existente. Ahora, crearás un archivo dedicado que se utilizará como nuevo espacio de intercambio. Usar un archivo para el swap es un método flexible porque no requiere modificar las particiones de tu disco duro.

Utilizaremos el comando dd, una potente utilidad para copiar y convertir datos. Es ideal para esta tarea porque puede crear un archivo de un tamaño preciso leyendo de un dispositivo especial del sistema llamado /dev/zero, que es un flujo infinito de caracteres nulos (ceros).

Para crear un archivo de 250MB llamado swapfile en tu directorio actual (~/project), ejecuta el siguiente comando. Necesitas usar sudo porque el archivo será gestionado eventualmente por el sistema.

sudo dd if=/dev/zero of=swapfile bs=1M count=250

Analicemos este comando:

  • sudo: Ejecuta el comando con privilegios de root.
  • dd: La utilidad de línea de comandos que estamos usando.
  • if=/dev/zero: Especifica el archivo de entrada (input file). /dev/zero es un archivo especial que genera un flujo de caracteres nulos.
  • of=swapfile: Especifica el archivo de salida (output file). Esto crea un archivo llamado swapfile en el directorio actual.
  • bs=1M: Establece el tamaño del bloque (block size) en 1 Megabyte. dd leerá y escribirá datos en fragmentos de 1MB.
  • count=250: Copia 250 bloques. Dado que nuestro tamaño de bloque es 1M, esto resulta en un archivo de 250 * 1M = 250MB.

Tras ejecutar el comando, verás una salida que confirma que la operación se realizó correctamente:

250+0 records in
250+0 records out
262144000 bytes (262 MB, 250 MiB) copied, 0.270222 s, 970 MB/s

Has creado con éxito un archivo de 250MB. En el siguiente paso, darás formato a este archivo para que sea reconocible como espacio de intercambio y establecerás los permisos adecuados para el mismo.

Formatear el archivo como Swap con mkswap

En el paso anterior, creaste un archivo llamado swapfile lleno de ceros. Sin embargo, el sistema operativo aún no lo reconoce como un área de intercambio válida. Necesitas formatearlo específicamente para este propósito. Aquí es donde entra en juego el comando mkswap.

El comando mkswap configura un área de intercambio de Linux en un dispositivo o en un archivo. Escribe una firma especial en el archivo que el kernel puede identificar.

Primero, vamos a formatear el swapfile que creaste. En tu terminal, ejecuta el siguiente comando:

sudo mkswap swapfile

Después de ejecutar el comando, verás una salida indicando que el espacio de intercambio ha sido configurado. El sistema asignará un identificador único (UUID) a tu nueva área de intercambio. También es posible que veas una advertencia sobre permisos inseguros, que solucionaremos a continuación.

mkswap: swapfile: insecure permissions 0644, fix with: chmod 0600 swapfile
Setting up swapspace version 1, size = 250 MiB (262139904 bytes)
no label, UUID=aabf0226-9f7b-47f5-9ad3-10248552795c

Nota importante de seguridad: Un archivo de intercambio puede contener potencialmente datos sensibles de la memoria de tu ordenador. Por razones de seguridad, es crucial que solo el usuario root tenga permiso para leer y escribir en él. Otros usuarios del sistema no deben tener ningún tipo de acceso.

Para establecer los permisos correctos, utilizaremos el comando chmod. Configuraremos los permisos a 600, lo que otorga al propietario (root) acceso de lectura y escritura, y revoca todo acceso para cualquier otra persona.

Ejecuta el siguiente comando para asegurar tu swapfile:

sudo chmod 600 swapfile

Este comando no producirá ninguna salida si se ejecuta correctamente. Ahora has formateado con éxito el swapfile y asegurado sus permisos. Ya está listo para ser activado y utilizado por el sistema, lo cual harás en el siguiente paso.

Activar el nuevo archivo de intercambio con swapon

Has creado y preparado con éxito un swapfile. Ahora está formateado y tiene los permisos correctos, pero el kernel de Linux aún no lo está utilizando como memoria virtual. En este paso, activarás el archivo de intercambio, poniéndolo a disposición del sistema.

Para ello, volverás a utilizar el comando swapon. En el primer paso, lo usaste con la opción --show para ver la configuración actual. Esta vez, proporcionarás la ruta de tu swapfile como argumento para habilitarlo.

En tu terminal, ubicado en ~/project, ejecuta el siguiente comando para activar tu nuevo espacio de intercambio:

sudo swapon swapfile

Repasemos el comando:

  • sudo: Esto es necesario porque activar el espacio de intercambio es una operación a nivel de sistema que requiere privilegios de root.
  • swapon: El comando para habilitar dispositivos y archivos para el intercambio.
  • swapfile: El nombre del archivo que deseas activar. Como te encuentras en el directorio ~/project donde se ubica el archivo, no es necesario especificar la ruta completa.

Si el comando tiene éxito, no producirá ninguna salida. Este es el comportamiento estándar de muchos comandos de Linux: la falta de noticias es una buena noticia.

Tu swapfile ahora está activo y el sistema lo está utilizando como memoria virtual adicional. En el paso final, verificarás que el nuevo espacio de intercambio se haya añadido correctamente a los recursos de memoria totales del sistema.

Verificar la configuración del nuevo espacio de intercambio

¡Felicidades! Has creado, formateado y activado con éxito un nuevo archivo de intercambio. En este paso final, verificarás que el sistema reconoce y está listo para usar este nuevo recurso. Esto confirma que todos los pasos anteriores se completaron correctamente.

Comencemos usando el mismo comando del principio de esta práctica, swapon --show. Al ejecutarlo ahora, debería mostrarse una lista actualizada de los espacios de intercambio activos, incluyendo el swapfile que acabas de añadir.

En tu terminal, ejecuta el siguiente comando:

sudo swapon --show

La salida mostrará ahora dos entradas: la partición de intercambio original (si existía) y tu nuevo archivo de intercambio. Observa la nueva línea para /home/labex/project/swapfile.

NAME                         TYPE      SIZE USED PRIO
/dev/loop12                  partition   2G   0B   -2
/home/labex/project/swapfile file      250M   0B   -3

Como puedes ver, el sistema reconoce ahora un espacio de intercambio de tipo file de 250M. También se le ha asignado una prioridad (PRIO). El kernel utilizará primero el espacio de intercambio con la prioridad más alta.

Otro comando útil para comprobar el uso de la memoria y el intercambio es free. El uso de la opción -h (--human) hace que la salida sea más fácil de leer al mostrar los tamaños en megabytes (M) o gigabytes (G).

Ejecuta el comando free -h:

free -h

Verás un resumen de la memoria del sistema. Presta especial atención a la línea Swap.

               total        used        free      shared  buff/cache   available
Mem:           3.5Gi       608Mi       732Mi        16Mi       2.2Gi       2.7Gi
Swap:          2.2Gi          0B       2.2Gi

El valor total en la línea Swap debería reflejar ahora el tamaño combinado del espacio de intercambio original y tu nuevo archivo de 250MB. Por ejemplo, si empezaste con 2G de swap, el nuevo total será de aproximadamente 2.2G.

Has añadido y verificado con éxito un nuevo archivo de intercambio en tu sistema Linux, proporcionándole más memoria virtual para trabajar.

Resumen

En esta práctica de laboratorio, aprendiste a crear y activar un archivo de intercambio para añadir memoria virtual a un sistema Linux. Comenzaste revisando la configuración del espacio de intercambio existente mediante el comando sudo swapon --show para comprender el estado actual de la memoria virtual del sistema e interpretar su salida.

Tras la revisión inicial, procediste a crear un nuevo archivo de intercambio utilizando el comando dd para asignar el espacio de disco deseado. Luego, formateaste este archivo para su uso como swap con mkswap y lo activaste con el comando swapon, poniéndolo a disposición del sistema de inmediato. Finalmente, verificaste que el nuevo archivo de intercambio se añadió y activó correctamente ejecutando de nuevo swapon --show, confirmando así la configuración actualizada.