Cómo crear un archivo de intercambio en Linux

Contenidos

El interior de un disco duro mecánico.

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 factible que desee incrementar el espacio de intercambio existente o agregar nuevo a su computadora Linux.

  • Tal vez su espacio de intercambio se esté ejecutando muchas veces al máximo o cerca del máximo.
  • Es fácil hacer un clic en la opción incorrecta a lo largo del procedimiento 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 respuesta 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 utilizar 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. En realidad, algunas distribuciones de Linux ahora crean archivos de intercambio en lugar de particiones de intercambio.

Swap no se utiliza solo 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 administración sana de la memoria se torna muy difícil de lograr para el kernel. Veamos la forma fácil de agregar algo de 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 eso, los archivos de intercambio no fueron compatibles.

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

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

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

RELACIONADO: ¿Qué sistema de archivos Linux debería usar?

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 inclusive que evitaran el registro del sistema en las SSD.

Esto es mucho menos preocupante en la actualidad, y muchas SSD que están a la venta disponen 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.

RELACIONADO: ¿Cuánto duran verdaderamente las unidades de estado sólido?

Comprobación del espacio de intercambio existente

Mira antes de saltar. Veamos qué espacio de intercambio está habilitada en su computadora. Puede hacer esto de dos formas, y usaremos ambas. los free El comando mostrará la memoria usada y libre. los -h (legible por humanos) causará free usar unidades sensibles cuando muestra los valores de la memoria.

free -h

La salida de free muestra que no hay espacio de intercambio configurado en esta máquina.

El intercambio nunca se discute sin RAM y sin que surja RAM libre. Por eso, es importante destacar 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 aún 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 manera de chequear si hay espacio de intercambio disponible es usar el swapon mando. los --show la opción no hace ninguna cambios en el intercambio en su computadora. Solo proporciona estadísticas.

swapon --show

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 asociadas con el tamaño del archivo de intercambio que va a crear.

¿Cuánto espacio de intercambio necesito?

La solución 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 volvió 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 en la actualidad. Y no va a adjudicar 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 en el Preguntas frecuentes sobre el intercambio de Ubuntu. Es un enfoque corto y de sentido común (aún cuando, 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 verdaderamente no importa qué valor elija. Siempre podemos borrar 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.

Seleccionar 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 necesita 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.

RELACIONADO: ¿Qué es Swappiness en Linux? (y cómo cambiarlo)

Crear el archivo de intercambio

No deberías utilizar el fallocate mando para crear su archivo de intercambio. Esto es de la página de 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, aún cuando fallocate es más rápido, usaremos dd para crear el archivo de intercambio. La máquina utilizada para investigar este post tiene dos GB de RAM. Vamos a crear un archivo de intercambio de un GB.

Las alternativas son:

  • si: El archivo de entrada. En este ejemplo, estamos usando /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, al mismo tiempo.
  • contar: Cuántos bloques leer y escribir. Multiplica este número por el bs valor para obtener el tamaño del archivo.
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

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

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.

Usar el ls comando para ver el archivo en el directorio raíz:

ls /

Preparación del archivo de intercambio

Necesitamos que preparar el archivo de intercambio con el mkswap comando antes de que pueda ser utilizado. No necesitamos proporcionar ningún parámetro para mkswap que no sea la ruta y el nombre del archivo:

sudo mkswap /swapfile

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 utilizar el archivo de intercambio. Utilizar chmod para cambiar los permisos del archivo:

sudo chmod 600 /swapfile

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

RELACIONADO: Cómo utilizar el comando chmod en Linux

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

sudo swapon /swapfile

El archivo de intercambio ahora está activo.

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/fstab expediente. Puede utilizar cualquier editor de texto que prefiera, pero mostraremos el procedimiento usando el editor de texto gráfico Gedit.

sudo gedit /etc/fstab

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 está montado como un sistema de archivos, por lo que la entrada es «ninguno».
  • Escribe: Esto es «intercambio».
  • Opciones: En el momento del arranque swapon -a (iniciar todos los dispositivos marcados como swap) se llamará 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 -a mando. Es común ver «valores predeterminados» usados ​​aquí debido a que 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 usar la opción correcta.
  • Vertedero: Esto se puede determinar en cero. Es irrelevante para este caso.
  • Aprobar: Esto se puede determinar en cero. Es irrelevante para este caso.

Guarde los cambios y cierre el editor.

RELACIONADO: Cómo escribir un archivo fstab en Linux

Comprobación del uso de intercambio

Para ver si se está usando su espacio de intercambio, use el swapon comando con el --show opción:

swapon --show

Las columnas son:

  • Nombre: El nombre de la partición de intercambio o del archivo de intercambio.
  • Escribe: El tipo de dispositivo de intercambio.
  • Tamaño: El tamaño del recurso de intercambio.
  • Usó: La cantidad de espacio de intercambio utilizado.
  • 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 adjudicar manualmente es de 0 a 32767. Los recursos de intercambio con prioridades más altas se usan primero.

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

Para determinar una prioridad, agregue el pri= opción (prioridad) a la /etc/fstab entrada. Edite la línea que agregó a /etc/fstab para verse así:

/swapfile    none    swap    sw,pri=10    0    0

Dicho de otra forma, agregue pri=10 al campo de alternativas, separado del «sw» con una coma. No deje espacios entre «sw», la coma y «pri = 10». Reinicie su computadora y use el swapon --show mando:

swapon -- show

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

Intercambiar espacio de forma fácil

Pasando por 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

Si deseas hacer esa gota permanente, en tu /etc/fstab expediente.

Auge. Trabajo hecho.

setTimeout(function(){
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, document,’script’,
‘https://connect.facebook.net/en_US/fbevents.js’);
fbq(‘init’, ‘335401813750447’);
fbq(‘track’, ‘PageView’);
},3000);

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.