Agregue espacio de intercambio a una computadora Linux, o aumente el espacio de intercambio que ya está presente, sin jugar con 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 esté ejecutando 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 decidiste previamente que tenías tanto memoria de acceso aleatorio (RAM) no necesitabas ningún cambio y has cambiado 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 intercambiar archivo 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.

los Sistema de archivos Btrfs tiene ciertas advertencias sobre los archivos de intercambio. En un momento, hubo un conflicto entre el Copiar en escrito naturaleza 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 tanto, los archivos de intercambio no eran compatibles.

Desde el kernel 5.0, puede tener archivos de intercambio en 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.

  Cómo crear instantáneas con BtrFS en Linux

Esto es mucho menos preocupante hoy en día, y muchas 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 comando libre mostrará la memoria usada y libre. La opción -h (legible por humanos) hará que se puedan usar unidades sensibles cuando muestre los valores de memoria.

free -h

fre -h en una ventana de terminal

El resultado de free muestra 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” puede ser descartado inmediatamente y utilizado por cualquier aplicación que necesite algo de memoria.

Otra forma de comprobar si hay espacio de intercambio disponible es utilizar el comando swapon. La opción –show no hace ninguna cambios 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. Los PC domésticos 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 simplemente 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 es la 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.

  Cómo encontrar y eliminar enlaces simbólicos rotos en Linux

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.

Recoger un tamaño de archivo de intercambio de la tablay 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 deberías usar el comando fallocate para crear su archivo de intercambio. Esto es de la página del manual de swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Entonces, aunque Fallocate es más rápido, usaremos dd para 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, usamos / dev / zero, que 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.
count: cuántos bloques leer y escribir. Multiplique este número por el valor bs 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 la cantidad 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 comando ls para ver el archivo en el directorio raíz:

ls /

ls / en una ventana de terminal

Preparación del archivo de intercambio

Necesitamos que preparar el archivo de intercambio con el comando mkswap antes de que pueda usarse. No necesitamos proporcionar ningún parámetro a mkswap que no 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. Utilice chmod para 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 comando swapon 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.

  Cómo instalar JetBrains CLion 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 archivo / etc / fstab. 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    none    swap    sw    0    0

/ etc / fstab con la entrada del archivo de intercambio 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, se llamará swapon -a (iniciar todos los dispositivos marcados como swap) 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 comando swapon -a. Es común ver «valores predeterminados» usados ​​aquí porque hay una creencia errónea entre algunos usuarios de Linux de que este campo se ignora. Como veremos, ese no es el caso. Por tanto, tiene sentido utilizar 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á usando su espacio de intercambio, use el comando swapon con la opción –show:

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 opción pri = (prioridad) a la entrada / etc / fstab. Edite la línea que agregó a / etc / fstab para que se vea así:

/swapfile    none    swap    sw,pri=10    0    0

Es decir, agregue pri = 10 al 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 comando swapon –show:

swapon -- show

swapon - mostrar en una ventana de terminal

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

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 archivo / etc / fstab.

Auge. Trabajo hecho.