6 votos

Windows DFS de escritura retardada

Sé muy poco acerca de la DFS sistemas de ficheros, pero se ha topado con un problema con una de nuestras implementaciones.

Nuestra aplicación escribe los archivos a una ubicación designada, la cierra y, a continuación, escribe un registro en la base de datos. Otra parte de la aplicación recoge estos DB registros y lee el archivo que fue escrita previa.

En algunos casos, el lector es conseguir un "archivo no encontrado" y se produce un error. Reiniciar sin tocar nada más y encuentra el archivo correctamente y todo está bien.

Creo que he descartado un problema con nuestra aplicación como el archivo es, sin duda vaciados/cerrado antes de la base de datos se crea el registro.

Por lo tanto, me llevó a creer que el sistema operativo o el sistema de archivos es retrasar la escritura de archivo internamente por lo que no está inmediatamente disponible.

El sistema de ficheros en cuestión es Windows 2003 SP2 DFS. Es este un escenario probable con este DFS? Si es así, es posible cambiar a un tipo de escritura/sin almacenamiento en caché de la política para asegurarse de que los archivos se escriben con prontitud?

4voto

yulia Puntos 16

DFS es un Sistema de Archivos Distribuido, que es exactamente lo que dice su nombre: un "virtual compartido de archivos" que se distribuye y se replican a través de múltiples servidores. Cada vez que la aplicación se escribe en él, es en realidad el acceso a una de sus copias en uno de los servidores que forman parte de ella, y si hay otra aplicación que intenta leer los mismos datos poco después, podría muy bien ser el acceso a otro servidor, el cual no recibir la actualización de datos todavía.

Con DFS, no puede nunca estar absolutamente seguro de que los datos escritos estará disponible en una lectura posterior: no puede siempre ser latencia de replicación; usted también no tiene ninguna manera de decirle a su aplicación a "hablar" a un determinado servidor DFS: es libre para conectar a cualquiera de los servidores que ejecutan.

Si desea que esta aplicación funcione en tiempo real, usted debe utilizar un estándar de archivo de compartir, no de un DFS.

-2voto

David Schwartz Puntos 22683

Usted está haciendo común, pero incorrecta, la suposición de que hay una idea universal de "después", y que si usted hace una cosa "después" de la otra, usted está garantizado para ver los efectos. Esto es simplemente una falsa noción, y nada de lo que haga podrá jamás hacer que funcione de la forma esperada.

La analogía sería enviar a alguien una carta, obtener un acuse de recibo, llamando por teléfono a la persona, y suponiendo que debe de haber leído la carta.

Como usted ha mencionado, retraso en las escrituras de tornillo. Muchas otras cosas se pueden meter la pata demasiado. Tratando de encontrar todas las formas posibles que se pueden romper y arreglar todos ellos es sencillamente una locura.

En cambio, si necesita ordenar entre las operaciones, el uso de algo que está garantizado específicamente para proporcionar al orden particular que usted necesita. Ya que no hay un orden garantizado entre el sistema de ficheros y la base de datos, no.

La mayoría de los sistemas de ficheros proporcionan un orden garantizado con respecto a sí mismos y a sus propias operaciones, cuando se tiene acceso a través de procesos que se ejecutan en la misma instancia de sistema operativo. Así que después de que el archivo está configurado correctamente, puede crear una 'trigger' archivo en el mismo sistema de archivos. Si el lector ve el gatillo de archivo, a continuación, se puede saber que el archivo de datos está completa y válida. Se puede quitar el disparador de archivo cuando se hace.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X