Utilizando un archivo como memoria de intercambio (SWAP)

Autor: Maikel Llamaret Heredia Publicado en el sitio de GUTL.

Tiempo atrás, GNU/Linux, se encontraba limitado a utilizar una sola partición de memoria de intercambio de un máximo de 128 MB, algo muy criticado por los detractores del núcleo de Linus Torvalds.

Por fortuna , hoy en día ya no existe dicho límite, y es posible además utilizar cuanta memoria de intercambio sea requerida para satisfacer las necesidades de cualquier sistema.

En ocasiones, luego de instalar nuestro sistema nos vemos en la necesidad de aumentar la memoria SWAP que habíamos configurado durante la instalación, algo que se puede hacer de manera sencilla aumentando el tamaño de la partición escogida para estos fines. Pero… ¿Qué hacer en que caso que no se quiera tocar la tabla de particiones?

¿Qué es SWAP y como funciona?

El espacio de memoria de intercambio o Swap, es lo que se conoce como memoria virtual. La diferencia entre la memoria real y la virtual es que esta última utiliza espacio en el disco duro en lugar de un módulo de memoria.

Cuando la memoria real se agota, el sistema copia parte del contenido de esta directamente en este espacio de memoria de intercambio a fin de poder realizar otras tareas.

Utilizar SWAP tiene como ventaja el proporcionar la memoria adicional necesaria cuando la memoria real se ha agotado y se tiene que realizar un proceso. La desventaja es que, como consecuencia de utilizar espacio en el disco duro, la utilización de esta es más lenta.

Utilizar un archivo como memoria de intercambio.

Este método no requiere hacer cambios en la tabla de particiones del disco duro. Ideal para usuarios poco experimentados, para quienes desean evitar tomar riesgos al cambiar la tabla de particiones de su disco duro, o bien para quienes requieren más de memoria de intercambio ocasional, o de manera circunstancial.

Considerando que el archivo de memoria de intercambio puede ser colocado en cualquier directorio del disco duro, se ejecuta el comando dd, especificando que se escribirán ceros (if=/dev/zero) para crear el archivo /swap (of=/swap), en bloques de 1024 bytes (bs=1024) hasta completar una cantidad en bytes determinada (count=[cantidad multiplicada por el valor de bs]). En el siguiente ejemplo se realiza lo anterior hasta completar 524288000 bytes (dividido por 1024 equivalen a 512 MB):

Para crear el archivo que utilizaremos como SWAP abriremos una consola y escribiremos lo siguiente (como root):

dd if=/dev/zero of=/swap bs=1024 count=512000

El paso anterior puede demorar unos segundos, tenga paciencia. Luego, para dar formato de memoria de intercambio al archivo creado, ejecutaremos el comando mkswap, del siguiente modo (siempre como root):

mkswap /swap

Se le devolverá una salida en la consola similar a lo siguiente:

Setting up swapspace version 1, size = 511996 KiB
no label, UUID=fed2aba5-77c6-4780-9a78-4ae5e19c506b

Para activar la partición, y que sea utilizada inmediatamente por el sistema operativo, se ejecuta el comando swapon. En nuestro caso activaremos como partición de memoria de intercambio al archivo /swap que creamos y dimos formato SWAP en los pasos anteriores:

swapon /swap

Para verificar que el nuevo archivo de memoria de intercambio está siendo utilizada por el sistema operativo, ejecutaremos nuevamente el comando free y veremos que se le ha sumado a la memoria SWAP inicial la capacidad del nuevo archivo.

Para que este archivo se utilice como memoria de intercambio automáticamente en el siguiente arranque del sistema,  editaremos  /etc/fstab (utilizando nano, gedit, kate, kwrite, vim o el editor de texto plano de su preferencia), agregando la línea correspondiente, del siguiente modo, donde en lugar de el dispositivo, se pone la ruta del archivo de memoria de intercambio creado:

Abrimos el  archivo

nano /etc/fstab

Y le añadimos:

/swap         swap      swap     defaults               0 0

Listo!!!!

Podemos reiniciar el sistema y probar que nuestra memoria de intercambio se ha incrementado con el uso del nuevo archivo SWAP. Sencillamente lo que hemos hecho es crear un archivo en la raíz del sistema, darle formato SWAP y decirle a nuestro GNU/Linux que lo utilice como memoria de intercambio, junto a la partición que ya teníamos destinada para este objetivo.

Algo sencillo pero que pudiera ser de cierta utilidad a muchos de nosotros… Sin más…


25 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   khourt dijo

    La nota esta genial. Solo que ahora me hace pensar una cosa, podria de modo similar usar una USB como soporte de memoria ??? Si se tiene un equipo algo ya viejo y conseguir las memorias es complicado o demasiado caro (parece que entre mas viejo mas caras las refacciones en computadoras), seria bueno poder ampliar la memoria solo con una usb

    1.    AurosZx dijo

      Si, está muy bueno, más o menos así hace la zramswap que tengo instalada (no me gustan las ensaladas de particiones, no separo nada).
      Si quieres usar el usb como swap, sólo formateas una partición para tal propósito, y lo añades al fstab, cambiando /swap por /dev/sdb1 (asumiendo que sea sdb1 la ruta de tu usb).

      1.    sieg84 dijo

        vas a ser feliz con btrfs y sus subvolumenes

      2.    khourt dijo

        Bueno, si entendi bien lo de como hacer la USB Swap, pero pensaba mas en algo asi como RAM adicional, ya que la USB seria memoria fisica, y no me gustaria tener que esperar a que se supere el 60% de la memoria para empezar a usar la USB.

        Bueno y viendo el comentario de @nonamed, el porque de soluciones como esta (y solo como aporte y no como inicio de una guerra de equipo y con todo el respeto) en una epoca donde ya existe equipos con mejores rendimeintos y parece inecesario; se me ocurren 3 puntos:

        1o. Y la mas obvia, para usarlo en equipos antiguos
        2o. Pienso tambien en equipos portatiles no tan nuevos que tienen capacidad de 1gb o 2gb, «MENOS» la memoria destinada a la tarjeta de video
        3o. Pues es obvio, no ?? Porque es interesante y porque se puede hacer … jejeje !! XD

        Un saludo

        1.    k1000 dijo

          O si se te olvida crearte la SWAP y no quieres liarte con la tabla de particiones

        2.    Katekyo dijo

          vos decis usar una unidad de USB como RAM?, eso no se puede porque la tasa de lecto escritura de la RAM es mucho más rapida de lo que un USB puede soportar y además se destruiria el USB al poco tiempo de uso haha y estaria bueno usar una unidad USB como SWAP adicional

    2.    Altair dijo

      Sí, creas una particion swap en un usb y lo montas con sudo swapon /dev/sdX y le puedes añadir -s 60 para que tenga prioridad sobre otras particiones swap. Tambien puedes añadirlo al fstab para que se monte automaticamente, o crear el archivo swap como dice en esta gran guia en el usb 😉

  2.   Slayerkorn dijo

    Excelente guia, y practico a la vez, para cuando uno se queda sin swap, aun que dificl. Ahora estoy replicando lo mismo pero en una memoria usb para que sea un poco mas rapido el traspaso de datos de memoria fisica al memoria de intercambio.

  3.   elendilnarsil dijo

    Gracias, por la información. pero me genera una pregunta, quizás algo tonta: una vez creado este archivo swap, no se puede borrar la partición swap???

  4.   nonamed dijo

    a veces me pregunto si realmente merece la pena tener swap, yo siempre lo tengo al 0%, tal vez tenga que ver la memoria, tengo 4Gb de ram , supongo que a mas memoria menos sentido tiene usar swap

    1.    Daniel Rojas dijo

      Si, depende de la memoria que tengas en la máquina. Yo tambien siempre la tengo en 0%, y al tener 4Gb de ram sólo le doy 512mb a la particion de swap

      1.    pcero dijo

        En la última instalación he eliminado la swap. Aun así, con 24GB de RAM, to he visto en ocasiones pequeños usos de swap (unos cuantos KB) aun teniendo gran parte de la RAM sin usar. Por qué? No se me ocurre

  5.   sieg84 dijo

    esto me tocó hacerlo en sabayon, no pude encontrar la causa del porque me comía toda la RAM y la swap.

  6.   Mr. Linux dijo

    Siempre lo diré , DesdeLinix es el blog numero uno , gracias a estos artículos tan interesantes. A propósito, encontré la llave que tiró Yoyo de la cárcel donde tienen a Elav , creo que me la quedaré.

    Saludos Elav.

  7.   merlin el debianita dijo

    Muy útil gracias por e aporte.

  8.   proper dijo

    Es más fácil
    lvm lvresize /dev/vg_laptpop/vl_swap -L +4G
    si estás usando LVM claro (suponiendo que quieres dejar una swap en 4gigas)

    1.    proper dijo

      Sin embargo, ese aporte está de p%$a madre, no haberlo sabido antes, cuantos formateos me habría ahorrado xDDDD

  9.   invisible15 dijo

    Yo tengo dos particiones de swap (una en cada disco duro) y con 1 gb de ram uso mínimo entre 200mb y 500mb de swap…

  10.   kalh dijo

    Si teneis varios pen-usb antiguitos podeis hacer una swap en un raid 0 strip de N dispositivos usb con lo que aceleráis el rendimiento de la swap en proporción a os dispositivos usb pinchados y siempre que sea posible cada uno en un concentrador raiz distinto -creo!-. Solo teneis que informaros del soporte nativo de raid por soft de linux.
    un enlace para mas info:
    http://www.kriptopolis.com/raid-1
    o una busqueda mas general
    https://www.google.es/search?q=raid+por+soft+en+linux&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a&channel=fflb

    1.    kalh dijo

      Se me olvidaba decir que el raid se puede hacer a nivel de particion. Por lo que si los pinchos usb no son del mismo tamaño, podeis hacer particiones del tamaño del pincho mas pequeño y los huecos restantes de los usbs mas grandes podeis utilizarlos para otras cosas o para mas swaps a nivel de archivo o partición… lo que no se es si se puede hacer raid con varios archivos de intercambio con el método que describes???…

  11.   Carlos dijo

    Excelente tutorial, me urgía poder aumentar la swap que tenia disponible. (Y)

  12.   jorge dijo

    Esto se ve bueno . lo intentare con una memoria usb.

  13.   TheGuillox dijo

    excelente… funciona en un celular con android? ya tengo un kernel personalizado, pero no quiero particionar la sd. supongo que esto tendria que funcionar

  14.   Delugas dijo

    Muy buen artículo.

    Otro concepto interesante sobre la swap de Linux es el swappiness:

    http://www.sysadmit.com/2016/10/linux-swap-y-swappiness.html

  15.   David Coleman dijo

    Hello my name is David Coleman I’m 32, from Ohio I’m studying Computer programming && computer science to get my Associates degree in both within 4years time!,
    My question with application (SWAP/no-root) APK is simple after the swap/swp file I created for 2Gb 999Mb’s ×2 essentially how an exactly where in my Android is it to be stored? I’m using a 3Gb ram 32gb memeroy +32 gb SanDisk SD too boot Stylo 5 by boost mobile Unrooted device with bootloader unlocked as well as sim unlocked!. Any advice is well appreciated an welcomed thx
    Urs SENCERLY, David Coleman 32 from Ohio UsA.. ?