Un sistema de archivos distribuido nos va a permitir almacenar y acceder a archivos remotos como si fueran locales, sin que notemos pérdidas en el rendimiento.
Vamos a analizar dos sistemas de archivos distribuidos muy conocidos (NFS y AFS), comentando sus principales ventajas e inconvenientes.
Para poder montar nuestro propio sistema distribuido, antes hay que tener claro cuál vamos a usar. Se comentarán sobre todo 2 aspectos fundamentales: el primero la consistencia, es decir, diferentes máquinas que quieran acceder a un mismo archivo, deben de ver el mismo contenido en él, a pesar de que otro usuario haya realizado modificaciones. El segundo será el rendimiento. Si se desea un mayor nivel de consistencia, el rendimiento se verá penalizado.
NFS (Sun Network File System)
Está diseñado para ser utilizado con sistemas UNIX. Posee un sistema de archivos virtual (VFS), el cuál está integrado en el núcleo de Unix. Su función será determinar si las llamadas que realiza una aplicación para la petición de un archivo son locales, remotas o se encuentran en otro sistema de archivos.
Cuando accedemos a un archivo remoto, es necesario saber la ruta en la que se encuentra remotamente. Si la sabemos, lo que se realiza es un montaje (orden mount), de tal manera que ya podemos acceder a ese archivo.
Permite asegurar la consistencia, ya que si tenemos un archivo remoto el cual hemos abierto en nuestra propia máquina y decidimos modificarlo, los datos se escriben en el archivo remoto en el mismo momento en el que lo estamos modificando. Esto quiere decir que estamos escribiendo continuamente de manera remota según modificamos nuestro archivo local, por lo que tendremos una penalización en el rendimiento pero obtenemos a cambio una gran consistencia en los archivos.
La seguridad de este sistema es baja. Cuando realizamos peticiones al servidor (donde se encuentre nuestro archivo remoto), se incluye el nombre de usuario sin encriptar, para ver si tenemos permisos de acceso a ese archivo. Se puede mejorar ligeramente la seguridad con lo que se llama Kerberización. Consiste en tan solo incluir el nombre del usuario cuando se realiza el montaje de la ruta del archivo.
A modo de resumen, es buena idea utilizar este sistema cuando generalmente siempre van a acceder varios usuarios a un archivo de manera concurrente y además queremos asegurar la consistencia.
AFS (Andrew Network File System)
Es un sistema de archivos distribuido centrado principalmente en la escalabilidad, es decir, si se produce un aumento en el número de usuarios o en nuestros recursos, no debe verse afectado el rendimiento.
Es recomendable usar este sistema cuando los archivos se actualicen poco, o solo sean actualizados por un usuario. También es buena idea utilizarlo si es más frecuente la lectura de los archivos que la escritura.
El sistema funciona de la siguiente manera:
cuando un cliente desea obtener un archivo, el servidor se lo proporciona y le asegura un “callback promise”. Esto significa que si el archivo es modificado en el servidor, este último se compromete a avisar al cliente de que posee un archivo que ha sido modificado.
El rendimiento es mayor debido a que las escrituras se realizan localmente, en la máquina del cliente. En el método anterior, en cuanto se realizaba una modificación del archivo, se enviaban los cambios al servidor. En este, sin embargo, se comprueba la consistencia cuando se abre o se cierra el archivo. Al ser cerrado, se envían los cambios realizados en el archivo al servidor.
Esto es todo, ahora la decisión de elegir uno u otro es vuestra. Espero que os sirva.