¿Cómo aumentar el espacio de intercambio?

128

Tengo, por defecto, 250 MB de espacio de intercambio en Ubuntu, y quiero expandirlo a un tamaño más grande. Necesito 800 MB, lo que creo que será suficiente para abrir varias aplicaciones sin tener que alcanzar el límite actual de intercambio. Espero que alguien pueda ayudarme.

Bruno
fuente
2
Abre Gparted y publica una captura de pantalla de lo que ves aquí.
Aaron Hill
Si su partición de intercambio se puede expandir al espacio adyacente no asignado, use gparted. Si dicho espacio no está disponible, tal vez porque su partición activa (arrancada) está utilizando todo el espacio que no es de intercambio, gpartedno le permitirá disminuir el tamaño de la partición activa para crear espacio no asignado. En este caso, puede volver a instalar Ubuntu para crear un espacio de intercambio más grande.
H2ONaCl

Respuestas:

172

Siempre puedes crear un archivo de intercambio

para agregar más espacio de intercambio. Esto no es lo mismo (en todos los aspectos) que la partición de intercambio, pero será fácil y dinámico.

Cambie /media/fasthdd/swapfile.imga lo que quiera, por ejemplo, también puede serlo /swap.img. /media/fasthdd/swapfile.imges solo un nombre de archivo de ejemplo, si está utilizando este, entonces, por supuesto, debe haber un directorio /media/fasthdd/con suficiente espacio libre para su nuevo archivo de intercambio.

Use cualquiera de las aplicaciones de terminal para ejecutar comandos. Todos los comandos deben ejecutarse con privilegios de root , para ello puede agregarlos sudoal comienzo de cada comando o ejecutarlos sudo bashantes de ejecutarlos.

1. Cree un archivo vacío:
este archivo contendrá contenido de memoria virtual, por lo tanto, haga el archivo lo suficientemente grande para sus necesidades. Este creará un archivo de 1 Gb, lo que significa un espacio de intercambio de + 1 Gb para su sistema:

dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M

Si desea crear un archivo de 3Gb, cambie el valor de conteo a count=3M. Ver man ddpara más información.

2. Hornee el archivo de intercambio: El
siguiente comando creará un "sistema de archivos de intercambio" dentro de su nuevo archivo de intercambio.

mkswap /media/fasthdd/swapfile.img

3. Inicie el arranque:
para asegurarse de que su nuevo espacio de intercambio esté activado mientras arranca la computadora, debe agregarlo al archivo de configuración del sistema de archivos /etc/fstab. Agréguelo al final del archivo, esto se recomienda porque otros sistemas de archivos ( al menos uno que contiene un archivo de intercambio ) deben montarse en modo de lectura-escritura antes de que podamos acceder a los archivos.

# Add this line to /etc/fstab
/media/fasthdd/swapfile.img swap swap sw 0 0

4. Activar:
puede reiniciar su computadora o activar manualmente un nuevo archivo de intercambio con el siguiente comando:

swapon /media/fasthdd/swapfile.img


Si todo va bien

debería ver que hay más espacio de intercambio disponible para su uso. Puede usar los siguientes comandos para verificar su nuevo intercambio y confirmar que está activo:

cat /proc/swaps
  Filename                           Type       Size    Used    Priority
  /media/fasthdd/swapfile.img        file       8388604 2724    -1

grep 'Swap' /proc/meminfo
  SwapCached:         4772 kB
  SwapTotal:       8388604 kB
  SwapFree:        8355812 kB
Sampo Sarrala
fuente
55
Para editar /etc/fstabintente esto en la línea de comando:sudo gedit /etc/fstab
Ben
Eso me ayudó muchísimo, muchas gracias señor.
Rika
¿Cómo desactivar el archivo de intercambio recién creado?
Rika
1
lo consiguió su intercambio!
Rika
2
use el comando "swapon -s" para ver el estado en lugar de "cat / proc / swaps". entonces el comando "gratis" también proporciona información de uso de intercambio.
Paul M
40

Método GUI para aumentar el tamaño de la partición de intercambio

Otra forma de aumentar el tamaño de intercambio es utilizar el Editor de particiones GParted . En resumen, cambia el tamaño de la partición de intercambio, luego haz clic derecho sobre ella y elige "Swapon".

Es más fácil arrancar gparted-live-disk o un disco en vivo de Ubuntu (para que todas las /dev/sdaparticiones se desmonten). Si ejecuta Ubuntu live disk, entonces debe instalar gparted ejecutando los siguientes comandos:

sudo apt-get update
sudo apt-get install gparted && sudo gparted

Debe poder aumentar el tamaño de la partición de intercambio solo si hay un espacio no asignado antes o después de la partición de intercambio. Si no había espacio sin asignar (el espacio que estamos tratando de agregar con la partición de intercambio) debajo o encima de la partición de intercambio, entonces tenemos que redimensionar las particiones y obtener ese espacio sin asignar.

Caso 1: espacio no asignado presente antes o después de la partición de intercambio

Particiones GParted

En la captura de pantalla anterior, tenía 11.4 GB de espacio sin asignar antes del intercambio de Linux y 12.8 GB después de la partición de intercambio.

  • Para cambiar el tamaño, haga clic derecho en la partición de intercambio (/ dev / sda9 aquí) y haga clic en la opción Cambiar tamaño / Mover. Se verá así:

    ingrese la descripción de la imagen aquí

  • Arrastre las flechas del control deslizante hacia la izquierda o hacia la derecha y luego haga clic en el botón Cambiar tamaño / Mover. Su partición de intercambio será redimensionada.


Caso 2: el espacio no asignado se encuentra entre las particiones

ingrese la descripción de la imagen aquí

En la captura de pantalla anterior, el espacio no asignado que queremos agregar a la partición de intercambio estaba entre dev/sda7y /dev/sda8. Para mover el espacio no asignado de allí a la partición de intercambio justo arriba, debemos seguir los pasos simples que se detallan a continuación,

  • Haga clic derecho en la partición / dev / sda8 y haga clic en la opción Cambiar tamaño / Mover .

    ingrese la descripción de la imagen aquí

  • haga clic y mueva el control deslizante hacia el extremo izquierdo, de modo que el espacio no asignado que estaba justo arriba de la /dev/sda8partición /dev/sda8quede debajo. Luego, haga clic en el botón Cambiar tamaño / Mover.

  • Y ahora el espacio no asignado estaba justo arriba de la partición de intercambio que era como el Caso 1. Ahora siga el Caso 1.


Caso 3: si el espacio no asignado estaba presente fuera de la partición extendida)

ingrese la descripción de la imagen aquí

Tenía un espacio no asignado de 18 GB justo debajo de la partición extendida . Para agregar este espacio a la partición de intercambio de Linux (que estaba presente dentro de la partición extendida), tenemos que seguir los pasos a continuación,

  • Haga clic derecho en la partición extendida y seleccione la opción Cambiar tamaño / Mover , será como la siguiente captura de pantalla

    ingrese la descripción de la imagen aquí

  • Haga clic y arrastre la flecha hacia el extremo derecho y haga clic en Cambiar tamaño / Mover , para que el espacio no asignado de 18 GB llegue al final de la partición extendida. Tenía 14,80 GB de espacio no asignado ya presente en la parte inferior y ahora el 18,34 GB se combina con eso para crear espacio no asignado de (18.34 + 14.80 GB) en la parte inferior de la partición extendida.

  • Ahora había un espacio sin asignar justo debajo de la partición de intercambio, será como el caso 1 , luego siga el caso 1.

NOTA: No olvide hacer una copia de seguridad de todos sus datos importantes antes de continuar con las operaciones anteriores.

Avinash Raj
fuente
2
Gran guía de herramientas GUI, merece ++ tal como está. Sin embargo, tal vez debería haber alguna advertencia sobre posibles riesgos relacionados con la edición de particiones. Una simple guía de respaldo de MBR o un enlace a dicha guía sería una gran adición, los errores pueden ser poco probables pero los costos pueden ser altos + tomar copias de respaldo de MBR no consumirá demasiado tiempo o espacio y podría ahorrar mucho trabajo, espacio y tiempo cuando se hace correctamente.
Sampo Sarrala
2
No se olvide de cambiar, haga clic con el botón derecho en la partición de intercambio de un intercambio
user3752281
30

También puede usarlo fallocatesi desea reservar espacio para su archivo de intercambio, sin la necesidad de llenar el archivo con 0 a través dd.

De la manpágina:

DESCRIPTION
   fallocate  is  used  to preallocate blocks to a file.  For filesystems which support the fallocate system call, this is done quickly by
   allocating blocks and marking them as uninitialized, requiring no IO to the data blocks.  This is much faster than creating a  file  by
   filling it with zeros.

Si ya tiene un swapdefinido, puede eliminarlo o conservarlo, y su * nix lo administrará (incluso mejor definiendo una swaponprioridad). Esto podría ser útil, en caso de que desee distribuir su intercambio entre diferentes dispositivos, unidad (según su velocidad u otras necesidades personalizadas, consulte ¿Cuál es el propósito de múltiples archivos de intercambio en StackExchange? ).

fallocateUso simple para agregar un segundo archivo de intercambio

Verificar situación de intercambio:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        262140  246276  -1

Crear un archivo de intercambio 4G

Forma estándar de crear y activar un archivo de intercambio.

$ size="4G" && file_swap=/swapfile_$size.img && sudo touch $file_swap && sudo fallocate -l $size /$file_swap && sudo mkswap /$file_swap && sudo swapon -p 20 /$file_swap

Haz tu intercambio permanente

Agregue una línea en su /etc/fstabarchivo para que el intercambio se inicialice en el próximo reinicio (también actualizamos aquí la prioridad del espacio de intercambio recién creado y actualizamos la prioridad del antiguo archivo de intercambio).

En su archivo / etc / fstab, observe que la prioridad del intercambio anterior es ahora 10.

/swapfile    none    swap    sw,pri=10      0       0
/swapfile_4G.img     none    swap    sw,pri=20      0       0

Verifique la situación de intercambio después del reinicio:

$ sudo swapon  -s
Filename       Type     Size        Used    Priority
/swapfile      file     262140      0       10
/swapfile_4G.img       file     4194300     0       20

Elimine uno de los espacios de intercambio (por ejemplo, los 256 Mb originales)

Editar /etc/fstab

Elimine la línea relacionada con el intercambio que desea eliminar.

Eliminar ese intercambio

Eliminar y eliminar el archivo de intercambio.

sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile

Recursos:

Jean-Christophe Meillaud
fuente
3
1 en adelante fallocate, mucho mejor que ddsi tu fs lo admite. Esas frases sencillas todavía se sienten difíciles de leer, ¿podría ser más fácil de estudiar si se dividieran en comandos reales?
Sampo Sarrala
3
Este es un ejemplo de respuesta perfecta, muy simple de entender, muy simple de implementar. Funcionó de
maravilla
7

En mi caso, ya tenía un archivo de intercambio que pensé que era de 1 GB, pero cuando lo miré más de cerca tenía solo 256 MB de tamaño y cuando precompilaba mis activos de rieles, el servidor se quedaba sin memoria

Errno::ENOMEM: Cannot allocate memory - nodejs

Creé mi archivo de intercambio como se describe aquí: https://stackoverflow.com/a/34885004/784318

Ahora la línea que crea un archivo vacío llamado /swapfilees la siguiente:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

Ahora para cambiar el tamaño del archivo de intercambio tuve que hacer estos simples pasos:

# Reboot the system to be able to switch swapping off
sudo reboot

# Turn swap off
sudo swapoff -a

# Delete the `/swapfile`
rm -f /swapfile

# Recreate the swapfile but with double file size memory
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

# Turn swap back on
sudo swapon -s

# Change the permission to non-world-readable
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

# Use the swap file
sudo mkswap /swapfile
sudo swapon /swapfile

El archivo fue creado (536870912/1024/1024 = 512 MB):

ls -lia /swapfile 
768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile

Usando el free -mcomando, pude ver que el archivo ahora tiene 512 MB como se esperaba:

Besi
fuente
No debe usar el indicador peligroso -r con el comando rm para eliminar un solo archivo. rm -f debería ser más que suficiente.
Sampo Sarrala
1
@SampoSarrala Gracias por el aviso, cambié el script en consecuencia.
Besi
@Besi ¡Gracias! Esto era exactamente lo que necesitaba para aumentar el tamaño del archivo de intercambio en mi sistema Ubuntu 18.04 LTS. Funcionó exactamente como lo escribiste. Excelente ayuda !!!
B-radical
Me gusta esta solución porque es una línea de comandos, no requiere volver a particionar y explica qué hacer si ya existe un archivo de intercambio.
cxrodgers
3

cómo agregar un archivo de intercambio

  1. archivo creat .img

    sudo dd if = / dev / zero of = / swap.img bs = 1M count = 1000

¡nota !: bs = 1M cuenta = 1000 ==> 1GB

(bs * cuenta = tamaño en megabytes)

otro ejemplo:

sudo dd if = / dev / zero of = / swap.img bs = 10M count = 100

  1. formato de archivo .img

    sudo mkswap /swap.img

  2. habilitar el archivo de intercambio

    sudo swapon /swap.img

  3. agregar archivo de intercambio a fstab

agregue esta línea a su fstab (/ etc / fstab)

/swap.img   none            swap    sw              0       0
Jonás
fuente
Por lo general, establezco una etiqueta en el intercambio, por ejemplo, "mkswap -L SWAP2".
Paul M
Nota: Esta es la misma respuesta que la respuesta aceptada / más votada por Sampo Sarria, pero con menos contexto y con el img de intercambio agregado directamente a la raíz en lugar de / media / fasthdd
acero
0

Cambiar tamaño Cambiar a 8 GB

# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a

# Create an empty swapfile
# Note that "1G" is basically just the unit and count is an integer.
# Together, they define the size. In this case 8GB.
sudo dd if=/dev/zero of=/swapfile bs=1G count=8

sudo mkswap /swapfile  # Set up a Linux swap area
sudo swapon /swapfile  # Turn the swap on

Comprueba si funcionó

grep Swap /proc/meminfo
Martin Thoma
fuente