Ramdisk (Español)

From ArchWiki
Revision as of 14:58, 4 December 2012 by Kynikos.bot (Talk | contribs) (wikify some external links, use https for archlinux.org)

Jump to: navigation, search

Un disco RAM (ramdisk) es un área de memoria utilizada como disco. Muchas distribuciones usan /dev/ram para esto, pero en Arch no están disponibles de los dispositivos /dev/ram, por lo que hay que usar /etc/fstab para crear un disco RAM. Es extremadamente importante acordarse de que los discos RAM se almacenan en memoria y, por consiguiente, son volátiles. Cualquier cosa almacenada en un disco RAM, se perderá si apaga el equipo o se interrumpe la alimentación de la memoria. Por lo tanto, es necesario guardar el contenido de tu disco RAM en un soporte persistente, si quieres conservarlo.

¿Por qué usar uno?

Un disco RAM se almacena en RAM y, en consecuencia, es mucho más rápido que un disco o dispositivo de almacenamiento convencional. Así pues, si necesitas manipular ficheros a alta velocidad, un disco RAM puede resultar ser una solución ideal. Algunos usos relativamente comunes incluyen /tmp, /var/cache/pacman o /var/lib/pacman, aunque estoy convencido de que se te han venido a la cabeza muchos más.

Cómo crear un disco RAM

Para crear un disco RAM, debes proceder igual que para montar cualquier otro dispositivo de almacenamiento. En primer lugar, debes elegir el punto de montaje deseado (directorio) y, a continuación, añadirlo a /etc/fastab, tal como se indica seguidamente:

none     /directorio/punto/montaje     ramfs  defaults   0     0

Si no dispones de una gran cantidad de memoria RAM, se recomienda usar 'tmpfs' en lugar de 'ramfs', dado que tmpfs usará Swap (memoria de intercambio; disco) cuando la memoria RAM se agote, mientras que ramfs no. Por supuesto, es lógico pensar que el acceso a Swap echará por tierra todo el beneficio de los discos RAM, por lo que no parece muy lógico usarse a menos que tengas mucha o suficiente memoria libre.

Ejemplo de uso

Los ficheros que a editar son /etc/fstab, /etc/rc.local y /etc/rc.local.shutdown para almacenar /tmp, /var/cache/pacman y /var/lib/pacman en RAM y copiarlos a disco antes de apagar el equipo. Las partes irrelevantes de los ficheros han sido eliminadas para ahorrar espacio.

/etc/fstab:

none        /tmp         ramfs   defaults              0 0
none        /mnt/ramdisk ramfs   defaults              0 0

/etc/rc.local:

chmod 777 /tmp
touch /etc/ramdisk.sh

/bin/cat - >> /etc/ramdisk.sh << EOT
#!/bin/sh

cd /var/ && /bin/tar cf abs.tar abs/
cd /var/cache/ && /bin/tar cf pacman.tar pacman/
cd /var/lib/ && /bin/tar cf pacman.tar pacman/

/bin/mkdir /mnt/ramdisk/var/
/bin/mkdir /mnt/ramdisk/var/cache/
/bin/mkdir /mnt/ramdisk/var/lib/

/bin/mv /var/abs /mnt/ramdisk/var && /bin/ln -s /mnt/ramdisk/var/abs /var/abs
/bin/mv /var/cache/pacman /mnt/ramdisk/var/cache &&  /bin/ln -s /mnt/ramdisk/var/lib/pacman /var/lib/pacman
/bin/mv /var/lib/pacman /mnt/ramdisk/var/lib && /bin/ln -s /mnt/ramdisk/var/cache/pacman /var/cache/pacman

/bin/ln -s /tmp /mnt/ramdisk/tmp
/bin/chmod 777 /mnt/ramdisk/tmp
EOT

/etc/ramdisk.sh &

/etc/rc.local.shutdown:

echo "Guardando el contenido de memoria a disco"
rm /var/abs
rm /var/cache/pacman
rm /var/lib/pacman
mv /mnt/ramdisk/var/abs /var
mv /mnt/ramdisk/var/cache/pacman /var/cache
mv /mnt/ramdisk/var/lib/pacman /var/lib

Enlaces de interés