2009-07-17 20 views
7

Tengo que hacer muchos pequeños accesos aleatorios a un montón de archivos. Tengo memoria principal más que suficiente para contener todos los datos.Sistema de archivos Linux respaldado automáticamente por disco pero alojado por completo en la memoria?

Cuando copio los datos a un sistema de archivos ramfs temporal y los proceso allí, esto toma solo una pequeña fracción del tiempo que esperaría el acceso al disco.

¿Hay un sistema de archivos Linux que contiene todos sus datos en la memoria principal, escribe cualquier cambio en un disco de respaldo, pero nunca toca el disco para ninguna lectura?

Si no, ¿pueden, por ejemplo, cachés ext3 ajustarse para que se garantice que contengan el 100% de datos y metadatos?

Respuesta

1

¿Por qué no intenta crear un espejo RAID entre un disco RAM y un disco físico?

No estoy seguro de si es eficiente. Si el espejo siempre debe estar sincronizado, tendrá que esperar al disco de todas formas cuando escriba, pero para leerlo debe obtener algo. Pero sí, a mí me parece mucho un caché IO ​​cuadrado reinventado con rueda complicada :)

Sería un buen experimento, sin embargo.

+0

Esto terminó siendo la respuesta correcta, con mdadm --write-mostly. – mikaelhg

+0

@mikaelhg: ¿tiene puntos de referencia? –

+0

En realidad, solo estoy ejecutando los puntos de referencia hoy. Amazon EC2 es realmente increíblemente útil para probar estas ideas locas. – mikaelhg

8

Si sólo está leyendo los datos, entonces se puede sintonizar el almacenamiento en caché de hecho de tal manera que todos los datos se almacenan en caché en la memoria RAM - véase/usr/src/linux/Documentation/sysctl/ fs.txt vm.txt para los detalles de lo que puedes modificar aquí El problema surge cuando escribe datos, particularmente si usa fsync() o similar para asegurarse de que los datos se hayan enviado al disco real.

A medida que el sistema operativo tiene para actualizar el disco en el caso de un fsync(), no hay mucho que puede hacer si todavía quiere asegurarse de que sus datos es constante y no se perdiera en un corte de energía.

Uno de los problemas con los que se puede encontrar es el atime o el tiempo de acceso: de forma predeterminada, cada vez que se accede a un archivo, el tiempo de acceso se actualiza en el inodo. Esto causará escrituras en el disco incluso cuando piense que solo está realizando lecturas. Esto puede ser un problema particular en su escenario donde está accediendo a muchos archivos pequeños. Si no le importa seguir el tiempo de acceso, puede montar su sistema de archivos con el noatime para desactivar esta 'función'.

+0

No se ve fs.txt es relevante para esta pregunta, a menos que me haya olvidado lo que usted específicamente quiso decir allí. – mikaelhg

+0

@mikaelhg: Lo siento, cometí un error allí - quise decir 'sysctl/vm.txt' que tiene varios controles que puede modificar, como vfs_cache_pressure. Actualizaré la respuesta. – DaveR

Cuestiones relacionadas