Cómo crear un archivo de intercambio en Linux

El interior de un disco duro mecánico.
zentilia / Shutterstock.com

Agregue espacio de intercambio a una computadora Linux, o aumente el espacio de intercambio que ya está presente, sin alterar las particiones. Te mostramos la forma más sencilla de personalizar tu espacio de intercambio.

Intercambiar archivos frente a intercambiar particiones

Hay varios escenarios en los que es posible que desee aumentar el espacio de intercambio existente o agregar nuevo a su computadora con Linux.

  • Quizás su espacio de intercambio se ejecuta con frecuencia al máximo o cerca del máximo.
  • Es fácil hacer clic en la opción incorrecta durante el proceso de instalación y rechazar la adición de swap a su sistema sin darse cuenta.
  • Tal vez decidió anteriormente que tenía tanta memoria de acceso aleatorio (RAM) que no necesitaba ningún intercambio, y cambió de opinión.
  • A veces heredas la administración de un sistema que no tiene swap, por razones que nunca podrás descubrir.

La solución simple a todo esto es agregar un archivo de intercambio a su computadora . Este es un archivo especial, preasignado y reservado para su uso como espacio de intercambio. Un archivo de intercambio funcionará en conjunto con cualquier intercambio existente que pueda tener, ya sea un archivo de intercambio o una partición de intercambio.

En un momento, hubo un impacto en el rendimiento por usar un archivo de intercambio en comparación con una partición de intercambio. Ese ya no es el caso con las mejoras en el rendimiento de los discos duros mecánicos (giratorios) y una mayor eficiencia en las funciones de intercambio dentro del sistema operativo Linux. De hecho, algunas distribuciones de Linux ahora crean archivos de intercambio en lugar de particiones de intercambio.

Swap no solo se usa como un medio para liberar RAM cuando se está quedando sin memoria. Es una parte importante de un sistema que funciona bien. Sin ningún intercambio, la gestión sana de la memoria se vuelve muy difícil de lograr para el kernel. Veamos la forma fácil de agregar espacio de intercambio.

Antes de sumergirnos en: Btrfs y SSD

Hay dos puntos que nos gustaría discutir rápidamente.

El sistema de archivos Btrfs tiene ciertas advertencias sobre los archivos de intercambio. En un momento, hubo un conflicto entre la   naturaleza de copia en escritura de Btrfs, que quería operar de una manera e intercambiar archivos que necesitaban operar de otra. Algunas funciones de las que dependen los archivos de intercambio no se implementaron, y algunas suposiciones que se hicieron sobre la numeración de bloques dentro de los archivos de intercambio no se cumplieron con Btrfs. Por lo tanto, los archivos de intercambio no fueron compatibles.

Desde el kernel 5.0, puede tener archivos de intercambio en los sistemas de archivos Btrfs  si están configurados con los siguientes requisitos:

  • Sin archivos de copia en escritura (NOCOW).
  • No están comprimidos.
  • No se montan entre distintos discos duros.

La mayoría de los lectores utilizarán el sistema de archivos ext4 predeterminado , por lo que esto no les preocupará.

Cuando las unidades de estado sólido (SSD) estuvieron disponibles por primera vez, existía la preocupación de usarlas en situaciones que tenían escrituras frecuentes en el sistema de archivos. Se advirtió a las personas que no pusieran espacio de intercambio en las SSD e incluso que evitaran el registro del sistema en las SSD.

Relacionado:  Cómo usar el comando grep en Linux

Esto es mucho menos preocupante hoy en día, y muchos SSD que están a la venta tienen una esperanza de vida que durará más que la mayoría de las PC . Un archivo de intercambio en un SSD tendrá un rendimiento mucho mejor que una partición de intercambio en un disco duro mecánico.

Comprobación del espacio de intercambio existente

Mira antes de saltar. Veamos qué espacio de intercambio está disponible en su computadora. Puede hacer esto de dos formas y usaremos ambas. El freecomando mostrará la memoria usada y libre . La -hopción (legible por humanos) hará freeque se utilicen unidades sensibles cuando muestre los valores de la memoria.

libre -h

fre -h en una ventana de terminal

El resultado de freemuestra que no hay espacio de intercambio configurado en esta máquina.

El intercambio nunca se discute sin que surja RAM y RAM libre. Por lo tanto, vale la pena señalar que la RAM libre es de 237 MB. No confunda eso con el total de RAM disponible para su uso. Ese valor lo proporciona la cifra «disponible», que es 881 MB.

Linux utiliza RAM libre para sus propios fines, como el almacenamiento en caché de archivos y los búferes del kernel. La cantidad de RAM dedicada a eso es la cifra de «búfer / caché», que es 871 MB. Pero ese recuerdo todavía se considera y se cuenta como «disponible». El contenido de la RAM “buf / cache” se puede descartar inmediatamente y utilizarlo cualquier aplicación que necesite algo de memoria.

Otra forma de comprobar si hay espacio de intercambio disponible es utilizar el swaponcomando. La --showopción no realiza ningún cambio en el intercambio en su computadora . Solo proporciona estadísticas.

swapon - show

swapon: muestra en una ventana de terminal

Si no hay salida de este comando, no hay ningún intercambio configurado.

Si estos comandos han revelado que ya se ha configurado algún espacio de intercambio, el tamaño del espacio de intercambio existente debe tenerse en cuenta en las decisiones relacionadas con el tamaño del archivo de intercambio que va a crear.

¿Cuánto espacio de intercambio necesito?

La respuesta tradicional era «el doble de RAM que tienes». Pero esto se acuñó cuando las computadoras solían tener una RAM muy limitada. A medida que la RAM se ha vuelto más barata y los programas y juegos requieren más memoria, las especificaciones de la PC se han ajustado en consecuencia. Las PC domésticas con 32 GB de RAM no son infrecuentes hoy en día. Y no va a asignar 64 GB de espacio en el disco duro para intercambiar espacio si tiene 32 GB de RAM. Eso es claramente excesivo.

La cantidad de intercambio que necesita es un tema incendiario, comparable a «cuál es el mejor editor». Una de las discusiones más sensatas que hemos visto sobre este tema se encuentra en las preguntas frecuentes sobre el intercambio de Ubuntu . Es un enfoque corto y de sentido común (aunque, como muchas personas, no entienden cómo funciona el intercambio en Linux ). Hay una tabla útil que muestra una cantidad recomendada de espacio de intercambio para la cantidad de RAM que tiene su sistema y si hiberna su computadora o no.

Y la buena noticia es que realmente no importa qué valor elija. Siempre podemos eliminar un archivo de intercambio y reemplazarlo por uno más grande o, para el caso, uno más pequeño. O simplemente puede agregar otro archivo de intercambio.

Relacionado:  Cómo usar el comando whois en Linux

Elija un tamaño de archivo de intercambio de la tabla y ejecútelo durante un tiempo. Supervise el uso que hace su sistema del espacio de intercambio. Si se requiere un ajuste fino, los cambios se realizan fácilmente. Con archivos de intercambio, es un trabajo de dos minutos. Compare eso con el ajuste de particiones en una computadora Linux en vivo.

Crear el archivo de intercambio

No debe usar el fallocatecomando para crear su archivo de intercambio . Esto es de la página del manual de swapon:

La implementación del archivo de intercambio en el kernel espera poder escribir en
el archivo directamente, sin la ayuda del sistema de archivos. 

Este es un problema en archivos con agujeros o en archivos de copia sobre escritura en archivo 
sistemas como Btrfs. Los comandos como cp (1) o truncar (1) crean archivos con
agujeros. Estos archivos serán rechazados por swapon. 

Los archivos preasignados creados por fallocate (1) pueden interpretarse como archivos 
con agujeros también dependiendo del sistema de archivos. Los archivos de intercambio preasignados son
compatible con XFS desde Linux 4.18. 

La solución más portátil para crear un archivo de intercambio es usar dd (1) y 
/ dev / zero.

Entonces, aunque fallocatees más rápido, lo usaremos ddpara crear el archivo de intercambio . La máquina utilizada para investigar este artículo tiene dos GB de RAM. Vamos a crear un archivo de intercambio de un GB.

Las opciones son:

  • si : el archivo de entrada. En este ejemplo, estamos usando /dev/zeroque proporcionará un flujo de cero bytes.
  • de : el archivo de salida. Vamos a crear un archivo en el directorio raíz, llamado swapfile.
  • bs : el tamaño del bloque en bytes. Esto especifica cuántos bytes leer del archivo de entrada y escribir en el archivo de salida, a la vez.
  • contar : Cuántos bloques leer y escribir. Multiplique este número por el bsvalor para obtener el tamaño del archivo.
sudo dd if = / dev / zero of = / swapfile bs = 1024 count = 1048576

sudo dd if = / dev / zero of = / swapfile bs = 1024 count = 1048576 en una ventana de terminal

Se proporcionan algunas estadísticas cuando se crea el archivo.

salida de sudo dd if = / dev / zero of = / swapfile bs = 1024 count = 1048576 en una ventana de terminal

Podemos ver el número de bloques (registros) que se escribieron en el archivo, el tamaño del archivo, el tiempo necesario para crear el archivo y la tasa de transferencia de datos efectiva.

Utilice el lscomando para ver el archivo en el directorio raíz:

ls /

ls / en una ventana de terminal

Preparación del archivo de intercambio

Necesitamos preparar el archivo de intercambio con el mkswapcomando antes de que pueda usarse. No necesitamos proporcionar ningún parámetro que mkswapno sea la ruta y el nombre del archivo:

sudo mkswap / swapfile

sudo mkswap / swapfile en una ventana de terminal

El archivo está preparado para su uso como archivo de intercambio. Tenga en cuenta la advertencia sobre los permisos de archivo. Tendremos que cambiarlos para que el usuario root sea el único que pueda leer y escribir en el archivo de intercambio.

Usando el archivo de intercambio

Los permisos predeterminados son demasiado liberales, debemos restringirlos para que solo el root pueda usar el archivo de intercambio. Úselo chmodpara cambiar los permisos del archivo :

sudo chmod 600 / swapfile

sudo chmod 600 / swapfile en una ventana de terminal

Esto elimina todos los permisos de los miembros del grupo de archivos y de otros, pero permite que el propietario del archivo, root, lea y escriba en el archivo.

Necesitamos usar el  swaponcomando para que Linux sepa que hay un nuevo archivo de intercambio disponible para usar. Solo necesitamos proporcionar la ruta y el nombre del archivo:

sudo swapon / swapfile

sudo swapon / swapfile en una ventana de terminal

El archivo de intercambio ahora está activo.

Relacionado:  Cómo usar el comando time en Linux

Agregar el archivo de intercambio a fstab

Para asegurarse de que su archivo de intercambio esté disponible después de un reinicio, agréguelo al /etc/fstabarchivo . Puede usar cualquier editor de texto que prefiera, pero mostraremos el proceso usando el editor de texto gráfico Gedit .

sudo gedit / etc / fstab

sudo gedt / etc / fstab en una ventana de terminal

La línea que debemos agregar al final del archivo es:

/ swapfile ninguno swap sw 0 0

/ etc / fstab con la entrada swapfile resaltada

Los campos son:

  • Sistema de archivos : la ruta y el nombre del archivo de intercambio.
  • Punto de montaje : el archivo no se monta como un sistema de archivos, por lo que la entrada es «ninguno».
  • Tipo : esto es «intercambio».
  • Opciones : en el momento del arranque swapon -a (iniciar todos los dispositivos marcados como swap) serán llamados desde uno de los scripts de arranque. Esta opción le dice a Linux que trate esta entrada como un recurso de intercambio que debería estar bajo el control de ese swapon -acomando. Es común que se usen «valores predeterminados» aquí porque algunos usuarios de Linux creen erróneamente que este campo se ignora. Como veremos, ese no es el caso. Entonces tiene sentido usar la opción correcta.
  • Volcado : se puede establecer en cero. Es irrelevante en este caso.
  • Aprobado : esto se puede establecer en cero. Es irrelevante en este caso.

Guarde los cambios y cierre el editor.

Comprobación del uso de intercambio

Para ver si se está utilizando su espacio de intercambio, use el swaponcomando con la --showopción:

swapon - show

swapon: muestra en una ventana de terminal

Las columnas son:

  • Nombre : el nombre de la partición de intercambio o del archivo de intercambio.
  • Tipo : el tipo de dispositivo de intercambio.
  • Tamaño : el tamaño del recurso de intercambio.
  • Usado : la cantidad de espacio de intercambio usado.
  • Prio : La prioridad de este espacio de intercambio.

La prioridad del espacio de intercambio

A cada espacio de intercambio se le asigna una prioridad. Si no proporciona uno, se asigna uno automáticamente. Las prioridades asignadas automáticamente son siempre negativas. El rango de prioridades que se pueden asignar manualmente es de 0 a 32767. Los recursos de intercambio con prioridades más altas se utilizan primero.

Si más de un espacio de intercambio tiene la misma prioridad, se utilizan alternativamente hasta que ambos estén llenos, entonces el sistema busca el espacio de intercambio con la siguiente prioridad más baja. Si solo tiene un espacio de intercambio, la prioridad es irrelevante, por supuesto. Pero cambiaremos la prioridad del archivo de intercambio que hemos creado para demostrar cómo hacerlo.

Para establecer una prioridad, agregue la  pri=  opción (prioridad) a la /etc/fstabentrada. Edite la línea que agregó para /etc/fstab que se vea así:

/ swapfile ninguno swap sw, pri = 10 0 0

Es decir, agregue pri=10al campo de opciones, separado del «sw» con una coma. No deje ningún espacio entre «sw», la coma y «pri = 10». Reinicie su computadora y use el swapon --showcomando:

swapon - mostrar

swapon - mostrar en una ventana de terminal

La prioridad de este espacio de intercambio se ha elevado a 10. Lo que es una prueba positiva de que /etc/fstabno se ignora el campo de opciones en la entrada.

Intercambiar espacio de forma fácil

Continuando con la exposición y la explicación, podemos crear un nuevo archivo de intercambio tan fácil y rápidamente como este:

sudo dd if = / dev / zero / of = / swapfile2 bs = 1024 count = 104857
sudo mkswap / swapfile2
sudo chmod 600 / swapfile2
sudo swapon / swapfile2

Y comprobemos que funcionó:

swapon - show

sudo dd if = / dev / zero / of = / swapfile2 bs = 1024 count = 104857 en una ventana de terminal

Si desea hacer esa caída permanente, en su /etc/fstabarchivo.

Auge. Trabajo hecho.