Cómo Crear Memoria de Intercambio en Linux

Para crear un archivo de intercambio en Linux, prepara un archivo en tu almacenamiento, inicialízalo con mkswap, y luego actívalo con swapon. El intercambio ayuda a reducir la presión de la memoria, pero es más lento que la RAM y no resuelve todos los problemas de escasez de memoria ni garantiza el funcionamiento normal de los programas.

¿Qué es el intercambio?

El intercambio es un espacio que permite que parte de las páginas de memoria en uso se coloquen en el almacenamiento. Puedes usar un archivo de disco o una partición separada. Este artículo explica cómo agregar un archivo, y los 2 GiB en el ejemplo son con fines de práctica. El tamaño requerido debe determinarse considerando la RAM, la carga de trabajo, el espacio disponible y si se utiliza la hibernación.

El sistema puede estar usando intercambio ya. Verifica los elementos actualmente activados y el estado de la memoria con el siguiente comando.

swapon --show
free -h

Verifica el nombre, el tamaño y el uso en swapon --show, y observa el uso total en la fila Swap de free -h. Incluso si aumentas el intercambio, el rendimiento puede disminuir si hay un acceso frecuente al almacenamiento. Si la memoria es constantemente insuficiente, también considera la carga de trabajo y la expansión de RAM.

Cosas que revisar antes de comenzar

El siguiente procedimiento es un ejemplo para Linux usando herramientas GNU y util-linux, donde el sistema de archivos raíz es el común ext4 y tiene suficiente espacio libre. Se requieren privilegios de administrador. Los contenedores o servidores administrados pueden restringir la activación de swap, por lo que primero verifique las políticas de operación.

findmnt -T / -o TARGET,FSTYPE,SOURCE,OPTIONS
df -h /

Verifique el tipo de sistema de archivos y el espacio disponible. Además del archivo de swap de 2 GiB, deje suficiente espacio libre para la operación normal. No use la ruta de ejemplo /swap-manualfactory si ya existe un archivo o enlace simbólico allí. Reinicializar o sobrescribir un archivo de swap existente puede causar pérdida de datos y problemas en un sistema en funcionamiento.

Btrfs tiene restricciones separadas relacionadas con Copy-on-Write y snapshots, por lo que no aplique directamente el procedimiento de ext4 que se indica a continuación. Para métodos y condiciones específicos de creación en Btrfs, consulte el documentación del archivo de intercambio de Btrfs. Los sistemas de archivos de red u otros sistemas de archivos también pueden tener diferentes condiciones de soporte.

Creación y activación de un archivo de intercambio

El siguiente es un ejemplo de creación de un archivo de 2 GiB cuando /swap-manualfactory no existe. El conv=excl en GNU dd fallará si el destino ya existe, evitando la sobrescritura. Si falla o se interrumpe, no continúe con el siguiente paso; verifique la causa y el archivo generado.

sudo dd if=/dev/zero of=/swap-manualfactory bs=1M count=2048 conv=excl status=progress

Si el comando tiene éxito, verifique el tamaño y la ruta del archivo, configúrelo para que solo el administrador pueda leerlo y escribirlo, y luego inicialícelo como un área de intercambio. mkswap modifica el archivo especificado, así que asegúrese de verificar que la ruta sea el archivo que acaba de crear.

sudo ls -lh /swap-manualfactory
sudo chmod 600 /swap-manualfactory
sudo mkswap /swap-manualfactory

Solo ejecute el siguiente paso si cada paso anterior tiene éxito. Después de activar con el comando a continuación, verifique que la nueva ruta aparezca en la lista.

sudo swapon /swap-manualfactory
swapon --show
free -h

El tamaño de archivo mostrado puede no coincidir exactamente con el tamaño del archivo creado debido al encabezado de intercambio y otros factores. Si swapon falla, verifique el error y no lo agregue a la configuración de inicio. Un archivo de intercambio no debe tener agujeros y, dependiendo del sistema de archivos, un archivo creado con fallocate puede no ser adecuado. El manual util-linux swapon explica las restricciones para cada sistema de archivos.

Activarlo después del arranque

Solo agregue elementos a /etc/fstab después de activarlo correctamente. Dado que este archivo también contiene otras configuraciones de montaje, haga una copia de seguridad antes de editarlo y asegúrese de que las rutas no dupliquen las entradas de intercambio existentes. Si la ruta de respaldo a continuación ya existe, elija un nombre nuevo diferente.

sudo cp -a -n /etc/fstab /etc/fstab.before-swap
sudo nano /etc/fstab

Mantenga el contenido existente en el editor y agregue la línea a continuación, luego guarde. Si creó una ruta de ejemplo con un nombre diferente, use la ruta real.

/swap-manualfactory none swap defaults 0 0

Después de guardar, verifique nuevamente el contenido del archivo y, en los sistemas donde esté disponible, revise la configuración con el siguiente comando. Esta verificación no garantiza un reinicio exitoso.

sudo findmnt --verify --verbose
sudo systemctl daemon-reload

daemon-reload hace que los sistemas que usan systemd recarguen la configuración modificada. Si hay errores de validación, corríjalos y asegúrese de no haber cambiado accidentalmente otras entradas. Reinicie en un momento de mantenimiento apropiado y luego confirme con swapon --show que el archivo ha sido reactivado. También puede verificar los procedimientos de registro y validación en Documentación de Gestión de Swap de Red Hat.

Desactivar y revertir

Antes de apagar el intercambio, verifique el uso y la memoria disponible con swapon --show y free -h. Si no hay suficiente espacio para mover las páginas en uso a otra memoria o swap, la desactivación puede fallar o poner tensión en el sistema. En un sistema en funcionamiento, proceda después de asegurar la capacidad disponible y el tiempo de mantenimiento.

sudo swapoff /swap-manualfactory
swapon --show

Asegúrese de que el elemento objetivo ya no esté en la lista activa. Para evitar que se reactive al arrancar, solo elimine la línea agregada por esta operación en /etc/fstab y, en un entorno systemd, ejecute sudo systemctl daemon-reload. Para eliminar el archivo de swap, primero confirme que la desactivación fue exitosa y que la línea de configuración añadida fue eliminada, luego elimine solo el archivo que creó. Deje los demás elementos de swap o configuraciones existentes tal como están.