Difference between revisions of "Swap (Español)"

From ArchWiki
Jump to: navigation, search
(Archivo swap: Actualizar)
Line 47: Line 47:
 
Como una alternativa a la creación de toda una partición, un archivo swap ofrece la posibilidad de variar su tamaño sobre la marcha, y es más fácil de eliminar por completo. Esto puede ser especialmente deseable si el espacio es un bien escaso (por ejemplo, un disco SSD con un tamaño modesto).
 
Como una alternativa a la creación de toda una partición, un archivo swap ofrece la posibilidad de variar su tamaño sobre la marcha, y es más fácil de eliminar por completo. Esto puede ser especialmente deseable si el espacio es un bien escaso (por ejemplo, un disco SSD con un tamaño modesto).
  
{{Nota|El sistema de archivos BTRFS no es compatible actualmente con archivos swap.}}
+
{{Nota|El sistema de archivos BTRFS no es compatible actualmente con archivos swap. La inobservancia de esta advertencia puede conducir a un sistema de archivos corrupto. Aunque debe tenerse en cuenta que se puede utilizar un archivo de intercambio formateado con btrfs si se monta a través de un dispositivo loop. Este método puede reducir el rendimiento de swap drásticamente.}}
  
 
=== Creación de un archivo swap ===
 
=== Creación de un archivo swap ===

Revision as of 14:51, 10 July 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary end

Definición de swap dada por el artículo «Todo sobre el espacio swap de Linux»:

Linux divide su memoria física RAM (memoria de acceso aleatorio) en capas de memoria llamadas páginas. El swapping es el proceso por el que una página de memoria se copia en un espacio del disco configurado previamente para ello, llamado espacio de swap (o de intercambio), para liberar esa memoria RAM. Los tamaños combinados de la memoria física y del espacio swap determinan la cantidad de memoria virtual disponible.

Espacio swap

El espacio swap o de intercambio será normalmente una partición del disco, pero también puede ser un archivo. Los usuarios pueden crear un espacio de intercambio durante la instalación de Arch Linux o en cualquier momento posterior, en caso de ser necesario. El espacio de intercambio es generalmente recomendado a los usuarios con menos de 1 GB de RAM, pero es una cuestión de preferencia personal en sistemas con cantidades generosas de memoria RAM física (aunque sí es necesario para utilizar la suspensión en disco).

Para comprobar el estado del swap, utilice la siguiente orden:

$ swapon -s

O bien:

$ free -m
Nota: No hay ventaja en el rendimiento entre un archivo swap contiguo o una partición, ambos son tratados de la misma manera.

Partición swap

Una partición swap se puede crear con la mayoría de las herramientas que gestionan las particiones en GNU/Linux (por ejemplo, fdisk, cfdisk). Las particiones swap son designadas como tipo 82.

Para configurar un área swap Linux, se utiliza la orden mkswap. Por ejemplo:

# mkswap /dev/sda2
Advertencia: Todos los datos en la partición especificada se perderán.

Para activar el dispositivo para la paginación:

# swapon /dev/sda2

Para habilitar esta partición swap en el arranque, añada la entrada siguiente al archivo fstab:

/dev/sda2 none swap defaults 0 0
Nota: Si se utiliza un disco SSD con apoyo TRIM, discard es una opción de montaje válida para swap. Si crea swap de forma manual, utilizando -d o --discard logrará lo mismo. Para obtener más información y otras opciones de montaje disponibles, consulte la página del manual de swapon.

Archivo swap

Como una alternativa a la creación de toda una partición, un archivo swap ofrece la posibilidad de variar su tamaño sobre la marcha, y es más fácil de eliminar por completo. Esto puede ser especialmente deseable si el espacio es un bien escaso (por ejemplo, un disco SSD con un tamaño modesto).

Nota: El sistema de archivos BTRFS no es compatible actualmente con archivos swap. La inobservancia de esta advertencia puede conducir a un sistema de archivos corrupto. Aunque debe tenerse en cuenta que se puede utilizar un archivo de intercambio formateado con btrfs si se monta a través de un dispositivo loop. Este método puede reducir el rendimiento de swap drásticamente.

Creación de un archivo swap

Como root, utilice fallocate para crear un archivo swap del tamaño de su elección (M = Megabytes, G = Gigabytes) (dd también se puede utilizar, pero se necesitará más tiempo). Por ejemplo, para crear un archivo swap de 512 MB, escriba :

# fallocate -l 512M /swapfile
O
# dd if=/dev/zero of=/swapfile bs=1M count=512

Establezca los permisos correctos (un archivo swap de lectura global es una enorme vulnerabilidad de seguridad)

# chmod 600 /swapfile

Después de crear el tamaño correcto del archivo, dé formato a swap:

# mkswap /swapfile

Active el archivo swap:

# swapon /swapfile

Edite /etc/fstab y añada esta entrada para el archivo swap:

/swapfile none swap defaults 0 0

Eliminación de un archivo swap

Para eliminar un archivo swap, dicho archivo debe estar desactivado previamente.

Como root:

# swapoff -a

Elimine el archivo de intercambio:

# rm -rf /swapfile

Restauración desde un archivo swap

Para restaurar el sistema desde un archivo swap después de la hibernación, se requiere la adición de un parámetro del kernel, a diferencia de la reanudación desde una partición swap. El parámetro adicional es resume_offset=<Swap File Offset>.

El valor de <Swap File Offset> se puede obtener de la salida de filefrag -v; la salida está en un formato de tabla; el valor requerido se encuentra en la columna physical de la primera fila. Por ejemplo:

# filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 4290772992 (1047552 blocks, blocksize 4096)
ext logical  physical  expected  length flags
  0       0     7546880                6144 
  1    6144  7557120  7553023   2048 
  2    8192  7567360  7559167   2048 
...

Siguiendo el ejemplo, <Swap FIle Offset> es 7546880.

Nota: Tenga en cuenta que el parámetro del kernel resume necesita tener escrita la ruta a la partición (por ejemplo, resume=/dev/sda1) ¡no al archivo swap explícitamente! El parámetro resume_offset proporcina información al sistema de donde comienza el archivo swap en el disco duro (por ejemplo, resume_offset=7546880).

Swap en un dispositivo USB

Gracias a la modularidad que ofrece Linux, podemos tener múltiples particiones repartidas en diferentes dispositivos. Si se tiene un disco duro muy lleno, el dispositivo USB puede usarse como partición temporal. Pero este método tiene algunas desventajas graves:

  • El dispositivo USB es más lento que el disco duro.
  • Las memorias flash tienen limitados los ciclos de lectura. Su uso como partición swap acortará su vida útil.
  • Cuando hay otro dispositivo conectado al ordenador, no se puede utilizar swap.

Para añadir un dispositivo USB para usarlo como SWAP, en primer lugar conecte un flah USB y dele formato con una partición swap. Puede utilizar herramientas gráficas como Gparted o herramientas de consola como fdisk. Asegúrese de marcar la partición como SWAP antes de escribir la tabla de particiones.

¡Asegúrese de que está escribiendo la partición para el disco correcto!

A continuación edite el archivo fstab:

# nano /etc/fstab

Ahora añada una nueva entrada, justo debajo de la entrada existente de swap, de modo que indique la nueva partición swap creada en el dispositivo USB, así:

UUID=... none swap defaults,pri=10 0 0

donde UUID se toma de la salida de la orden:

ls -l /dev/disk/by-uuid/ | grep /dev/sdc1

Basta con sustituir sdc1 por la nueva partición swap USB: sdb1

Es preferible UUID porque al conectar otros dispositivos al ordenador se podría modificar el orden de los dispositivos periféricos.

Por último, añada

pri=0

en la entrada swap originaria para indicarle que use el archivo swap del disco duro solo cuando la partición swap del USB está llena.

Esta guía se puede aplicar a otras memorias, como tarjetas SD, etc.

Optimizar el rendimiento

Los valores de swap se pueden ajustar para mejorar el rendimiento.

Swappiness

El parámetro swappiness de sysctl representa la preferencia del kernel (inhibiéndose) de utilización del espacio swap. Swappiness puede tener un valor entre 0 y 100. Si se establece un valor bajo reducirá el intercambio desde RAM, y se sabe que mejora la capacidad de respuesta en muchos sistemas.

/etc/sysctl.conf
vm.swappiness=1
vm.vfs_cache_pressure=50

Prioridad

Si se tiene más de un archivo o partición swap debería considerar la posibilidad de asignarles un valor de prioridad (0 a 32767) para cada área swap. El sistema utilizará las áreas swap de mayor prioridad antes de utilizar las asignadas como de menor prioridad. Por ejemplo, si se tiene un disco más rápido (/dev/sda) y un disco más lento (/dev/sdb), asigne una mayor prioridad al área swap que se encuentra en el dispositivo más rápido. Las prioridades se pueden asignar en fstab a través del parámetro pri:

/dev/sda1 none swap defaults,pri=100 0 0
/dev/sdb2 none swap defaults,pri=10  0 0

O mediante los parámetros −p (o −−priority) de la orden swapon:

# swapon -p 100 /dev/sda1

Si dos o más áreas tienen la misma prioridad, y tienen asignada la más alta disponible, las páginas se distribuirá de forma round-robin entre ellas.