El hecho de que los archivos de corta duración se graben en el disco o no depende no solo del comportamiento predeterminado del caché de archivos del núcleo, sino también de los detalles de la implementación del controlador del sistema de archivos y las opciones de montaje de dicho sistema de archivos. Es posible configurar el sistema de tal manera que todo siempre se escriba inmediatamente en el disco (esencialmente, un comportamiento similar al DOS).
Un sistema de archivos, que presenta de manera prominente el comportamiento que le interesa (llamado "asignación retrasada") es XFS. Con él puede estar más o menos seguro (dado que no hay opciones de configuración divertidas en otro lugar) de que los bloques que pertenecen a los archivos recién eliminados se reutilizarán en la memoria, sin acceso intermedio al disco. Es posible que XFS aún desee actualizar su diario de metadatos (que se escribirá en el disco con bastante frecuencia; sin embargo, dado que el diario de XFS es solo metadatos, es lo suficientemente pequeño como para configurarse en otro dispositivo rápido, como la RAM con respaldo de batería encontrada en muchos controladores RAID).
Debido a este comportamiento, no es infrecuente encontrar archivos completamente apagados, sino de otro modo archivos legítimos (tamaño y otros metadatos intactos) en un sistema de archivos XFS después de una interrupción repentina de energía. Tal es un costo de soportar operaciones rápidas de archivos "semi-temporales".
Alguna teoría
En general, una llamada al sistema que accede a un sistema de archivos finaliza, bastante rápido, en el método definido por el controlador del sistema de archivos (adjunto a "struct inode_operations" y "struct file_operations" cuando el controlador VFS está registrado). Lo que sucede después de eso se deja únicamente a discreción de la implementación del sistema de archivos. Por lo general, se utiliza algo parecido al siguiente enfoque (este ejemplo simple es del controlador FAT de Linux):
if (IS_DIRSYNC(dir))
(void)fat_sync_inode(dir);
else
mark_inode_dirty(dir);
Si el sistema de archivos está montado en modo "sincronización", todos los cambios van al disco inmediatamente (a través de fat_sync_inode () en este caso). De lo contrario, el bloque se marca como "sucio" y permanece en la memoria caché hasta que se vacía en alguna oportunidad razonable.
Por lo tanto, es imposible predecir el comportamiento del sistema con respecto a los archivos transitorios sin considerar las opciones de montaje del sistema de archivos e inspeccionar el código fuente de su implementación (esto, por supuesto, se aplica principalmente a todo tipo de sistemas de archivos exóticos que se encuentran principalmente en el espacio incrustado) .