Crear y activar un archivo de intercambio en Linux

LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá la tarea administrativa esencial de crear y activar un archivo de intercambio en Linux. Este proceso permite aumentar la memoria virtual del sistema, algo fundamental cuando la RAM física es insuficiente. Obtendrá experiencia práctica con utilidades básicas de línea de comandos para administrar los recursos del sistema de forma eficaz. Un archivo de intercambio ofrece una alternativa flexible a la creación de una partición de intercambio dedicada.

Seguirá el flujo de trabajo completo. Primero, revisará el espacio de intercambio actual mediante el comando swapon. Después, creará un archivo para el área de intercambio con dd, lo formateará para utilizarlo como intercambio con mkswap, lo activará y configurará Linux para que vuelva a activarlo después de un reinicio. Para finalizar, comprobará que el nuevo archivo de intercambio está configurado correctamente y que el sistema lo reconoce.

Revisar el espacio de intercambio actual con swapon

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

Para comenzar, utilizará el comando swapon, una utilidad que permite especificar dispositivos y archivos para la paginación y el intercambio. Lo ejecutará con la opción --show para mostrar un resumen de los dispositivos de intercambio activos. Como administrar el espacio de intercambio es una tarea administrativa, debe utilizar sudo para ejecutar el comando con privilegios de root.

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

sudo swapon --show

Verá un resultado similar al siguiente. Los detalles, como NAME y SIZE, pueden variar según la configuración inicial de su máquina virtual. También es posible que no haya ningún espacio de intercambio configurado; en ese caso, este comando no mostrará ningún resultado.

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

Este es el significado de cada campo:

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

Al ejecutar este comando, habrá revisado correctamente la configuración actual del intercambio del sistema. En los pasos siguientes, aprenderá a crear y activar un nuevo archivo de intercambio, una forma flexible de añadir espacio de intercambio sin volver a particionar el disco.

Crear un archivo para el espacio de intercambio con dd

En este paso, creará un archivo dedicado que se utilizará como nuevo espacio de intercambio. Utilizar un archivo de intercambio es un método flexible porque no requiere volver a particionar el disco duro.

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

Para crear un archivo de 250 MB llamado swapfile en el directorio actual (~/project), ejecute el comando siguiente. Necesita sudo porque el sistema administrará este archivo posteriormente.

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

Este es el significado de cada parte del comando:

  • sudo: ejecuta el comando con privilegios de root.
  • dd: utilidad de línea de comandos que está utilizando.
  • if=/dev/zero: especifica el archivo de entrada (input file). /dev/zero es un archivo especial que produce un flujo de caracteres nulos.
  • of=swapfile: especifica el archivo de salida (output file). 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á los datos en bloques de 1 MB.
  • count=250: copia 250 bloques. Como el tamaño de bloque es 1M, el resultado es un archivo de 250 * 1M = 250 MB.

Después de ejecutar el comando, verá un resultado 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

Ahora ha creado correctamente un archivo de 250 MB. En el paso siguiente, formateará este archivo para que el sistema lo reconozca como espacio de intercambio y establecerá los permisos adecuados.

Formatear el archivo como intercambio con mkswap

En este paso, formateará el archivo swapfile que creó para que el sistema operativo lo reconozca como un área de intercambio válida. Para ello utilizará el comando mkswap.

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

Primero, formatee el archivo swapfile que creó. En su terminal, ejecute el comando siguiente:

sudo mkswap swapfile

Después de ejecutar el comando, verá un resultado que indica que el espacio de intercambio se ha configurado. El sistema asignará un identificador único (UUID) a la nueva área de intercambio. También puede aparecer una advertencia sobre permisos inseguros, que corregirá 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 datos confidenciales de la memoria del equipo. Por motivos de seguridad, es fundamental que solo el usuario root tenga permiso para leerlo y escribir en él. Los demás usuarios del sistema no deben tener ningún acceso.

Para establecer los permisos correctos, utilizará el comando chmod. Establecerá los permisos en 600, lo que concede al propietario (root) acceso de lectura y escritura y revoca todo el acceso para los demás usuarios.

Ejecute el comando siguiente para proteger el archivo swapfile:

sudo chmod 600 swapfile

Este comando no mostrará ningún resultado si se ejecuta correctamente. Ahora ha formateado correctamente el archivo swapfile y ha protegido sus permisos. El sistema ya puede activarlo y utilizarlo; eso es lo que hará en el paso siguiente.

Activar el nuevo archivo de intercambio y hacerlo persistente

Ha creado y preparado correctamente el archivo swapfile. Ya está formateado y tiene los permisos adecuados, pero el kernel de Linux todavía no lo utiliza como memoria virtual. En este paso, activará el archivo de intercambio para ponerlo a disposición del sistema.

Para ello, volverá a utilizar el comando swapon. En el primer paso, lo utilizó con la opción --show para consultar la configuración actual. Esta vez, proporcionará la ruta del archivo swapfile como argumento para activarlo.

En su terminal, situada en ~/project, ejecute el comando siguiente para activar el nuevo espacio de intercambio:

sudo swapon swapfile

Revise las partes principales del comando:

  • sudo: es necesario porque activar el espacio de intercambio es una operación del sistema que requiere privilegios de root.
  • swapon: comando que activa dispositivos y archivos para el intercambio.
  • swapfile: nombre del archivo que desea activar. Como se encuentra en el directorio ~/project, donde está ubicado el archivo, no necesita especificar la ruta completa.

Si el comando se ejecuta correctamente, no mostrará ningún resultado. Este comportamiento es habitual en muchos comandos de Linux: la ausencia de mensajes suele indicar que la operación tuvo éxito.

El comando swapon activa el archivo únicamente durante el arranque actual. Para que Linux lo active automáticamente después de un reinicio, añada una entrada con la ruta absoluta del archivo de intercambio a /etc/fstab:

echo '/home/labex/project/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Los seis campos identifican el archivo de intercambio, utilizan none porque el intercambio no tiene punto de montaje, seleccionan el tipo swap y la opción estándar sw, y desactivan los volcados y las comprobaciones del sistema de archivos mediante los dos últimos ceros.

Ahora el archivo swapfile está activo y configurado para seguir disponible después de los reinicios. En el último paso, comprobará que el nuevo espacio de intercambio se ha añadido correctamente a los recursos de memoria totales del sistema.

Verificar la configuración del nuevo espacio de intercambio

En este paso, comprobará que el sistema reconoce el nuevo archivo de intercambio después de haberlo creado, formateado, activado y configurado para que persista. Esto confirma que todos los pasos anteriores se completaron correctamente.

Comience utilizando el mismo comando del principio de este laboratorio: swapon --show. Si lo ejecuta ahora, debería mostrar una lista actualizada de los espacios de intercambio activos, incluido el archivo swapfile que acaba de añadir.

En su terminal, ejecute el comando siguiente:

sudo swapon --show

El resultado mostrará ahora dos entradas: la partición de intercambio original, si existía, y el nuevo archivo de intercambio. Observe la nueva línea correspondiente a /home/labex/project/swapfile.

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

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

Otro comando útil para comprobar el uso de la memoria y del intercambio es free. La opción -h (--human) facilita la lectura del resultado, ya que muestra los tamaños en megabytes (M) o gigabytes (G).

Ejecute el comando free -h:

free -h

Verá un resumen de la memoria del sistema. Preste 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 de la línea Swap debería reflejar ahora el tamaño combinado del espacio de intercambio original y del nuevo archivo de 250 MB. Por ejemplo, si comenzó con 2G de intercambio, el nuevo total será aproximadamente 2.2G.

Ha añadido y verificado correctamente un nuevo archivo de intercambio en su sistema Linux. Ahora el sistema dispone de más memoria virtual.

Resumen

En este laboratorio, aprendió a crear y activar un archivo de intercambio para añadir memoria virtual a un sistema Linux. Comenzó revisando la configuración existente del espacio de intercambio mediante el comando sudo swapon --show, con el fin de comprender el estado actual de la memoria virtual del sistema e interpretar su resultado.

Después de la revisión inicial, creó un nuevo archivo de intercambio mediante el comando dd para asignar el espacio de disco necesario. A continuación, formateó el archivo para utilizarlo como intercambio con mkswap, lo activó con el comando swapon y lo añadió a /etc/fstab para que Linux pueda volver a activarlo después de un reinicio. Finalmente, ejecutó de nuevo swapon --show para comprobar que el nuevo archivo de intercambio se había añadido y estaba activo, y confirmó la configuración actualizada.