En el SO plan9 cualquier recurso del sistema es un fichero, la red, las tarjeta de sonido, el ratón , el teclado, etc... Es un nuevo concepto de SO y su manera de entender el sistema de ficheros es una de sus principales características.
El sistema de ficheros de Plan9 es un sistema distribuido. Se encuentra fuera del Kernel. De esta manera es mas flexible y un mismo kernel puede usar varios sistemas de ficheros distintos usando la red y formar asi un sistema de ficheros distribuidos.
Los usuarios de este SO no tienen que preocuparse de la ubicación de un fichero que esta usando, simplemente lo pide y lo usa. El sistema de ficheros distribuido se encarga de servírselo.
Si un usuario de Plan9 usa un fichero, se genera una petición al Kernel , después este se comunicara con el sistema de ficheros distribuido para pedirle ese fichero.
En la figura
se representan las distintas intercomunicaciones entre las aplicaciones que piden utilizar ficheros, los kernel, y los sistemas de ficheros.
Una aplicación hace una petición de un fichero al kernel y este tiene que encargarse de pasarle la petición al sistema de ficheros que le corresponda o a otro kernel hasta que accede al dispositivo de almacenamiento.
El funcionamiento es simple , no así la manera de implementarlo y los algoritmos para controlar la coherencia y sincronización de accesos a los ficheros.
El uso de la red en el sistema de ficheros distribuido es básico ya que así se pueden usar los ficheros de varias maquinas como si estuvieran en la nuestra propia.
En la figura
se expone un ejemplo de los pasos que llevaría una petición de lectura de una aplicación.
En Plan9 se pueden distinguir varios sistemas de ficheros dependiendo de si hablamos de servidores de ficheros o de sistemas normales.
Un Plan9 que actúa como servidor de ficheros tiene un kernel especifico que hace de sistema de ficheros distribuido con la funcionalidad incorporada de poder realizar backups sin problema.
Por otro lado y de manera mas común, tenemos el sistema de ficheros que usan el resto de Plan9. Este sistema de ficheros es Kfs. En el no existe ninguna funcionalidad que permita hacer backups o copias de seguridad como se pueden hacer en el caso de los servidores de ficheros. Incorporar esa funcionalidad con todo lo que ello conlleva es el trabajo de este proyecto.
Como ya se comento anteriormente, el kernel de Plan9 se comunica con el sistema de ficheros mediante un protocolo. Ese protocolo es 9P. Esta basado en RPCs.
El protocolo 9P se basa en que los clientes (típicamente el kernel) manda peticiones T-mensajes y son contestadas por el servidor (por ejemplo Kfs) mediante R-mensajes. Véase Figura
Para que el cliente y el servidor operen con ficheros a través de la red, cada fichero en el sistema de ficheros tiene un único identificador (QID) que no puede repetirse para ningún otro fichero. Ahora bien, cada fichero puede tener un identificador distinto para cada cliente que lo use (FID), aunque ese fichero sea el mismo. Es decir, que tenemos varios FID's por un solo QID.
Cuando un cliente pide un fichero al servidor, se han de poner de acuerdo antes de nada en el FID del fichero para ese cliente, y su correspondencia con el fichero en el servidor (QID).
El servidor mantiene una tabla de conexiones abiertas por los clientes para cada fichero. Esa tabla es de correspondencias entre QID y FID's.