La mejor manera de deshabilitar el intercambio en Linux

54

Estoy ejecutando un kernel 3.18.9 compilado personalizado y me pregunto cuál es la mejor manera de desactivar el intercambio en el sistema. También uso init si hace la diferencia.

¿Es suficiente comentar o eliminar la línea de intercambio /etc/fstabpara evitar que el intercambio funcione / se monte en el arranque o debo recompilar el núcleo sin Support for paging of anonymous memory (swap)estar 100% seguro de que no se habilita?

Ejecuto particiones cifradas y quiero evitar fugas accidentales al disco duro. Las especificaciones de mi sistema también son lo suficientemente buenas como para sobrevivir en un entorno sin intercambio.

usuario283167
fuente
¿Por qué su intercambio no está encriptado?
Michael Hampton
@MichaelHampton No vi una necesidad en el momento hasta que me di cuenta de lo que eventualmente iba a suceder. Además, mi sistema no llega a un punto en el momento en que se utilizó el intercambio, por lo que siento que soy libre de eliminarlo.
user283167
Quitaría la característica del núcleo entonces. De lo contrario, alguien puede enchufar una memoria USB y comenzar a cambiarla nuevamente.
ott--
@ott ¿No requiere el usuario acceso de superusuario para usar el ejecutable swapon / swapoff? Podría deshabilitarlo nuevamente por si acaso, pero no estoy seguro de que un usuario sin privilegios pueda crear archivos de intercambio.
user283167
De hecho, necesita acceso de superusuario, lo que podría hacer con un exploit, por ejemplo. Pero, ¿estás viendo tu servidor las 24 horas, los 7 días de la semana?
ott--

Respuestas:

76
  1. Identifique los dispositivos y archivos de intercambio configurados con cat /proc/swaps.
  2. Apague todos los dispositivos y archivos de intercambio con swapoff -a.
  3. Elimine cualquier referencia coincidente encontrada en /etc/fstab.
  4. Opcional: destruya todos los dispositivos o archivos de intercambio encontrados en el paso 1 para evitar su reutilización. Debido a sus preocupaciones sobre la filtración de información confidencial, es posible que desee considerar realizar algún tipo de borrado seguro.

cambio de hombre

Aaron Copley
fuente
En algunos sistemas también debe reconstruir el initrdarchivo, por ejemplo, con dracut --regenerate-all --forceo mkinitrd, o el sistema no se iniciará. Gracias a JO Aho y Carlos ER en alt.os.linux.suse.
Ant_222
10

Si está realmente seguro de que desea deshabilitar el intercambio (nota: esto no se recomienda, incluso cuando está bastante seguro de que la RAM física es más que suficiente), siga estos pasos:

  1. ejecutar swapoff -a: esto deshabilitará inmediatamente el intercambio
  2. eliminar cualquier entrada de intercambio de /etc/fstab
  3. rebootel sistema. Si el intercambio se ha ido, bien. Si, por alguna razón, todavía está aquí, tuvo que eliminar la partición de intercambio. Repita los pasos 1 y 2 y, después de eso, use fdisko partedpara eliminar la partición de intercambio (ahora sin usar). Tenga mucho cuidado aquí: ¡ eliminar la partición incorrecta tendrá efectos desastrosos!
  4. reboot
shodanshok
fuente
1
¿Por qué no se recomienda deshabilitar el intercambio incluso si tiene suficiente ram?
Rolf
1
Porque Linux usa proactivamente la partición de intercambio para liberar más memoria para el almacenamiento en caché. Esto puede mejorar el rendimiento. De todos modos, es un parámetro sintonizable. Para más información, lea aquí . Además, un aumento improvisado en la asignación de memoria en un sistema sin intercambio puede desencadenar el asesino OOM del núcleo.
shodanshok
1
Gracias, esto es razonable. Sin embargo, estaba pensando que si "suficiente ram" (por ejemplo: 8 o 16 GB) está lleno, entonces es probable que se trate de una situación excepcional (aplicación con una pérdida de memoria o algún otro problema fuera de control, ataque DDOS, etc.) en el que incluso el intercambio eventualmente se vería abrumado de todos modos. Tal vez no estoy haciendo un argumento muy convincente, sin embargo, esto no debería suceder en el uso de escritorio ligero.
Rolf
9

Solía ​​ser que solo las particiones de intercambio /etc/fstabse usaban automáticamente, sin embargo, systemd puede estar cambiando eso ligeramente. Es posible que deba hacer:

systemctl mask dev-sdXX.swap

(cambie sdXX) a su partición de intercambio formateada real, lo que plantea la pregunta de por qué tiene una partición de intercambio si no desea que se use ...

Si no está utilizando systemd, entonces, eliminar las entradas de intercambio /etc/fstabdebería ser suficiente (hasta donde yo sé).

Quizás la solución real es deshacerse de las particiones de intercambio, para que no se usen accidentalmente. Para eliminar las particiones de intercambio, usaría fdisk para cambiar el tipo de partición de intercambio a otra, y luego formatear la partición o usar: dd if=/dev/zero of=/dev/old-swap-partitionpara poner a cero y evitar su uso.

Consulte también Configurar el uso de la partición de intercambio con systemd .

Gregor
fuente
Todavía uso init a través de openRC, eliminé a propósito systemd de la instalación. Y en cuanto a la pregunta de intercambio, estaba haciendo una instalación regular hasta que tomé la decisión de usar cryptsetup / luks para montar archivos cifrados formateados en ext4 sobre mi sistema de archivos. Si pudiera ser tan amable de tocar la forma de deshabilitar el intercambio al usar init, lo agradecería.
user283167
0

Cuando veo el archivo / etc / fstab en Raspbian, veo un comentario que dice

a swapfile is not a swap partition, no line here
  use dphys-swapfile swap[on|off] for that

Pero para deshabilitar completamente el archivo de intercambio preconfigurado, esto funciona perfectamente bien:

swapoff -a
chmod -x /etc/init.d/dphys-swapfile
reboot

Esta solución me parece un poco rápida y sucia, sin embargo, simplemente puede volver a habilitarla con:

chmod +x /etc/init.d/dphys-swapfile
reboot
Fabian31415
fuente