original in en Mark Nielsen
en to es:David Abilleira Freijeiro
El autor trabaja en The Computer Underground, Inc. como experto en Linux y se divierte haciendo tonterias y proyectos tontos, porque, ¡vaya!, los ordenadores SE SUPONE que son divertidos. Mark también trabaja en ZING, www.genericbooks.com como voluntario para ayudar y promover el software y las publicaciones libres y abiertas.
Un ramdisk es básicamente memoria que pretendes usar como si fuera una unidad de disco duro. En cualquier momento que usas un ramdisk, básicamente estás usando tu memoria y no tu disco duro. Hay ventajas y desventajas de esta aproximación. Fundamentalmente, la gran ventaja es que dado que estás usando memoria, cualquier cosa que estés haciendo será mucho más rápida dado que el disco duro es más lento que la memoria. La gran desventaja es que si haces cambios en el servidor de bases de datos y reinicias el ordenador, perderás todos los cambios.
En el caso del servidor de bases de datos PostgreSQL, podrás aumentar la velocidad si colocas todas las bases de datos en memoria.
mkdir -p /Test mkfs -t ext2 /dev/ram0 mount /dev/ram0 /TestPara cambiar el tamaño del ramdisk a 50MB, haz lo siguiente:
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=50000
mkdir -p /Test mkfs -t ext2 /dev/ram0 mount /dev/ram0 /Test
Si hubieses añadido esas 3 lineas al fichero /etc/rc.d/rc.local, se ejecutarían cada vez que arrancases el ordenador.
NOTE: Aquí asumiremos que tu has fijado la opción "ramdisk" en el lilo.conf a un tamaño mallor del que tiene tu servidor de bases de datos. Si necesitas averiguar el tamaño aproximado, ejecuta este comando "cd /var/lib/pgsql; du ".
De todas maneras, para coger tu servidor postgresql instalado en "/var/lib/pgsql" y ponerlo en memoria, haz lo siguiente:
### Detener el servidor postgres real /etc/rc.d/init.d/postgres stop ### Renombrar el directorio real mv /var/lib/pgsql /var/lib/pgsql_main #### Crear un directorio para tener ahí nuestro disco ram mkdir -p /var/lib/pgsql_memory #### Cambiar el propietario del nuevo directorio a posgres o cualquiera #### que sea el dueño real. chown postgres /var/lib/pgsql_memory #### Crear un alias o un enlace al nombre original, /var/lib/pgsql ln -s /var/lib/pgsql_memory /var/lib/pgsql #### Formatea el ramdisk mkfs -t ext2 /dev/ram0 #### Monta el ramdisk en el directorio postgresql mount /dev/ram0 /var/lib/pgsql_memory #### Copia todo del directorio principal al ramdisk tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp ### Arranca el servidor postgresql actual /etc/rc.d/init.d/postgres start
Lo que se puede notar es que cuando los datos son "cacheados" por el sistema, la ganancia en velocidad no es muy elevada, cerca del 10% o el 20%. Cuando se introducen muchos datos unicos dentro de la base de datos, la velocidad crece drasticamente.
La mayor ventaja del truco del ramdisk es que obligas a la base de datos a permanecer en memoria y evitas usar el disco duro. Si no usas un ramdisk, tu base de datos probablemente a la larga sea "swapeada" fuera de la cache, y entonces cuando vuelva a ser usada, tendrá que ser recargada desde el disco duro.