Este tutorial analiza el concepto de archivo de intercambio en Linux, por qué se usa y sus ventajas sobre la partición de intercambio tradicional. Aprenderá cómo crear un archivo de intercambio o cambiar su tamaño.
¿Qué es un archivo de intercambio en Linux?
Un archivo de intercambio permite a Linux simular el espacio en disco como RAM. Cuando su sistema comienza a quedarse sin RAM, utiliza el espacio de intercambio e intercambia parte del contenido de la RAM en el espacio del disco. Esto libera la memoria RAM para atender procesos más importantes. Cuando la RAM vuelve a estar libre, vuelve a intercambiar los datos del disco. Recomiendo leer este artículo para obtener más información sobre el intercambio en Linux.
Tradicionalmente, el espacio de intercambio se usa como una partición separada en el disco. Cuando instala Linux, crea una partición separada solo para el intercambio. Pero esta tendencia ha cambiado en los últimos años.
Con el archivo de intercambio, ya no necesita una partición separada. Usted crea un archivo bajo la raíz y le dice a su sistema que lo use como espacio de intercambio.
Con una partición de intercambio dedicada, cambiar el tamaño del espacio de intercambio es una pesadilla y una tarea imposible en muchos casos. Pero con los archivos de intercambio, puede cambiar su tamaño como desee.
Las versiones recientes de Ubuntu y algunas otras distribuciones de Linux han comenzado a usar el archivo de intercambio de forma predeterminada. Incluso si no crea una partición de intercambio, Ubuntu crea un archivo de intercambio de alrededor de 1 GB por sí solo.
Veamos un poco más sobre los archivos de intercambio.
Comprobar el espacio de intercambio en Linux
Antes de ir y comenzar a agregar espacio de intercambio, sería una buena idea verificar si ya tiene espacio de intercambio disponible en su sistema.
Puedes comprobarlo con el comando gratuito en Linux. En mi caso, mi Dell XPS tiene 14GB de swap.
free -h
total used free shared buff/cache available
Mem: 7.5G 4.1G 267M 971M 3.1G 2.2G
Swap: 14G 0B 14G
El comando gratuito le da el tamaño del espacio de intercambio pero no le dice si es una partición de intercambio real o un archivo de intercambio. El comando swapon es mejor en este sentido.
swapon --show
NAME TYPE SIZE USED PRIO
/dev/nvme0n1p4 partition 14.9G 0B -2
Como puede ver, tengo 14,9 GB de espacio de intercambio y está en una partición separada. Si fuera un archivo de intercambio, el tipo habría sido archivo en lugar de partición.
swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
Si no tiene un espacio de intercambio en su sistema, debería mostrar algo como esto:
free -h
total used free shared buff/cache available
Mem: 7.5G 4.1G 267M 971M 3.1G 2.2G
Swap: 0B 0B 0B
El comando swapon no mostrará ningún resultado.
Crear archivo de intercambio en Linux
Si su sistema no tiene espacio de intercambio o si cree que el espacio de intercambio no es lo suficientemente adecuado, puede crear un archivo de intercambio en Linux. También puede crear varios archivos de intercambio.
Veamos cómo crear un archivo de intercambio en Linux. Estoy usando Ubuntu 18.04 en este tutorial, pero también debería funcionar en otras distribuciones de Linux.
Paso 1:Cree un nuevo archivo de intercambio
Lo primero es lo primero, cree un archivo con el tamaño de espacio de intercambio que desee. Digamos que quiero agregar 1 GB de espacio de intercambio a mi sistema. Use el comando fallacate para crear un archivo de 1 GB de tamaño.
sudo fallocate -l 1G /swapfile
Se recomienda permitir que solo la raíz lea y escriba en el archivo de intercambio. Incluso verá una advertencia como "permisos inseguros 0644, 0600 sugeridos" cuando intente usar este archivo para el área de intercambio.
sudo chmod 600 /swapfile
Tenga en cuenta que el nombre del archivo de intercambio podría ser cualquier cosa. Si necesita varios espacios de intercambio, puede darle cualquier nombre apropiado como swap_file_1, swap_file_2, etc. Es solo un archivo con un tamaño predefinido.
Paso 2:Marque el nuevo archivo como espacio de intercambio
Debe decirle al sistema Linux que este archivo se usará como espacio de intercambio. Puede hacerlo con la herramienta mkswap.
sudo mkswap /swapfile
Debería ver una salida como esta:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=7e1faacb-ea93-4c49-a53d-fb40f3ce016a
Paso 3:habilite el archivo de intercambio
Ahora su sistema sabe que el archivo de intercambio de archivos se puede usar como espacio de intercambio. Pero aún no está hecho. Debe habilitar el archivo de intercambio para que su sistema pueda comenzar a usar este archivo como intercambio.
sudo swapon /swapfile
Ahora, si revisa el espacio de intercambio, debería ver que su sistema Linux lo reconoce y lo usa como área de intercambio:
swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
Paso 4:Haz que los cambios sean permanentes
Todo lo que has hecho hasta ahora es temporal. Reinicie su sistema y todos los cambios desaparecerán.
Puede hacer que los cambios sean permanentes agregando el archivo de intercambio recién creado al archivo /etc/fstab.
Siempre es una buena idea hacer una copia de seguridad antes de realizar cambios en el archivo /etc/fstab.
sudo cp /etc/fstab /etc/fstab.back
Ahora puede agregar la siguiente línea al final del archivo /etc/fstab:
/swapfile none swap sw 0 0
Puede hacerlo manualmente usando un editor de texto de línea de comando o simplemente use el siguiente comando:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Ahora tienes todo en su lugar. Su archivo de intercambio se utilizará incluso después de reiniciar su sistema Linux.
Ajustar el intercambio
Los parámetros de swappiness determinan con qué frecuencia se debe usar el espacio de intercambio. El valor de swappiness va de 0 a 100. Un valor más alto significa que el espacio de intercambio se usará con más frecuencia.
La capacidad de intercambio predeterminada en el escritorio de Ubuntu es 60, mientras que en el servidor es 1. Puede verificar la capacidad de intercambio con el siguiente comando:
cat /proc/sys/vm/swappiness
¿Por qué los servidores deberían usar un intercambio bajo? Debido a que el intercambio es más lento que la RAM y para un mejor rendimiento, la RAM debe utilizarse tanto como sea posible. En los servidores, el factor de rendimiento es crucial y, por lo tanto, el swappinness es lo más bajo posible.
Puede cambiar la capacidad de intercambio sobre la marcha con el siguiente comando systemd:
sudo sysctl vm.swappiness=25
Sin embargo, este cambio solo es temporal. Si desea que sea permanente, puede editar el archivo /etc/sysctl.conf y agregar el valor de swappiness al final del archivo:
vm.swappiness=25
Cambiar el tamaño del espacio de intercambio en Linux
Hay un par de formas de cambiar el tamaño del espacio de intercambio en Linux. Pero antes de ver eso, debe aprender algunas cosas al respecto.
Cuando le pide a su sistema que deje de usar un archivo de intercambio para el área de intercambio, transfiere todos los datos (páginas para ser precisos) a la RAM. Por lo tanto, debe tener suficiente RAM libre antes de cambiar.
Es por eso que una buena práctica es crear y habilitar otro archivo de intercambio temporal. De esta manera, cuando cambie el área de intercambio original, su sistema utilizará el archivo de intercambio temporal. Ahora puede cambiar el tamaño del espacio de intercambio original. Puede eliminar manualmente el archivo de intercambio temporal o dejarlo como está y se eliminará automáticamente en el próximo arranque.
Si tiene suficiente RAM libre o si creó un espacio de intercambio temporal, cambie su archivo original.
sudo swapoff /swapfile
Ahora puede usar el comando fallacate para cambiar el tamaño del archivo. Digamos que lo cambia a 2 GB de tamaño:
sudo fallocate -l 2G /swapfile
Ahora marque el archivo como espacio de intercambio nuevamente:
sudo mkswap /swapfile
Y vuelve a activar el intercambio:
sudo swapon /swapfile
También puede optar por tener varios archivos de intercambio al mismo tiempo.
Eliminar el archivo de intercambio en Linux
Puede tener sus razones para no usar el archivo de intercambio en Linux. Si desea eliminarlo, el proceso es similar al que acaba de ver al cambiar el tamaño del intercambio.
Primero, asegúrese de tener suficiente RAM libre. Ahora cambie el archivo:
sudo swapoff /swapfile
El siguiente paso es eliminar la entrada respectiva del archivo /etc/fstab.
Y al final, puede eliminar el archivo para liberar espacio:
sudo rm /swapfile
¿Intercambian?
Creo que ahora tiene una buena comprensión del concepto de archivo de intercambio en Linux. Ahora puede crear fácilmente un archivo de intercambio o cambiar su tamaño según sus necesidades.
Si tiene algo que agregar sobre este tema o si tiene alguna duda, deje un comentario a continuación.