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.
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:
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.
5. Bibliografía
Sistemas Operativos Distribuidos - William Stallings
Trabajo enviado por:
José Walter Fernández Sánchez