Un archivo de swap es un archivo común, y no necesita ningún tratamiento especial para el kernel. Lo único que le interesa al kernel es que este no tenga huecos y que esté preparado para ser utilizado por el utilitario mkswap. Este debe residir en un disco local, y no puede residir en un disco montado a través de NFS por razones de implementación.
El bit que indica espacios vacíos es importante. El archivo swap reserva espacio en disco de forma que el kernel pueda swapear una página rápidamente sin tener que atravesar por todas las cosas que son necesarias cuando aloca un sector de disco para un archivo. El kernel simplemente utiliza cualquier sector que ya haya sido alocado para el archivo. Debido a que un hueco en un archivo significa que no hay sectores de discos alocados (para ubicar en ese archivo) no es bueno que el kernel trate de hacer uso del mismo.
Una buena manera de crear un archivo de swap sin espacios vacíos es a través del siguiente comando:
$
dd if=/dev/zero of=/extra-swap bs=1024 count=1024
1024+0 records in 1024+0 records out
$
donde /extra-swap
es el nombre del archivo swap y el tamaño
está dado por el parámetro count=
. El tamaño más indicado
está dado por un múltiplo de 4, debido a que el kernel escribe
páginas de memoria (memory pages), de 4 kb de tamaño. Si
el tamaño no es múltiplo de 4 los últimos kilobytes del archivo pueden ser
desperdiciados.
Una partición swap tampoco tiene nada especial. Estas se crean como cualquier otra partición, la única diferencia es que ésta es accedida de manera directa (al disco crudo), esto significa, que no contiene ningún sistema de archivos. Es aconsejable marcar esta partición del tipo 82 (Linux Swap); Esto hace la lista de particiones mas clara, aunque no es estrictamente necesario para el kernel.
Una vez creado el archivo o la partición de swap, es necesario escribir unas marcas al comienzo del mismo que contienen información administrativas utilizadas por el kernel. El comando para realizar esto es mkswap, y la forma es la siguiente:
$
mkswap /extra-swap 1024
Setting up swapspace, size = 1044480 bytes
$
Nótese que el espacio swap aun no es usado, este existe, pero el kernel aun no hace uso de este para proveer memoria virtual.
Y Se debe ser muy cuidadoso cuando se usa el comando mkswap, ya que este no chequea que el archivo o la partición no estén siendo usados por alguien más. Se puede fácilmente sobre escribir importantes archivos y particiones con mkswap! Por suerte este comando solo debería ser necesario cuando se instala el sistema.
Actualmente el administrado de memoria Linux limita el tamaño de cada área de swap a 2 GB. De todas maneras se puede usar hasta 8 espacios de swap simultáneamente, lográndose un total de 16 GB. El real límite depende la versión del kernel, la versión de mkswap y de la arquitectura del hardware.
[21][21] Un gigabyte aquí, un gigabyte allá, demasiado pronto para que comencemos a hablar de la memoria real.