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.

Comentarios (11)

AUXILIO!! !!! he seguido los pasos correctamente, tenia 83% de uso .. le asigne primero 1024k de swap, pero no lo guarde o no lo “hice permanente” como menciona el post. Al reiniciarla ya no habia la partición swap..pero ahora aparacia 87% de uso.
Luego asigne 1,5G de swap… y tampoco lo hice “permanente” … funciono correctamente en ambos casos… pero al reiniciarlo , ahora tengo 89 % de uso y no me figura ninguna particion swap.
¿si no lo guarde, poruque no libero el espacio al reiniciar?
¿Como puedo encontrar limpar y borrar ese espacio inutilizado?
Ayuda porfavor!!!

No liberas espacio en el disco duro porque el archivo de swap (que tiene el nombre swapfile) sigue creado en tu sistema y ocupa espacio. Lo que tienes que hacer es primero desmontar el swapfile y despues eliminar el archivo swapfile, esto lo conseguimos con los siguientes comandos:
swapoff /swapfile
rm /swapfile

Ya me dices si te ha funcionado o si te ha dado algún error.

Hola Zeokat, gracias por tu pronta ayuda…
con swapoff /swapfile me sale: Argumento invalido

root@marciano-desktop:/home/marciano# swapoff /swapfile
swapoff: /swapfile: swapoff falló: Argumento inválido

Aunque ya encontre el archivo “swapfile” esta ubicada en “equipo” .. tiene el tamaño de 1.5G , tal cual le asigne la ultima vez, pero no me permite borrarla.
Y ..dime ¿donde o conque nombre estara ubicado el anterior “swapfile” de 1024k que hice por primera vez? …. el “swapfile” de 1.5G es el unico

Pue segun el nombre que le hayas puesto. En el tutorial se emplea siempre el nombre swapfile.
No te deja borrarla porque hay que “desmontar” primero el swapfile y asegurate que tienes permisos de root:
sudo rm /swapfile

Hola nuevamente , para contarte que ya pude borrarlo… no hizo falta desmontarla con “swapoff /swapfil”; tan solo con el comando rm / swapfile logre eliminarlo.
ya regreso al 83% de uso… gracias por vuestra ayuda.
Aunque me quedo la duda de que fue lo que pasa con el primer “swapfile” que cree… de todas formas logre liberar el espacio.
gracias Zeokat, muy buen post.

y Si tengo 1g de ram… pienso ponerle 1g de swap… esta bien? y que “Valor de swappiness” me recomiendas? gracias

Si ejecutaste dos veces los mismos comandos para crear el swapfile, lo más seguro es que con el segundo swapfile sobreescribieses al primero porque tienen el mismo nombre.

En cuanto a las necesidades de swap yo con un 1GB de RAM usaria 512MB de swap, pero claro, depende de que tareas vayas a realizar en el servidor. Si son tareas que consumen mucha RAM quizás te convenga 1GB de swap.

En cuanto al valor de swappiness, pues estamos en lo mismo, todo depende de que tareas vayas a realizar en el servidor. Yo personalmente suelo usar swappiness 0, porque al ser memoria pero en el disco duro es más lenta y me gusta que priorice el uso de la memoria RAM. Si vas a usar el servidor para ejecutar varias tareas simultaneas que consuman mucha RAM quizás te convenga usar un valor de swappiness más alto. Todo depende del uso del servidor.

Copiado y guardado::: gracias.
supongo que sobre la marcha podre modificar el valor de swappiness con el comando : echo 0 > /proc/sys/vm/swappiness y probar como me va.

Así es Manuel, sobre la marcha puedes ir ajustando el valor de swappiness y ver por ti mismo que valor te da mejores resultados.

Saludos.

Hola,

He creado un swapfile pero evidentemente lo hice mal.
Yo quiero tener 4Gb y el comando que le dí me arroja 19Gb, lo cual no necesito.
He borrado el renglón que agregué al fstab para que no se perdiera al reiiniciar pero no he borrado o eliminado nada mas y ahora veo que el espacio de Raiz ha mermado mucho. Antes de todo ésto del swapfile tenía libre unos 44% y ahora tengo un 85% ocupado.

He hecho un swapon -s donde indica que no hay archivo swap pero ese incremento en el espacio de / me hace pensar que aún quedan archivos swap sin eliminar.

Serías tan amable de indicarme cómo puedo encontrar y eliminar dichos archivos?

Una vez hecho éso, te preguntaré para la creación de un nuevo archivo swap de 4Gb. Mi confusión está en las cantidades que debo poner en bs= count = .

Desde ya muchas gracias.

Alli donde hayas creado el swapfile con el comando dd es donde estará el archivo que tienes que eliminar.

Si quieres 4GB de swap tendras que usar count=4096k

Saludos.

Deja un comentario: