Este documento describe los sistemas de archivos distribuidos, incluyendo servidores de archivos, servicios de archivos y directorios, y formas de compartir archivos. Explica dos modelos de servicios de archivos distribuidos (carga/descarga y acceso remoto) y cuatro enfoques para compartir archivos (semántica UNIX, semántica de sesión, archivos inmutables, y transacciones). También cubre brevemente el sistema operativo Solaris 10 y su sistema de archivos ZFS.
2. Función Los sistemas distribuidos de archivos permite a los programas almacenar y acceder a archivos remotos del mismo modo que si fueran locales, permitiendo a los usuarios que accedan archivos desde cualquier computador.
3. Servidor de Archivos Un servidor de archivos es un proceso que se ejecuta en alguna maquina y ayuda a implantar el servicio de archivo. Un sistema puede tener uno o varios servidores de archivos, cada uno de los cuales ofrece un servicio de archivos distintos. Por lo general un sistema distribuidos de archivos tiene dos componentes razonablemente distintos: el verdadero servicio de archivos y el servicio de directorios. El primero se encarga de las operaciones en los archivos individuales, como la lectura escritura y adición, mientras que el segundo se encarga de crear y administrar directorios, añadir y eliminar archivos de los directorios, etc.
4. Servicio de Archivos Un archivo es una secuencia de bytes sin interpretación alguna. Esto quiere decir que el contenido y estructura de un archivos es interpretado por el software de aplicación mas no por el sistema operativo sobre el que se está trabajando. Un archivo se caracteriza por tener atributos, tales como: el propietario, el tamaño, la fecha de creación y el permiso de acceso. La utilidad del servicio de archivos consiste en proporcionar una adecuada administración de los atributos, definidos por el usuario, que estas poseen. Lo más común es encontrar algunos sistemas avanzados que permitan modificarlos después de sus creación, pero en algunos sistemas distribuidos las únicas operaciones que pueden realizarse sobre un archivo es CREATE y READ (Crear y Leer). Es decir, una vez creado el archivo no puede modificarse. A este tipo de archivos se les denomina archivos inmutables. Existen dos tipos de servicios de archivos distribuidos: modelo carga/descarga y modelo de acceso remoto.
5. Servicio de Archivos - Modelos Modelo Carga/Descarga: Consiste básicamente en dos operaciones: lectura y escritura. La primera operación consiste en la transferencia de un archivo completo desde el servidor hacia el cliente solicitante; la segunda operación consiste en el envío de un archivo del cliente al servidor, es decir, en sentido contrario. Mientras tanto los archivos pueden ser almacenados en memoria o en un disco local, según sea el caso. Modelo de Acceso Remoto: Este tipo de modelo consiste en que todas las operaciones (abrir y cerrar, leer y escribir, etc.) se realizan en el servidor mas no en los clientes. Estos dos modelos se diferencian en que en el primero se debe transferir el archivo completo del servidor al cliente y viceversa, lo que no es necesario en el modelo de acceso remoto. Debemos tener en cuenta que el solo hecho de compartir archivos puede traer dos problemas principales por resolver: el permiso de acceso y la gestión de los accesos simultáneos.
6. Servicio de Directorios Proporciona las operaciones para crear y eliminar directorios, nombrar o cambiar el nombre de archivo y mover esto de un directorio a otro. Todos los sistemas distribuidos permiten que los directorios contengan subdirectorios, para que los usuarios puedan agrupar los archivos relacionados entres si. De acuerdo con esto se dispone para la creación y eliminación de directorios, así como para introducir, eliminar y buscar archivos en ellos. Por lo general, cada subdirectorio contiene todos los archivos de un proyecto, como un programa o un documento de gran tamaño. Cuando se despliega el (sub)directorio solo se muestra los archivos relevantes, los archivos no relacionados están en otros (sub)directorios y no agrandan la lista. Los subdirectorios pueden contener sus propios subdirectorios y asi sucesivamente. Lo que conduce a un árbol de directorios, el cual se conoce como sistema jerárquico de archivo .
7.
8. Forma de Compartir Archivos Semántica de UNIX Establece que si una operación READ sigue después de una operación WRITE, READ regresa el valor recién escrito de manera análoga, cuando dos WRITE se realizan en serie y después se ejecuta un READ, el valor que se lee es de la última escritura. Este modelo es fácil de comprender y tiene una implantación directa.
9. Forma de Compartir Archivos Semántica de sesión Al usar este método puede ocurrir que dos o más clientes ocultan y modifican el mismo archivo en forma simultanea. Una solución consiste que al cerrar cada archivo su valor se envíe de regreso al servidor, de modo que el resultado final dependerá del que lo cierre más rápido. La dificultad con el uso de cachés y la semántica de sesión es que viola otro aspecto de la semántica de UNIX además del hecho de que no todos los READ regresen el valor de escritura más reciente. En UNIX, a cada archivo abierto se le asocia un apuntador que indica la posición actual en el archivo. Una instrucción READ toma los datos a partir de esa posición y WRITE deposita los datos ahí. Este apuntador es compartido por los procesos que abrieron el archivo. Ningún cambio es visible a otros procesos hasta que el archivo se cierra.
10. Forma de Compartir Archivos Archivos inmutables En este método las únicas operaciones que se permiten son CREATE y READ. Es posible crear un archivo por completo nuevo e introducirlo en el sistema de directorios, con el nombre de un archivo ya existente, el cual se vuelve inaccesible. Aunque es imposible modificar el archivo es posible reemplazarlo por un archivo nuevo. Aunque los archivos no se puedan modificar los directorios sí. Un problema mas molesto consiste en que hacer si un archivo se reemplaza mientras otro esta ocupado leyéndolo. Una solución consiste en que el lector utilice el archivo anterior, aunque este ya no exista en directorio alguno de esta forma se permite que un proceso con un archivo abierto continua utilizándolo, aún cuando este haya sido eliminado de todos los directorios. otra solución consiste en detectar la modificación del archivo y hacer que fallen los intentos posteriores por leerlos. No existe actualizaciones; es más fácil de compartir y replicar.
11. Forma de Compartir Archivos Transacciones Para tener acceso a un archivo o grupo de archivos, un proceso ejecuta en primer lugar cierto tipo de primitiva BEGINTRANSACTION para señalar que lo que sigue debe ejecutarse de manera indivisible. Después vienen las llamadas al sistema para leer o escribir en uno más archivos. Al terminar el trabajo, se ejecuta una primitiva en TRANSACTION, esto garantiza que todas las llamadas contenidas dentro de la transacción se llevaran a cabo en orden, sin interferencia de otras transacciones concurrentes. Si dos o más transacciones se realizan al mismo tiempo, el sistema garantiza que el resultado final es el mismo que si se ejecutasen en cierto orden secuencial. Todos los cambios tienen la propiedad del todo o nada.