Cómo crear Swap en Ubuntu y para que sirve

En Tutoriales y Guías por

El objetivo de este artículo es aprender a agregar o crear una partición Swap en Ubuntu. Este tutorial ha sido probado en las versiones de Ubuntu 12.04 y Ubuntu 12.10. Durante el proceso de creación de la partición Swap emplearemos unicamente una shell SSH.

Crear Swap en Ubuntu

¿Qué es una partición Swap y para que sirve?

No vamos a entrar en grandes detalles técnicos, la definiremos de modo sencillo, se trata de memoria virtual. Se le llama virtual porque se emplea el disco duro para crear un archivo de intercambio y no se emplea la memoria RAM. Esto nos permite disponer de memoria extra, pero esta memoria tiene un rendimiento inferior a la memoria RAM, ya que al emplear el disco duro el proceso de lectura/escritura/acceso es más lento.

¿Me hace falta Swap y de que tamaño creo la partición?

Lo primero es considerar si necesitamos una partición Swap, yo lo recomendaría si nuestro sistema dispone de una cantidad de RAM baja (entendiendo por baja inferior a 2GB). Otro factor a considerar es el uso de la RAM, si podemos predecir que la RAM de nuestro sistema operativo se va a quedar corta lo mejor es crear el Swap. Por poner una situación real, en los servidores VPS de DigitalOcean de 512MB de RAM mi recomendación es crear una partición Swap. Esta compañía en concreto usa discos SSD por lo que el rendimiento de la Swap es muy aceptable.

Una vez que hemos decidido si necesitamos o no la partición Swap, se nos plantea la cuestión de que tamaño debemos crear esta partición. Esta no es una pregunta sencilla de contestar, ya que dependerá del uso que le vayamos a dar. Hace años existía una ley no escrita de que el Swap debía tener un tamaño del doble que la cantidad de RAM de nuestro sistema. Por ejemplo si nuestro PC tenía 2Gb de RAM el Swap debía de ser de 4GB. Esto en mi humilde opinión, se ha quedado desfasado y mi recomendación es crear un Swap de tamaño acorde a nuestras necesidades. Por poner un ejemplo real, en el servidor VPS del que hablaba antes de 512MB de RAM, yo creo una partición Swap de otros 512MB ya que en mi opinión el uso de la Swap tiene que ser puntual y no algo que ocurra de forma constante. Si el uso del Swap es elevado y constante, creo que la mejor opción es aumentar la cantidad de RAM directamente o estaremos ante un sistema con un rendimiento inferior.

¿Cómo crear Swap en Ubuntu?

Lo primero es verificar que no existe ninguna partición Swap en nuestro sistema, para ello empleams el comando:
sudo swapon -s

Al ejecutarlo se nos debe mostrar una lista vacia con lo siguiente:

Filename Type Size Used Priority

El siguiente paso es verificar que disponemos de suficiente espacio libre en el disco duro, para ello ejecutamos el siguiente comando:
df

Y se nos mostrará en pantalla algo como:

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 20907056 1437188 18421292 8% /
udev 121588 4 121584 1% /dev
tmpfs 49752 208 49544 1% /run
none 5120 0 5120 0% /run/lock
none 124372 0 124372 0% /run/shm

En esta lista podemos ver el procentaje de uso (Use%) y que es de un 8% en /dev/sda por lo que podemos crear nuestro Swap de 512MB con el siguiente comando:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

En ese comando “swapfile” es el nombre de nuestro archivo Swap, yo he empleado “swapfile” como nombre. El siguiente comando a ejecutar es:
sudo mkswap /swapfile

Se nos mostrará en pantalla algo parecido a:

Setting up swapspace version 1, size = 262140 KiB
no label, UUID=103c4545-5fc5-47f3-a8b3-dfbdb64fd7eb

Para finalizar activamos el Swap con el comando:
sudo swapon /swapfile

Podemos comprobar que la partición Swap ha sido creada y activada con el comando:
sudo swapon -s

Este Swap estará activo hasta que reiniciemos el sistema operativo, una vez reiniciado se perderá. A veces esto es lo que queremos pero en otros casos nos interesa que la partición Swap sea permanente, en este caso procedemos como se indica en el siguiente apartado.

Haciendo permanente el Swap

Para no perder el Swap tras un reinicio, debemos editar con el editor nano el archivo fstab de la siguiente forma:
sudo nano /etc/fstab

Y una vez en el archivo agregamos la linea siguiente:
/swapfile none swap sw 0 0

Recordad que para guardar con nano, se usa la combianción de teclado Ctrl+O y para salir Ctrl+X

Consejos finales

Swappiness

A la hora de crear Swap podemos definir la propiedad swappiness, esta define el balance que debe hacer el sistema entre usar la memoria RAM o usar la memoria Swap. Esta propiedad se define con valores entre 0 y 100. Por defecto suele emplear el valor 60. Analicemos que pasaría con diferentes valores de swappiness:

  • Valor de swappiness 0: el sistema operativo trataría de evitar el uso del Swap y sólo lo usaría para evitar errores de memoria insuficiente (out of memory errors).
  • Valor de swappiness 60: valor por defecto y se podría decir que el Swap se usará en una de cada seis operaciones.
  • Valor de swappiness 100: el sistema operativo hará un uso agresivo del Swap, dando prioridad total al uso de Swap. No es muy recomendable emplear este valor ya que sólo se consiguen caidas de rendimiento.

Para ajustar el swappiness con el valor 0 debemos emplear el siguiente comando:
echo 0 > /proc/sys/vm/swappiness

Permisos del Swap

Uuna buena practica (sobre todo en sistemas con varios usuarios) es dar los permisos correctos al archivo de Swap para que no pueda ser leido/modificado deliberadamente por los usuarios. Es buena practica ejecutar los dos siguientes comandos para dar los permisos adecuados:
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile

Y con esto se termina la guía sobre como crear Swap en Ubuntu, espero que os haya servido de ayuda.