¿Muchos archivos transitorios en un sistema de archivos registrado?

¿Muchos archivos transitorios en un sistema de archivos registrado?

Escribir y eliminar muchos archivos rápidamente

Voy a escribir muchos archivos temporales por segundo, durante un período sostenido. Cada uno se eliminará después de algunos milisegundos.

Digamos que tenemos un software de procesamiento de imágenes que funciona con fotogramas parciales de una cámara rápida, aproximadamente 2000 por segundo. Cada uno de ellos se escribe en un archivo, luego el archivo se modifica un poco, se vuelve a leer y se elimina, en el mismo par de milisegundos.

Actualmente, esto se ejecuta en un tmpfssistema de archivos, pero supongamos que no puede.
Y no, no puedo"simplemente arréglalo haciendo eso", es necesario para alguna integración heredada.

¿Cómo se las arregla el sistema de archivos?

Me gustaría entender cómo interactúa esto con las opciones del sistema de archivos. Específicamente, no puedo entender cómo interactúa un diario del sistema de archivos con esto.

Como idea ingenua, se podría esperar que los datos nunca toquen el disco, e incluso los metadatos no lo hacen; Después de crear un archivo y luego eliminarlo, los datos son los mismos, ¿verdad? Y después de escribir y borrar el nombre en el directorio, el directorio también es el mismo, ¿verdad?

Efectos sorprendentes

Sin error.

Un directorio puede representar los mismos nombres de archivos de varias maneras, como reutilizar un lugar para almacenar un nuevo nombre de archivo u otro lugar.
Eso significa que, cuando hubo operaciones de escritura en un bloque de disco, es posible que haya cambiado sin cambios en el nivel del sistema de archivos, por lo que es necesario escribirlo en el disco.

¿Pero puedo asegurarme de que no se escriba una vez para cada una de las cuatro operaciones? ¿Y qué pasa con el diario? ¿Mis datos temporales terminarán en el diario? ¿Puedo evitar eso?

Como una pregunta: ¿qué debo cuidar o tener en cuenta al hacer eso?

Respuesta1

Puedo decirte cuál es la teoría, pero no tengo experiencia práctica. Leí que los archivos se envían de la memoria al disco sólo cada pocos segundos, y que los archivos que se eliminan con la suficiente rapidez nunca terminan en el disco. Ni siquiera en el diario.

No estoy seguro de si es necesario que un archivo exista durante 5 segundos completos para ser eliminado o simplemente existe en el momento del punto de control, lo que ocurre cada 5 segundos. Probablemente lo último. Si es así, algunos archivos quedarán absorbidos por el disco. Esto sucederá regularmente durante breves momentos.

Hay unos pocosopciones de montajeque sugeriría investigar. Podrías hacer que esos momentos de control sean arbitrariamente raros aumentando el intervalo, pero aun así ocurrirán. Además, la asignación diferida tiene el efecto secundario de mantener los datos enviados al disco por razones que no puedo explicar. No recuerdo dónde leí sobre eso.

  • commit=nrsec (Sincroniza todos los datos y metadatos cada nrsec segundos. El valor predeterminado es 5 segundos. Cero significa predeterminado) en Ext3
  • delalloc (Aplazar la asignación de bloques hasta el momento de la escritura) en Ext4

Solución sugerida:Utilice un sistema de archivos en memoria. De esta manera estará seguro de que no quedará nada en el disco. Ya sea tmpfs o ramfs, existen algunas diferencias, como si puede intercambiarse o crecer más allá de una capacidad específica. Sé que esto es básicamente lo que estás usando ahora. No tiene que ser /tmp, puede crear un nuevo sistema de archivos de ese tipo en cualquier directorio.

http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/

información relacionada