Almacenamiento en caché de archivos en sistemas de archivos distribuidos

El almacenamiento en caché de archivos mejora el rendimiento de E/S porque los archivos leídos previamente se mantienen en la memoria principal. Debido a que los archivos están disponibles localmente, la transferencia de red se pone a cero cuando se repiten las requests de estos archivos. La mejora del rendimiento del sistema de archivos se basa en la localidad del patrón de acceso al archivo. El almacenamiento en caché también ayuda en la confiabilidad y escalabilidad.

La mayoría de los sistemas de archivos distribuidos actuales emplean alguna forma de almacenamiento en caché. Los esquemas de almacenamiento en caché de archivos están determinados por una serie de criterios, incluida la granularidad de los datos en caché, el tamaño de la memoria caché (grande/pequeño/fijo/dinámico), la política de reemplazo, la ubicación de la memoria caché, los mecanismos de propagación de modificaciones y la validación de la memoria caché.

Ubicación de caché: el archivo puede guardarse en el disco o la memoria principal del cliente o el servidor en un sistema cliente-servidor con memoria y disco.

Disco del servidor : siempre es la ubicación original donde se guarda el archivo. Aquí hay suficiente espacio en caso de que el archivo se modifique y se vuelva más largo. Además, el archivo es visible para todos los clientes.

Ventajas: No hay problemas de consistencia porque cada archivo tiene solo una copia. Cuando un cliente quiere leer un archivo, se requieren dos transferencias: desde el disco del servidor a la memoria principal, y desde la memoria principal del cliente al disco del servidor.

Desventajas:

  • Es posible que ambas transferencias tomen algún tiempo. Una parte del tiempo de transferencia se puede evitar almacenando el archivo en la memoria principal del servidor para aumentar el rendimiento.
  • Debido a que la memoria principal es limitada, se requerirá un algoritmo para determinar qué archivos o partes de archivos deben mantenerse en la memoria caché. Este algoritmo estará basado en dos factores: la unidad de caché y el mecanismo de reemplazo a aplicar cuando la caché esté llena.

Memoria principal del servidor : la pregunta es si almacenar en caché el archivo completo o solo los bloques de disco cuando el archivo se almacena en caché en la memoria principal del servidor. Si el archivo completo se almacena en caché, se puede almacenar en ubicaciones contiguas y la transmisión de alta velocidad da como resultado un buen rendimiento. El almacenamiento en caché de bloques de disco hace que la memoria caché y el espacio en disco sean más eficientes.
Se emplean técnicas estándar de almacenamiento en caché para superar este último problema. En comparación con las referencias de memoria, las referencias de caché son bastante raras. El bloque más antiguo se puede elegir para desalojo en LRU (Usado menos recientemente). La copia de caché se puede descartar si hay una copia actualizada en el disco. Los datos de caché también se pueden escribir en el disco. Los clientes pueden acceder de manera fácil y transparente a un archivo en caché en la memoria principal del servidor. El servidor puede mantener fácilmente los discos y las copias de la memoria principal del archivo consistentes. Solo existe una copia del archivo en el sistema, según el cliente. 

Disco del cliente : Los datos también se pueden guardar en el disco duro del cliente. Aunque la transferencia de red se reduce, en caso de que se produzca un golpe de caché, se debe acceder al disco. Dado que los datos modificados estarán disponibles en caso de pérdida de datos o bloqueo, esta técnica mejora la confiabilidad. Luego, la información se puede recuperar del disco duro del cliente.  
Incluso si el cliente está desconectado del servidor, aún se puede acceder al archivo. Dado que el acceso al disco puede gestionarse localmente, no es necesario ponerse en contacto con el servidor, lo que mejora la escalabilidad y la fiabilidad. 

ventajas:

  • La confiabilidad aumentó ya que los datos se pueden recuperar en caso de pérdida de datos.
  • El disco del cliente tiene una capacidad de almacenamiento significativamente mayor que la memoria principal del cliente. Es posible almacenar en caché más datos, lo que da como resultado la mayor proporción de aciertos de caché. La mayoría de los sistemas de archivos distribuidos emplean una arquitectura de transferencia de datos a nivel de archivo, en la que todo el archivo se almacena en caché.
  • La escalabilidad aumenta ya que el acceso al disco se puede manejar localmente.

Desventajas:

  • El único inconveniente es que el almacenamiento en caché del disco es incompatible con las estaciones de trabajo sin disco. Cada caché requiere acceso al disco, lo que resulta en un aumento considerable en el tiempo de respuesta. Se debe decidir si cachear en la memoria principal del servidor o en el disco del cliente.
  • Aunque el almacenamiento en caché del servidor elimina la necesidad de acceso al disco, aún se requiere la transferencia de red. El almacenamiento en caché de datos en el lado del cliente es una solución para reducir el tiempo de transferencia de la red. Si el sistema debe usar la memoria principal del cliente o el disco, depende de si el sistema necesita ahorrar espacio o mejorar el rendimiento.
  • El acceso es lento si el disco tiene más espacio. La memoria principal del servidor puede proporcionar un archivo más rápido que el disco del cliente. El almacenamiento en caché se puede realizar en el disco del cliente si el tamaño del archivo es muy alto. La siguiente figura muestra la forma más sencilla, es decir, evitar el almacenamiento en caché.

Memoria principal del cliente : una vez que se acuerde que los archivos deben almacenarse en caché en la memoria del cliente, el almacenamiento en caché puede tener lugar en el espacio de direcciones del proceso de usuario, el kernel o un administrador de caché como proceso de usuario.
La segunda alternativa es almacenar en caché los archivos en el espacio de direcciones de cada proceso de usuario, como se muestra:

La biblioteca de llamadas al sistema está a cargo del caché. Los archivos se abren, cierran, leen y escriben durante la ejecución del proceso. La biblioteca guarda los archivos utilizados con más frecuencia para que puedan reutilizarse si es necesario. Los archivos actualizados se devuelven al servidor una vez finalizada la operación. Cuando los procesos individuales abren y cierran archivos regularmente, esta técnica funciona bien. 
Está bien para los administradores de bases de datos, pero no para los programadores que trabajan en circunstancias en las que es posible que no se pueda volver a acceder a los archivos. 
El archivo se puede almacenar en caché en el kernel en lugar del espacio de direcciones del proceso del usuario, como se muestra. Sin embargo, esta técnica requiere muchas llamadas al sistema para acceder al archivo para cada visita de caché.

Se puede utilizar un administrador de caché a nivel de usuario independiente para almacenar en caché los archivos. Como resultado, el núcleo ya no tiene que mantener el código del sistema de archivos y se vuelve más aislado y flexible. El kernel puede decidir sobre la asignación de espacio de memoria para el programa frente a la memoria caché en tiempo de ejecución. El núcleo puede almacenar algunos de los archivos almacenados en caché en el disco si el administrador de caché se ejecuta en la memoria virtual y los bloques se llevan a la memoria principal cuando se activa el caché.

ventajas :

  • Esta técnica es más aislada y flexible (ya que el núcleo ya no tiene que mantener el código del sistema de archivos)
  • Cuando los procesos individuales abren y cierran archivos regularmente, el tiempo de acceso disminuye. Por lo tanto, la ganancia en rendimiento es máxima.
  • Permite estaciones de trabajo sin disco.
  • Contribuye a la escalabilidad y confiabilidad del sistema.

Desventajas :

  • Se requiere un administrador de caché a nivel de usuario independiente.
  • Los principios de almacenamiento en caché del cliente no tienen ningún valor con la memoria virtual, aunque el administrador de caché puede bloquear algunas páginas solicitadas con frecuencia.

Coherencia de caché: política de actualización de caché :

Cuando la memoria caché se encuentra en el Node del cliente, numerosos usuarios pueden acceder a los mismos datos o archivos al mismo tiempo en un sistema de archivos. Si todos los cachés contienen los mismos datos más actuales, se consideran coherentes. Es posible que los datos se vuelvan inconsistentes si algunos usuarios modifican el archivo. El sistema distribuido que usa un DFS debe mantener sus copias de datos consistentes.
Dependiendo de cuándo propagar los cambios al servidor y cómo validar la autenticidad de los datos de caché, se proporcionan muchas estrategias de coherencia. Los tres tipos son escritura simultánea, escritura al cerrar y control centralizado.
Cuando el caché está ubicado en el Node del cliente y un usuario escribe datos en el caché, también debe ser visible para los otros usuarios. La política escrita determina que cuando se realiza la escritura.

Hay cuatro políticas de actualización de caché:

  • Write-Through : cuando un nuevo usuario edita una entrada de caché en este método, se escribe inmediatamente en el servidor. Cualquier trámite que requiera un archivo del servidor ahora recibirá siempre la información más actualizada. Considere el siguiente escenario: el proceso del cliente lee el archivo, lo almacena en caché y luego sale del proceso. Otro cliente modifica el mismo archivo y envía el cambio al servidor poco tiempo después.
    Si se inicia un proceso en la primera máquina con la copia en caché del archivo, obtendrá una copia desactualizada. Para evitar esto, compare el tiempo de modificación de ambas copias, la copia en caché en la máquina del cliente y la copia cargada en el servidor, para validar el archivo con el servidor.
  • Escritura retrasada : para reducir el tráfico de red continuo, escriba todas las actualizaciones en el servidor periódicamente o únalas por lotes. Se conoce como ‘escritura retrasada’. Este método mejora el rendimiento al permitir una sola operación de escritura masiva en lugar de varias escrituras diminutas. En este caso, el archivo temporal no se almacena en el servidor de archivos.
  • Escribir al cerrar : un paso adelante es volver a escribir el archivo en el servidor solo una vez que se haya cerrado. ‘Escribir al cerrar’ es el nombre del algoritmo. La segunda escritura sobrescribe la primera si dos archivos almacenados en caché se escriben uno al lado del otro. Es comparable a lo que sucede cuando dos procesos leen o escriben en su propio espacio de direcciones y luego vuelven a escribir en el servidor en un solo sistema de CPU.
  • Control centralizado : con fines de seguimiento, el cliente envía información sobre los archivos que acaba de abrir al servidor, que luego realiza actividades de lectura, escritura o ambas. Múltiples procesos pueden leer del mismo archivo, pero una vez que un proceso ha abierto el archivo para escribir, se negará el acceso a todos los demás procesos. Después de que el servidor recibe la notificación de que el archivo se ha cerrado, actualiza su tabla y solo entonces los usuarios adicionales pueden acceder al archivo.

Esquema de validación de caché :

Cuando se modifican los datos de una memoria caché, la política de propagación de la modificación indica cuándo se actualiza la copia maestra del archivo en el Node del servidor. No proporciona información sobre cuándo se actualizan los datos del archivo en las memorias caché de otros Nodes. Los datos de un archivo pueden almacenarse en las memorias caché de muchos Nodes al mismo tiempo.
Cuando otro cliente modifica los datos correspondientes al elemento de caché en la copia maestra del archivo en el servidor, la entrada de caché del cliente queda obsoleta. Es necesario verificar si los datos almacenados en caché en un Node cliente coinciden con la copia maestra. Si este no es el caso, los datos almacenados en caché se deben invalidar y se debe solicitar una nueva versión de los datos al servidor.
Para comprobar la validez de los datos de caché, 2 esquemas son:

  1. Enfoque iniciado por el cliente : el cliente se conecta al servidor y verifica que los datos que tiene en su caché son consistentes con la copia maestra. La verificación se puede hacer en diferentes momentos como-
    • Verifique antes de cada acceso: como aquí se debe llamar al servidor cada vez que se realiza un acceso, esto niega el propósito real de almacenar datos en caché.
    • Verificación periódica: la validación se realiza en un intervalo regular predeterminado
    • Verifique la apertura del archivo: la entrada de caché se verifica cuando se abre un archivo.
  2. Enfoque iniciado por el servidor : cuando un cliente abre un archivo, informa al servidor de archivos el propósito de abrir el archivo: lectura, escritura o ambas. Entonces es deber del servidor de archivos hacer un seguimiento de qué cliente está trabajando en qué archivo y en qué modo(s). Cuando el servidor identifica cualquier posibilidad de inconsistencia cuando varios clientes utilizan el archivo, reacciona.
    • Un cliente notifica al servidor del cierre, así como cualquier cambio realizado en el archivo cuando cierra un archivo. Luego, el servidor actualiza su base de datos para reflejar qué clientes tienen qué archivos abiertos en qué modos.
    • El servidor puede denegar/poner en cola la solicitud o deshabilitar el almacenamiento en caché solicitando que todos los clientes que tienen el archivo abierto lo eliminen de sus cachés cada vez que un nuevo cliente solicite abrir un archivo que ya está abierto y el servidor descubre cualquier inconsistencia que haya. puede ocurrir.

Publicación traducida automáticamente

Artículo escrito por sameekshakhandelwal1712 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *