¿Cómo desactivar de forma segura el intercambio de forma permanente y recuperar el espacio? (en Debian Jessie)

48

Instalé Debian Jessie con particiones predeterminadas en mi unidad SSD. Mi partición de disco actual se ve así:

Mi partición de disco actual se ve así

Como tengo 16 GB de RAM, supongo que no necesito intercambio . Pero como tengo otras unidades de disco, puedo crear un archivo de intercambio, por ejemplo, en una de las otras unidades.

¿Puede decirme qué pasos debo tomar para eliminar la partición de intercambio de forma correcta y permanente para que no ocupe espacio en el disco ? Deseo eliminar la partición de intercambio ya que actualmente solo tengo 128GB SSD.

Esto es lo que probé y reinicié cada vez; cada uno de estos pasos no es permanente o no hizo nada :

  1. Usando la swapoffutilidad:

    swapoff --all
    
  2. Usando la utilidad GParted :

    Haga clic derecho en la partición de intercambio y haga clic en Cambiar.

  3. Comentando el UUID de la partición de intercambio en el siguiente archivo:

    /etc/fstab
    
  4. Comentando el UUID de la partición de intercambio en el siguiente archivo:

    /etc/initramfs-tools/conf.d/resume
    
  5. Ejecutando estos comandos al final (tanto en este orden como en el opuesto):

    update-grub
    
    update-initramfs -u
    
LinuxSecurityFreak
fuente
1
Swapoff solo deshabilita el intercambio para el sistema actualmente en ejecución, para que sea permanente, debe combinarlo con la eliminación de la entrada relevante de /etc/fstab. Una vez hecho esto, el intercambio debe estar deshabilitado y no volver en el próximo arranque. Ahora debe modificar la tabla de particiones y extender su sistema de archivos principal si desea recuperar el espacio no utilizado. Vea mi respuesta para obtener instrucciones detalladas.
André Borie
@ burian.vlastimil ¿puedes publicar todo /etc/fstab?
André Borie
@ burian.vlastimil Edítelo en su pregunta ya que los comentarios no conservan los saltos de línea. ¿Sus cambios en el fstab persisten después de reiniciar o la línea de intercambio no se comenta?
André Borie
1
Si puedo meterme en esta pregunta, el propósito del intercambio es eliminar las páginas no utilizadas y proteger el sistema de quedarse sin memoria. Por lo tanto, como sugirió SnakeDoc, tener 512 MB de intercambio siempre es bueno. Personalmente, tengo SSD sin partición de intercambio, sino un archivo de intercambio en mi directorio /. Si opta por hacerlo, use este tutorial para crear el archivo. En cuanto a la partición de intercambio, puede iniciar usb en vivo y usar gparted para eliminar esa partición. Sin embargo, asegúrese de actualizar grub.
Sergiy Kolodyazhnyy
44
@SnakeDoc: por lo general, no obtendrá un kernel panic, el controlador OOM se activará y eliminará los procesos para liberar memoria (y generalmente hace un trabajo bastante bueno al decidir cuál (es) matar, generalmente dando preferencia para matar procesos más grandes y nuevos). Mantengo una gran cantidad de servidores sin intercambio que están configurados para entrar en pánico en OOM en lugar de matar procesos porque los servidores están configurados de modo que normalmente nunca se quedarán sin memoria y si lo hacen, quiero que entren en pánico y se reinicien en lugar de intercambiar y reducir la velocidad (o dejar que el controlador OOM decida qué procesos matar)
Johnny

Respuestas:

47

Ejecutar como root:

# swapoff -a

Y para que ese cambio sea permanente, edite /etc/fstaby elimine o comente la entrada de intercambio.

maxschlepzig
fuente
@ burian.vlastimil, ¿qué quieres decir con bloqueado? Puede verificar que no se esté utilizando ningún dispositivo de intercambio mirando la primera línea de la parte superior; debe informar 'KiB Swap: 0 total'. También puede cat /proc/swaps, lo que debería informar una línea de encabezado. Si ese es el caso, entonces sí, puede eliminar con seguridad la partición de intercambio y ampliar otra partición para recuperar ese espacio, si eso es lo que desea.
maxschlepzig
@ burian.vlastimil, el intercambio puede estar habilitado por sus initramfs, puede que tenga que eliminar la resumeopción del núcleo (que hace referencia al UUID de su intercambio), es decir, actualizar grub y regenerar los initramfs (básicamente haga lo contrario de algunos de los pasos en SwapFaq ).
maxschlepzig
@ burian.vlastimil, también puede grep su configuración de grub (debajo /boot) para ese uuid y puede desempaquetar sus initramsfs y grep su contenido para llegar a la causa raíz de esto. Asegúrate de hacer un grep que no distinga entre mayúsculas y minúsculas.
maxschlepzig
2
sólo hay que poner swapoff -aen /etc/rc.local. tener encendido unos pocos milisegundos cuando arrancas no es problema. con 16 GB de RAM no se escribirá nada allí durante mucho tiempo. simplemente deje el espacio de intercambio allí (el espacio en disco es barato) y no cambie /etc/fstab .
Skaperen
haga un archivo de intercambio temporal , luego puede recuperar el espacio eliminando el archivo una vez que desactive el intercambio
Skaperen
40
  1. Si tiene GParted abierto, ciérrelo. Su función de intercambio no parece ser permanente.

  2. Abra la terminal y conviértase root( su); si ha sudohabilitado, también puede hacer, por ejemplo sudo -i; ver man sudopara todas las opciones):

    sudo -i
    
  3. Apague la partición de intercambio particular y / o todos los intercambios :

    swapoff --all
    
  4. Asegúrese 100% de que la partición de partición de intercambio particular esté desactivada:

    cat /proc/swaps
    
  5. Abra un editor de texto en el que esté capacitado con este archivo, por ejemplo, nanosi no está seguro:

    nano /etc/fstab
    
  6. Comente / elimine el UUID de la partición de intercambio , por ejemplo:

    # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. Abra un editor de texto en el que esté capacitado con este archivo, por ejemplo, nanosi no está seguro:

    nano /etc/initramfs-tools/conf.d/resume
    
  8. Comente / elimine el UUID de la partición de intercambio previamente identificada , por ejemplo:

    # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. No cierre la terminal ya que la necesitará más tarde de todos modos.

Nota: Los siguientes pasos difieren dependiendo de si depende de CLI o GUI .


GUI :

  1. Abra GParted , ya sea desde el menú, o más convenientemente desde el terminal que hemos abierto:

    gparted
    
  2. Si no lo tiene instalado, puede hacerlo; luego ejecute el comando anterior nuevamente:

    apt-get install gparted
    
  3. Elija su unidad desde el menú superior derecho.

  4. A medida que GParted reactive la partición de intercambio al iniciar, deberá hacer clic con el botón derecho en la partición de intercambio en particular y hacer clic en Cambiar -> Esto se aplicará de inmediato.

  5. Elimine la partición de intercambio con un clic derecho -> Eliminar. Debe aplicar el cambio ahora.

  6. Cambie el tamaño de su partición principal / otra con clic derecho -> Cambiar tamaño / Mover. Debe aplicar el cambio ahora.

  7. De vuelta al terminal, vamos a recrear las imágenes de arranque :

    update-initramfs -u -k all
    
  8. Actualizar GRUB :

    update-grub
    
  9. Puede reiniciar ahora si desea probar que la máquina se inicia.


CLI :

Comprobaré en VM si mi solución funciona, luego la compartiré. Mientras tanto, vea esta respuesta .

LinuxSecurityFreak
fuente
1
más completo, bien explicado.
benzkji
Si después experimenta un inicio lento con el mensaje gave up waiting for suspend/resume device: En el archivo /etc/initramfs-tools/conf.d/resume, no solo desactive la línea, reemplácela con RESUME=none. ( fuente )
tanius
17

Comente / elimine la entrada relevante en el /etc/fstabpara evitar que se vuelva a habilitar en el próximo inicio, luego reinicie o ejecute swapoff -apara deshabilitar el uso de la partición de intercambio para el sistema actualmente en ejecución.

Ahora elimine la partición de intercambio, extienda la partición de su sistema sobre ese espacio no utilizado y extienda el sistema de archivos real. No sé si su administrador de particiones gráficas puede hacer todo eso, pero si no puede, aquí hay una manera de hacer esto de manera distro-agnóstica usando fdisky resize2fs:

# fdisk /dev/sdX

# Display current partition table, copy/paste this output somewhere to be able to go back in case you screw up

Command (m for help): p
Device       Boot  Start    End Sectors Size Id Type
/dev/sda1        2048  22527   20480  10M ef EFI (FAT-12/16/32)
/dev/sda2       22528 186367  163840  80M 83 Linux
/dev/sda3      186368 204799   18432   9M 82 Linux swap / Solaris

# Delete the swap partition

Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.

# Delete the system partition

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.

# Create a new system partition starting the same as the old one but ending a bit farther, at the end of the (now deleted) swap partition

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
# Enter the same start sector as the old part.
First sector (22528-204799, default 22528): 22528
# Enter the end sector of the old swap partition
Last sector, +sectors or +size{K,M,G,T,P} (22528-204799, default 204799): 204799

Created a new partition 2 of type 'Linux' and of size 89 MiB.

# Save the changes
Command (m for help): w
The partition table has been altered.

Finalmente, ampliamos el sistema de archivos actual para hacer uso del nuevo espacio libre (hasta ahora el sistema de archivos real no sabía que agregamos más espacio a su partición subyacente). Por defecto, resize2fsusa la partición completa a menos que se proporcione un tamaño fijo, por lo que no tenemos que especificar nada más que el dispositivo de bloque de partición. El crecimiento de un sistema de archivos (en lugar de reducir) se puede hacer en línea con la partición montada:

# resize2fs /dev/sda2

Ahora ha deshabilitado con éxito el intercambio y ha reclamado el espacio no utilizado sin siquiera reiniciar.

Tenga en cuenta que el procedimiento para Debian es un poco diferente y requiere editar algunos archivos más. Mira esta respuesta para más información.

André Borie
fuente
Esto no funciona para mi. Tuve 3 particiones. uno para / boot, uno para / y el intercambio. Cuando trato de crear la nueva partición, solo puedo hacer una partición de
gb
Además, al menos para las distribuciones basadas en Debian 9: es necesario ejecutar partprobeantes del resize2fscomando, de lo contrario, el núcleo no conoce la nueva tabla de particiones y no se cambiará el tamaño de nada.
Tanius
2

Haga clic derecho en la partición de intercambio en GParted y haga clic en Cambiar. Luego elimine su partición de intercambio, elimínela /etc/fstaby vuelva a generar su ( initramfsy grubtal vez innecesario).

La partición de intercambio no debe ser añadido a la initramfspor el initramfsscript de actualización si la partición de intercambio no existe.

Según esta publicación , la siguiente es la forma correcta de regenerar initramfsy grub:

update-initramfs -c -k <kernel>

update-grub
BenjiWiebe
fuente
-2

Puede hacer clic derecho en la partición de intercambio en Gparted y seleccione el swapoff opción. Esa es una forma rápida de lograr lo mismo que pediste.

Charlie
fuente