it-swarm-es.tech

¿Por qué Linux usa una partición de intercambio en lugar de un archivo?

Me parece que un archivo de intercambio es más flexible.

32
Cheng

Un archivo de intercambio es más flexible pero también más falible que una partición de intercambio. Un error del sistema de archivos podría dañar el archivo de intercambio. Un archivo de intercambio puede ser una molestia para el administrador, ya que el archivo no se puede mover ni eliminar. Un archivo de intercambio no se puede utilizar para la hibernación. Un archivo de intercambio era un poco más lento en el pasado, aunque la diferencia es insignificante hoy en día.

La ventaja de un archivo de intercambio es no tener que decidir el tamaño de antemano. Sin embargo, en Linux, todavía no puede cambiar el tamaño de un archivo de intercambio en línea: debe anular el registro, cambiar el tamaño y luego volver a registrarlo (o crear un archivo diferente y eliminar el anterior). Entonces, no hay mucho beneficio para un archivo de intercambio en Linux, en comparación con una partición de intercambio. Es principalmente útil cuando necesita temporalmente más memoria virtual, en lugar de como un accesorio permanente.

Se puede preferir una partición de intercambio porque evita una dependencia en el sistema de archivos cuando todo lo que necesita es un grupo de memoria direccionable.

Pero nada le impide utilizar un archivo de intercambio en lugar de una partición de intercambio, o además de una partición de intercambio.

  • Crea el archivo:

    dd if=/dev/zero of=/extraswap bs=1M count=512
    
  • Inicializar el contenido del archivo:

    mkswap /extraswap
    
  • Úselo:

    swapon /extraswap
    
  • Vea si funcionó:

    free -m
    

Para comenzar a usar el archivo de intercambio siempre en el arranque, edite/etc/fstab y agregue

/extraswap           swap          swap    defaults    0 0

[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html

28
Penz

Para completar, agregaré mi propia respuesta:

Como dijo @Gilles, un archivo de intercambio no se puede usar para la hibernación. Cuando se usa un archivo de intercambio, el sistema debe ubicar el encabezado del archivo de intercambio, pero para hacer esto, el sistema de archivos que contiene el archivo de intercambio debe estar montado y un sistema de archivos registrado por diario, por ejemplo. ext3, ext4 y básicamente todos los sistemas de archivos modernos utilizados por Linux, no se pueden montar durante la reanudación desde el disco. (En realidad, hay formas de hacerlo, pero bastante engorrosas).

Fuente: https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt

2
dr_

Quizás la razón principal es que el kernel principal suspend-to-disk no funciona con archivos de intercambio. Por ejemplo, las Debian wiki instrucciones son para instalar uswsusp si lo necesita.

Más recientemente, los archivos de intercambio no funcionan si el sistema de archivos es btrfs, por lo que es más sencillo para las distribuciones crear siempre el intercambio como una partición.

Se menciona vagamente que el uso de un archivo para intercambio tenía un rendimiento potencialmente más bajo que una partición, antes de la versión 2.6 del kernel. https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15

1
sourcejedi

Creo que se debe principalmente a que los tiempos de acceso a los datos ubicados en una partición son menores. El objetivo del archivo de intercambio es más para ayudar al administrador del sistema cuando realmente no tiene RAM y necesita operar grandes operaciones que tal vez bloqueen su sistema. En este caso, esporádicamente creará swap archivos cuando sea necesario.

Pero de todos modos puedes tener ambos.

0
Bacon