Una de las formas más fáciles de hacer que tu server funcione mejor y tenga un mayor rendimiento además de proteger el server contra los fallos de fuera de memoria, es agregar un espacio de intercambio o también llamado Swap. Swap es un área en una unidad de almacenamiento en la que el sistema operativo puede almacenar temporalmente datos que ya no puede almacenar en la memoria.
Esto le da la capacidad de aumentar la cantidad de información que su servidor puede guardar en su memoria de trabajo.
Aunque tiene algunos inconvenientes; leer y escribir para intercambiar es más lento que usar memoria, pero puede proporcionar una buena red de seguridad para cuando el servidor tiene poca memoria.
Sin intercambio, un servidor que se queda sin memoria puede comenzar a matar aplicaciones para liberar memoria, o incluso bloquearse. Esto puede hacer que pierda datos no guardados o se quede ko. Para garantizar el acceso confiable a los datos, algunas aplicaciones requieren tener un fichero de intercambio para funcionar correctamente.
En este tutorial, vamos a ver cómo crear y habilitar un archivo de intercambio en un servidor CentOS 7.
Preparando Swap en CentOS 7
Aunque el intercambio se recomienda generalmente para sistemas que utilizan discos duros giratorios tradicionales, el uso de intercambio con unidades SSD puede causar problemas con la degradación del hardware a lo largo del tiempo. Es por ello que si tu disco duro es SSD entonces no es recomendable utilizar un fichero de intercambio.
Necesitamos tener un servidor CentOS 7 instalado y configurado correctamente en el que vamos a montar nuestro Swap.
Lo primero que vamos a hacer es echarla un vistazo al disco duro de nuestro servidor para ver si ya tenemos disponible un espacio de intercambio. Y así tenemos una idea real de como está nuestro disco duro en estos momentos.
Para esto podemos ver si el sistema tiene un intercambio configurado mediante el uso de swapon, una utilidad de intercambio de propósito general. Con el indicador -s, el comando swapon mostrará un resumen del uso y la disponibilidad del intercambio en nuestro disco duro:
swapon -s
Si el comando no devuelve nada, entonces es que no tenemos un fichero de intercambio por lo que podemos empezar a montar el Swap.
Otra forma de verificar el espacio de intercambio es escribiendo el comando free -m, que nos mostrará el uso general de la memoria del sistema. Podemos ver nuestra memoria actual y el uso del swap:
free -m
Comprando el espacio de disco duro
Lo normal para asignar un espacio de intercambio es usar una partición separada dedicada a esta labor.
Pero muchas veces, alterar el esquema de partición no siempre es posible debido a limitaciones de hardware o software, y además es bastante delicado y puedes “cargarte el la unidad”,
Pero como no es necesario en este caso vamos a crear fácilmente un archivo de intercambio que esté alojada en una partición existente. Y así podemos evitar cualquier problema. Es más fácil y nos ahorramos tener que crear particiones.
Para ver como está actualmente nuestro disco duro , vamos a utilizar el comando df -h:
df -h
Como muestra el comando df , se puede ver que nuestro disco duro tiene 10 gigabytes disponibles, por lo que tenemos poco espacio para poder trabajar. Cómo ves es un espacio bastante limitado, pero nos valdrá de sobra para los trabajos que estamos realizando en este VPS.
Aunque hay muchas opiniones sobre el tamaño apropiado de un espacio de intercambio, realmente depende de los requisitos de su aplicación y sus preferencias personales. Cómo norma general el doble de la cantidad de memoria RAM de su VPS estaría bien optimizado.
Cómo mi vps tiene 1 gigabyte de memoria y vamos a duplicar este espacio para lograr un buen fichero de intercambio. Por lo tanto vamos a crear un area de intercambio de 2 gigabytes para que coincida con el doble de la memoria de mi sistema. (Puedes poner la cantidad que quieras o puedas, no tiene porque ser el doble)
Crear un archivo de intercambio
Vamos a crear un archivo llamado swapfile en nuestro directorio raíz, aunque puedes llamar al fichero como quieras y también puedes ponerlo en otro lugar, pero más adelante tendrás que cambiar las rutas y el nombre con lo que hayas puesto (yo lo dejaría tal cual).
A este archivo la vamos a asignar la cantidad de espacio que queremos para nuestro archivo de intercambio o swap.
La forma más rápida y fácil de crear un archivo de intercambio es mediante el comando fallocate. Este comando crea un archivo del tamaño que le indiquemos a continuación. Podemos crear un archivo de 2 gigabytes escribiendo:
sudo fallocate -l 2G /swapfile
El archivo de intercambio se creará y en un segundo podemos verificar que se reservó la cantidad correcta de espacio para intercambio utilizando el comando ls:
ls -lh /swapfile
Como puedes ver, nuestro archivo de intercambio se creó con la cantidad correcta de espacio reservado.
Utilizando un archivo de intercambio
Hasta ahora hemos creado nuestro archivo, pero nuestro VPS no tiene ni idea de para que se va a usar (si el VPS es muy listo algo intuye 😉 ). Ahora vamos a decirle a nuestro sistema que formatee este archivo como intercambio además lo habilite para poder utilizarlo como tal.
Primero le vamos a limitar los permisos a la cuenta con la que lo hemos creado, no queremos que nadie externo puede escribir o leer en el fichero de intercambio, para esto utilizamos el comando chmod.
Sería así:
sudo chmod 600 /swapfile
Con esto restringirá los permisos de lectura y escritura y evitaremos problemas a futuro.
Ahora que nuestro archivo de intercambio es seguro, vamos a decirle a nuestro VPS que configure el espacio de intercambio.
Para ello vamos a utilizar el comando mkswap.
sudo mkswap /swapfile
Lo lógico es que no tengas problemas y te devuelva algo así:
Setting up swapspace version 1, size = 2146300 KiB
no label, UUID=9cd6a93c-1a07-42a6-a949-cc2262083daf
mkswap: /swapfile: warning: wiping old swap signature.
Para solventar este warning tenemos que crear el swap fisicamente , lo tendremos que hacer con el siguiente comando:
sudo dd if=/dev/zero of=/swapfile count=2096 bs=1MiB
Después de este comando vamos a volver a realizar el mkswap:
sudo mkswap /swapfile
Y ahora si, ya está todo solucionado y te devolverá algo así:
Setting up swapspace version 1, size = 2146300 KiB
no label, UUID=9cd6a93c-1a07-42a6-a949-cc2262083daf
Si hemos llegado hasta aquí nuestro fichero de intercambio está listo para usarse como un espacio de intercambio y ya podemos comenzar a usarlo escribiendo:
sudo swapon /swapfile
Si quieres comprobar que la creacción y la habilitación fue un éxito, podemos verificar que todo está bien lanzando el siguiente comando swapon.
[root@vpsSuperServer ~]# swapon -s
Filename Type Size Used Priority
/swapfile file 2146300 0 -1
Este resultado confirma que tenemos ya tenemos nuestro archivo de intercambio.
Guardando los cambios en la tabla fstab
Cómo hemos visto el archivo de intercambio está habilitado en este momento, pero cuando reiniciamos el server no lo tendremos habilitado para poder usarlo.
Para poder utilizarlo una vez que reiniciemos el server tendremos que guardar los cambios en el fichero fstab, que básicamente es una tabla que contiene los sistemas de archivos y las particiones de nuestros discos duros.
Habría que editar el fichero que se encuentra en /etc/fstab
sudo vi /etc /fstab
Al final del archivo añade el siguiente código
/swapfile swap swap sw 0 0
Hecho esto cuando reinicies el servidor el VPS comprobará que está el archivo de intercambio listo para usarse.
Y listo, con esto tendrías tu archivo de intercambio o Swap en CentOS 7