One place for hosting & domains

      espacio

      Cómo agregar espacio de intercambio en Ubuntu 20.04


      Introducción

      Una opción para evitar errores de memoria insuficiente en aplicaciones es agregar espacio de intercambio a su servidor. En esta guía, abordaremos la manera de añadir un archivo de intercambio a un servidor Ubuntu 20.04.

      Advertencia: Si bien, en general, el intercambio se recomienda para sistemas que utilizan discos duros giratorios tradicionales, utilizarlo con SSD puede causar problemas de degradación de hardware con el paso del tiempo. Debido a esta consideración, no recomendamos habilitar el intercambio en DigitalOcean ni en ningún otro proveedor que utilice almacenamiento SSD.

      ¿Qué es el espacio de intercambio?

      El Swap es una porción de almacenamiento de las unidades de disco duro que se reserva para el sistema operativo, a fin de almacenar de forma temporal datos que ya no es posible contener en la memoria RAM. Esto le permite aumentar la cantidad de información que su servidor puede conservar en su memoria funcional, con algunas advertencias. El espacio de intercambio en el disco duro se utilizará principalmente cuando ya no haya espacio suficiente en la RAM para mantener datos de aplicación en uso.

      La información escrita en el disco será considerablemente más lenta que la información conservada en la RAM, aunque el sistema operativo preferiría seguir ejecutando datos de aplicación en la memoria y utilizar el espacio de intercambio para los datos antiguos. En general, disponer de espacio de intercambio como una segunda opción para cuando la RAM de su sistema se agote puede funcionar como una buena red de seguridad contra excepciones por falta de memoria en sistemas con almacenamiento no SSD disponible.

      Paso 1: Comprobar la información de intercambio del sistema

      Antes de empezar, podemos verificar si el sistema ya cuenta con espacio de intercambio disponible. Es posible contar con una variedad de archivos o particiones de intercambio, pero generalmente debería bastar con uno de ellos.

      Podemos ver si el sistema cuenta con algún intercambio configurado ingresando lo siguiente:

      Si no obtiene ningún resultado, esto significa que su sistema no tiene espacio de intercambio disponible actualmente.

      Puede verificar que no haya intercambio activo con la utilidad free:

      Output

      total used free shared buff/cache available Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi Swap: 0B 0B 0B

      Como puede ver en la fila de Swap de los resultados, no existe intercambio activo en el sistema.

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

      Antes de crear nuestro archivo de intercambio, comprobaremos la utilización actual de nuestro disco para asegurarnos de contar con espacio suficiente. Realice esto ingresando lo siguiente:

      Output

      Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 932K 98M 1% /run /dev/vda1 25G 1.4G 23G 7% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi /dev/loop0 55M 55M 0 100% /snap/core18/1705 /dev/loop1 69M 69M 0 100% /snap/lxd/14804 /dev/loop2 28M 28M 0 100% /snap/snapd/7264 tmpfs 99M 0 99M 0% /run/user/1000

      El dispositivo con / en la columna Mounted on es nuestro disco en este caso. En este ejemplo, contamos con bastante espacio disponible (solo 1.4 GB utilizados). Probablemente su uso será diferente.

      Aunque existen varias opiniones acerca de la dimensión adecuada de un espacio de intercambio, depende de sus preferencias personales y de los requisitos de su aplicación. En general, una cantidad idéntica o equivalente al doble de la cantidad de RAM en su sistema es un buen punto de partida. Otra buena regla general es que cualquier cosa que supere los 4G de intercambio es probablemente innecesaria si lo está utilizando como una segunda opción al RAM.

      Paso 3: Creación de un archivo de intercambio

      Ahora que conocemos nuestro espacio de disco duro disponible, podemos crear un archivo de intercambio en nuestro sistema de archivos. Asignaremos un archivo del tamaño que deseemos y lo llamaremos swapfile en nuestro directorio root (/).

      La mejor opción para crear un archivo de intercambio es usar el programa fallocate. Este comando crea instantáneamente un archivo del tamaño especificado.

      Dado que el servidor de nuestro ejemplo tiene 1 G de RAM, crearemos un archivo de 1 G en esta guía. Ajuste esto para satisfacer las necesidades de su propio servidor:

      • sudo fallocate -l 1G /swapfile

      Podemos verificar que la cantidad correcta de espacio estaba reservada ingresando lo siguiente:

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

      Nuestro archivo se ha creado con la cantidad correcta de espacio reservado.

      Paso 4: Habilitación del archivo de intercambio

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

      Primero, debemos restringir los permisos del archivo para que solo los usuarios con privilegios de root puedan leer el contenido. Esto impide que usuarios comunes puedan acceder al archivo, lo que tendría implicaciones de seguridad significativas.

      Ingrese lo siguiente para que solo root pueda acceder al archivo:

      Verifique el cambio de permisos introduciendo lo siguiente:

      Output

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

      Como puede ver, los indicadores de lectura y escritura solo están habilitados para el root user.

      Ahora podemos marcar el archivo como espacio de intercambio al ingresar lo siguiente:

      Output

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

      Después de marcar el archivo, podemos habilitar el archivo de intercambio, lo cual permite que nuestro sistema empiece a utilizarlo:

      Verifique que el intercambio esté disponible ingresando lo siguiente:

      Output

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

      Podemos verificar los resultados de la utilidad free de nuevo para corroborar nuestros hallazgos:

      Output

      total used free shared buff/cache available Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi Swap: 1.0Gi 0B 1.0Gi

      Nuestro intercambio se ha configurado con éxito y nuestro sistema operativo comenzará a utilizarlo según sea necesario.

      Paso 5: Lograr que el archivo de intercambio sea permanente

      Nuestros cambios recientes habilitaron el archivo de intercambio para la sesión en curso. Sin embargo, si reiniciamos, el servidor no conservará los ajustes de intercambio de forma automática. Podemos cambiar esto añadiendo el archivo de intercambio a nuestro archivo /etc/fstab.

      Respalde el archivo /etc/fstab en caso de que algún imprevisto:

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

      Añada la información del archivo de intercambio al final de su archivo /etc/fstab ingresando lo siguiente:

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

      A continuación, revisaremos algunos ajustes que podamos actualizar para regular nuestro espacio de intercambio.

      Paso 6: Ajustar sus ajustes de intercambio

      Existen algunas opciones que puede configurar y que tendrán efecto en el rendimiento de su sistema al gestionar un intercambio.

      Ajuste de la propiedad “”swappiness”

      El parámetro swappiness configura la frecuencia con la cual su sistema intercambia datos de la RAM al 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 que las interacciones con el archivo de intercambio son “exigentes” puesto que tardan mucho más que las interacciones con la RAM y pueden reducir el rendimiento considerablemente. Indicar al sistema que no dependa del intercambio en demasía hará que sea más rápido.

      En un esfuerzo por mantener más espacio de RAM libre, se intentará verter al intercambio más datos de los valores cercanos a 100. Dependiendo del perfil de memoria de sus aplicaciones o para qué está utilizando su servidor, esto podría ser mejor en algunos casos.

      Podemos ver el valor de intercambiabilidad actual al ingresar lo siguiente:

      • cat /proc/sys/vm/swappiness

      Output

      60

      Para un escritorio, un ajuste de intercambiabilidad de 60 no es un mal valor. Para un servidor, posiblemente le convenga acercarlo a 0.

      Podemos fijar la capacidad de intercambio en un valor diferente con el comando sysctl.

      Por ejemplo, para establecer la intercambiabilidad en 10, podríamos ingresar lo siguiente:

      • sudo sysctl vm.swappiness=10

      Output

      vm.swappiness = 10

      Esta configuración persistirá hasta el próximo reinicio. Podemos establecer este valor automáticamente en el reinicio añadiendo la línea a nuestro archivo /etc/sysctl.conf:

      • sudo nano /etc/sysctl.conf

      En la parte inferior, puede añadir:

      /etc/sysctl.conf

      vm.swappiness=10
      

      Guarde y cierre el archivo cuando haya terminado.

      Ajustar la configuración de presión de caché

      Otro valor relacionado que podría querer modificar es el vfs_cache_pressure. Esta ajuste determina en qué medida el sistema elegirá almacenar en caché información de inodos y entradas de directorio en lugar de otros datos.

      Básicamente, estos son datos de acceso sobre el sistema de archivos. Generalmente, la búsqueda de esto supone costos muy altos y se solicita con mucha frecuencia, por lo cual el almacenamiento en caché . Puede ver el valor actual consultando el sistema de archivos proc nuevamente:

      • cat /proc/sys/vm/vfs_cache_pressure

      Output

      100

      Dado que está configurado actualmente, nuestro sistema elimina la información de inodo de la memoria caché demasiado rápido. Podemos establecer esto en un parámetro más conservador como 50 al ingresar:

      • sudo sysctl vm.vfs_cache_pressure=50

      Output

      vm.vfs_cache_pressure = 50

      Una vez más, esto solo es válido para nuestra sesión actual. Podemos cambiar eso añadiéndolo en nuestro archivo de configuración como hicimos con nuestro ajuste de intercambiabilidad:

      • sudo nano /etc/sysctl.conf

      En la parte inferior, añada la línea que especifique su nuevo valor:

      /etc/sysctl.conf

      vm.vfs_cache_pressure=50
      

      Guarde y cierre el archivo cuando haya terminado.

      Conclusión

      Seguir los pasos de esta guía le brindará un respiro en casos en los que podrían generarse excepciones por falta de memoria. El espacio de intercambio puede ser increíblemente útil para evitar algunos de estos problemas comunes.

      Si encuentra errores de falta de memoria (OOM) u observa que su sistema no puede utilizar las aplicaciones que necesita, la mejor solución es optimizar sus configuraciones de aplicaciones o actualizar su servidor.



      Source link

      Cómo agregar espacio de intercambio en Ubuntu 18.04


      Justin Ellingwood escribió una versión anterior de este tutorial.

      Introducción

      Una de las formas más fáciles de protegerse contra errores de falta de memoria en aplicaciones es añadir espacio de intercambio a su servidor. En esta guía, abarcaremos cómo añadir un archivo de intercambio a un servidor Ubuntu 18.04.

      Advertencia: si bien, en general, el espacio de intercambio se recomienda para sistemas que utilizan discos duros giratorios tradicionales, utilizarlo con SSD puede causar problemas de degradación de hardware con el paso del tiempo. Debido a esta consideración, no recomendamos permitir el intercambio en DigitalOcean o en cualquier otro proveedor que utilice almacenamiento SSD. Hacerlo puede afectar la fiabilidad del hardware subyacente, tanto para usted como para sus vecinos. Esta guía se proporciona como referencia para usuarios que pueden tener sistemas de disco de giro en otro lugar.

      Si necesita mejorar el rendimiento de su servidor en DigitalOcean, le recomendamos actualizar su Droplet. Esto conducirá a mejores resultados en general y reducirá la probabilidad de contribuir a problemas de hardware que puedan afectar su servicio.

      ¿Qué es Swap?

      El espacio de intercambio es un área del disco duro designada como ubicación en la que el sistema operativo puede almacenar temporalmente datos que ya no puede conservar en la RAM. Básicamente, esto le otorga la capacidad de aumentar la cantidad de información que su servidor puede mantener en su “memoria” funcional, con algunas reservas. El espacio de intercambio en el disco duro se utilizará principalmente cuando ya no haya espacio suficiente en la RAM para mantener datos de aplicación en uso.

      La información escrita en el disco será significativamente más lenta que la información conservada en la RAM, aunque el sistema operativo preferiría seguir ejecutando datos de aplicación en la memoria y utilizar el intercambio para los datos antiguos. En general, tener espacio de intercambio como una segunda opción para cuando la RAM de su sistema se agote puede ser una buena red de seguridad contra excepciones por falta de memoria en sistemas con almacenamiento no SSD disponible.

      Paso 1: Comprobación de la información de intercambio del sistema

      Antes de empezar, podemos verificar si el sistema ya cuenta con un espacio de intercambio disponible. Es posible tener varios archivos de intercambio o intercambiar particiones, pero en general, debería bastar con una.

      Podemos ver si el sistema cuenta con algún intercambio configurado al ingresar lo siguiente:

      Si no obtiene ningún resultado, esto significa que su sistema no tiene espacio de intercambio disponible actualmente.

      Puede verificar que no haya intercambio activo con la utilidad free:

      Output

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

      Como puede ver en la fila de Swap de los resultados, no existe intercambio activo en el sistema.

      Paso 2: Comprobación de espacio disponible en la partición de la unidad de disco duro

      Antes de crear nuestro archivo de intercambio, comprobaremos la utilización actual de nuestro disco para asegurarnos de tener espacio suficiente. Realice esto ingresando:

      Output

      Filesystem 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 la columna Mounted on es nuestro disco en este caso. En este ejemplo, contamos con bastante espacio disponible (solo 1.4G utilizados). Probablemente su uso será diferente.

      Aunque existen varias opiniones acerca de la dimensión adecuada de un espacio de intercambio, depende de sus preferencias personales y de sus requisitos de aplicación. En general, una cantidad igual o doble de la cantidad de RAM en su sistema es un buen punto de partida. Otra buena regla general es que cualquier cosa que supere los 4G de intercambio es probablemente innecesaria si lo está utilizando como una segunda opción al RAM.

      Paso 3: Creación de un archivo de intercambio

      Ahora que conocemos nuestro espacio de disco duro disponible, podemos crear un archivo de intercambio en nuestro sistema de archivos. Asignaremos un archivo del tamaño de intercambio que deseamos al que llamaremos swapfile en nuestro directorio root (/).

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

      Dado que el servidor de nuestro ejemplo tiene 1 G de RAM, crearemos un archivo de 1 G en esta guía. Ajuste esto para satisfacer las necesidades de su propio servidor:

      • sudo fallocate -l 1G /swapfile

      Podemos verificar que la cantidad correcta de espacio estaba reservada al ingresar lo siguiente:

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

      Nuestro archivo se ha creado con la cantidad correcta de espacio reservado.

      Paso 4: Habilitación del archivo de intercambio

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

      Primero, debemos restringir los permisos del archivo para que solo los usuarios con privilegios de root puedan leer el contenido. Esto impide que usuarios comunes puedan acceder al archivo, lo que tendría implicaciones de seguridad significativas.

      Haga que el archivo solo sea accesible para root al ingresar lo siguiente:

      Verifique el cambio de permisos al ingresar lo siguiente:

      Output

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

      Como puede ver, solo el usuario root tiene las banderas de lectura y escritura habilitadas.

      Ahora podemos marcar el archivo como espacio de intercambio al ingresar lo siguiente:

      Output

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

      Tras marcar el archivo, podemos habilitar el archivo de intercambio, lo que permite que nuestro sistema empiece a utilizarlo:

      Verifique que el intercambio esté disponible al ingresar lo siguiente:

      Output

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

      Podemos verificar los resultados de la utilidad free de nuevo para corroborar nuestros hallazgos:

      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 configurado con éxito y nuestro sistema operativo comenzará a utilizarlo según sea necesario.

      Paso 5: Lograr que el archivo de intercambio sea permanente

      Nuestros cambios recientes han habilitado el archivo de intercambio para la sesión en curso. Sin embargo, si reiniciamos, el servidor no conservará los ajustes de intercambio de forma automática. Podemos cambiar esto al añadir el archivo de intercambio en nuestro archivo /etc/fstab.

      Respalde el archivo /etc/fstab en caso de que algún imprevisto:

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

      Añada la información del archivo de intercambio al final de su archivo /etc/fstab al ingresar lo siguiente:

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

      A continuación, revisaremos algunos ajustes que podamos actualizar para afinar nuestro espacio de intercambio.

      Paso 6: Afinación de sus ajustes de intercambio

      Existen algunas opciones que puede configurar y que tendrán un impacto en el rendimiento de su sistema al lidiar con un intercambio.

      Ajuste de la propiedad de swappiness

      El parámetro de swappiness configura con qué frecuencia su sistema intercambia datos de la RAM al 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 “extensas” puesto que tardan mucho más que las interacciones con la RAM y pueden causar una reducción significativa en el rendimiento. Indicar al sistema que no dependa del intercambio en demasía hará que su sistema sea más rápido.

      Los valores cercanos a 100 intentarán poner más datos en un esfuerzo por mantener más espacio de RAM libre. Dependiendo del perfil de memoria de sus aplicaciones o para qué está utilizando su servidor, esto podría ser mejor en algunos casos.

      Podemos ver el valor de intercambiabilidad actual al ingresar lo siguiente:

      • cat /proc/sys/vm/swappiness

      Output

      60

      Para un escritorio, un ajuste de intercambiabilidad de 60 no es un mal valor. Para un servidor, podría querer desplazarlo más cerca de 0.

      Podemos establecer la intercambiabilidad en un valor diferente al utilizar el comando sysctl.

      Por ejemplo, para establecer la intercambiabilidad en 10, podríamos ingresar lo siguiente:

      • sudo sysctl vm.swappiness=10

      Output

      vm.swappiness = 10

      Esta configuración persistirá hasta el próximo reinicio. Podemos establecer este valor automáticamente al reiniciar añadiendo la línea en nuestro archivo /etc/sysctl.conf:

      • sudo nano /etc/sysctl.conf

      En la parte inferior, puede añadir:

      /etc/sysctl.conf

      vm.swappiness=10
      

      Guarde y cierre el archivo cuando haya terminado.

      Ajustar configuración de presión de Cache

      Otro valor relacionado que podría querer modificar es el vfs_cache_pressure. Esta ajuste determina en qué medida el sistema elegirá almacenar en caché información de inodos y entradas de directorio en lugar de otros datos.

      Básicamente, estos son datos de acceso sobre el sistema de archivos. Generalmente, esto resulta muy costoso de consultar y con mucha frecuencia se le solicita, por lo que es algo excelente para el almacenamiento caché de su sistema. Puede ver el valor actual al consultar el sistema de archivos de proc nuevamente:

      • cat /proc/sys/vm/vfs_cache_pressure

      Output

      100

      Dado que está configurado actualmente, nuestro sistema elimina la información de inodo de la memoria caché demasiado rápido. Podemos establecer esto en un parámetro más conservador como 50 al ingresar:

      • sudo sysctl vm.vfs_cache_pressure=50

      Output

      vm.vfs_cache_pressure = 50

      Una vez más, esto solo es válido para nuestra sesión actual. Podemos cambiar eso al añadirlo en nuestro archivo de configuración como hicimos con nuestro ajuste de intercambiabilidad:

      • sudo nano /etc/sysctl.conf

      En la parte inferior, añada la línea que especifique su nuevo valor:

      /etc/sysctl.conf

      vm.vfs_cache_pressure=50
      

      Guarde y cierre el archivo cuando haya terminado.

      Conclusión

      Seguir los pasos de esta guía le brindará un respiro en casos donde podrían generarse excepciones por falta de memoria. El espacio de intercambio puede ser increíblemente útil para evitar algunos de estos problemas comunes.

      Si se encuentra con errores de falta de memoria (OOM) u observa que su sistema no puede utilizar las aplicaciones que necesita, la mejor solución es optimizar sus configuraciones de aplicaciones o actualizar su servidor.



      Source link