Cambiar el tamaño del archivo para el intercambio de memoria en Ubuntu

Publicado por P. Ruiz en

Como recordarás, el archivo de paginación es una porción del disco duro que el sistema utiliza como memoria virtual adicional. Su cometido principal consiste en complementar a la memoria RAM cuando ésta resulta insuficiente.

En estos casos, los datos que no se están usando de forma activa, se trasladan al espacio de intercambio (al archivo de paginación), liberando memoria RAM para tareas más urgentes. Además, el espacio de intercambio es esencial para funciones como la hibernación, porque es ahí donde se guarda el estado completo de la memoria, antes de apagar el sistema.

En versiones recientes de Ubuntu, el área de intercambio utiliza un archivo, ubicado en el directorio raíz del sistema, que se llama de forma genérica swapfile. Sin embargo, en otras distribuciones, o en versiones más antiguas de Ubuntu, se utiliza para el mismo fin una partición específica.

Entonces, te estarás preguntando ¿para qué puede ser útil cambiar el tamaño del archivo swapfile? Pues la verdad es que se me ocurren varias respuestas:

  1. Porque has aumentado el tamaño de tu memoria RAM y el tamaño de tu archivo de paginación es innecesariamente grande. Reduciéndolo, liberas espacio en el disco.

  2. Porque has reducido el tamaño de tu memoria RAM y necesitas aumentar el tamaño de tu archivo de paginación, con el fin de mantener el rendimiento del sistema.

  3. Porque has instalado una aplicación o tienes una carga de trabajo con uso intensivo de memoria (edición de video, renderizado 3D, bases de datos grandes, …).

    Lo mismo ocurrecuando el sistema ha cambiado su carga de trabajo con el tiempo y debemos reevaluar el uso de la memoria virtual.

  4. Porque estás configurando la hibernación de tu sistema y el tamaño del archivo de paginación es inferior que el de la memoria RAM.

En cualquier caso, si estás leyendo este artículo, supongo que tienes tus propias razones para llevar a cabo esta tarea, por lo que no te entretengo más.

Lo primero será averiguar dónde se encuentra el archivo de intercambio, cómo se llama y qué tamaño tiene en este momento. Para lograrlo, basta con ejecutar este comando:

swapon --show

Escribimos el comando y pulsamos la tecla Intro.

cambiar-el-tamano-del-archivo-para-el-intercambio-de-memoria-en-Ubuntu-001

La respuesta nos informa sobre el nombre del archivo y su ubicación (/swap.img), su tipo (verificamos que es file y no partition), su tamaño total (en este caso 3,8GB), el tamaño usado en estos mementos (0Bytes) y la prioridad de uso, que solo se aplica cuando tenemos varias zonas de intercambio habilitadas.

A continuación, para comenzar a trabajar, necesitamos evitar que el sistema utilice el archivo. Así evitamos que interfiera con nuestra tarea. Lo conseguimos con la siguiente orden:

sudo swapoff /swap.img

Observa que el nombre del archivo debe corresponder con el que obtuvimos en el comando anterior.

Si el comando no ofrece ningún resultado, es que ha funcionado correctamente.

cambiar-el-tamano-del-archivo-para-el-intercambio-de-memoria-en-Ubuntu-002

Ahora ya estamos listos para crear un nuevo archivo de paginación, con el tamaño que necesitemos. Para lograrlo, aplicamos el siguiente comando:

sudo dd if=/dev/zero of=/swap.img bs=1G count=6

Como la sintaxis es más compleja, te explico su contenido:

  • La orden dd copia archivos bit a bit.

  • El argumento if indica el origen de la copia. En nuestro caso /dev/zero, que proporciona ceros como entrada.

  • El argumento of indica el destino de la copia. En nuestro caso, el nuevo archivo de intercambio.

  • El argumento bs establece el tamaño de bloque con el que vamos a trabajar (en nuestro caso, 1GB).

  • Finalmente, count indica cuántos bloque escribiremos. En nuestro caso 6, pero deberás ajustarlo a tus necesidades.

Por lo tanto, para nuestro ejemplo, el nuevo archivo de paginación tendrá un tamaño de 6GB.

Como ves, el comando nos muestra el resultado en múltiplos de 1000 y en múltiplos de 1024. Así no hay posible confusión.

cambiar-el-tamano-del-archivo-para-el-intercambio-de-memoria-en-Ubuntu-003

A continuación, necesitamos cambiar los permisos del archivo, para que solo el propietario tenga permisos de lectura y escritura. Como lo hemos creado con sudo, el propietario será root. El comando que necesitamos es este:

sudo chmod 600 /swap.img

Como antes, si el comando no ofrece ningún resultado, es que ha funcionado correctamente.

cambiar-el-tamano-del-archivo-para-el-intercambio-de-memoria-en-Ubuntu-004

Como habrás deducido, hemos creado un archivo nuevo, que ha sustituido al anterior, aunque hayamos mantenido el mismo nombre. Lo siguiente será decirle al sistema operativo que ese archivo debe ser un archivo de paginación. El comando que se encarga de preparar un archivo o partición para que actúe como espacio de intercambio es mkswap. Por lo tanto, el comando a ejecutar será este:

sudo mkswap /swap.img

El comando nos devuelve los datos del nuevo archivo, incluido el UUID y el tamaño

cambiar-el-tamano-del-archivo-para-el-intercambio-de-memoria-en-Ubuntu-005

Con esto, estaremos listos para volver a activar la nueva área de intercambio y comprobar que el sistema la reconoce sin problemas.

sudo swapon /swap.img

De nuevo, comprobamos que el comando se ha ejecutado correctamente.

cambiar-el-tamano-del-archivo-para-el-intercambio-de-memoria-en-Ubuntu-006

Si ahora ejecutamos el comando del principio, podremos comprobar si el nuevo archivo está en uso:

swapon --show

… Y obtenemos un resultado equivalente al del principio.

cambiar-el-tamano-del-archivo-para-el-intercambio-de-memoria-en-Ubuntu-007

Sin embargo, como puedes ver en la imagen, comprobamos que ahora el tamaño del área de intercambio es de 6GB.

Podríamos pensar que el trabajo está terminado, pero vamos a hacer una última comprobación, para asegurarnos de que todo siga funcionando después del próximo reinicio del sistema. Para ello, necesitamos comprobar la configuración del archivo /etc/fstab. Para ello, usaremos el editor nano:

sudo nano /etc/fstab

Escribimos el comando y pulsamos la tecla Intro.

cambiar-el-tamano-del-archivo-para-el-intercambio-de-memoria-en-Ubuntu-008

Cuando se muestre el contenido del archivo, comprobamos si los datos relativos al área de intercambio son correctos. Según esté construida la definición de este espacio, puede ser necesario realizar cambios (por ejemplo sustituir el UUID original por el que obtuvimos en el paso 5).

Sin embargo, en el caso de mi sistema, puedo dejarlo todo como está. Aún así, te voy a contar brevemente lo que significa cada elemento, por si te ayuda en la configuración de tu equipo:

  • /swap.img: Es el nombre del archivo que usamos como área de intercambio, incluida la ruta.

  • none: Es el punto de montaje que, en el caso del área de intercambio, no se requiere. Por eso se utiliza none.

  • swap: Es el tipo de sistema de archivos.

  • sw: A continuación vienen las opciones para el sistema de archivos. En este caso, sw indica que el espacio de intercambio debe montarse al inicio.

  • Por último, los dos valores a cero representan campos que controlan el orden de verificación del sistema de archivos durante el arranque.  En el caso del área de intercambio, estos valores suelen ser cero.

Como todo es correcto, pulsamos Ctrl + X para salir del editor.

cambiar-el-tamano-del-archivo-para-el-intercambio-de-memoria-en-Ubuntu-009

Y con esto hemos completado el objetivo del artículo. Espero que te haya resultado útil.