En un post anterior mostré una extensión para hacer scrapping de websites. En uno de los ejemplos descargo OST de videojuegos y para hacer eso tengo que configurar el navegador para que descargue automáticamente los archivos. Cómo tengo un media server con Jellyfin (¿quién te conoce Plex?) creo el directorio con el nombre del album y muevo los archivos locales al servidor donde se termina alojando.
Ahora bien, empecé a notar que la carpeta Downloads/Descargas la mayoría de los archivos son o deberían ser de un solo uso. Por ejemplo, si bajo un instalador, instalo el programa y lo elimino. En el caso de ser un archivo que sea relevante debería moverse y guardarse en la carpeta correspondiente.
Por otro lado, tanto movimiento de archivos da lugar a fragmentación del sistema de archivos y ayudan a que los discos SSD/NVME acorten su vida marginalmente. Pero si tenemos memoria RAM a disposición podemos solucionar o mejorar esto.
La respuesta es simple: una unidad de disco alojada en memoria. Se dedica una parte de la memoria RAM de la máquina y se monta un sistema de archivos para ser accedidos cómo si fuera un directorio normal de la computadora. Estos discos cómo la misma memoria RAM son volátiles, es decir que cuando se apague la máquina van a desaparecer, pero también tienen la misma ventaja: la velocidad de lectura/escritura es casi instantánea. Acá dejo una captura de transferencia entre RAM disk y un RAID-0 con 3 discos SSD, siendo el primero 10x más rápido.
Vamos a empezar por configurar un RAM disk en Linux. Acá tenemos dos opciones para crear un sistema de archivos en memoría: ramfs
o tmpfs
. La diferencia primordial entre los dos es que ramfs
va a utilizar toda la memoria que necesite para almacenar los archivos. Es decir que si tenés 8GB de RAM y copias un archivo de 10GB va a tomar todo lo que pueda de la memoria física para luego pasar a tomar el swap y finalmente crashear la máquina.
tmpfs
por su lado, siendo un sistema de archivos más nuevo tiene opciones para setear el tamaño máximo que queremos utilizar, evitando así poner la computadora en órbita. Acá se puede ver la documentación completa de tmpfs.
Hechas las aclaraciones, manos a la obra. Para crear un RAM disk en linux tenemos que montar el sistema de archivos de la siguiente manera (las líneas que comienzan con # son comentarios):
# crear el directorio donde montar el sistema
mkdir ~/ramdisk
# montar el sistema de archivo con límite de 2Gb
sudo mount -t tmpfs -o size=2G tmpfs ~/ramdisk
# opcionalmente podés hacerte el owner del directorio y trabajar sin mayores problemas
sudo chown miusuario:miusuario ~/ramdisk
En Windows tenemos la opción de ImDisk Toolkit, que instala un driver y una GUI muy simple para crearlo. Creo que se explica solo
Con seleccionar el tamaño del disco y la letra de la unidad donde montar el sistema ya es suficiente. Tanto en Linux cómo en Windows personalmente recomiendo montar las unidades cuando las vayamos a utilizar y no que se automonten al inicio del SO porque mantengo un mejor control sobre qué programa hace uso del sistema. Pero es un tema personal, cada uno sabrá cual enfoque le quede mejor (con 64GB de RAM lo dejaría en automático 😎).