9 de Marzo, 2005

Sistema de archivos distribuido: AFS

Hoy me apetece hablar de un sistema de archivos al que le tengo ganas: AFS. No es nada nuevo o revolucionario, ni siquiera sé si está de moda. Pero bueno, esta bitácora trata también estos temas: la tecnología de ayer, hoy y siempre (got UNIX? ;)).

Se trata de un sistema de ficheros distribuido que permite a distintas estaciones que cooperan, compartir ficheros en red.

Ya trabajé un poco con NFS, y los resultados fueron satisfactorios. Pero la clave aquí no es que se trate de un sistema de archivos en red, sino en que es distribuido, y en que ha sido diseñado para trabajar en redes de área extensa.

Antes de entrar en más detalle veamos un poco de historia.

AFS viene de Andrew File System, ya que el proyecto del ITC en la universidad de Carnegie-Mellon se tenía el nombre en clave 'Andrew' en honor a los fundadores de la universidad. Una vez que sistema demostró su viabilidad y se convirtió en un producto de Transarc Corp. (ahora parte de IBM), el nombre AFS prevaleció (dicen que porque la raíz se montaba en /afs, con lo que resultaba muy costoso cambiar el nombre y modificar todos los sistemas ya existentes ;)).

Para entender el funcionamiento de AFS primero hay que enfrentarse al concepto de célula: se trata de una colección de servidores que se presentan como un único sistema de ficheros.

Las claves de AFS son:

  • Caché: Los clientes ejecutan un proceso de caché que se encarga de procesar las peticiones, guardando copia en el disco local de los ficheros accedidos. Esto acelera en muchos casos el trabajo. Además los ficheros en AFS se guardan en estructuras llamadas volúmenes que, en caso de accesos frecuentes, se replicarán en los servidores de la misma célula, lo cual tiene en cuenta el caché para pedir los datos a la réplica más adecuada (viendo congestión, proximidad, disponibilidad, etc.). Además puede trabajar con la copia local en caso de caída de los servidores (en modo solo lectura).
  • Seguridad: El sistema emplea Kerberos y dispone de listas de control de acceso (ACL). Me ha llamado la atención que implemente autentificación mutua: tanto los servidores como los clientes se identifican. Además las autentificaciones son por célula, con lo que no tenemos que tener ni cuenta en el cliente, solo en la célula a la que accedemos :o.
  • Simplicidad de uso: Gracias a la agrupación en células resulta muy sencillo acceder a los ficheros remotos. No es necesario conocer cada uno de los servidores, solo identificando la célula es suficiente. La documentación se refiere a esto como 'independencia de la localización'. Además es fácil mover ficheros de una célula a otra gracias al caché (no es necesario hacer copia local).
  • Escalabilidad: Gracias al punto anterior es fácil escalar el servicio. Basta con añadir más servidores a la célula, sin que los clientes tengan que estar al tanto de ello.

El sistema de archivos tiene algunas particularidades que nos pueden llamar la atención al trabajar con él.

La primera es que probablemente nos tenemos que autentificar con Kerberos antes de acceder los ficheros, o sino solo podremos acceder a los que estén disponibles para invitados.

Los permisos tampoco funcionarán exáctamente igual a como estamos acostumbrados. Lo más destacable es que los permisos para grupo y 'otros' se ignoran, y se enfatiza en emplear las ACL de AFS (que se centran en directorios y no en ficheros).

Hay otras cuestiones menores, aunque quizás sea importante destacar que los cambios permanecen en el caché local hasta que se cierra el fichero o se sincroniza el sistema de archivos (no se basa en operaciones atómicas como NFS). La mayoría de las aplicaciones hacen esto, con lo que no tendremos que preocuparnos.

Y hasta aquí veo conveniente enrollarme. Solo comentar que esto no es lo último, como decía al principio. La verdad es que lo más es Coda, un fork de la idea de AFS que permite otras características casi mágicas como el trabajo desconectado (con posterior sincronización). Me lo apunto para el TODO ;).

OpenBSD trae una implementación Libre de AFS que se llama Arla, así que me está picando mucho el gusanillo para probar el tema esta Semana Santa (¡si tengo tiempo!). A ver si montamos el acceso a elxwifi de Pedro y tengo alguien con quien jugar :D.

Anotación por Juan J. Martínez.

Hay 2 comentarios

Gravatar

Mea culpa: el que te comenté a mediodia era GFS, desarollado por RedHat http://www.redhat.com/software/rha/gfs/, que viene a ser un sistema de ficheros para clusters.

por Felipe, en 2005-03-09 20:54:25

Gravatar

AFS es un sistema de ficheros que me picó el gusanillo, otro que también es "divertido" es UnionFS ( http://www.fsl.cs.sunysb.edu/project-unionfs.html ). Hay un artículo en Linux Journal ( http://www.linuxjournal.com/article/7714 ) que muestra su funcionamiento de una forma bastante clara.

El sistema de ficheros lo conocí porque Knoppix va a comenzar a usarlo para poder guardar configuraciones y poder modificar los ficheros (guardando las modificaciones en disco duro, claro). Puede ser bastante atractivo...

por SegFault, en 2005-03-10 16:55:00

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.