Compartir a través de


Estado de caché en la raíz de virtualización

El proveedor usa el sistema de archivos local en la raíz de virtualización como una memoria caché de los elementos que administra. Un elemento (archivo o directorio) puede estar en uno de los seis estados del sistema de archivos local:

  • Las máquinas

    El elemento no existe localmente en el disco. Se proyecta, es decir, sintetizado, durante las enumeraciones de su directorio primario. Los elementos virtuales se combinan con los elementos que pueden existir en el disco para presentar todo el contenido del directorio primario.

  • Marcador de posición

    Para archivos: el contenido del archivo (flujo de datos principal) no está presente en el disco. Los metadatos del archivo (nombre, tamaño, marcas de tiempo, atributos, etc.) se almacenan en caché en el disco.

    Para directorios: algunos o todos los descendientes inmediatos del directorio (los archivos y directorios del directorio) no están presentes en el disco, es decir, siguen siendo virtuales. Los metadatos del directorio (nombre, marcas de tiempo, atributos, etc.) se almacenan en caché en el disco.

  • Marcador de posición hidratado

    Para los archivos: el contenido y los metadatos del archivo se han almacenado en caché en el disco. También se conoce como un "archivo parcial".

    Para directorios: un directorio que se creó en el disco como un marcador de posición nunca se convierte en un directorio de marcador de posición hidratado. Esto permite al proveedor agregar o quitar elementos del directorio en su almacén de respaldo y hacer que esos cambios se reflejen en la memoria caché local.

  • Marcador de posición sucio (hidratado o no)

    Los metadatos del elemento se han modificado localmente y ya no es una memoria caché de su estado en el almacén del proveedor. Tenga en cuenta que la creación o eliminación de un archivo o directorio en un directorio de marcador de posición hace que el directorio de marcador de posición se ensucie.

  • Archivo o directorio completo

    Para los archivos: se ha modificado el contenido del archivo (flujo de datos principal). El archivo ya no es una memoria caché de su estado en el almacén del proveedor. Los archivos creados en el sistema de archivos local (es decir, que no existen en el almacén del proveedor) también se consideran archivos completos.

    Para directorios: los directorios creados en el sistema de archivos local (es decir, que no existen en el almacén del proveedor) se consideran directorios completos. Un directorio que se creó en el disco como marcador de posición nunca se convierte en un directorio completo.

  • Lápida

    Marcador de posición oculto especial que representa un elemento que se ha eliminado del sistema de archivos local. Cuando se enumera un directorio ProjFS combina el conjunto de elementos locales (marcadores de posición, archivos completos, etc.) con el conjunto de elementos proyectados virtuales. Si un elemento aparece en los conjuntos locales y proyectados, el elemento local tiene prioridad. Si un archivo no existe en el sistema de archivos local no hay ningún estado local, por lo que aparecería en la enumeración. Sin embargo, si ese elemento se hubiera eliminado, tenerlo en la enumeración sería inesperado. Reemplazar un elemento eliminado por una piedra de tumba da como resultado los siguientes efectos:

    • Enumeraciones para no mostrar el elemento.
    • Se abre el archivo que espera que el elemento exista produce un error, por ejemplo, "archivo no encontrado".
    • El archivo crea que espera que se realice correctamente solo si el elemento no existe correctamente; ProjFS quita la lápida como parte de la operación.

Para ilustrar los estados anteriores, tenga en cuenta la siguiente secuencia, dado un proveedor de ProjFS que tiene un único archivo "foo.txt" ubicado en la raíz de virtualización C:\root.

  1. Una aplicación enumera C:\root. Ve el archivo virtual "foo.txt". Puesto que aún no se ha accedido al archivo, el archivo no existe en el disco.
  2. La aplicación abre un identificador para C:\root\foo.txt. ProjFS indica al proveedor que cree un marcador de posición para él.
  3. La aplicación lee el contenido del archivo. El proveedor proporciona el contenido del archivo a ProjFS y se almacena en caché en C:\root\foo.txt. El archivo ahora es un marcador de posición hidratado.
  4. La aplicación actualiza la marca de tiempo Última modificación. El archivo ahora es un marcador de posición hidratado sucio.
  5. La aplicación abre un identificador para el acceso de escritura al archivo. C:\root\foo.txt ahora es un archivo completo.
  6. La aplicación elimina C:\root\foo.txt. ProjFS reemplaza el archivo por una lápida. Ahora, cuando la aplicación enumera C:\root, no ve foo.txt. Si intenta abrir el archivo, se produce un error en la apertura con ERROR_FILE_NOT_FOUND.