Definición


Este File system es una versión simplificada de un típico sistema de archivos unix-like. Existen diferentes sistemas de archivos y cada uno tiene ventajas y desventajas.

Para pensar en un file system hay que comprender dos conceptos fundamentales:

  1. El primero es la estructura de datos de un sistema de archivos. En otras palabras como se guarda la información en el disco para organizar los datos y metadatos de los archivos. El sistema de archivos VSFS emplea un simple estructura, que parece un arreglo de bloques.
  2. El segundo aspecto es el método de acceso, como se machean las llamadas hechas por los procesos, como open(), read(), write(), etc. en la estructura del sistema de archivos

Organización general


Lo primero que se debe hacer es dividir al disco en bloques, los sistemas de archivos simples, como este suelen tener bloques de un solo tamaño. Los bloques tienen un tamaño de Bytes.

Datos

La versión del sistema de archivos debe ser la de una partición de bloques (de a ) de un tamaño de bloques. Si suponemos en un disco muy pequeño, de unos bloques, este podría verse así

A la hora de armar un sistema de archivos una de las cosas que es necesario almacenar son los datos, de hecho la mayor cantidad de espacio ocupado en un file system es por los datos de usuarios. Esta región se llama por ende data region.

Otra vez en nuestro pequeño disco es ocupado por ejemplo por bloques de datos de los

Inodos

Como se ha visto anteriormente el sistema de archivos debe mantener información sobre cada uno de estos archivos. Esta información es la metadata y es de vital importancia ya que mantiene información como que bloque da datos pertenece a un determinado archivo, el tamaño del archivo, etc. Para guardar esta información en los sistemas operativos unix-like, se almacena en una estructura llamada Inodo.

Los inodos también deben ser guardarse en el disco, para ello se los guarda en una tabla llamada inode table que simplemente es un array de inodos almacenados en el disco.

Cabe destacar que los inodos no son estructuras muy grandes, normalmente ocupan unos o bytes. Suponiendo que los inodos ocupan bytes, un bloque de puede guardar inodos por ende nuestro sistema de archivos tendrá como máximo inodos. Esto representa también la cantidad máxima de archivos que podrá contener nuestro sistema de archivos.

Alocación

El sistema de archivos tiene los datos (D) y los inodos (I) pero todavía nos falta. Una de las cosas que faltan es saber cuales inodos y cuales bloques están siendo utilizados o está libres. Esta estructura de alocación es fundamental en cualquier sistema de archivos. Existen muchos métodos para llevar este registro pero en este caso se utilizará una estructura muy popular llamada bitmap. Una para los datos data bitmap otra para los inodos inode bitmap.

Un bitmap es una estructura bastante sencilla en la que se mapea si un objeto está libre y si el objeto está ocupado. En este caso cada (i) sería el bitmap de inodos y (d) sería el bitmap de datos

Obviamente cada bitmap ocupa menos de , pero se utiliza un bloque por cada uno indefectiblemente.

Super bloque

Se podrá observar que queda un único bloque libre en todo el disco. Este bloque es llamada Super bloque (S). El superbloque contiene la información de todo el file system, incluyendo:

  • Cantidad inodos
  • Cantidad de bloques
  • Donde comienza la tabla de inodos
  • Donde comienzan los bitmaps