por Mark Nielsen Sobre el autor: El autor (home page) trabaja en The Computer Underground, Inc. como limpiador de ficheros y como consultor profesional en 800linux.com. En su tiempo libre, se dedica a trabajos voluntarios, como escribir documentos como éste, que ha sido editado usando NEdit junto con ispell. Contenidos: |
Resumen:
Este artículo muestra como usar la memoria RAM como un disco virtual.
Pero primero... ¿Qué es un ramdisk? Es una parte de memoria que puede ser asignada para usarla como si fuese una partición de disco. Consiste, en otras palabras, en reservar una cierta cantidad de memoria y acceder a ella como si fuese una unidad de disco. ¿Qué motivos puede haber para querer usar un ramdisk? Cuando un grupo de archivos va a ser accedido de forma intensiva, guardar esos archivos en memoria incrementará la velocidad de acceso debido a la gran diferencia de velocidad que existe entre la memoria y un disco duro. Un ejemplo de estos casos podría ser intentar acelerar el acceso a las páginas de un servidor de web. Si además, le gusta el riesgo y tiene un PII a 550Mhz con 1 Gb de memoria pero con un disco no muy grande, como 500Mb, puede hacer uso de esta técnica para incrementar el espacio disponible. De hecho, tener una máquina sin disco duro tampoco sería ninguna locura, despues de todo.
Algunas referencias útiles:
# Crear el directorio donde montaremos el ramdisk mkdir -p /tmp/ramdisk0 # Crear un sistema de ficheros en el disco (formatearlo) mkfs -t ext2 /dev/ram0 # Montar el ramdisk en el directorio elegido: mount /dev/ram0 /tmp/ramdisk0Esta secuencia de comandos creará un directorio donde montar el ramdisk, dará formato al ramdisk (por defecto con un tamaño de 4 Mb) y lo montará. Ya está: se puede usar ese directorio como cualquier otra partición... ¡adelante!
Si no le permite formatear el ramdisk, es probable que el kernel no esté compilado con soporte para ramdisk. La opción de configuración del kernel que permite activarlo se llama CONFIG_BLK_DEV_RAM.
Como hemos visto, el tamaño por defecto del ramdisk es 4 Mb = 4096 bloques. Puede
ver de qué tamaño es el ramdisk que ha obtenido observando la salida de mke2fs:
mke2fs /dev/ram0
debería haber escrito algo parecido a lo siguiente:
mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 Linux ext2 filesystem format Filesystem label= 1024 inodes, 4096 blocks 204 blocks (4.98%) reserved for the super user First data block=1 Block size=1024 (log=0) Fragment size=1024 (log=0) 1 block group 8192 blocks per group, 8192 fragments per group 1024 inodes per groupLa orden
df -k /dev/ram0
le permite saber cuanto de ese espacio es realmente
utlizable (el sistema de ficheros ocupa una pequeña parte del espacio total)
>df -k /dev/ram0 Filesystem 1k-blocks Used Available Use% Mounted on /dev/ram0 3963 13 3746 0% /tmp/ramdisk0
Pero cuidado, hay que tener en cuenta algunas cosas... Por ejemplo, cuando el ordenador se reinicia, todo el contenido del ramdisk se borra, así que no guarde allí datos que no estén salvados en un disco "de verdad" si son importantes. También hay que tener presente que si se modifica algún fichero del ramdisk y no quiere perder los cambios deberá grabarlo también en otro sitio.
Vamos a ver pues qué formas hay de cambiar ese tamaño por defecto de 4Mb:
Primero la forma difícil: consiste en añadir la siguiente línea al fichero de configuración de lilo
(lilo.conf):
ramdisk=10000
A partir del momento en que se reinicie el ordenador (ejecutar antes lilo), el tamaño por defecto para los
ramdisk será de 10 Mb. Como ejemplo, este es mi fichero lilo.conf
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 image=/boot/vmlinuz-2.2.5-15 label=linux root=/dev/hda2 read-only ramdisk=10000Con esta configuración, el tamaño utilizable del ramdisk es un poco más de 9 Mb.
En cambio, si ha compilado el soporte para ramdisk como módulo, entonces puede decidir que tamaño desea que tenga en el momento de cargar el módulo. Esto se puede hacer tanto con una opción en el fichero /etc/conf.modules:
options rd rd_size=10000como pasando los parámetros adecuados al llamar a insmod desde la línea de comandos:
insmod rd rd_size=10000Por ejemplo, para usar el módulo, seguiríamos los siguientes pasos:
umount /tmp/ramdisk0
rmmod rd
insmod rd_size=20000
mke2fs /dev/ram0
mount /dev/ram0 /tmp/ramdisk0
mv /home/httpd/ /home/httpd_real mkdir /home/httpd mkdir /home/httpd/cgi-bin mkdir /home/httpd/html mkdir /home/httpd/iconsA continuación, añadimos estos comandos al fichero /etc/rc.d/rc.local
### Make the ramdisk partitions (damos formato a los ramdisks) /sbin/mkfs -t ext2 /dev/ram0 /sbin/mkfs -t ext2 /dev/ram1 /sbin/mkfs -t ext2 /dev/ram2 ### Mount the ramdisks to their appropriate places (los montamos) mount /dev/ram0 /home/httpd/cgi-bin mount /dev/ram1 /home/httpd/icons mount /dev/ram2 /home/httpd/html ### Copying real directory to ramdisks (copiamos los datos en los ramdisks) tar -C /home/httpd_real -c . | tar -C /home/httpd -x #### Restarting the webserver (iniciamos el servidor de web) /etc/rc.d/init.d/httpd restartPara que los cambios tengan efecto, reiniciamos el ordenador. Se puede evitar reiniciarlo simplemetne ejecutando de nuevo el script rc.local que hemos modificado:
/etc/rc.d/rc.local
Contactar con el equipo de LinuFocus
© Mark Nielsen LinuxFocus 1999 |
Translation information:
|
2000-03-10, generated by lfparser version 0.6