Saltar al contenido

Cómo agregar espacio de intercambio en Ubuntu 18.04

marzo 4, 2020

 

Una versión anterior de este tutorial fue escrito por Justin Ellingwood

Introducción

Uno de la forma más fácil de proteger contra errores de falta de memoria en aplicaciones es añadir un poco de espacio de intercambio a su servidor. En esta guía, vamos a cubrir cómo agregar un archivo de intercambio a un servidor de Ubuntu 18.04.

Advertencia: A pesar de intercambio se recomienda generalmente para los sistemas que utilizan discos duros de spinning tradicional, mediante un intercambio con los SSD pueden causar problemas con la degradación de hardware con el tiempo. Debido a esta consideración, no recomendamos que permite intercambio en digitalocean o cualquier otro proveedor que utiliza almacenamiento SSD. Si lo hace, puede afectar a la fiabilidad del hardware subyacente para usted y sus vecinos. Esta guía se proporciona como referencia para los usuarios que pueden tener sistemas de disco giratorio en otro lugar.

Si usted necesita para mejorar el rendimiento de su servidor en digitalocean, recomendamos actualizar el droplet. Esto dará lugar a mejores resultados en general y disminuirá la probabilidad de contribuir a problemas de hardware que pueden afectar a su servicio.

¿Cuál es Swap?

Intercambiar es un área en un disco duro que ha sido designado como un lugar donde el sistema operativo puede almacenar temporalmente los datos que ya no puede mantener en la memoria RAM. Básicamente, esto le da la capacidad de aumentar la cantidad de información que el servidor puede guardar en su “memoria” de trabajo, con algunas advertencias. El espacio de intercambio en el disco duro se utiliza principalmente cuando ya no hay espacio suficiente en la memoria RAM para almacenar los datos de aplicación en uso.

La información escrita en el disco será significativamente más lento que la información guardado en la memoria RAM, pero el sistema operativo preferirá seguir funcionando datos de la aplicación en la memoria y el uso de intercambio de los datos más antiguos. En general, tener espacio de intercambio como un mensaje para cuando la memoria RAM del sistema se agota puede ser una buena red de seguridad contra excepciones fuera de la memoria en los sistemas con almacenamiento SSD no disponible.

Paso 1 – Comprobación del Sistema de Información de intercambio

Antes de comenzar, podemos comprobar si el sistema ya tiene algo de espacio de intercambio disponible. Es posible tener múltiples archivos de intercambio o particiones de intercambio, pero en general debería ser suficiente.

podemos ver si el sistema tiene cualquier intercambio configurado escribiendo:

sudo swapon --show

  • sudo swapon –show

Si no vuelvas cualquier salida, esto significa que su sistema no tiene espacio de intercambio disponible actualmente.

Puede comprobar que no hay intercambio activo utilizando la herramienta gratuita:

free -h

  • libre -h

Output total used free shared buff/cache available
Mem: 985M 84M 222M 680K 678M 721M
Swap: 0B 0B 0B

Como se puede ver en la Intercambiar fila de la salida, ningún intercambio es activo en el sistema.

Paso 2 – Comprobar el espacio disponible en la partición de disco duro

Antes de crear nuestro archivo de intercambio, comprobaremos nuestro uso actual del disco para asegurarse de que tenemos suficiente espacio. Para ello, introduzca:

df -h

  • df -h

OutputFilesystem Size Used Avail Use% Mounted on
udev 481M 0 481M 0% /dev
tmpfs 99M 656K 98M 1% /run
/dev/vda1 25G 1.4G 23G 6% /
tmpfs 493M 0 493M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 493M 0 493M 0% /sys/fs/cgroup
/dev/vda15 105M 3.4M 102M 4% /boot/efi
tmpfs 99M 0 99M 0% /run/user/1000

El dispositivo con / en el Montado en la columna es nuestro disco en este caso. Tenemos un montón de espacio disponible en este ejemplo (sólo 1.4G utiliza). Su uso será probablemente diferente.

Aunque hay muchas opiniones sobre el tamaño apropiado de un espacio de intercambio, que realmente depende de sus preferencias personales y sus requisitos de aplicación. Generalmente, una cantidad igual a o el doble de la cantidad de RAM en su sistema es un buen punto de partida. Otra regla de buena práctica es que algo más de 4 G de intercambio es probablemente innecesario si sólo están utilizando como punto de retorno RAM.

Paso 3 – Creación de un archivo de intercambio

Ahora que sabemos que nuestro espacio de disco duro disponible, se puede crear un archivo de intercambio en nuestro sistema de ficheros. De la asignación de un archivo del tamaño de intercambio que queremos denominado archivo de intercambio en nuestro directorio raíz (/).

La mejor manera de crear un archivo de intercambio es con el programa fallocate. Este comando crea inmediatamente un archivo del tamaño especificado.

Desde el servidor en nuestro ejemplo tiene 1G de RAM, se creará un archivo de 1G en esta guía. Ajuste este para satisfacer las necesidades de su propio servidor:

sudo fallocate -l 1G /swapfile

  • sudo -l fallocate 1G / archivo de intercambio

podemos verificar que la cantidad correcta de espacio estaba reservado escribiendo: ls

ls -lh /swapfile

  • -lh / archivo de intercambio

-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

  • -rw-r – r– 1 root root 1.0G Abr 25 de 11:14 / archivo de intercambio

Nuestro archivo se ha creado con la cantidad correcta de espacio conjunto a un lado.

Paso 4 – Habilitación del archivo de intercambio

Ahora que tenemos un archivo del tamaño correcto disponible, tenemos que convertir en realidad esto en el espacio de intercambio.

En primer lugar, tenemos que bloquear los permisos del archivo para que sólo los usuarios con privilegios de raíz pueden leer el contenido. Esto evita que los usuarios normales de la posibilidad de acceder al archivo, lo que tendría implicaciones de seguridad significativos.

hacer que el archivo sólo se puede acceder a raíz escribiendo:

sudo chmod 600 /swapfile

  • sudo chmod 600 / archivo de intercambio

verificar el cambio de permisos escribiendo: ls

ls -lh /swapfile

  • -lh / archivo de intercambio

Output-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

como se puede ver , solamente la raíz usuario tiene la lectura y escritura habilitada banderas.

Ahora podemos marcar el archivo como espacio de intercambio escribiendo:

sudo mkswap /swapfile

  • sudo mkswap / archivo de intercambio

OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Después de marcar el archivo, que puede permitir que el archivo de intercambio, permitiendo que nuestro sistema para iniciar la utilización de la misma:

sudo swapon /swapfile

  • sudo swapon / archivo de intercambio

verificar que el canje está disponible escribiendo:

sudo swapon --show

  • sudo swapon –show

OutputNAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2

podemos comprobar la salida de la utilidad libre de nuevo para corroborar nuestros resultados:

free -h

  • gratis – h

Output total used free shared buff/cache available
Mem: 985M 84M 220M 680K 680M 722M
Swap: 1.0G 0B 1.0G

nuestro intercambio se ha establecido con éxito y nuestro sistema operativo comenzará a utilizar según sea necesario.

Paso 5 – Hacer el archivo de intercambio cambios recientes Permanente

Nuestros han permitido que el archivo de intercambio para la sesión actual. Sin embargo, si reinicio, el servidor no conserva la configuración de intercambio de forma automática. Podemos cambiar esto añadiendo el archivo de intercambio en nuestro archivo / etc / fstab.

copia de seguridad del archivo / etc / fstab en caso de que algo va mal:

sudo cp /etc/fstab /etc/fstab.bak

  • sudo cp / etc / fstab /etc/fstab.bak

Añadir la información de archivo de intercambio al final de su archivo / etc / fstab escribiendo:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

  • echo ‘/ archivo de intercambio ninguno de intercambio sw 0 0’ | sudo tee -a / etc / fstab

A continuación vamos a revisar algunos ajustes podemos actualizar para sintonizar nuestro espacio de intercambio.

Paso 6 – Configuración de la sintonización de su Intercambiar

Hay algunas opciones que puede configurar que tendrá un impacto en el rendimiento del sistema cuando se trata de intercambio.

Ajuste de la Propiedad swappiness

Los swappiness configura los parámetros de la frecuencia con sus datos permutas sistema de memoria RAM para el espacio de intercambio. Este es un valor entre 0 y 100 que representa un porcentaje.

Con valores cercanos a cero, el núcleo no intercambiar datos en el disco a menos que sea absolutamente necesario. Recuerde, las interacciones con el archivo de intercambio son “caros” en que se toman mucho más tiempo que las interacciones con RAM y pueden causar una reducción significativa en el rendimiento. Diciendo que el sistema no se basan en el intercambio tanto en general hará que su sistema más rápido. Valores

que están más cerca de 100 tratarán de poner más datos en canje en un esfuerzo por mantener más espacio de memoria RAM libre. Dependiendo de perfil de memoria de sus aplicaciones o lo que usted está utilizando su servidor para, esto podría ser mejor en algunos casos.

podemos ver el valor actual swappiness escribiendo:

cat /proc/sys/vm/swappiness

  • cat / proc / sys / vm / swappiness

Output60

para un escritorio, un entorno swappiness de 60 no es un mal precio. Para un servidor, es posible que desee moverlo más cerca de 0.

Podemos establecer el swappiness a un valor diferente utilizando el comando sysctl.

Por ejemplo, para establecer el swappiness a 10, podríamos escribir:

sudo sysctl vm.swappiness=10

  • sudo sysctl vm.swappiness = 10

Outputvm.swappiness = 10

Esta configuración se mantendrá hasta el siguiente reinicio. Podemos definir este valor automáticamente al reiniciar mediante la adición de la línea en nuestro archivo /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

  • sudo nano /etc/sysctl.conf

En la parte inferior, se puede añadir:

vm.swappiness=10

Guardar y cierre el archivo cuando haya terminado.

Ajuste de la presión de caché Configuración

Otro valor relacionado que es posible que desee modificar es la vfs_cache_pressure. Esto configura la cantidad del sistema elegirán para almacenar en caché ínodo y dentry información sobre otros datos.

Básicamente, se trata de acceder a los datos sobre el sistema de ficheros. Esto es generalmente muy costoso para mirar hacia arriba y solicitado con mucha frecuencia, por lo que es una cosa excelente para su sistema de caché. Se puede ver el valor actual mediante la consulta del nuevo sistema de ficheros proc:

cat /proc/sys/vm/vfs_cache_pressure

  • cat / proc / sys / vm / vfs_cache_pressure

Output100

como está configurado actualmente, nuestros elimina del sistema de inodos información de la caché demasiado rápidamente. Podemos establecer a un ambiente más conservador como 50 escribiendo:

sudo sysctl vm.vfs_cache_pressure=50

  • sudo sysctl vm.vfs_cache_pressure = 50

Outputvm.vfs_cache_pressure = 50

Una vez más, esto sólo es válida para la sesión actual. Podemos cambiar eso mediante la adición a nuestro fichero de configuración como lo hicimos con nuestro entorno swappiness:

sudo nano /etc/sysctl.conf

  • sudo nano /etc/sysctl.conf

En la parte inferior, agregue la línea que especifica el nuevo valor:

vm.vfs_cache_pressure=50

Guardar y cerrar el archivo cuando haya terminado.

Conclusión

Siguiendo los pasos de esta guía le dará un respiro en los casos en que de otro modo llevar a cabo las excepciones de falta de memoria. El espacio de intercambio puede ser muy útil para evitar algunos de estos problemas comunes.

Si está ejecutando en OOM (sin memoria) errores, o si encuentra que su sistema es incapaz de utilizar las aplicaciones que necesita, la mejor solución es optimizar sus configuraciones de aplicaciones o actualizar el servidor.