Para el problema de la RAM, los usuarios de GNU/Linux tenéis una solución muy simple. Se pueden crear discos virtuales en la partición con dd y añadirlos a la memoria swap:
1. Crear un disco virtual del tamaño necesario. Por ejemplo, para 4Gb:
# bs = 512 bytes por bloque
# count = (4Gb(4 * 2^30) / 512(2^9) = 4 * 2^21 = 4 * 2 * 2^20 = 8 * 1024 * 1024 = 8388608
$ dd if=/dev/zero of=vdisk1.img bs=512 count=8388608
2. Hacer que el sistema trate el fichero como dispositivo de bloques
$ sudo losetup -vf vdisk1.img
Loop device is /dev/loop0
3. Comprobar que el disco está en loop0
$ sudo fdisk -l /dev/loop0
Disco /dev/loop0: 4294 MB, 4294967296 bytes
...
4. Formatear como partición swap
$ sudo mkswap /dev/loop0
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=401db4c-57a9-4705-a522-31edbc220261
5. Montar la partición virtual en la Swap
6. Comprobar que la partición está montada como swap
$ sudo swapon -s
Filename Type Size Used Priority
[...]
/dev/loop0 partition 4194300 0 -2
# El comando free indica el total de RAM con swap incluida.
Para ver el uso de la RAM mientras carga el blockchain, cada 2 seg:
Notas:
El ejemplo usa el editor vim, pero sirve cualquier otro editor como nano, pico o gedit.
El UUID es un identificador único del disco.
Para cargar el disco virtual de forma persistente cada vez que se reinicie el equipo, seguir estos pasos:
1. Montar loop0 persistentemente en el sistema. Editar /etc/rc.local y añadir antes de exit 0:
$ sudo vim /etc/rc.local
# Load virtual disk to /dev/loop0 for swap
losetup -vf vdisk1.img
exit 0
2. Automontar vdisk1.img como Swap en el arranque. Añadir al final de /etc/fstab
$ sudo vim /etc/fstab
# Swap from loop0
UUID=401db4c-57a9-4705-a522-31edbc220261 none swap sw 0 0
Si el sistema está basado en Red Hat:
UUID=401db4c-57a9-4705-a522-31edbc220261 swap swap defaults 0 0
3. Verificar que los datos en fstab son correctos.
Si el paso 3 da error comprobar que el UUID es correcto con blkid y vdisk1 esté cargado en /dev/loop0:
$ sudo fdisk -l /dev/loop0
Disco /dev/loop0: 4294 MB, 4294967296 bytes
...
$ sudo blkid /dev/loop0
/dev/loop0: UUID="401db4c-57a9-4705-a522-31edbc220261" TYPE="swap"