Indice
1.
Introducción a los sistemas de archivos
distribuidos
2. Diseño de los sistemas de
archivos distribuidos
3. Implantación de un sistema de
archivos distribuidos
4. Tendencias en los sistemas
distribuidos
5.
Bibliografía
1. Introducción a los sistemas de
archivos
distribuidos
La Era de la Informática ha sufrido diversos cambios
desde que apareciera allá por los años 40’.
Era una época en la que a nadie se le hubiera ocurrido la
loca idea de tener una computadora en
casa, ya que éstas en su comienzo consistían en un
gran conjunto de tubos de vacío y consolas de gran
tamaño que solo podían ser ubicadas en enormes
salas con un acondicionamiento especial para su mejor
funcionamiento. Sin mencionar que su adquisición era
solamente apta para las grandes billeteras de la
época.
En esos tiempos tener una computadora en
casa era idea de nadie, pues no era necesario, ya que en aquellos
tiempos la revolución
tecnológica se encontraba aun dando sus primeros
pasos.
Hoy los tiempos han cambiado, y simplemente no se concibe la idea
de no tener una computadora en casa o de no tener un correo
electrónico en el cual recibir boletines de los
más variados tema de interés y
a través del cual comunicarse con amigos de todas partes
del mundo. Por supuesto, para llegar a nuestros tiempos muchas
cosas tuvieron que surgir. En este caso, de la Era de la Informática, ocurrieron dos causas
contemporáneas a las que se les atribuye este gran
cambio:
primero, el desarrollo de
poderosos y económicos microprocesadores
(eso en relación a la Ley de Grosch),
que permitieron tener el poder de un
computador
mainframe respetable, y; segundo, el desarrollo de
las ahora famosas Redes de Área Local
(LANs: Local Area Network) de alta velocidad que
permiten la interconexión de cientos de computadores con
las cuales se consigue transferir pequeñas cantidades de
información en pequeñas fracciones
de tiempo. Cada
una de las cuales ofreciendo sus mejores características y ventajas que
ayudarían a la revolución
de la que ahora somos testigos.
Como resultado de estas importantes invenciones, encontramos
sistemas
computacionales compuestos de una gran cantidad de computadores
y/o procesadores
conectados entre sí mediante una red de alta velocidad. A
los que llamaremos a partir de ahora: Sistemas
Distribuidos.
Es preciso mencionar que estos sistemas
distribuidos necesitan de software muy distinto al que
utilizan los sistemas centralizados, y en la actualidad, los
sistemas
operativos para estos sistemas aún se encuentran en su
etapa de aparición.
Existe un importante antecedente de las redes de computadores, el
ARPANET, que apareció en los Estados Unidos en
el año 1969. Creado por el Departamento de Defensa de los
Estados
Unidos, esta primitiva red permitía que los
proveedores e
investigadores de la defensa pudieran continuar
comunicándose después de un ataque nuclear. Es
decir, en lugar de tratar de fortalecer la red contra las armas nucleares,
los diseñadores de ARPANET decidieron hacerla resistente
distribuyendo los recursos de modo
totalmente descentralizado, de manera que la destrucción
de una parte cualquiera de la red, no detuviese el flujo global
de información. Esta red encontró
rápida y satisfactoria acogida entre los
científicos informáticos e ingenieros de la
industria y en
las universidades, y se convirtió en un enlace vital de
comunicación entre colaboradores remotos.
Era prácticamente desconocida para los
extraños.
En 1989, cuando el gobierno de los
Estados Unidos decidió dejar de subvencionar la ARPANET,
los usuarios que dependían de la red planificaron una
sucesora que se denominaría Internet.
Este hecho marca el inicio
de la idea de los sistemas distribuidos.
2. Diseño
de los sistemas de archivos distribuidos
Generalmente, un sistema de
archivos distribuidos consta de dos componentes muy distintos
entre sí: el servicio de
archivos y el servicio de
directorios.
La Interfaz del 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.
Modelo Carga/Descarga: Consiste básicamente en dos
operaciones:
lectura y
escritura.
Como se muestra en la
Figura 1.1, 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.
El modelo carga/descarga
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. Esto se
muestra
claramente en la Figura 1.2.
Figura 1.2. El modelo de acceso remoto
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.
- Permisos de Accesos:
Un sistema de
archivos distribuidos provee al usuario de una herramienta
flexible que permite compartir archivos extensos entre ellos.
Esta herramienta actualmente utilizada con mucho éxito
(pero con algunas deficiencias) no es más que una lista de
derechos de
acceso los cuales pueden ser asignados a un usuario en particular
para un archivo en particular. Estos derechos de acceso se
muestran en la siguiente tabla:
Derecho de Acceso | Descripción |
Ninguno | En el que el usuario no puede determinar la |
Conocimiento | El usuario conoce sobre la existencia del |
Ejecución | El usuario puede ejecutar y cargar el programa pero no copiarlo. |
Lectura | El usuario puede leer el archivo, también |
Adición | El usuario puede agregar datos |
Actualización | El usuario puede modificar, borrar y agregar |
Cambio de protección | El usuario puede cambiar los derechos de acceso |
Borrado | El usuario puede borrar el archivo de su |
Puede brindarse acceso a las siguientes
clases de usuario:
- Usuario específico: Usuarios individuales
quienes son designados por su ID de usuario. - Grupos de usuario: Conjunto de usuarios no definidos
individualmente. - Todos: Es decir, todos los usuarios que tengan acceso
al sistema. Los archivos son públicos. - Gestión de Accesos
Simultáneos:
El sistema operativo
o el sistema de gestión
de archivos permite al usuario (que previamente ha tenido acceso
a determinado archivo) que él mismo pueda bloquear el
archivo cuando vaya a utilizarlo , o en todo caso, bloquear los
registros
individuales durante la actualización. Si no se considera
ninguna de estas dos opciones, entonces se analizará
aspectos de exclusión mutua e interbloqueo.
La Interfaz del Servidor de Directorios
El propósito general del servidor de directorios es
poder crear y
eliminar directorios, nombrar o cambiar el nombre de archivos y
mover éstos de un directorio a otro.
El sistema distribuido es el encargado de definir el alfabeto y
la sintaxis para formar los nombres de los archivos y
directorios. Por ejemplo, Windows divide
los nombres de lo archivos en dos partes: nombre y
extensión (tipo de archivo), los cuales se denotan
separados por un punto: nombre_archivo.extensión;
así tenemos que libro.txt es
un archivo cuyo nombre es libro y es de
tipo texto. En
otros sistemas, como el UNIX, clasifican
a los archivos según sus atributos (en UNIX un archivo
ejecutable se pinta de otro color).
Todo sistema distribuido permite la existencia de subdirectorios
(directorios dentro de otro directorio), permitiéndose a
los usuarios clasificar sus archivos a sus gusto. Estos
subdirectorios, a su vez, pueden contener otros subdirectorios lo
que se conoce como sistema jerárquico de archivos.
Algunos sistemas distribuidos permiten crear apuntadores o
enlaces a un directorio determinado, construyendo, de esta
manera, no solamente árboles
sino también gráficas de directorios los cuales son
más consistentes.
Un árbol de directorios contenido en una
máquina
Esta diferencia entre árboles
y gráficas es de gran importancia en un
sistema distribuido y radica en la eliminación de enlaces
entre un directorio y otro. Es decir, en un árbol se puede
eliminar un enlace con un directorio si el directorio al cual se
apunta es vacío, mientras que en una gráfica solo
puede eliminarse enlaces mientras exista al menos otro
enlace.
Una gráfica de directorios en dos
máquinas
Semántica de los Archivos Distribuidos
Existen hasta cuatro métodos
para utilizar los archivos compartidos en un sistema
distribuido:
- Semántica de UNIX: En la que cada
operación en un archivo es visible a todos los procesos de
manera simultánea. Esto implica que cada
operación cumpla un estricto orden con respecto al
tiempo,
puesto que el archivo es actualizado inmediatamente
después de realizada cada operación. - Semántica de Sesión: En la que
ningún cambio es
visible a otros procesos
hasta que l archivo que está siendo utilizado se cierra.
Esto produce un desfasamiento en la actualización del
archivo, puesto que un archivo puede estar siendo utilizado por
dos o más clientes en
forma simultánea y se tendrá como resultado el
archivo cuyo cliente lo cierra después que todos los
demás. - Archivos inmutables: En la que no existen
actualizaciones, puesto que una vez creado el archivo no puede
modificarse. Así es más fácil compartir y
replicar archivos. - Transacciones: En la que todos los cambios tienen la
propiedad
del todo o nada. Es decir, cada operación que es llamada
al sistema no se detiene hasta que finaliza propiamente. De
esta manera, si una operación es requerida mientras
está siendo utilizada por otra, esta última no se
ejecutará hasta que finalice la ejecución de la
primera.
3. Implantación
de un sistema de archivos distribuidos
Uso de Archivos
Existen diferentes formas de utilizar los archivos, pero
también existen dos formas de medir el grado de
utilización de cada uso que se le puede dar a un archivo.
Estas formas son: mediciones estáticas y mediciones
dinámicas.
- Mediciones Estáticas: En este tipo de
mediciones se observa el sistema en un determinado momento,
esto quiere decir que se verifica su estado en un
instante de tiempo. Entre algunas de estas mediciones
estáticas podemos encontrar: la distribución de tamaños de los
archivos, la distribución de tipos de archivos y la
cantidad de espacio que ocupan los archivos de varios
tamaños y tipos. - Mediciones Dinámicas: Este tipo de mediciones
se encarga de registrar todas las operaciones en una
bitácora para un análisis posterior. De esta manera se
tiene información respecto a la frecuencia con que se
realizan ciertas operaciones.
Según Satyanarayanan (1981), las propiedades
más comunes de los sistemas de archivos son las
siguientes:
- La mayoría de los archivos son
pequeños (menos de 10 K). - La lectura es
más común que la escritura. - La lectura y escritura son secuenciales: es raro el
acceso aleatorio. - La mayoría de los archivos tienen una vida
corta. - Es poco usual compartir archivos.
- Los procesos promedio utilizan sólo unos
cuantos archivos. - Existen distintas clases de archivos con
propiedades diferentes.
Estructura del Sistema
La estructura de
un sistema es determinante para el servicio de archivos y
directorios, para eso se debe diferenciar entre quiénes
son los clientes y quiénes son los servidores.
En algunos sistemas el servidor solamente puede actuar como
servidor y el cliente solamente como cliente. Esto puede tener
sus ventajas y desventajas puesto si en algún momento el
servidor falla, entonces todo el sistema se paralizaría.
En otros sistemas, sin embargo, el servidor de archivos y el de
directorios son solamente programas del
usuario, de esta manera se puede configurar el sistema para que
ejecute o no el software de cliente o
servidor en la misma máquina, como se desee.
Pero se ha de considerar el aspecto estructural de los servidores de
archivos y directorios, en cuanto a que deben o no contener los
estados de los clientes. Es decir, existen dos tipos de pensamiento
con respecto a este tema: los servidores sin estado y los
servidores con estado.
- Servidores sin Estado: Consiste en que cuando un
cliente envía una solicitud a un servidor, éste
la lleva a cabo, envía la respuesta y elimina de sus
tablas internas toda la información correspondiente a
dicha solicitud. El servidor no guarda la información
relativa a los clientes entre las solicitudes.
Ventajas:
- Tolerancia de fallas
- No necesita llamadas OPEN/CLOSE
- No se desperdicia el espacio del servidor en
tablas - No existe límite para el número de
archivos abiertos - No hay problemas si un cliente falla
- Servidores con Estado: Conservan la
información de estado de los clientes entre las
solicitudes. Esto es lo que ocurre en los sistemas
centralizados.
Ventajas:
- Mensajes de solicitud más cortos
- Mejor desempeño
- Es posible la lectura
adelantada - Es más fácil la
idempotencia - Es posible la cerradura de archivos
Ocultamiento
En un sistema cliente – servidor, en el que cada uno cuenta
con su memoria principal
y un disco, pueden almacenarse los archivos o partes de ellos en
cuatro lugares diferentes: el disco del servidor, la memoria
principal del servidor, el disco del clientes o la memoria
principal del cliente. Esto se puede observarse en la Figura
1.5.
Cuatro lugares para guardar archivos o partes de
ellos
Cada lugar en donde se guarde los archivos presenta ventajas y
desventajas respecto a la velocidad de transferencia. Aun
así, se puede lograr un mejor desempeño ocultando (conservando) los
archivos en la memoria principal del servidor. Como la memoria
principal siempre es de menor capacidad que el disco, entonces
debe implementarse un algoritmo para
decidir qué archivos o partes de ellos permanecerán
en el caché del servidor.
Este algoritmo
deberá resolver dos problemas que se presentarán:
Uno de los problemas es el tamaño de la unidad que
administra el caché, ya que puede administrar archivos
completos o bloques del disco. Si se ocultan los archivos
completos, éstos se pueden almacenar en forma adyacente en
el disco (o al menos pedazos muy grandes), lo cual permite
transferencias a alta velocidad entre la memoria y el disco,
así como un buen desempeño en general. Sin embargo,
el ocultamiento de bloques de disco utiliza el caché y el
espacio en disco en forma más eficiente.
El segundo problema es que el algoritmo debe decidir qué
hacer si se utiliza toda la capacidad del caché y hay que
eliminar a alguien. En este caso podría utilizarse
cualquiera de los dos algoritmos de
ocultamiento, pero como las referencias al caché son poco
frecuentes comparadas con las referencias a memoria, por lo
general es factible una implantación exacta de LRU
mediante punteros (listas enlazadas).
Réplica
En general, los sistemas de archivos distribuidos proporcionan la
réplica de archivos como servicio a sus clientes. Es
decir, se dispone de varias copias de algunos archivos, donde
cada copia está en un servidor de archivos independiente.
Este servicio de réplica se brinda por diversa razones, a
continuación presentamos las principales
razones:
- Aumentar la confiabilidad al disponer de respaldos
independientes de cada archivo. Es decir, si un servidor
falla o se pierde permanentemente, no se pierden los
datos. - Permitir el acceso al archivo aunque falle un
servidor de archivos. Si un servidor falla esto no debe
ocasionar que el sistema se detenga. - Repartir la carga de trabajo entre varios
servidores. Con varios archivos duplicados en dos o
más servidores, se puede utilizar el que tenga menor
carga.
Existen tres formas de realizar la réplica:
réplica explícita, réplica retrasada y
réplica de archivos mediante un grupo.
- Réplica explícita: Consiste en que el
programador controle todo el proceso.
Cuando un proceso
crea un archivo, lo hace en un servidor específico.
Entonces se puede crear copias adicionales en otros
servidores. - Réplica retrasada: Consiste en crear un sola
copia de cada archivo en el servidor. Luego, el propio
servidor crea réplicas de este archivo en otros
servidores automáticamente. - Réplica de archivos mediante un grupo: En
este caso, todas las llamadas WRITE al sistema se transmiten
en forma simultánea a todos los servidores a la vez,
por lo que todas las copias adicionales se hacen al mismo
tiempo que el original.
4. Tendencias en los
sistemas distribuidos
Los cambios tecnológicos de los últimos
años pueden traer también cambios muy importantes
en los sistemas de archivos distribuidos. Además con el
rápido avance que se da en las redes de comunicaciones
y su incremento en el ancho de banda la creación de
paquetes que ofrecen la compartición de archivos es
común de encontrarse en el mercado. En la
industria, el
esquema más solicitado es aquel que permite acceder a los
grandes volúmenes de información de los grandes
servidores desde las computadores personales o convencionales y
desde otros servidores. Es por eso que la principal
solución que adoptada por las pequeñas empresas es
contar con Novell Netware
en un servidor 486 o superior y acceder a los archivos desde
máquinas similares.
Entre los sistemas de archivos distribuidos más populares
que existen en la actualidad, tenemos los que nos proporciona
Netware, tales como:
- Remote Filke Sharing (RFS en UNIX)
- Network File System (de Sun
Microsystems) - Andrew File System (AFS)
Veremos a continuación algunos aspectos en los
que podrían presentarse cambios en un futuro no muy
lejano, teniendo en cuenta que los cambios tecnológicos se
producen día a día y en desmesurado
avance.
Hardware reciente
Existen muchos dispositivos hardware que en los
últimos años están abaratando sus costos, tales
como las memorias. Esto
mejoraría circunstancialmente los actuales servidores de
archivos puesto que se podrá adquirir gran cantidad de
gigabytes de memoria, aunque todavía se presente el
problema de que la memoria sea volátil, es decir, que
cuando se apaga el sistema se borran los archivos.
Una nueva innovación en hardware son los discos
ópticos que ahora pueden ser utilizados más de una
vez. Aunque son un poco más caros que las cintas de
video siempre
han sido un aporte importante para los sistemas de archivos,
principalmente en el soporte de backups.
Otro desarrollo importante en hardware son las redes de fibra
óptica de alta velocidad que agilizarían la
transferencia de archivos y se podría prescindir de la
memoria caché. Esto también simplificaría en
mucho el software a utilizarse en los sistemas de archivos
distribuidos.
Existen muchas más innovaciones tecnológicas que
poco a poco harán más eficiente el manejo y
administración de los sistemas de archivos,
por lo que en el futuro se podría aun encontrar diversos
tipos de soluciones
específicas para un sistema determinado por sus propias
características y
requerimientos.
Escalabilidad
El concepto de
escalabilidad propone que cualquier computador
individual ha de ser capaz de trabajar independientemente como un
sistema de archivos distribuido, pero también debe poder
hacerlo conectado a muchas otras máquinas.
Un sistema de archivos debería funcionar tanto para una
docena de equipos como para varios millares. Igualmente no
debería ser determinante el tipo de red utilizada
(LAN o WAN) ni
las distancias entre los equipos.
Aunque este punto sería muy necesario, puede que las
soluciones
impuestas para unos cuantos equipos no sean aplicables para
varios otros. De igual manera, el tipo de red utilizada
condiciona el rendimiento del sistema, y podría ser que lo
que funcione para un tipo de red, para otro necesitaría un
diseño
diferente.
Redes de área amplia
La mayor parte del trabajo que se realiza actualmente en los
sistemas distribuidos se basa en los sistemas alojados en
redes LAN. La
tendencia en el futuro es que veremos conectados entres sí
muchos sistemas distribuidos LAN con el fin
de formar sistemas distribuidos transparentes a través de
todo el mundo. Pero para esto tendría que tomarse como
punto de importancia el hecho de que no todos los países
utilizan un mismo tipo caracteres para sus archivos, es decir, si
en latinoamérica utilizamos los códigos
ASCII, puede ser
que en otras partes del mundo no se utilice este mismo concepto, lo que
produciría una incompatibilidad de datos.
Por otro lado, también es importante el cambio que se
producirá en las aplicaciones, puesto que la
mayoría de experimentos que
actualmente se realizan en las universidades están basados
en sistemas parecidos a UNIX.
Un problema que se presentará aun mucho más tiempo
es que la conexión de fibra óptica
tardará muchos años en instalarse en todos los
rincones del planeta y también la existencia de una red de mayor ancho de
banda será difícil y costosa de implementar pues no
se cuenta, todavía, con una mayor aceptación del
potencial público usuario.
Usuarios móviles
A medida que la tecnología de las
comunicaciones
se digitaliza, se encuentra sujeta a las mismas mejoras
exponenciales que han hecho que una computadora portátil
de 2000 dólares actual tenga más capacidad que una
computadora IBM de 10 millones de dólares de hace veinte
años. Por esta razón las computadoras
portátiles presenta un mayor crecimiento en la tecnología
informática.
Pero este hecho presenta la inconveniencia de que estos usuarios
no estarán conectados todo el tiempo al sistema, es decir,
solo lo estarán algún tiempo y luego no
aparecerán. Esto es debido a que todavía no se
cuenta con una adecuada red instalada en diversos lugares para
que el usuario pueda conectar su laptop, notebook y su PC de
bolsillo a su respectivo sistema o al sistema al cual desea
conectarse.
Además, como todavía no se cuenta con un ancho de
banda mayor, la transferencia de archivos se hace aun mucho
más lenta. Se espera que en el futuro existan mejores
ventajas para que sobresalga este de desarrollo
tecnológico que los últimos ha demostrado tener una
verdadera tendencia a seguir creciendo.
Tolerancia de fallas
En la actualidad, la mayor parte de los sistemas de
cómputo no presentan tolerancia a
fallas. Es común escuchar en las agencias bancarias la
frase: "No hay sistema", por lo que tomamos este hecho como algo
absolutamente normal. Salvo algunos sistemas especializados como
los que se utilizan para el control de
tráfico aéreo, otros sistemas no presentan este
comportamiento
que debería ser el óptimo.
Para que los sistemas de archivos cumplan con este requisito,
deberá existir o implementarse una consistente
infraestructura de hardware lo cual permita a los sistemas ser
realmente confiables y seguros en cuanto
a tiempo de funcionamiento efectivo se refiere.
Sistemas Operativos Distribuidos – William
Stallings
Autor:
José Walter Fernández
Sánchez
Ing. de Sistemas
Perú