63

Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Sistemas de archivos

Gunnar Wolf

8 de octubre de 2013

Índice

1. Introducción 2

2. Concepto de archivo 42.1. Operaciones con archivos . . . . . . . . . . . . . . . . . . . . . . 42.2. Tablas de archivos abiertos . . . . . . . . . . . . . . . . . . . . . 52.3. Acceso concurrente: Bloqueo de archivos . . . . . . . . . . . . . . 62.4. Tipos de archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.5. Estructura de los archivos y métodos de acceso . . . . . . . . . . 102.6. Transferencias orientadas a bloques . . . . . . . . . . . . . . . . . 12

3. Organización de archivos 133.1. Evolución del concepto de directorio . . . . . . . . . . . . . . . . 133.2. Operaciones con directorios . . . . . . . . . . . . . . . . . . . . . 183.3. Montaje de directorios . . . . . . . . . . . . . . . . . . . . . . . . 203.4. Sistemas de archivos remotos . . . . . . . . . . . . . . . . . . . . 22

4. Plasmando la estructura en el dispositivo 274.1. Diferentes sistemas de archivos . . . . . . . . . . . . . . . . . . . 284.2. El volumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.3. El directorio y los i-nodos . . . . . . . . . . . . . . . . . . . . . . 30

5. Esquemas de asignación de espacio 345.1. Asignación contigua . . . . . . . . . . . . . . . . . . . . . . . . . 345.2. Asignación ligada . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.3. Asignación indexada . . . . . . . . . . . . . . . . . . . . . . . . . 365.4. Las tablas en FAT . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6. Fallos y recuperación 396.1. Datos y metadatos . . . . . . . . . . . . . . . . . . . . . . . . . . 416.2. Veri�cación de la integridad . . . . . . . . . . . . . . . . . . . . . 416.3. Actualizaciones suaves (soft updates) . . . . . . . . . . . . . . . . 426.4. Sistemas de archivo con bitácora (journaling �le systems) . . . . 436.5. Sistemas de archivos estructurados en bitácora (log-structured �le

systems) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1

Page 2: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

7. El medio físico 457.1. Discos magnéticos rotativos . . . . . . . . . . . . . . . . . . . . . 457.2. Almacenamiento en estado sólido . . . . . . . . . . . . . . . . . . 52

8. Manejo avanzado de volúmenes 568.1. RAID 0: División en franjas . . . . . . . . . . . . . . . . . . . . . 568.2. RAID 1: Espejo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578.3. Los niveles 2, 3 y 4 de RAID . . . . . . . . . . . . . . . . . . . . 588.4. RAID 5: Paridad dividida por bloques . . . . . . . . . . . . . . . 588.5. RAID 6: Paridad por redundancia P+Q . . . . . . . . . . . . . . 598.6. Niveles combinados de RAID . . . . . . . . . . . . . . . . . . . . 608.7. Más allá de RAID . . . . . . . . . . . . . . . . . . . . . . . . . . 61

9. Otros recursos 62

1. Introducción

De los roles que cumple el sistema operativo, probablemente el que másconsciente tengan en general sus usuarios es el de la gestión del espacio de al-macenamiento, esto es, el sistema de archivos. Al día de hoy, todos los usuariosde equipo de cómputo dan por sentado y comprenden a grandes rasgos la organi-zación del espacio de almacenamiento en un directorio jerárquico, con unidadesde almacenamiento llamadas archivos, de diferentes tipos según su función. Enla primer parte de esta unidad revisaremos algo más a profundidad a este mod-elo, para posteriormente ver los detalles de la gestión del espacio físico dondeéstos están alojados.

La abstracción que hoy conocemos como sistemas de archivos es una de lasque más tiempo han vivido y se han mantenido a lo largo de la historia de lacomputación, sobreviviendo a lo largo de prácticamente todas las generacionesde sistemas operativos. Sin embargo, para poder analizar cómo es que el sis-tema operativo representa la información en el dispositivo físico, comenzaremosdiscutiendo cómo es que esta información es comprendida por los niveles másaltos � Por los programas en espacio de usuario.

La información cruda tiene que pasar una serie de transformaciones. Yendode niveles superiores a niveles más bajos, un programa estructura sus datos enarchivos, siguiendo el formato que resulte mas pertinente al tipo de informacióna representar. Un conjunto de archivos hoy en día es típicamente representa-do en una estructura de directorios, y aunque existen otros mecanismos parasu organización, estos no están tan ampliamente difundidos. Y cuando un sis-tema opera con más de un dispositivo físico, encontraremos principalmente dosmecanismos para integrar a dichos dispositivos en un sistema de archivos virtu-al, brindnado al usuario una interfaz uniforme. Por último, los archivos son unaestructura meramente lógica � Deben ser convertidos para ser representados

2

Page 3: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 1: Capas de abstracción para implementar los sistemas de archivos

en un dispositivo orientado a bloques como los diversos tipos de unidades queconocemos �aunque esta nomenclatura es a veces incorrecta� como discos.

Del diagrama presentado en la �gura 1, toca al objeto de nuestro estudio�el sistema operativo� recibir del espacio de usuario las llamadas al sistema quepresentan la interfaz de archivos y directorios, integrar el sistema de archivosvirtual, y traducir la información resultante a un sistema de archivos.

Cabe mencionar que varias de las capas aquí presentadas podrían perfec-tamente ser subdivididas, analizadas por separado, e incluso tratarse de formacompletamente modular � De hecho, este es precisamente el modo en que seimplementan de forma transparente características hoy en día tan comunes co-mo sistemas de archivos en red, o compresión y cifrado de la información. Unareferencia más detallada acerca de ventajas, desventajas, técnicas y mecanis-mos de la división y comunicación entre capas puede ubicarse en el artículo deHeidemann y Popek (1994).

En esta unidad tocaremos también algunos conceptos relacionados con lossubsistemas de entrada y salida, aunque estos pertenecen mayormente a otrasunidades, al igual que los controladores.

3

Page 4: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

2. Concepto de archivo

En primer término, un archivo es un tipo de datos abstracto � Esto es,en programación moderna podríamos verlo como una estructura que exclusi-vamente permite que la manipulemos por medio de una interfaz orientada aobjetos: Los procesos en el sistema sólo pueden tener acceso a los archivos pormedio de la interfaz ofrecida por el sistema operativo.1 Abordaremos los detallesde esta interfaz en la siguiente sección.

Para el usuario, los archivos son la unidad lógica mínima al hablar de alma-cenamiento: Todo el almacenamiento persistente (que sobrevive en el tiempo,sea a reinicios del sistema, a pérdida de corriente o a otras circunstancias enel transcurso normal de ejecución) en el sistema al que tiene acceso, se efectúadentro de archivos; el espacio libre en los diferentes dispositivos no tiene mayorexistencia fuera de saber que está potencialmente disponible.

Dentro de cada volúmen (cada medio de almacenamiento), los archivosdisponibles conforman a un directorio, y son típicamente identi�cados por unnombre o una ruta. Hablaremos más adelante acerca de las diferentes construc-ciones semánticas que pueden conformar a los directorios.

2.1. Operaciones con archivos

Cada sistema operativo de�nirá la interfaz de archivos acorde con su semán-tica, pero en líneas generales, las operaciones que siempre estarán disponiblescon un archivo son:

Crear Asigna espacio en el dispositivo y en su directorio para alojar a un nuevoarchivo.

Borrar Elimina al archivo del directorio y, de ser procedente, libera el espaciodel dispositivo

Abrir Solicita al sistema operativo veri�car si tenemos el acceso para el modode acceso al archivo que indiquemos y si el medio lo soporta (por ejemplo,a pesar de contar con los permisos, no podemos abrir para escritura unarchivo en un disco de sólo lectura), y asigna un descriptor de archivosque identi�ca la relación entre el proceso y el archivo en cuestión. Abrirun archivo es necesario para todas las siguientes operaciones.

Cerrar Indica al sistema que el proceso en cuestión terminó de trabajar con elarchivo; el sistema entonces debe vaciar los bu�ers a disco y eliminar laentrada que representa a esta combinación archivo-proceso de las tablasactivas, invalidando al descriptor de archivo. Si un proceso cierra un archi-vo y quiere volver a emplearlo, tendrá que abrirlo explícitamente.

1Veremos más adelante que esto no es necesariamente cierto, sin embargo, el uso de losdispositivos en crudo es tan bajo que podemos ignorarlos para propósitos de esta discusión

4

Page 5: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Leer Cuando indicamos al sistema que queremos leer de un archivo hacia de-terminado bu�er, éste copia el siguiente pedazo de información a éste. Estepedazo podría ser una línea o un bloque de longitud de�nida, dependiendodel modo en que se solicite la lectura. El sistema mantiene un apuntadora la última posición leída, para poder continuar con la lectura.

Escribir Teniendo un archivo ya existente, guarda información en él. Puede serque escriba desde su primer posición (truncando al archivo, esto es, bor-rando toda la información que pudiera ya tener), o agregando al archivo,esto es, iniciando con el apuntador de escritura al �nal del mismo.

Reposicionar (seek) Tanto la lectura como la escritura se hacen siguiendo aun apuntador, que indica cuál fue la última posición del archivo a la queaccesó el proceso actual. Al reposicionar el apuntador, podemos brincar aotro punto del archivo.

Hay varias otras operaciones comunes que pueden implementarse con lla-madas compuestas a estas operaciones (por ejemplo, copiar un archivo puedeimplementarse como crear un archivo nuevo en modo de escritura, abrir en mo-do de lectura al fuente, e ir leyendo de éste y escribiendo al nuevo hasta llegaral �n de archivo).

Las operaciones que presentamos recién no son todas las operaciones exis-tentes; dependiendo del sistema operativo, habrá algunas adicionales; estas laspresentamos como la base general sobre la cual trabajaremos.

Vale la pena mencionar que esta semántica para el manejo de archivos pre-senta a cada archivo como si fuera una unidad de cinta, permitiéndonos avanzaro retroceder la cabeza lectora/escritora dentro de ella.

2.2. Tablas de archivos abiertos

Tanto el sistema operativo como cada uno de los procesos mantienen normal-mente tablas de archivos abiertos. Estas mantienen información acerca de todoslos archivos actualmente abiertos, presentándolos hacia el proceso por medio deun descriptor de archivo; una vez que un archivo fue abierto, las operaciones quese realizan dentro de éste no son empleando su nombre, sino que su descriptorde archivos.

En un sistema operativo multitareas, más de un proceso podría abrir elmismo archivo a la vez; lo que cada uno de ellos pueda hacer, y cómo esto impactea lo que vean los demás procesos, depende de la semántica que implemente elsistema.

Ahora, ¾por qué mencionamos que estas tablas son mantenidas tanto por elsistema operativo como por cada uno de los procesos? ¾No nos lleva esto a unasituación en que mantenemos información redundante?

La respuesta es que la información que cada uno debe manejar es distinta.El sistema operativo necesita:

5

Page 6: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Conteo de usuarios del archivo Cuando se solicita, por ejemplo, desmontaruna partición (por ejemplo, para expulsar una unidad removible) o elim-inar un archivo, el sistema debe poder determinar cuándo es momentode declarar la solicitud como efectuada. Si algún proceso tiene abierto aun archivo, y particularmente si tiene cambios pendientes de guardar, elsistema no debe permitir que el archivo desaparezca de su visión.

Modos de acceso Aunque un usuario tenga permisos de acceso a determinadorecurso, el sistema puede determinar negarlo si llevaría a una inconsisten-cia. Por ejemplo, si dos procesos abren un mismo archivo para escritura,es probable que los cambios que realice uno sobreescriban a los que hagael otro.

Ubicación en disco Para evitar que cada proceso tenga que consultar lastablas en disco para encontrar al archivo, o sus fragmentos.

Información de bloqueo En caso de que los modos de acceso del archivo re-quieran protección mutua, puede implementarse por medio de un bloqueo.

Por otro lado, el proceso necesita:

Descriptor de archivo Relación entre el nombre del archivo abierto y el iden-ti�cador numérico que maneja internamente el proceso. Un archivo abiertopor varios procesos tendrá descriptores de archivo distintos en cada unode ellos. El descriptor de archivo es un número entero.

Permisos Los modos válidos de acceso para un archivo. Esto no necesariamentees igual a los permisos que tiene el archivo en cuestión en disco, sino queel subconjunto de dichos permisos bajo los cuales está operando para esteproceso en particular � Si un archivo fue abierto en modo de sólo lectura,por ejemplo, este campo sólo permitirá la lectura.

2.3. Acceso concurrente: Bloqueo de archivos

Dado que los archivos pueden emplearse como mecanismo de comunicaciónentre procesos que no guarden relación entre sí, incluso a lo largo del tiempo,y para emplear un archivo basta indicar su nombre o ruta, los sistemas oper-ativos multitarea implementan mecanismos de bloqueo para evitar que variosprocesos intentando emplear de forma concurrente a un archivo se corrompanmutuamente.

Algunos sistemas operativos permiten establecer bloqueos sobre determi-nadas regiones de los archivos, aunque la semántica más común es operar sobreel archivo como una sola unidad.

En general, la nomenclatura que se sigue para los bloqueos es:

Compartido (Shared lock) Podría verse como equivalente a un bloqueo (ocandado) para realizar lectura � Varios procesos pueden adquirir al mismotiempo un bloqueo de lectura, e indica que todos los que posean dichocandado tienen la expectativa de que el archivo no sufrirá modi�caciones.

6

Page 7: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Exclusivo (Exclusive lock) Un bloqueo o candado exclusivo puede ser adquiridopor un sólo proceso, e indica que realizará operaciones que modi�quen alarchivo (o, si la semántica del sistema operativo permite expresarlo, a laporción del archivo que indica).

Respecto al mecanismo de bloqueo, hay también dos tipos, dependiendo dequé tan explícito tiene que ser su manejo:

Mandatorio u obligatorio (Mandatory locking) Una vez que un procesoadquiere un candado obligatorio, el sistema operativo se encargará deimponer las restricciones corresponidentes de acceso a todos los demásprocesos, independientemente de si éstos fueron programados para con-siderar la existencia de dicho bloqueo o no.

Consultivo o asesor (Advisory locking) Este tipo de bloqueos es manejado ex-clusivamente entre los procesos involucrados, y depende del programadorde cada uno de los programas en cuestión el solicitar y respetar dichobloqueo.

Haciendo un paralelo con los mecanismos presentados en el capítulo ?? (Ad-ministración de procesos), los mecanismos que emplean mutexes, semáforos ovariables de condición serían consultivos, y únicamente los que emplean moni-tores (en que la única manera de llegar a la información es a través del mecanismoque la protege) serían mandatorios.

De esta matriz de 2 × 2 tipos de bloqueo, no todos los sistemas operativosimplementan las cuatro posibilidaddes. Como regla general, en los sistemas Win-dows se maneja un esquema de bloqueo obligatorio, y en sistemas Unix es debloqueo consultivo.2

Cabe mencionar que el manejo de bloqueos con archivos requiere del mismocuidado que el de bloqueo por recursos que el que vimos en administraciónde procesos: Dos procesos intentando adquirir un candado exclusivo sobre dosarchivos pueden caer en un bloqueo mutuo tal como ocurre con cualquier otrorecurso externo.

2.4. Tipos de archivo

Si los archivos son, como dijimos, la unidad lógica mínima con la que sepuede guardar información en almacenamiento secundario, naturalmente sigueque existen archivos de diferentes tipos � Un archivo puede ser un documentode texto, un binario ejecutable, un archivo de audio o video, y un larguísimoetcetera, e intentar emplear a un archivo como uno de un tipo distinto puede

2Esto explica por qué en Windows es tan común que el sistema mismo nos rechace hacerdeterminada operación porque el archivo está abierto por otro programa (bloqueo mandatoriocompartido), mientras que en Unix esta responsabilidad recae en cada uno de los programasde aplicación

7

Page 8: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

resultar desde una frustración al usuario porque el programa no responde comoéste quiere, hasta en pérdidas económicas.3

Hay tres estrategias principales para que el sistema operativo reconozca altipo de un archivo:

Extensión En los sistemas CP/M de los 1970, el nombre de cada archivo sedividía en dos porciones, empleando como separador al punto: El nombredel archivo y su extensión. El sistema mantenía una lista de extensionesconocidas, para las cuales sabría cómo actuar, y este diseño se extenderíaa las aplicaciones, que sólo abrirían a aquellos archivos cuyas extensionessupieran manejar.

Esta estrategia fue heredada por VMS y MS-DOS, de donde la adoptóWindows; ya en el contexto de un entorno grá�co, Windows agrega, másallá de las extensiones directamente ejecutables, la relación de extensionescon los programas capaces de trabajar con ellas, permitiendo invocar a unprograma con sólo dar �doble click� en un documento.

Como nota, este esquema de asociación de tipo de archivo permite ocul-tar las extensiones toda vez que ya no requieren ser del conocimiento delusuario, sino que son gestionadas por el sistema operativo, abre una víade ataque automatizado que se popularizó en su momento: El envío decorreos con extensiones engañosas duplicadas � Esto es, el programa ma-ligno (un programa troyano) se envía a todos los contactos del usuarioinfectado, presentándose por ejemplo como una imágen, con el nombreinocente.png.exe. Por el esquema de ocultamiento mencionado, éstese presenta al usuario como inocente.png, pero al abrirlo, el sistemaoperativo lo reconoce como un ejecutable, y lo ejecuta en vez de abrirloen un visor de imágenes.

Números mágicos La alternativa que emplean los sistemas Unix es, comosiempre, simple y elegante, aunque indudablemente presenta eventualeslagunas: El sistema mantiene una lista compilada de las huellas digitalesde los principales formatos que debe manejar,4 para reconocer el contenidode un archivo basado en sus primeros bytes.

Casi todos los formatos de archivo incluyen lo necesario para que se llevea cabo este reconocimiento, y cuando no es posible hacerlo, se intentapor medio de ciertas reglas heurísticas. Por ejemplo, todos los archivosde imágen en formato de intercambio grá�co (GIF) inician con la cadenaGIF87a o GIF89a, dependiendo de la versión; los archivos del lenguajede descripción de páginas PostScript inician con la cadena%!, el Formato

3Por ejemplo, imprimir un archivo binario resulta en una gran cantidad de hojas inútiles,particularmente tomando en cuenta que hay caracteres de control como el ASCII 12 (avancede forma, form feed), que llevan a las impresoras que operan en modo texto a iniciar unanueva página; llevar a un usuario a correr un archivo ejecutable disfrazado de un documentoinocuo, como veremos a continuación, fue un importante vector de infección de muchos virus.

4Una de las ventajas de este esquema es que cada administrador de sistema puede ampliarla lista con las huellas digitales que requiera localmente

8

Page 9: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

de Documentos Portátiles (PDF) con%PDF, etcétera. Un documento enformatos de�nidos alrededor de XML inicia con <!DOCTYPE. Algunos deestos formatos no están anclados al inicio, sino que en un punto especí�codel primer bloque.

Un caso especial de números mágicos es el llamado hashbang (#!). Es-to indica a un sistema Unix que el archivo en cuestión (típicamenteun archivo de texto, incluyendo código fuente en algún lenguaje descript) debe tratarse como un ejecutable, y empleando como intérpreteal comando indicado inmediatamente después del hashbang. Es por estoque podemos ejecutar directamente, por ejemplo, los archivos que ini-cian con #!/usr/bin/bash: El sistema operativo invoca al programa/usr/bin/bash, y le especi�ca como argumento al archivo en cuestión.

Metadatos externos Los sistemas de archivos empleado por las Apple Mac-intosh desde 1984 separan en dos divisiones (forks) la información de unarchivo: Los datos que propiamente constituyen al archivo en cuestiónson la división de datos (data fork), y la información acerca del archivose guardan en una estructura independiente llamada división de recursos(resource fork).

Esta idea resultó fundamental para varias de las características amigablesal usuario que presentó Macintosh desde su introducción � Particular-mente, para presentar un entorno grá�co que respondiera ágilmente, sintener que buscar los datos base de una aplicación dentro de un archivode mucho mayor tamaño. La división de recursos cabe en pocos sectoresde disco, y si tomamos en cuenta que las primeras Macintosh funcionabanúnicamente con discos �exibles, el tiempo invertido en leer una lista deiconos podría ser demasiada.

La división de recursos puede contener todo tipo de información; los pro-gramas ejecutables son los que le dan un mayor uso, dado que incluyendesde los aspectos grá�cos (icono a mostrar para el archivo, ubicación de laventana a ser abierta, etc.) hasta aspectos funcionales, como la traducciónde sus cadenas al lenguaje particular del sistema en que está instalado.Esta división permite una gran �exibilidad, dado que no es necesario teneracceso al fuente del programa para crear traducciones y temas.

En el tema particular que en esta sección nos concierne, la división derecursos incluye un campo creador, que indica qué programa fue el quecreó al archivo, mismo que será llamado en caso de que el usuario invoquedirectamente al archivo.

Las versiones actuales de MacOS ya no emplean esta técnica, sino que unallamada appDirectory, para propósitos de esta discusión, la técnica basees la misma.

9

Page 10: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

2.5. Estructura de los archivos y métodos de acceso

La razón principal de la existencia del sistema de archivos son los archivos.Un archivo almacena información de algún tipo, estructurado o no estructurado.

La mayor parte de los sistemas operativos maneja únicamente archivos sinestructura � Cada aplicación es responsable de preparar la información deforma congruente, y la responsabilidad del sistema operativo es únicamente en-tregarlo como un conjunto de bytes. Ha habido sistemas de archivos históricos,como IBM CICS (1968), IBM MVS (1974) o DEC VMS (1977), que adminis-traban ciertos tipos de datos en un formato básico de base de datos.

El que el sistema operativo no imponga estructura a un archivo no signi�ca,claro está, que la aplicación que lo genera no lo haga. La razón por la que lossistemas creados en los últimos 30 años no han implementado este esquema debase de datos es que le resta �exibilidad al sistema: El que una aplicación tuvieraque ceñirse a los tipos de datos y alineación de campos del sistema operativoimpedía su adecuación, y el que la funcionalidad de un archivo tipo base dedatos dependiera de la versión del sistema operativo creaba un acoplamientodemasiado rígido entre el sistema operativo y las aplicaciones: Hoy en día esmucho más común ver que los programas que requieren gestores de base de datosinteractúen con uno, implementado independientemente en espacio de usuario, oincluso que liguen con un gestor implementado como biblioteca, como es el casode SQLite (que es empleado por herramientas de adquisición de datos tan debajo nivel como systemtap, y por herramientas tan de escritorio como el gestorde fotografías shotwell o el navegador Firefox ).

Podemos ver aún un remanente de los archivos estructurados en los sistemasderivados de MS-DOS: En estos sistemas, un archivo puede ser de texto o binario.Un archivo de texto está compuesto por una serie de caracteres que formanlíneas, y la separación entre una línea y otra constituye de un retorno de carro(CR, caracter ASCII 13) seguido de un salto de línea (LF, caracter ASCII 10).5

El acceso a los archivos puede realizarse de diferentes maneras:

Acceso secuencial Mantiene la semántica por medio de la cual pudiéramosleer de nuestros archivos fuera la equivalente a unidad de cinta que men-cionamos en la sección 2.1 (Operaciones con archivos): El mecanismo prin-cipal para leer o escribir es ir avanzando consecutivamente por los bloquesque conforman al archivo hasta llegar a su �nal.

Típicamente emplearemos este mecanismo de lectura para leer a memoriacódigo (programas o bibliotecas) o documentos, sea enteros o fraccionesde los mismos. Para un contenido estructurado, como una base de datos,resultaría absolutamente ine�ciente, dado que no conocemos el punto de

5Esta lógica es herencia de las máquinas de escribir manuales, en que el salto de línea

(avanzar el rodillo a la línea siguiente) era una operación distinta a la del retorno de carro

(devolver la cabeza de escritura al inicio de la línea). En la época de los teletipos, como medidapara evitar que se perdieran caracteres mientras la cabeza volvía hasta la izquierda, se decidióseparar el inicio de nueva línea en los dos pasos que tienen las máquinas de escribir, parainducir una demora que evitara la pérdida de información.

10

Page 11: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

inicio o �nalización de cada uno de los registros, y probablemente ten-dríamos que hacer barridos secuenciales del archivo completo para cadauna de las búsquedas.

Figura 2: Archivo de acceso secuencial

Acceso aleatorio El empleo de gestores como SQLite u otros muchos motoresde base de datos más robustos no nos exime de pensar en nuestro archivocomo una tabla estructurada. Si la única semántica por medio de la cualpudiéramos leer de nuestros archivos fuera la equivalente a una unidad decinta, implementar el acceso a un punto determinado del archivo podríaresultar demasiado gravoso.

Afortunadamente, el que el sistema operativo no imponga registros delongitud �ja no impide que el programa gestor lo haga. Si en el archivo alcual apunta el descriptor de archivos FD tenemos 2000 registros de 75 bytescada uno y necesitamos recuperar el registro número 65 hacia el bu�erregistro, reposicionamos el apuntador de lectura al byte 65 × 75 =4875 (seek(FD, 4875)) y leemos los siguientes 75 bytes en registro(read(FD, *registro, 75)).

Figura 3: Archivo de acceso aleatorio

Acceso relativo a índice En los últimos años se han popularizado los gestoresde base de datos no estructurados u orientados a texto, llamados genéri-camente NoSQL. Estos gestores pueden guardar registros de tamaño vari-able en disco, por lo que no podríamos encontrar la ubicación correcta pormedio de los mecanismos de acceso aleatorio.

11

Page 12: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Para implementar este acceso, se divide al conjunto de datos en dos sec-ciones (incluso, posiblemente, en dos archivos independientes): La primersección es una lista corta de identi�cadores, cada uno con el punto de inicioy término de los datos a los que apunta. Para leer un registro, se empleaacceso aleatorio sobre el índice, y el apuntador se avanza a la ubicaciónespecí�ca que se solicita.

En el transcurso de un uso intensivo de esta estructura, dado que la porciónde índice es muy frecuentemente consultada y relativamente muy pequeña,muy probablemente se mantenga completa en memoria, y el acceso a cadauno de los registros puede resolverse en tiempo muy bajo.

La principal desventaja de este modelo de indexación sobre registros delongitud variable es que sólo resulta e�ciente para contenido mayormentede lectura: Cada vez que se produce una escritura y cambia la longitudde los datos almacenados, se va generando fragmentación en el archivo, ypara resolverla probablemente se hace necesario suspender un tiempo laejecución de todos los procesos que estén empleando al archivo en cuestión(e invalidar, claro, todas las copias en caché de los índices). Ahora bien,mientras se mantenga como mayormente de lectura, este formato tendrála ventaja de no desperdiciar espacio en los campos nulos o de valor irrel-evante para algunos de los registros.

Además de esto, la escritura en ambas partes de la base de datos debemantenerse con garantías de atomicidad � Si se pierde la sincronía entreíndice y datos, nos enfrentamos a una muy probable corrupción de datos.

Figura 4: Acceso relativo a índice: Un índice apuntando al punto justo de unarchivo sin estructura

2.6. Transferencias orientadas a bloques

Un sistema de archivos es la representación que se da a un conjunto dearchivos y directorios sobre un dispositivo orientado a bloques; un dispositivo

12

Page 13: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

orientado a bloques es uno que, para cualquier transferencia que solicitemosdesde o hacia él, nos responderá con un bloque de tamaño prede�nido.

Esto es, si bien el sistema operativo nos presenta una abstracción por mediode la cual la lectura (read()) puede ser de un tamaño arbitrario, todas lastransferencias de datos desde cualquiera de los discos serán de un múltiplo deltamaño de bloques, de�nido por el hardware (típicamente 512 bytes).

Cuando leemos, como en el ejemplo anterior, sólamente un registro de 75bytes, el sistema operativo lee el bloque completo y probablemente lo mantieneen un caché en la memoria principal; si en vez de una lectura, la operación queefectuamos fue una de escritura (write()), y el sector que vamos a modi�carno ha sido leído aún a memoria (o fue leído hace mucho, y puede haber sidoexpirado del caché), el sistema tendrá que leerlo nuevamente, modi�carlo enmemoria, y volver a guardarlo a disco.

3. Organización de archivos

Hasta ahora, nos hemos enfocado en qué es y cómo se maneja un archivo.Sin embargo, no hablaríamos de sistemas de archivos si no tuviéramos una grancantidad de archivos. Es común que en un sólo medio de almacenamiento de unequipo de uso doméstico tengamos a decenas de miles de archivos, y en equiposdedicados, no está fuera de lugar tener cientos o miles de veces tanto. Por tanto,tenemos que ver también cómo se organiza una gran cantidad de archivos.

3.1. Evolución del concepto de directorio

El concepto dominante en almacenaimiento hoy en día es el directoriojerárquico. Demos un breve repaso acerca de su historia.

3.1.1. Convenciones de nomenclatura

Cada sistema de archivos puede determinar cuántos y qué caracteres sonválidos para designar a uno de sus elementos, y cuáles son separadores válidos.El caracter que se emplea para separar los elementos de un directorio no esun estándar a través de todos los sistemas operativos � Los más comunesque encontraremos hoy en día son la diagonal (/), empleada en sistemas tipoUnix y derivados (incluyendo MacOS X y Android), y la diagonal invertida (\),empleada en CP/M y derivados, incluyendo MS-DOS y Windows.

Diversos sistemas han manejado otros caracteres (por ejemplo, el MacOShistórico empleaba los dos puntos, :), y aunque muchas veces los manteníanocultos del usuario a través de una interfaz grá�ca rica, los programadores siem-pre tuvieron que poder especi�carlos.

A lo largo del presente texto manejaremos la diagonal (/) como separadorde directorios.

13

Page 14: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

3.1.2. Sistema de archivos plano

Los primeros sistemas de archivos limitaban el concepto de directorio a unarepresentación plana de los archivos que lo conformaban, sin ningún concepto dejerarquía de directorios como el que hoy nos es natural. Esto se debía, en primertérmino, a lo limitado del espacio de almacenamiento de las primeras computa-doras en implementar esta metáfora (los usuarios no dejaban sus archivos a largoplazo en el disco, sino que los tenían ahí meramente cuando les eran útiles), y ensegundo término, a que no se había aún desarrollado un concepto de separación,permisos y privilegios como el que poco después aparecería.

En las computadoras personales los sistemas de archivos eran también planosen un primer momento, pero por otra razón: En los sistemas profesionales ya sehabía desarrollado el concepto; al aparecer la primer computadora personal en1975, ya existían incluso las primeras versiones de Unix diseñadas para trabajoen red. La prioridad en los sistemas personales era mantener el código del sistemaoperativo simple, mínimo. Con unidades de disco capaces de manejar entre 80 y160KB, no tenía mucho sentido implementar directorios � Si un usuario quisierallevar a cabo una división temática de su trabajo, lo colocaría en distintos discos�exibles. El sistema operativo CP/M nunca soportó jerarquías de directorios,como tampoco lo hizo la primer versión de MS-DOS6.

El sistema de archivos original de la Apple Macintosh, MFS, estaba constru-ido sobre un modelo plano, pero presentando la ilusión de directorios de unaforma comparable a las etiquetas: Existían bajo ciertas vistas (pero notoria-mente no en los diálogos de abrir y grabar archivos), pero el nombre de cadauno de los archivos tenía que ser único, dado que el direcorio al que pertenecíaera básicamente sólo un atributo del archivo.

Y contrario a lo que dicta la intuición, el modelo de directorio plano no hadesaparecido: El sistema de almacenamiento en la nube ofrecido por el servi-cio Amazon S3 (Simple Storage Service, Servicio Simple de Almacenamiento)maneja únicamente objetos (comparable con nuestra de�nición de archivos) ycubetas (que reconoceríamos como unidades o volúmenes), y permite referirse aun objeto o un conjunto de objetos basado en �ltros sobre el total que conformana una cubeta.

Probablemente a futuro nos encontremos con más ofertas como la de AmazonS3, pero por ahora, continuemos sobre la línea histórica de los directorios.

3.1.3. Directorios de profundidad �ja

Las primeras implementaciones de directorios eran de un sólo nivel : El totalde archivos en un sistema podía estar dividido en directorios, fuera por tipo dearchivo (separando, por ejemplo, programas de sistema, programas de usuario ytextos del correo), por usuario (facilitando una separación lógica de los archivosde un usuario de pertenecientes a los demás usuarios del sistema)

6el soporte de jerarquías de directorios fue introducido apenas en la versión 2, junto con elsoporte a discos duros de 10MB, con la IBM XT

14

Page 15: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

El directorio raiz (base) se llama en este esquema MFD (Master File Direc-tory, Directorio Maestro de Archivos), y cada uno de los directorios derivadoses un UFD (User File Directory, Directorio de Archivos de Usuario).

Figura 5: Directorio simple, limitado a un sólo nivel de profundidad

Este esquema resuelve el problema principal del nombre global único: Antesde los directorios, cada usuario tenía que cuidar que los nombres de sus archivosfueran únicos en el sistema, y ya teniendo cada uno su propio espacio, se volvióuna tarea mucho más simple. La desventaja es que, si el sistema restringe a cadausuario a escribir en su UFD, se vuelve fundamentalmente imposible trabajaren algún proyecto conjunto: No puede haber un directorio que esté tanto dentrode usr1 como de usr2, y los usuarios encontrarán más di�cil llevar un proyectoconjunto.

3.1.4. Directorios estructurados en árbol

El siguiente paso natural para este esquema es permitir una jerarquía ilimita-da: En vez de exigir que exista una capa de directorios, se le puede dar la vueltaal argumento, y permitir que cada directorio pueda contener a otros archivoso directorios a niveles arbitrarios. Esto permite que cada usuario (y que el ad-ministrador del sistema) estructure su información siguiendo criterios lógicos ypiense en el espacio de almacenamiento como un espacio a largo plazo.

Figura 6: Directorio estucturado en árbol

Junto con esta estructura nacen las rutas de búsqueda (search path): Tantolos programas como las bibliotecas de sistema ahora pueden estar en cualquierlugar del sistema de archivos. Al de�nirle al sistema una ruta de búsqueda, el

15

Page 16: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

usuario operador puede desentenderse del lugar exacto en el que está determi-nado programa � El sistema se encargará de buscar en todos los directoriosmencionados los programas o bibliotecas que éste requiera.7

3.1.5. El directorio como un grafo dirigido

Si bien parecería que muchos de los sistemas de archivos que empleamos hoyen día pueden modelarse su�cientemente con un árbol, donde hay un sólo nodoraiz, y donde cada uno de los nodos tiene un sólo nodo padre, la semántica queofrecen es en realidad un superconjunto estricto de esta: La de un grafo dirigido.

En un grafo dirigido como el presentado en la �gura 7, un mismo nodopuede tener varios directorios padre, permitiendo por ejemplo que un directoriode trabajo común sea parte del directorio personal de dos usuarios. Esto es, elmismo objeto está presente en más de un punto del árbol.

Figura 7: Directorio como un grafo dirigido acíclico: El directorio proyectoestá tanto en el directorio /home/usr1 como en el directorio /home/usr2

Un sistema de archivos puede permitir la organización como un grafo dirigi-do, aunque es común que la interfaz que presenta al usuario se restrinja a ungrafo dirigido acíclico: Las ligas múltiples son permitidas, siempre y cuando nogeneren un ciclo.

La semántica de los sistemas Unix implementa directorios como grafos di-rigidos por medio de dos mecanismos:

Liga dura La entrada de un archivo en un directorio Unix es la relación entre

7La ruta de búsqueda re�eja la organización del sistema de archivos en el contexto de lainstalación especí�ca. Es común que la ruta de búsqueda de un usuario estándar en Unix seasimilar a /usr/local/bin:/usr/bin:/bin:~/bin� Esto signi�ca que cualquier comandoque sea presentado es buscado, en el órden indicado, en los cuatro directorios presentados(separados por el caracter :, la notación ~ indica el directorio personal del usuario activo).En Windows, es común ver una ruta de búsqueda c:\WINDOWS\system32;c:\WINDOWS

16

Page 17: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

la ruta del archivo y el número de i-nodo en el sistema de archivos.8

Si tenemos un archivo existente y creamos una liga dura a él, ésta essencillamente otra entrada en el directorio apuntando al mismo i-nodo.Ambas entradas, pues, son el mismo archivo � No hay uno maestro y unodependiente.

En un sistema Unix, este mecanismo tiene sólo dos restricciones:

1. Sólo se pueden hacer ligas duras dentro del mismo sistema de archivos

2. No pueden hacerse ligas duras a directorios, sólo a archivos9

Liga simbólica Es un archivo especial, que meramente indica a dónde apunta.El encargado de seguir este archivo a su destino (esto es, de resolver la ligasimbólica) es el sistema operativo mismo; un proceso no tiene que hacernada especial para seguir la liga.

Una liga simbólica puede apuntar a directorios, incluso creando ciclos, oa archivos de otros sistemas de archivos.

Cuando creamos una liga simbólica, la liga y el archivo son dos entidadesdistintas. Si bien cualquier proceso que abra al archivo destino estarátrabajando con la misma entidad, en caso de que éste sea renombrado oeliminado, la liga quedará rota, apuntando a una ubicación inexistente.

Si bien estos dos tipos de liga existen también en los sistemas Windows10,en dichos sistemas sigue siendo más común emplear los accesos directos. Sedenomina así a un archivo (identi�cado por su extensión, .lnk), principalmentecreado para poder apuntar a los archivos desde el escritorio y los menúes � Siun proceso solicita al sistema abrir el acceso directo, no obtendrá al archivodestino, sino que al acceso directo mismo.

Ahora, si bien tanto las ligas duras como las ligas simbólicas existen tam-bién en Windows, su uso es muy poco frecuente. El API de Win32 ofrece lasfunciones necesarias, pero éstas no están re�ejadas desde la interfaz usuario delsistema � Y son sistemas donde el usuario promedio no emplea una interfazprogramador, sino que una interfaz grá�ca. Las ligas, podemos concluir, no sonmás empleadas por cuestión cultural : En sus comunidades de usuarios, nuncafueron frecuentes, por lo cual se mantienen como conceptos empleados sólo porlos usuarios poderosos.

Ya con el conocimiento de las ligas, podemos reelaborar la �gura 7 apegán-donos más a la realidad: En los sistemas operativos (tanto Unix como Windows),todo directorio tiene dos entradas especiales: Los directorios . y ..

Como podemos ver en la �gura 8, en todos los directorios, . es una ligadura al mismo directorio, y .. es una liga al directorio padre. Claro está, co-mo sólo puede haber una liga .., un directorio que está enlazado desde dos

8Abordaremos a detalle el signi�cado y la estructura de un i-nodo más adelante en estamisma unidad

9Formalmente, puede haberlas, pero sólo el administrador puede crearlas; detallaremos elpor qué al hablar de recorrer los directorios (sección 3.2.1).

10Únicamente en aquellos que emplean el sistema de archivos NTFS, no en los que estáninstalados sobre alguna de las variantes de FAT

17

Page 18: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 8: Directorio como un grafo dirigido, mostrando los enlaces ocultos . y..

lugares distintos del sistema de archivos sólo apunta hacia uno de ellos con suenlace ..; en este caso, el directorio común proyecto está dentro del directorio/home/usr2, y representamos la liga simbólica desde /home/usr1 como unalínea punteada.

Notarán que hay una excepción: El directorio raiz. En este caso, tanto .como .. apuntan al mismo directorio.

Y esta es la razón que mencionamos hace algunas líneas por la cual nopodemos ver a un árbol de archivos, ni en Windows ni en Unix, como a un grafodirigido acíclico: Tanto las entradas . (al apuntar al mismo directorio dondeestán contentidas) como las entradas .. (al apuntar al directorio padre) creanciclos.

3.2. Operaciones con directorios

Al igual que los archivos, los directorios tienen una semántica básica de ac-ceso. Los directorios resultan también tipos de datos abstractos con algunasoperaciones de�nidas � Y como veremos, muchas de las operaciones que re-alizaremos con los directorios son análogas a las empleadas para los archivos.11

Las operaciones básicas a presentar son:

Abrir y cerrar Al igual que los archivos, los directorios deben ser abiertospara trabajar con ellos, y cerrados cuando ya no se les requiera. Paraesto, en C, se emplean las funciones opendir() y closedir(). Estasfunciones trabajan asociadas a un �ujo de directorio (directory stream),que funciona de forma análoga a un descriptor de archivo.

11De hecho, en algunos sistemas operativos, los directorios son meramente archivos de tipoespecial, que son presentados al usuario de forma distinta. Pero no adelantemos vísperas, esetema lo veremos más adelante.

18

Page 19: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Listado de archivos Para mostrar los archivos que conforman a un directo-rio, el directorio se abre (tal como un archivo, pero en C, con la funciónopendir() en vez de open()), y va leyendo (con readdir()) sus en-tradas una a una. Cada uno de los resultados es una estrcutura dirent(entrada de directorio), cada una de las cuales contiene su nombre end_name, el identi�cador de su i-nodo en d_ino, y algunos datos adi-cionales del arcihvo en cuestión.

Para presentar al usuario la lista de archivos que conforman un directorio,podría hacerse:

1 #include <stdio.h>2 #include <dirent.h>3 #include <sys/types.h>4

5 int main(int argc, char *argv[]) {6 struct dirent *archivo;7 DIR *dir;8 if (argc != 2) {9 printf("Indique el directorio a mostrar\n");10 return 1;11 }12 dir = opendir(argv[1]);13 while ((archivo = readdir(dir)) != 0) {14 printf("%s\t", archivo->d_name);15 }16 printf("\n");17 closedir(dir);18 }

Al igual que en al hablar de archivos, podemos rebobinar el listado deldirectorio al principio del listado con rewinddir().

Buscar un elemento La mayor parte de las veces, no nos interesa tanto ver ellistado de archivos que existen, sino que abrir uno en particular � Esto es,buscar el archivo que cumpla con cierto criterio, con cierto nombre. Quedaclaro que esto podemos hacerlo discriminando, de entre los resultados quenos va arrojando readdir, y obtener la o las entradas que nos interesen.

Crear, eliminar o renombrar un elemento Si bien estas tres operacionesse implementan por medio de una operación de escritura en el directorio,se implementan a través de las funciones de manejo de archivos.

3.2.1. Recorriendo los directorios

Es frecuente requerir aplicar una operación a todos los archivos dentro decierto directorio � Por ejemplo, si queremos agrupar a un directorio completoen un archivo comprimido, o si queremos copiar todos sus contenidos a otro

19

Page 20: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

medio. Procesar todas las entradas de un directorio, incluyendo las de sus sub-directorios, se denomina recorrer el directorio (en inglés, directory traversal).

Si estamos trabajando en un sistema de archivos plano, la operación derecorrido completo puede realizarse con un programa tan simple como el quepresentamos en la sección anterior.

Al hablar de un sistema de profundidad �ja, e incluso de un directorio es-tructurado en árbol, la lógica se complica levemente, dado que para recorrer eldirectorio tenemos que revisar, a cada entrada, si esta es a su vez un directorio(y en caso de que así sea, entrar y procesar a cada uno de sus elementos). Has-ta aquí, sin embargo, podemos recorrer el directorio sin requerir de mantenerestructuras adicionales en memoria representando el estado.

Sin embargo, cuando consideramos a los grafos dirigidos, se vuelve indis-pensable mantener en memoria la contabilidad de todos los nodos que ya hemostocado � en caso contrario, al caer en un ciclo (incluso si este es creado pormecanismos como las ligas simbólicas), caeríamos en un ciclo in�nito.

Para esto, no bastaría tomar nota de las rutas de los archivos con-forme avanzamos por el grafo � Cada vez que los encontremos, su ru-ta será distinta (por ejemplo, veríamos /home/usr/proy/archivo, segui-do de /home/usr/proy/mios/archivo, a continuación del cual seguiría/home/usr/proy/mios/mios/archivo, después de éste, seguiría con /home/usr/proy/mios/mios/mios/archivo,etc.), pero emplear un indexado basado en el número de i-nodo12 identi�ca sinlugar a dudas a cada uno de los archivos.

3.2.2. Otros esquemas de organización

Por más que el uso de sistemas de archivos basados en directorios jerárquicosnos parece universal y muy ampliamente aceptado, hay cada vez más casos deuso que apuntan a que podemos estar por dar la bienvenida a una nueva metáforade organización de archivos.

Hay distintas propuestas, y claro está, es imposible aún saber cuál direc-ción obtendrá el favor del mercado � O, dado que no necesariamente sigamosteniendo un modelo apto para todos los usos, de qué segmento del mercado.

3.3. Montaje de directorios

Para trabajar con el contenido de un sistema de archivos, el sistema operativotiene quemontarlo: Ubicarlo en un punto del árbol de archivos visible al sistema.

Es muy común, especialmente en los entornos derivados de Unix, que unsistema operativo trabaje con distintos sistemas de archivos al mismo tiempo.Esto puede obedecer a varias causas, entre las cuales tenemos:

Distintos medios físicos Si la computadora tiene más de una unidad de al-macenamiento, el espacio dentro de cada uno de los discos se maneje comoun sistema de archivos indepentiente. Esto es especialmente cierto en la

12Que si bien no de�nimos aún formalmente lo que signi�ca, sabemos que es único porsistema de archivos

20

Page 21: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

presencia de unidades removibles (diskettes, CDs, unidades USB, discosduros externos, etc.)

Diferentes usos esperados Como veremos más adelante, distintos esquemasde organización (esto es, distintos sistemas de archivos) presentan ventajaspara distintas formas de uso. Por ejemplo, tiene sentido que una base dedatos resida sobre una organización distinta a la de los comandos (binarios)del sistema.

Abstracciones de sistemas no-físicos El sistema operativo puede presentardiversas estructuras con una estructura de sistema de archivos. El ejemplomás claro de esto es el sistema de archivos virtual /proc, existente enlos sistemas Unix, que permite ver diversos aspectos de los procesos enejecución (y, en Linux, del sistema en general). Los archivos bajo /procno existen en ningún disco, pero se presentna como si fueran archivosestándar.

Razones administrativas El administrador del sistema puede emplear sis-temas de archivos distintos para aislar espacios de usuarios entre sí: Porejemplo, para evitar que un exceso de mensajes enviados en la bitácora(típicamente bajo /var/log) saturen al sistema de archivos principal, opara determinar patrones de uso máximo por grupos de usuarios.

En los sistemas tipo Unix, el mecanismo para montar los archivos es el de unárbol con puntos de montaje. Esto es, todos los archivos y directorios del sistemaoperativo están estructurados en torno a un sólo árbol. Cuando se solicita alsistema operativo montar un sistema de archivos en determinado lugar, éste seintegra al árbol, ocultando todo lo que el directorio en cuestión previamentetuviera.13

Figura 9: Árbol formado del montaje de sda1 en la raiz, sda2 como /usr,sdb1 como /home, y el directorio virtual proc

13Hay implementaciones que exigen que el montaje se realice exclusivamente en directoriosvacíos; existen otras, como UnionFS, que buscan seguir presentando una interfaz de lectura

a los objetos que existían en el directorio previo al montaje, pero realizan las escrituras úni-camente en el sistema ya montado; estas complican fuertemente algunos aspectos semánticos,por lo cual resultan poco comunes.

21

Page 22: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

La manera en que esto se presenta en sistemas Windows es muy distinta.Ahí, cada uno de los sistemas de archivos detectados recibe un identi�cador devolumen, y es montado automáticamente en un sistema de directorio estructura-do como árbol de un sólo nivel representando a los dispositivos del sistema.14

Este árbol es presentado a través de la interfaz grá�ca (aunque este nombre nosigni�ca nada para el API del sistema) como Mi PC.

Entrando con el identi�cador de volumen, encontramos al contenido de cadauno. De este modo, la especi�cación absoluta de un archivo es una cadena comoVOL:\Dir1\Dir2\Archivo.ext�El caracter : separa al volumen del árboldel sistema de archivos, y el caracter \ separa uno de otro a los directorios.

Los identi�cadores de volumen están preasignados, muchos de ellos siguiendoa un esquema heredado desde la época de las primeras PC: Los volúmenes A yB están reservados para las unidades de disco �exible; C se re�ere al disco durode arranque, y las unidades posteriores que va detectando el sistema son D, E,F, etc.

Es posible modi�car esta nomenclatura y con�gurar a los discos para estar enotra ubicación, pero muchas aplicaciones dependen ya de este comportamientoy con�guración especí�cos.

Figura 10: Vista de un sistema de archivos Windows

3.4. Sistemas de archivos remotos

Uno de los principales y primeros usos que se dio a la comunicación en red fueel de compartir archivos entre computadoras independientes. En un principio,

14En realidad, este árbol no sólo incluye a los volúmenes de almacenamiento, sino que alos demás dispositivos del sistema, como los distintos puertos, pero los oculta de la interfazgrá�ca.

22

Page 23: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

esto se realizaba de forma explícita, con transferencias manuales a través deprogramas dedicados a ello, como sería hoy en día el FTP.

Por otro lado, desde mediados de los 1980, es posible realizar estas transfer-encias de forma implícita y automática, empleando sistemas de archivos sobre lared (o lo que es lo mismo, sistemas de archivos remotos). Estos se nos presentancomo caso particular de la abstracción de sistemas no-físicos que mencionamosen la sección anterior: Si bien el sistema operativo no tiene acceso real a losarchivos y directorios que le solicitará el usuario, a través de los módulos de red,sabe cómo obtenerlos y presentarlos como si fueran locales.

Al hablar de sistemas de archivos en red, casi siempre lo haremos siguiendoun modelo cliente-servidor. Estos términos no se re�eren a las prestaciones rela-tivas de una computadora, sino al rol que ésta juega dentro de cada conexión �Esto es, designamos como cliente a la computadora que solicita un servicio, ycomo servidor a la que lo provee; es frecuente que dos computadoras sean tantoservidor como cliente la una de la otra en distintos servicios.

3.4.1. Network File System (NFS)

El Sistema de Archivos en Red (Network File System, mejor conocido porsus siglas, NFS ) fue creado por Sun Microsystems, y desde 1984 forma partede su sistema operativo � Resultó una implementación tan exitosa que a lospocos años formaba parte de todos los sistemas tipo Unix.

NFS está construido sobre el mecanismo RPC (Remote Procedure Call, Lla-mada a Procedimientos Remotos), un mecanismo de mensajes y manejo básicode sesión que actúa como una capa superior a TCP/IP, incluyendo facilidadesde descubrimiento de recursos y abstracción. RPC puede ser comparado conprotocolos como DCE/RPC de OSF, DCOM de Microsoft, y hoy en día, SOAPy XML-RPC. Estos mecanismos permiten al programador delegar en un ser-vicio el manejo de las conexiones de red, particularmente (en el caso que eneste momento nos importa) la persistencia de sesiones en caso de desconexión,y limitar su atención a una conexión establecida.

La motivación de origen para la creación de NFS fue presentar una soluciónque aprovechara el hardware existente y centralizara la administración: Ofrecerlas facilidades para contar con redes donde hubiera un servidor de archivos, ydonde las estaciones de trabajo tuvieran únicamente una instalación básica,15

y el entorno de usuario completo estuviera disponible en cualquiera de las esta-ciones.

NFS ofrece sobre la red un sistema de archivos con la semántica Unix comple-ta � Para montar un sistema remoto, basta montarlo16 y usarlo como si fueralocal. El manejo de permisos, usuarios, e incluso las ligas duras y simbólicas semanejan exactamente como se haría localmente.

15Incluso manejando estaciones de trabajo diskless, esto es, computadoras sin disco duro,cuyo sistema de arranque tiene la capacidad de solicitar al servidor le envíe incluso el núcleodel sistema operativo que ejecutará

16Para montar un sistema remoto, usaríamos un comando como mountarchivos.unam.mx:/home /home

23

Page 24: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

NFS es un protocolo muy ligero � No implementa cifrado ni veri�cacionesadicionales, pero al día de hoy, es uno de los mejores mecanismos para el en-vío de grandes cantidades de información � Pero siempre en redes que seancompletamente con�ables.

Ahora, NFS se presenta como uno de los componentes de una solución com-pleta. Dado que se espera que la información de usuarios y permisos sea con-sistente en todos los clientes; Sun ofrecía también un esquema llamado YellowPages (posteriormente renombrado a NIS, Network Information System) paracompartir la información de autenticación y listas de usuarios.

La desventaja, en entornos sin NIS, es que los permisos se manejan segúnel ID numérico del usuario. Si en diferentes sistemas el mismo usuario tienediferentes IDs, los permisos no coincidirán. Es más, dado que el control deacceso principal es únicamente por dirección IP, para tener acceso irrestrictoa los archivos de otros usuarios en NFS basta con tener control pleno de unacomputadora cualquiera en la red para poder asumir o usurpar la identidad decualquier otro usuario.

Por último, para garantizar que las escrituras a archivos se llevaran a cabocuando eran solicitadas (en contraposición a asumir éxito y continuar), todaslas escrituras en un principio sobre NFS eran manejadas de forma síncrona, estoes, tras grabar un archivo, el cliente no continuaba con la ejecución hasta notener con�rmación por parte del servidor de que los datos estaban ya guardadosen disco.

Versiones posteriores del protocolo mejoraron sobre los puntos débiles aquímencionados. Al día de hoy, casi 30 años después de su presentación, NFS esaún un sistema de archivos en red muy ampliamente empleado.

3.4.2. Common Internet File System (CIFS)

El equivalente a NFS en los entornos donde predominan los sistemas Win-dows es el protocolo CIFS (Common Internet File System, Sistema de ArchivosComún para Internet). Aparece en los sistemas primarios de Microsoft alrededorde 199017, originalmente bajo el nombre SMB (Server Message Block, Bloquede Mensaje del Servidor).

Las primeras implementaciones estaban orientadas al protocolo NBF, fre-cuentemente conocido como NetBEUI, aunque a partir de Windows 2000 se hareimplementado completamente para operar sobre TCP/IP. Es a partir de estemomento que se le comienza a denominar CIFS, aunque el nombre SMB siguesiendo ampliamente utilizado.18

CIFS se ajusta mucho más a la semántica de los sistemas MS-DOS y Win-dows, aunque dado el lapso de tiempo que ha existido, ha pasado por varioscambios fundamentales, que al día de hoy complican su uso.

Para tener acceso a un volumen compartido por SMB se introdujo el coman-

17El desarrollo de SMB nació como LAN Manager, originalmente para OS/218Es a este nombre que la implementación de CIFS para sistemas Unix, Samba, fue llamado

de esta manera.

24

Page 25: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

do NET;19 basta indicar a DOS oWindows NET USE W: \\servidor\directoriopara que el recurso compartido bajo el nombre directorio dentro del equipoconocido como servidor aparezca en el árbol Mi PC, y el usuario pueda em-plear sus contenidos como si fuera un sistema de archivos local.

Cuando fue introducido al mercado, los sistemas Microsoft no manejabanaún el concepto de usuarios, por lo que la única medida de seguridad que imple-mentaba SMB era el manejo de hasta dos contraseñas por directorio compartido:Con una, el usuario obtenía acceso de sólo lectura, y con la otra, de lectura yescritura. Tras la aparición de Windows NT, se agregó un esquema de identi-�cación por usuaro/contraseña, que posibilita el otorgamiento de permisos conuna granularidad mucho menor.20

SMB fue pensado originalmente para una red pequeña, con hasta un par dedecenas de equipos. La mayor parte de los paquetes eran enviados en modode difusión (broadcast), por lo que era fácil llegar a la saturación, y no existíaun esquema centralizado de resolución de nombres, con lo que era frecuente noencontrar a determinado equipo.

Los cambios que CIFS presenta a lo largo de los años son muy profundos.Las primeras implementaciones presentan fuertes problemas de con�abilidad,rendimiento y seguridad, además de estar planteadas para su uso en un só-lo tipo de sistema operativo; al día de hoy, estos puntos han todos mejoradofuertemente. En sistemas Unix, la principal implementación, Samba, fue crea-da haciendo ingeniería inversa sobre el protocolo; a lo largo de los años, se haconvertido en un esquema tan robusto que es hoy por hoy tomado como imple-mentación refrencia.

3.4.3. Sistemas de archivos distribuídos: Andrew File System (AFS)

Los dos ejemplos de sistema de archivos en red presentados hasta ahoracomparten una visión tradicional del modelo cliente-servidor: Al ver el comandoque inicializa una conexión, e incluso a ver la información que guarda el núcleodel cliente respecto a cualquiera de los archivos, resulta claro cuál es el servidorpara cada uno de ellos.

Andrew File System, desarrolaldo en la Carnegie Mellon University21 y publi-cado en 1989, plantea presentar un verdadero sistema de archivos distribuído, enel cual los recursos compartidos no tengan que estar en un servidor en particular,sino que un conjunto de equipos se repartan la carga (esto es, agnosticismo a laubicación). AFS busca también una fácil escalabilidad, la capacidad de agregartanto espacio de almacenamiento como equipos con rol de servidor. AFS permiteinclusive migrar completamente un volumen mientras está siendo empleado, deforma transparente.

19Este comando es empleado en MS-DOS, pero está también disponible en Windows, y aldía de hoy es una de las principales herramientas para administrar usuarios.

20Esto signi�ca, que puede controlarse el acceso permitido más �namente, a nivel archivoindividual y usuario individual.

21Como parte del Proyecto Andrew, denominado así por el nombre de los fundadores deesta universidad: Andrew Carnegie y Andrew Mellon

25

Page 26: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Ante la complejidad e inestabilidad adicional que nos presentan con tantafrecuencia las redes grandes22 (y lo hacían mucho más hace 30 años): AFS debeoperar tan con�ablemente como sea posible, incluso sin la certeza de que la redopera correctamente.

AFS construye fuertemente sobre el modelo de tickets y credenciales de Ker-beros, pero se aleja sensiblemente de la semántica de operación de archivos quehasta ahora hemos manejado. Muchos eventos, operaciones y estados van ligadosal momento en el tiempo en que se presentan, a través de un modelo de con-sistencia débil (weak consistency model). Muy a grandes rasgos, esto signi�caque:

Cuando se abre un archivo, éste se copia completo al cliente. Todas laslecturas y escrituras (a diferencia de los esquemas tradicionales, en queéstas son enviadas al servidor lo antes posible y de forma síncrona) sedirigen únicamente a la copia local.

Al cerrar el archivo, éste se copia de vuelta al servidor de origen, el cual secompromete a noti�car a los clientes si un archivo abierto fue modi�cado(esto es, a hacer una llamada o callback). Los clientes pueden entoncesintentar incorporar los cambios a su versión de trabajo, o continuar con lacopia ya obtenida � Es esperable que si un segundo cliente realiza algunamodi�cación, incorpore los cambios hechos por el primero, pero esto sedeja a la implementación del programa en cuestión.

Esto signi�ca en pocas palabras que los cambios a un archivo abierto porun usuario no son visibles a los demás de inmediato; sólo una vez que se cierraun archivo, los cambios hechos a éste son puestos a disposición de las sesionesabiertas actuales, y sólo son enviados como versión actual a las sesiones abiertasposteriormente.

Con este cambio semántico, debe quedar claro que AFS no busca ser un sis-tema para todo uso ni un reemplazo universal de los sistemas de archivos locales,en contraposición de los sistemas de archivos centralizados. AFS no plantea enningún momento una operación diskless. Bajo el esquema aquí descrito, las lec-turas y escrituras resultan baratas, porque se realizan exclusivamente sobre elcaché local, pero abrir y cerrar un archivo puede ser muy caro, porque debetransferirse el archivo completo.

Hay aplicaciones que verdaderamente sufrirían si tuvieran que implemen-tarse sobre un sistema de archivos distribuído � Por ejemplo, si una base dedatos se distribuyera sobre AFS, la carencia de mecanismos de bloqueo sobresecciones del archivo, y el requisito de operar sobre archivos completos haríanimpracticable compartir un archivo de uso intensivo y aleatorio.

22El uso típico de AFS se planteaba para organizaciones grandes, del órden de decenas demiles de estaciones

26

Page 27: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

4. Plasmando la estructura en el dispositivo

Hasta ahora, hemos visto a los elementos del sistema de archivos tal comoson presentados al usuario �nal, sin entrar en detalles respecto a cómo organi-za toda esta información el sistema operativo en un dispositivo persistente �Mencionamos algunas estructuras base, pero dejándolas explícitamente pendi-entes de de�nición. En esta sección nos ocuparemos de detallar las principalesestructuras y mecanismos empleados para que un sistema de archivos sea, másallá de una estructura formal ideal, una entidad guardada en un dispositivo.

A lo largo de la historia del cómputo, el almacenamiento no siempre fuehecho en discos (dispositivos giratorios de acceso aleatorio). En un principio, losmedios principales de acceso estrictamente secuencial (tarjetas perforadas, cintasde papel, cintas magnéticas), y desde hace algunos años, estamos viendo unamigración a almacenamiento de estado sólido, a dispositivos sin partes móvilesque guardan la información en un tipo particular de memoria.

Los sistemas de archivo están en general desarrollados pensando en discos,y a lo largo de esta sección, nos referiremos como el disco al medio de alma-cenamiento persistente en el cual esté plasmado el sistema de archivos. Másadelante, en la sección 7, abordaremos algunos de los aspectos que debemosconsiderar al hablar de sistemas de archivos respaldados en medios distintos aun disco.

Mientras tanto, mantengamos una visión aún bastante idealizada y abstrac-ta: Asumamos que un disco es visto por el sistema operativo como un arreglomuy grande de bloques de tamaño �jo, cada uno de ellos directamente direc-cionable, y de�namos los conceptos que nos permitirán representar en dichodisco nuestro sistema operativo:

Partición Una subdivisión de un disco, por medio de la cual el admin-istrador/usuario del sistema puede de�nir la forma en que se emplea elespacio que éste ofrece. Un disco puede tener varias particiones, y cadauna de ellas puede tener un sistema de archivos independiente.

Volumen Colección de bloques inicializados con un sistema de archivos quepueden presentarse al usuario como una unidad. Típicamente un volumencoincide con una partición (pero no siempre es el caso).

El volumen se describe ante el sistema operativo en el bloque de control devolumen, también conocido como superbloque en Unix, o Tabla Maestrade Archivos (Master File Table) en NTFS.

Directorio raiz La estructura base con la relación entre nombres de archivoy números de i-nodo. Típicamente sólo almacena los archivos que estánen el primer nivel jerárquico del sistema, y los directorios derivados sonúnicamente referenciados desde éste.

El directorio normalmente incluye sólo el nombre de cada uno de losarchivos y el número de i-nodo que lo describe, todos los metadatos adi-cionales están en los respectivos i-nodos.

27

Page 28: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Metadatos Recibe este nombre toda la información acerca de un archivo queno es el archivo mismo. Por ejemplo, el nombre, tamaño o tipo del archivo,su propietario, el control de acceso, sus fechas de creación, último accesoy modi�cación, ubicación en disco, etc.

I-nodo Del inglés i-node, information node (nodo de información); en los sis-temas tipo Windows, normalmente se le denomina bloque de control dearchivo (FCB). Es la estructura en disco que guarda los metadatos decada archivo, proporcionando un vínculo entre la entrada en el directorioy la información que referida.

La información almacenada incluye todos los metadatos relacionados conel archivo a excepción del nombre (mismo que radica únicamente en eldirectorio): Los permisos y propietarios del archivo, sus fechas de creación,última modi�cación y último acceso, y la relación de bloques que ocupa enel disco. Veremos más adelante los esquemas más comunes para presentaresta relación de bloques.

Mapa de bits de espacio libre La función del bitmap es poder gestionar elespacio libre del disco. Recordemos que el disco se presenta asignado porbloques, típicamente de 4096 bytes � En el bitmap cada bloque se repre-senta con un bit, con lo que aquí podemos encontrar de forma compactael espacio ocupado y disponible, así como el lugar adecuado para crear unnuevo archivo.

El bitmap para un disco de 100GB puede, de esta manera, representarse en23MB (100×109

4096 ), cantidad que puede razonablemente mantener en memo-ria un sistema de escritorio promedio hoy en día.

Veremos más adelante algunas estructuras avanzadas que permiten mayore�ciencia en este sentido.

4.1. Diferentes sistemas de archivos

Un sistema operativo puede dar soporte a varios distintos sistemas dearchivos; muchas razones pueden in�uir para elegir qué sistema de archivosemplearemos para nuestra información � Algunas razones para elegir a uno uotro son que el rendimiento de cada uno puede estaar a�nado ante diferentespatrones de carga, necesidad de emplear un dispositivo móvil para intercambiardatos con distintos sistemas, e incluso restricciones de hardware.23

A lo largo de esta sección iremos comentando cómo los principales concep-tos que revisaremos se han implementado en distintos sistemas de archivos;nos referiremos principalmente a una familia de sistema de archivos simple decomprender, aunque muestra claramente su edad: La familia FAT. Ilustraremosalgunos ejemplos especí�cos empleando también otros sistemas de archivos.

23Por ejemplo, los cargadores de arranque en algunas plataformas requieren poder leer elvolumen donde está alojada la imágen del sistema operativo � Lo cual obliga a que esté enun sistema de archivos nativo a la plataforma.

28

Page 29: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

El sistema FAT fue creado hacia �nes de los 1970, y muestra claras eviden-cias de haber sido pensado para discos �exibles. Sin embargo, a través de variasextensiones que se han presentado con el paso de los años (algunas con compat-ibilidad hacia atrás, otras no), sigue siendo uno de los sistemas más empleadosal día de hoy, a pesar de que ya no es recomendado como sistema primario porningún sistema operativo de escritorio.

Si bien FAT tuvo su mayor difusión con los sistemas operativos de la familiaMS-DOS, es un sistema de archivos nativo para una gran cantidad de otrossistemas, lo cual se hace obvio al revisar el soporte a atributos extendidos quemaneja.

4.2. El volumen

Lo primero que requiere saber el sistema operativo para poder montar unvolumen es su estructura general: En primer término, de qué tipo de sistema dearchivos se trata, y acto seguido, la descripción básica del mismo: Su extensión, eltamaño de los bloques lógicos que maneja, si tiene alguna etiqueta que describasu función ante el usuario, etc. Esta información está contenida en el bloquede control de volumen, también conocido como superbloque o tabla maestra dearchivos.24

Tras leer la información del superbloque, el sistema operativo determina enprimer término si puede proceder � Si no sabe cómo trabajar con el sistema dearchivos en cuestión, por ejemplo, no puede presentar información útil algunaal usuario.

Habíamos mencionado ya que el tamaño de bloques (típicamente, 512 bytes)es establecido por el hardware. Es muy común que, tanto por razones de e�-ciencia como para alcanzar a direccionar mayor espacio, el sistema de archivosagrupe a varios bloques físicos en un bloque lógico. Veremos más acerca de quéfactores determinan su tamaño de bloques cada sistema de archivos en la sección4.3, al hablar de el directorio.

Dado que describir al volumen es la más fundamental de las operaciones quepodamos realizar, muchos sistemas de archivos mantienen copias adicionalesdel superbloque, a veces dispersas a lo largo del sistema de archivos, para poderrecuperarlo en caso de que se corrompa.

En el caso de FAT, el volumen indica no sólo la generación del sistemade archivos que se está empleando (FAT12, FAT16 o FAT32, en los tres casosdenominados así por la cantidad de bits para referenciar a cada uno de losbloques lógicos o clusters), sino el tamaño de los clusters, que puede ir desdelos 2 y hasta los 32 Kb.

4.2.1. Volúmenes crudos

Si bien una de los principales tareas de un sistema operativo es la organi-zación del espacio de almacenamiento en sistemas de archivos y su gestión para

24Y aquí hay que aclarar: El superbloque no contiene a los archivos, ni siquiera a lasestructuras que apuntan hacia ellos, sólo describe al volumen para que pueda ser montado

29

Page 30: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

compartirse entre diversos usuarios y procesos, hay algunos casos en que undispositivo orientado a bloques puede ser puesto a disposición de un proceso enparticular para que éste lo gestione directamente. Este modo de uso se denominael de dispositivos crudos o dispositivos en crudo (raw devices).

Podemos encontrar dos casos de uso primarios hoy en día para dispositivosorientados a bloques no administrados a través de la abstracción de los sistemasde archivos:

Espacio de intercambio Como vimos en la unidad anterior, la gestión de laporción de la memoria virtual que está en disco es mucho más e�cientecuando se hace sin cruzar por la abstracción del sistema operativo � Estoes, cuando se hace en un volumen en crudo. Y si bien el gestor de memoriavirtual es parte innegable del sistema operativo, en un sistema microkernelpuede estar ejecutándose como proceso de usuario.

Bases de datos Las bases de datos relacionales pueden incluir volúmenes muygrandes de datos estrictamente estructurados. Algunos gestores de basesde datos, como Oracle, MaxDB o DB2, recomiendan a sus usuarios eluso de volúmenes crudos, para optimizar los accesos a disco sin tener quecruzar por tantas capas del sistema operativo.

La mayor parte de los gestores de bases de datos desde hace varios años nomanejan esta modalidad, sin embargo, por la complejidad adicional quesupone para el administrador del sistema y por lo limitado de la ventajaen rendimiento que supone hoy en día, aunque es indudablemente un temaque se presta para discusión e investigación.

4.3. El directorio y los i-nodos

El directorio es la estructura que relaciona a los archivos como son presen-tados al usuario �identi�cados por una ruta y un nombre� con las estructurasque los describen ante el sistema operativo � Los i-nodos.

A lo largo de la historia de los sistemas de archivos, se han implementadomuy distintos esquemas de organización.

4.3.1. El directorio raiz

Una vez que el sistema de archivos está montado, todas las referencias aarchivos dentro de éste deben pasar a través del directorio. El directorio raizestá siempre en una ubicación bien conocida dentro del sistema de archivos �Típicamente vamos a encontrarlo al inicio del volumen, aunque en los 1980, losdiseñadores del sistema AmigaOS decidieron ubicar al directorio en el sectorcentral de los volúmenes. Un disco �exible tenía 80 pistas (típicamente denom-inadas cilindros cuando hablamos de discos duros), con lo que, al ubicar aldirectorio en la pista 40, el tiempo promedio de movimiento de cabezas para lle-gar a él se reducía a la mitad. Si todas las operaciones de abrir un archivo tienenque pasar por el directorio, esto resultaba en una mejoría muy signi�cativa.

30

Page 31: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

El directorio es la estructura que determina el formato que debe seguir elnombre de cada uno de los archivos y directorios: Es común que en un sis-tema moderno, el nombre de un archivo pueda tener hasta 256 caracteres, in-cluyendo espacios, caracteres acentuados. Algunos sistemas de archivos son sen-sibles a mayúsculas, como es el caso de los sistemas nativos a Unix (el archivoejemplo.txt es distinto de Ejemplo.TXT), mientras que otros no lo son, co-mo es el caso de NTFS y VFAT (ejemplo.txt y Ejemplo.TXT son idénticosante el sistema operativo).

Todas las versiones de FAT siguen para los nombres de archivos un esquemaclaramente antiguo: Los nombres de archivo pueden medir hasta 8 caracteres,con una extensión opcional de 3 caracteres más, dando un total de 11. El sistemano sólo no es sensible a mayúsculas y minúsculas, sino que todos los nombresdeben guardarse completamente en mayúsculas, y permite sólo ciertos caracteresno alfanuméricos. Este sistema de archivos no implementa la separación entredirectorio e i-nodo, que hoy es la norma, por lo que cada una de las entradas enel directorio mide exactamente 32 bytes. Como es de esperarse en un formatoque ha vivido tanto tiempo y ha pasado por tantas generaciones como FAT,algunos de estos campos han cambiado substancialmente sus signi�cados:

Figura 11: Formato de la entrada del directorio bajo FAT (Mohammed, 2007)

La extensión VFAT fue agregada con el lanzamiento de Windows 95. Estaextensión permitía que, si bien el nombre real de un archivo seguiría estandolimitada al formato presentado, pudieran agregarse entradas adicionales al di-rectorio utilizando el atributo de etiqueta de volumen de maneras que un sistemaMS-DOS debiera ignorar.

Esto presenta una complicación adicional al hablar del directorio raiz deuna unidad: Si bien los directorios derivados no tienen este límite, al estar eldirectorio raiz ubicado en una sección �ja del disco, tiene una longitud límitemáxima: En un disco �exible (que hasta el día de hoy, por su limitada capacidad,se formatea bajo FAT12), desde el bloque 20 y hasta el 33, esto es, 14 bloques.Con un tamaño de sector de 512 bytes, el directorio raiz mide 512 × 14 =7168 bytes, esto es, 7168

32=224 entradas como máximo. Y si bien esto no nos suenaa muy limitado, ocupar cuatro entradas por archivo cuando tiene un nombremedianamente largo va reduciendo fuertemente el panorama.

El problema no resulta tan severo como podría parecer: Para FAT32, eldirectorio raiz ya no está ubicado en un espacio reservado, sino que como partedel espacio de datos, por lo cual es extensible en caso de requerirse.

Los primeros sistemas de archivos estaban pensados para unidades de muy

31

Page 32: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 12: Entradas representando archivo con nombre largo bajo VFAT (PeterClark)

baja capacidad; por mucho tiempo, las implementaciones del directorio eransimplemente listas lineales con los archivos que estaban alojados en el volumen.Como vimos, muchos de estos primeros sistemas no contemplaban directoriosjerárquicos, sino que presentaban un único espacio plano de nombres; cuan-do estos sistemas fueron evolucionando para soportar directorios anidados, porcompatibilidad hacia atrás (y por consideraciones de rendimiento que veremosa continuación) siguieron almacenando únicamente al directorio raiz en estaposición privilegiada, y manejando a todos los directorios que derivaran de éstecomo si fueran archivos, repartidos por el disco.

En un sistema que implementa los directorios como listas lineales, entre másarchivos haya, el tiempo que toma casi cualquier operación se incrementa lineal-mente (dado que potencialmente tenemos que leer al directorio completo paraencontrar a un archivo). Y las listas lineales presentan un segundo problema:Cómo reaccionar cuando se llena el espacio que tienen asignado.

Como ya mencionamos, FAT asigna un espacio �jo al directorio raiz, pero lossubdirectorios pueden crecer abritrariamente. Un subdirectorio es básicamenteun archivo con un tipo especial de archivo � Si el cuarto bit del byte 12 deuna entrada de directorio está encendido, los datos correspondientes al archivoserán interpretados como una tabla de directorios.

Queda claro que FAT es un sistema heredado, y que exhibe muchas prácti-cas que ya no vemos en diseños modernos de sistemas de archivos. Vimos quedentro de la entrada de directorio de cada archivo está prácticamente su i-nodocompleto: La información de permisos, atributos, fechas de creaación � Y muyparticularmente, el apuntador al cluster de inicio (bytes 26-28, mas los 20-22para FAT32). Esto exhibe una de las grandes debilidades de FAT: La tendenciaa la fragmentación.

32

Page 33: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

La familia FAT obtiene su nombre de la Tabla de Asignación de Archivos(File Allocation Table), que aparece antes del directorio, en los primeros sectoresdel disco.25 Cada byte de la FAT representa a un cluster en el área de datos; cadaentrada en el directorio indica, en su campo cluster, cuál es el primer clusterque conforma al archivo. Ahora bien, conforme se usa un disco, y los archivoscrecen y se eliminan, y van llenando los espacios vacíos que van dejando, FATva asignando espacio conforme encuentra nuevos clusters, sin cuidar que seaespacio continuo. Los apuntadores al siguiente cluster se van marcando en latabla, cluster por cluster, y el último cluster de cada archivo recibe el valorespecial (dependiendo del tipo de FAT) 0xFFF, 0xFFFF o 0xFFFFFFFF.

Ahora bien, si los directorios son sencillamente archivos que reciben untratamiento especial, estos son también susceptibles a la fragmentación. Den-tro de un sistema Windows 95 o superior (empleando VFAT), con directoriosanidados a cuatro o cinco niveles como lo establece su jerarquía estándar, elpuro hecho de recorrerlos para encontrar determinado archivo puede resultarmuy penalizado por la fragmentación.

4.3.2. La eliminación de entradas del directorio

Sólo unos pocos sistemas de archivos guardan sus directorios ordenados �Si bien esto facilitaría las operaciones más frecuentes que se realizan sobre deellos (en particular, la búsqueda � Cada vez que un directorio es recorrido has-ta encontrar un archivo tiene que leerse potencialmente completo), mantenerloordenado ante cualquier modi�cación resultaría mucho más caro, dado que ten-dría que reescribirse el directorio completo al crearse o eliminarse un archivodentro de éste, y lo que es más importante, más peligroso, dado que aumentaríael tiempo que los datos del directorio están en un estado inconsistente, aumen-tando la probabilidad de que ante una interrupción repentina (fallo de sistema,corte eléctrico, desconexión del dispositivo, etc.) se presentara corrupción de lainformación llevando a pérdida de datos.

Ordenar las entradas del directorio teniendo sus contenidos ya en memoriay, en general, diferir las modi�caciones al directorio resulta mucho más conve-niente en el caso general. Esto vale también para la eliminación de archivos �Presentamos, pues, la estrategia que sigue FAT . Recordemos que el diseño deFAT fue aún cuando el medio principal de almacenamiento era el disco �exible,decenas de veces más lento que el disco duro, y con mucha menor con�abilidad.

Cuando se le solicita a un sistema de archivos FAT eliminar un archivo,éste no se borra del directorio, ni su información se libera de la tabla de asig-nación de archivos, sino que se marca para ser ignorado, reemplazando el primercaracter de su nombre por 0xE5. Ni la entrada de directorio, ni la cadena declusters correspondiente en las tablas de asignación,26 son eliminadas � Sóloson marcadas como disponibles. El espacio de almacenamiento que el archivo

25Tan importante es esta tabla que se guarda por duplicado, e incluso por triplicado, de-pendiendo de la versión de FAT.

26Abordaremos este tema en breve, en la sección 5.4, al hablar de las tablas de asignaciónde archivos

33

Page 34: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

eliminado ocupa debe, entonces, ser sumado al espacio libre que tiene el volu-men. Es apenas cuando se crea un nuevo archivo empleando esa misma entradaque el sistema operativo marca realmente como desocupados los clusters en latabla de asignación.27

Es por esto que desde los primeros días de las PC existen tantas herramien-tas de recuperación (o des-borramiento) de archivos: Siempre que no haya sidocreado un archivo nuevo que ocupe la entrada de directorio en cuestión, recu-perar un archivo es tan simple como volver a ponerle el primer caracter a sunombre.

Este es un ejemplo de un mecanismo �ojo (en contraposición de los mecan-ismos ansiosos, como los vistos en la sección de paginación sobre demanda).Eliminar un archivo toma un trabajo mínimo, mismo que es diferido al momen-to de reutilización de la entrada de directorio.

5. Esquemas de asignación de espacio

Hasta ahora hemos mencionado que la entrada de directorio apunta al pun-to donde inicia el espacio empleado por el archivo, pero no hemos detallado encómo se implementa la asignación y administración de dicho espacio. Haremosun breve repaso de los tres principales mecanismos, después de lo cual detal-laremos cómo es la implementación de FAT, hablando un poco de sus virtudesy debilidades.

5.1. Asignación contigua

Los primeros sistemas de archivos en disco empleaban un esquema de asig-nación contigua. Para implementar un sistema de archivos de este tipo, no haríafalta el contar con una tabla de asignación de archivos: Bastaría con la infor-mación que vimos que forma parte del directorio de FAT � La extensión delarchivo y la dirección de su primer cluster.

./img/ditaa/fs_asignacion_contigua.pngLa principal ventaja de este mecanismo de asignación, claro está, es la simpli-

cidad de su implementación. Brinda además la mejor velocidad de transferenciadel archivo, dado que al estar cada uno de los archivos en espacio contiguo enel disco, el movimiento de cabezas se mantiene al mínimo. Sin embargo, estemecanismo se vuelve sumamente inconveniente en medios que soporten lecturay escritura: Es muy sensible a la fragmentación externa; si un archivo requierecrecer, debe ser movido íntegramente a un bloque más grande (lo cual tomademasiado tiempo), y el espacio que libera un archivo en caso de reducirse sunecesidad de espacio queda atrapado entre bloques asignados; podemos tenermucho más espacio disponible que el que podamos asignar a un nuevo archivo.

Los esquemas de asignación contigua se emplean hoy en día principalmenteen sistemas de archivo de sólo lectura � Por ejemplo, lo emplea el sistema

27Pero, claro, estos clusters podrían mantenerse como ocupados por el nuevo archivo, ahor-rando el trabajo de volver a asignarlos

34

Page 35: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

principal que utilizan los CD-ROMs, el ISO-9660, dado que está pensado paraaprovechar al máximo un espacio que, una vez grabado, sólo podrá abrirse enmodo de sólo lectura.

5.2. Asignación ligada

Un enfoque completamente distinto sería el de asignación ligada. Este esque-ma brinda mucho mayor �exibilidad al usuario, sacri�cando la simplicidad y lavelocidad: Cada entrada en el directorio apunta a un primer grupo de sectores(o cluster), y éste contiene un apuntador que indica cuál es el siguiente.

Para hacer esto, hay dos mecanismos: El primero, reservar un espacio al�nal de cada cluster para guardar el apuntador, y el segundo, crear una tablaindependiente, que guarde únicamente los apuntadores.

En el primer caso, si manejamos clusters de 2048 bytes, y reservamos los 4bytes (32 bits) �nales de cada uno, nos encontraríamos con una incomodidadal programador: Frecuentemente, los programadores buscan alinear sus opera-ciones con las fronteras de las estructuras subyacentes, para optimizar los ac-cesos (por ejemplo, evitar que un sólo registro de base de datos requiera serleído de dos distintos bloques en disco). El programador tendría que diseñar susestructuras para ajustarse a la poco ortodoxa cantidad de 2044 bytes.

Y más allá de esta inconveniencia, guardar los apuntadores al �nal de ca-da cluster hace mucho más lento el manejo de nuestros archivos: Si no ten-emos en una sola ubicación la relación de clusters que conforman a un archivo,para propósitos prácticos, todas las transferencias tendrán que ser secuenciales:Si queremos llegar directamente a determinado bloque del archivo, habrá queatravesar todos los bloques previos para encontrar su ubicación.

Particularmente por este segundo punto es mucho más común el empleo deuna tabla de asignación de archivos � Y precisamente así es como opera FAT(de hecho, esta tabla es la que le da su nombre). La tabla de asignación es unmapa de los clusters, representando a cada uno por el espacio necesario paraguardar un apuntador.

./img/ditaa/fs_asignacion_ligada.pngEmpleando asignación ligada, tenemos muchas ventajas. En primer lugar,

desaparece la fragmentación externa.28

Ahora, la asignación ligada no sólo resulta más lenta que la contigua, sinoque presenta una mayor sobrecarga administrativa: El espacio desperdiciadopara almacenar los apuntadores típicamente es cercano al 1% del disponible enel medio.

Este esquema también presenta fragilidad de metadatos: Si alguno de losapuntadores se pierde o corrompe, lleva a que se pierda el archivo completodesde ese punto y hasta su �nal (y abre la puerta a la corrupción de otroarchivo, si el apuntador queda apuntando hacia un bloque empleado por éste).Hay dos maneras de mitigar este problema: El empleado por FAT es guardar

28El concepto que manejan los usuarios en general como fragmentación es muy distinto, ysí se presenta bajo este esquema: Cada archivo se separa en pequeños fragmentos que puedenterminar esparcidos por todo el disco, impactando fuertemente en el rendimiento del sistema

35

Page 36: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

una (o, bajo FAT12, dos) copias adicionales de la tabla de asignación, mismasque el sistema veri�cará que se mantengan consistentes. Por otro lado, podríamanejarse una estructura de lista doblemente ligada (en vez de una lista ligadasencilla) en que cada elemento apunte tanto al siguiente como al anterior. Enambos casos, sin embargo, la sobrecarga administrativa se duplica.

5.3. Asignación indexada

Por último, tenemos la asignación indexada, el mecanismo empleado porcasi todos los sistemas de archivos modernos. En este esquema, se crea unaestructura intermedia entre el directorio y los datos, única para cada archivo: eli-nodo (o nodo de información). Cada i-nodo guarda los metadatos y la lista debloques del archivo, reduciendo la probabilidad de que se presente la corrupciónde apuntadores que mencionamos al hablar de la asignación ligada.

La sobrecarga administrativa bajo este esquema potencialmente es muchomayor: Al asignar el i-nodo, éste se crea ocupando como mínimo un clustercompleto. Para un archivo que quepa en un sólo cluster, esto es un desperdiciodel 100% de espacio; para archivos más grandes, la sobrecarga relativa dismin-uye, pero se mantiene siempre superior a la de la asignación indexada.

./img/ditaa/fs_asignacion_indexada.pngUn esquema de asignación indexada nos da un mejor manejo de caché que la

asignación ligada: Si bien en dicho caso es común guardar copia de la tabla deasignación en memoria para mayor agilidad, con la asignación indexada bastaráhacer caché únicamente de la información importante, esto es, únicamente delos archivos que estamos empleando actualmente. Al hacer caché únicamente delo que es relevante al sistema en un momento dado, se da mejor uso a un recursomás escaso (y, por tanto, valioso): La memoria.

Ahora, ¾qué pasa cuando la lista de clusters de un archivo no cabe en uni-nodo? Podemos ver este ejemplo en el archivo azul del esquema ejemplo: Eneste caso, cada i-nodo puede guardar únicamente tres apuntadores. Al tener unarchivo con cuatro clusters, se hace necesario extender el i-nodo con una listaadicional. La implementación más común de este esquema es que, dependiendodel tamaño del archivo, se empleen apuntadores con los niveles de indirecciónque vayan haciendo falta.

./img/dot/fs_apuntadores_indirectos.png¾Qué tan grande sería el archivo máximo direccionable bajo este esquema

y únicamente tres indirecciones? Supongamos cantidades que podríamos encon-trar frecuentemente hoy en día: Clusters de 4KB y direcciones de 32 bits. Estosigni�ca que en un cluster vacío caben 128 apuntadores ( 409632 ). Supongamostambién que en el i-nodo los metadatos ocupan 224 bytes, dejando espacio para100 apuntadores:

Un archivo de hasta (100 − 3) × 4KB = 388KB puede ser representadodirectamente en el i-nodo, y requeriremos de un sólo acceso a disco paraobtener su lista de clusters

36

Page 37: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Un archivo de hasta (100−3+128)×4KB = 900KB puede representarsecon el bloque de indirección sencilla, y obtener su lista de clusters nossigni�ca dos accesos a disco adicionales.

Con el bloque de doble indirección, podemos referirnos a archivos muchomás grandes:

(100− 3 + 128 + (128× 128))× 4KB = 66436KB ≈ 65MB

Sin embargo, aquí ya debe llamarnos la atención otro importante punto: Siqueremos acceder a estos 65MB, tendremos que realizar hasta 131 accesosa disco. A partir de este punto, el sistema operativo reducirá fuertementeel tiempo de acceso si puede lograr que todos los clusters que apunten aesta información estén cerca unos de otros.

Empleando triple indirección, llegamos hasta:

(100−3+128+(128×128)+(128×128×128))×2KB = 8455044KB ≈ 8GB

Esto es más de lo que puede representarse en 32 bits. La cantidad debloques que tendríamos que leer, sin embargo, para encontrar todos losclusters nos signi�carían hasta 16516 accesos a disco.

5.4. Las tablas en FAT

Volvamos al caso que estamos tomando como ejemplo, el sistema de archivosFAT. En este sistema, cada entrada del directorio apunta al primer cluster queocupa ada uno de los archivos, y se emplea un esquema de asignación ligada. Eldirectorio tiene también un campo indicando la longitud total del archivo, peroesto no es empleado para leer la información, sino para poderla presentar máságilmente al usuario.

La estructura fundamental de este sistema de archivos es la tabla de asig-nación de archivos (File Allocation Table) � Tanto que de ella toma su nombreFAT. Esta estructura ocupa los primeros sectores del disco, antes incluso deldirectorio, y por su importancia, se almacena por duplicado (los discos �exiblesson mucho menos con�ables que los discos duros, y el sistema de archivos fueintroducido antes de que la PC pudiera emplear un disco duro).

Cada entrada de la FAT mide lo que la longitud /correspondiente a su versión(12, 16 o 32 bits), y puede tener uno de cuatro valores posibles:

Libre El valor 0x000, 0x0000 o 0x00000000 (dependiendo de la versión deFAT) indica que el cluster está disponible, y puede ser asignado por elsistema de archivos cuando haga falta.

Siguiente Cuando el valor es menor hasta 0xFF6, 0xFFF6 o 0xFFFFFFF6,indica la ubicación del siguiente cluster del archivo.

Dañado Si el valor de una entrada es 0xFF7, 0xFFF7 o 0xFFFFFFF7, indicaque el cluster es un espacio del disco dañado, y no debe ser utilizado paraalmacenar datos.

37

Page 38: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Fin Los valores 0xFFF, 0xFFFF o 0xFFFFFFFF indican que se trata del últimocluster de un archivo.

Una característica que puede llamar la atención de FAT es que pareceríapermitir la fragmentación de archivos por diseño: Dado que el descriptor decada cluster debe apuntar al siguiente, podemos asumir que el caso común esque los clusters no ocuparán contiguos en el disco. Claro está, la tabla puedeapuntar a varios clusters adyacentes, pero el sistema de archivos mismo no hacenada para que así sea.

Figura 13: Ejemplo de entradas en la tabla de asignación de archivos (PeterClark)

Cuando revisamos el formato del directorio de FAT omitimos un detalleimportante: Revisamos sólamente el directorio raiz, y no mencionamos cómo esque se implementan los subdirectorios. Los subdirectorios en FAT son archivosde un tipo especial � Podemos verlos como una suerte de archivos estructurados(ver sección 2.5), gestionados por el sistema operativo. Lo único que distinguea un directorio de un archivo normal es que, en la entrada que lo describe en sudirectorio padre, el byte de atributos (0x0B) tiene activado el quinto bit.

Un directorio es almacenado en disto exactamente como cualquier otro archi-vo. Si se le asigna únicamente un cluster, y el tamaño del cluster es pequeño(2KB), podrá almacenar sólo 64 entradas, y cada cluster adicional le dará 64entradas más. Y como tal, está sujeto también a la fragmentación: Conformese agregan entradas al directorio, éste crece. Llegado el momento, requiere clus-ters adicionales. Y si un directorio termina disperso por todo el disco, resultará�como cualquier otro archivo� más lento leerlo y trabajar con él. Siempre queabramos un archivo dentro de un directorio grande, o que lo recorramos para

38

Page 39: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

abrir algún archivo en algún subdirectorio suyo, tendremos que buscar todossus fragmentos a lo largo del disco.

Ante estos dos aspectos, no podemos perder de vista la edad que tiene FAT.Otros sistemas de archivos más modernos han resuelto este problema a travésde los grupos de asignación: Los directorios del sistema son esparcidos a lolargo del volumen, y se intenta ubicar a los archivos cerca de los directoriosdesde donde son referidos29. Esto tiene por consecuencia que los archivos quepresentan cercanía temática quedan ubicados cerca unos de otros � Y dado quees probable que sean empleados aproximadamente al mismo tiempo, esto reducelas distancias que recorrerán las cabezas. Además, al esparcir los archivos, sedistribuye también mejor el espacio libre, por lo cual el impacto de los cambiosde tamaño de un archivo en lo relativo a la fragmentación se limita a los queforman parte del mismo bloque de asignación.

Los sistemas de archivos que están estructurados siguiendo esta lógica degrupos de asignación no evitan la fragmentación, pero sí la mayor parte de susconsecuencias negativas. Para mantener este esquema operando con�ablemente,eso sí, requieren de mantener disponibilidad de espacio � Al presentarse satu-ración, esta estrategia pierde efectividad. Para evitar que esto ocurra, es muyfrecuente en los sistemas Unix que haya un cierto porcentaje (típicamente cer-cano al 5%) del disco que esté disponible únicamente para el administrador �En caso de que el sistema de archivos pase del 95%, los usuarios no podránescribir ya a él, pero el administrador puede efectuar tareas de mantenimientopara volver a un rango operacional.

6. Fallos y recuperación

El sistema de archivos en el cual estamos estamos basando nuestros ejemplos,FAT, es relativamente frágil : No es difícil que se nos presente una situaciónde corrupción de metadatos, y muy particularmente, de la estructura de lastablas de asignación. Los usuarios de sistemas basados en FAT en Windowssin duda conocen a los programas CHKDSK y SCANDISK � Dos programasque implementan la misma funcionalidad base, y di�eren principalmente ensu interfaz al usuario: CHKDSK existe desde los primeros años de MS-DOS, yestá pensado para su uso interactivo en línea de comando; SCANDISK se ejecutadesde el entorno grá�co, y presenta la particularidad de que no requiere (aunquesí recomienda fuertemente) acceso exclusivo al sistema de archivos mientras seejecuta. ¾En qué basan su operación estos programas?

A lo largo de la vida de un sistema de archivos, conforme los archivos sevan asignando y liberando, van cambiando su tamaño, y conforme montamosy des-montamos al sistema de archivos, pueden ir apareciendo inconsistenciasen su estructura. En los sistemas tipo FAT, las principales (que no las únicas)inconsistencias son:

29Claro está, en el caso de los archivos que están como ligas duras desde varios directorios,pueden ubicarse sólo cerca de uno de ellos

39

Page 40: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Archivos cruzados En inglés, cross-linked �le. Recordemos que la entradaen el directorio de un archivo incluye un apuntador al primer cluster deuna cadena. Cada cadena debe ser única, esto es, ningún cluster debepertenecer a más de un archivo. Si dos archivos incluyen al mismo cluster,esto indica una inconsistencia, y la única forma de resolverla es truncar auno de los archivos en el punto inmediato anterior a este cruce.

Cadenas perdidas o huérfanas En inglés, lost clusters. Cuando hay espaciomarcado como ocupado en la tabla de asignación, pero no hay ninguna en-trada de directorio haciendo referencia a ella, el espacio está efectivamentebloqueado y, desde la perspectiva del usuario, inutilizado.

Figura 14: Inconsistencias en un sistema de archivos tipo FAT

Cada sistema de archivos podrá presentar un distinto conjunto de inconsis-tencias ante los fallos, dependiendo de sus estructuras básicas y de la maneraen que cada sistema operativo las maneja.

En la década de los 1980 comenzaron a entrar a mercado los controladoresde disco inteligentes, y en menos de diez años dominaban ya el mercado. Estoscontroladores, con buses tan disímiles como SCSI, IDE, o los más modernos,SAS y SATA, introdujeron muchos cambios que fueron disociando cada vez másal sistema operativo de la gestión física directa de los dispositivos; en la sección 7(El medio físico) abordaremos más a profundidad lo que esto ha signi�cado parael desarrollo de sistemas de archivos y algoritmos relacionados. Sin embargo,en este tema, los controladores inteligentes resultan relevantes porque, si bienantes el sistema operativo podía determinar con toda certeza si una operaciónse había realizado o no, hoy en día los controladores dan un acuse de reciboa la información en el momento en que la colocan en el caché incorporado deldispositivo � En caso de un fallo de corriente, esta información puede no habersido escrita por completo al disco.

40

Page 41: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Recordemos que las operaciones con los metadatos que conforman al sistemade archivos no son atómicas. Por poner un ejemplo, crear un archivo en unvolumen FAT requiere:

1. Encontrar una lista de clusters disponibles su�ciente para almacenar lainformación que conformará al archivo

2. Encontrar el siguiente espacio disponible en el directorio

3. Crear en el espacio encontrado una entrada con el nombre que estamosdando al archivo, apuntando al primero de los clusters

4. Marcar en la tabla de asignación la secuencia por todos estos clusters

5. Guardar los datos del archivo en cuestión en los clusters correspondientes

Cualquier fallo que se presente después del tercer paso (cuando hacemos laprimer modi�cación) tendrá como consecuencia que el archivo resulte corrupto,y muy probablemente que el sistema de archivos todo presente inconsistenciaso esté en un estado inconsistente.

6.1. Datos y metadatos

Formalmente, en el ejemplo recién mencionado, el sistema de archivos estaráconsistente siempre que se terminen los pasos 3 y 4 � La consistencia del sistemade archivos es independiente de la validez de los datos del archivo. Lo que buscael sistema de archivos, más que asegurar la integridad de los datos de uno de losarchivos, es asegurar la de los metadatos: Los datos que describen la estructura.En caso de que un usuario desconecte una unidad a media operación, es casiseguro que se presentará pérdida de información, pero el sistema de archivosdebe buscar no presentar ningún problema que ponga en riesgo operacionesposteriores o archivos no relacionados.

6.2. Veri�cación de la integridad

Cada sistema operativo incluye programas para realizar veri�cación (y, ensu caso, corrección) de la integridad de sus sistemas de archivo. En el caso deMS-DOS y Windows, estos programas son CHKDSK y SCANDISK (diferencia-dos principalmente en que el primero tiene una interfaz de línea de comando,mientras que el segundo tiene intefaz grá�ca); en los sistemas Unix, el progra-ma general se llama fsck, y típicamente emplea a asistentes según el tipo desistema a revisar � fsck.vfat, fsck.ext2, etc.

Estos programas hacen un barrido del sistema de archivos, buscando eviden-cias de inconsistencia. Esto lo hacen, en líneas generales:

Siguiendo todas las cadenas de clusters de archivos o tablas de i-nodos,y veri�cando que no haya archivos cruzados (compartiendo erróneamentebloques)

41

Page 42: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Veri�cando que todas las cadenas de clusters, así como todos los directo-rios, sean alcanzables y sigan una estructura válida

Recalculando la correspondencia entre las estructuras encontradas y losdiferentes bitmaps y totales de espacio vacío

Estas operaciones son siempre procesos intensivos y complejos. Como re-quieren una revisión profunda del volúmen entero, es frecuente que duren entredecenas de minutos y horas. Además, para poder llevar a cabo su tarea debenejecutarse teniendo acceso exclusivo al volumen a revisar, lo cual típicamentesigni�ca colocar al sistema completo en modo de mantenimiento.

Dado el elevado costo que tiene veri�car el volumen entero, en la décadade 1990 surgieron varios esquemas orientados a evitar la necesidad de invocara estos programas de veri�cación: Las actualizaciones suaves, los sistemas dearchivos con bitácora, y los sistemas de archivos estructurados en bitácora.

6.3. Actualizaciones suaves (soft updates)

Este esquema aparentemente es el más simple de los que presentaremos, perosu implementación resultó mucho más compleja de lo inicialmente estimado, y enbuena medida por esta causa hoy en día no ha sido empleado más ampliamente.La idea básica detrás de este esquema es estructurar el sistema de archivos deuna forma más simple y organizar las escrituras al mismo de modo que el estadoresultante no pueda ser inconsistente, ni siquiera en caso de fallo, y de exigirque todas las operaciones de actualización de metadatos se realicen de formasíncrona.30

Ante la imposibilidad de tener un sistema siempre consistente, esta exigenciase relajó para permitir inconsistencias no destructivas: Pueden presentarse cade-nas perdidas, dado que esto no pone en riesgo a ningún archivo, sólo disminuyeel espacio total disponible.

Esto, aunado a una reestructuración del programa de veri�cación (fsck) co-mo una tarea ejecutable en el fondo y en una tarea de recolector de basura, queno requiere intervención humana (dado que no pueden presentarse inconsisten-cias destructivas), permite que un sistema de archivos que no fue limpiamentedesmontado pueda ser montado y utilizado de inmediato, sin peligro de pérdidade información o de corrupción.

Al requerir que todas las operaciones sean síncronas, parecería que elrendimiento global del sistema de archivos tendría que verse afectado, pero porciertos patrones de acceso muy frecuentes, resulta incluso bene�cioso. Al man-tenerse un ordenamiento lógico de las dependencias de todas las operacionesque están pendientes, el sistema operativo puede combinar a muchas de estas yreducir de forma global las escrituras a disco � Por ejemplo, si varios archivosson creados en el mismo directorio de forma consecutiva, cada uno de ellos através de una llamada open() independiente, el sistema operativo combinará

30Esto es, no se le reporta éxito en alguna operación de archivos al usuario sino hasta queésta es completada y grabada a disco

42

Page 43: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

a todos estos accesos en uno sólo, reduciendo el número de llamadas. Al crearun archivo de uso temporal, un patrón frecuente en sistemas Unix es solicitar alsistema la creación de un archivo, abrir el archivo recién creado, y ya teniendoal descriptor de archivo, eliminarlo � En este caso, con estas tres operacionesseguidas, soft updates podría ahorrarse por completo la escritura a disco.

Esta estrategia fue implementada hacia 2002 en el sistema operativo FreeB-SD, y fue adoptada por los principales sistemas de la familia *BSD, aunqueNetBSD lo retiró en 2012, pre�riendo el empleo de sistemas con bitácora �Muy probablemente, la lógica destrás de esta decisión sea la cantidad de sis-temas que emplean esta segunda estrategia que veremos a continuación, y locomplejo de mantener dentro del núcleo dos estrategias tan distintas.

Además de esto, esta estrategia también se vio impactada por los contro-ladores inteligentes: Si un disco está sometido a carga intensa, no hay garantíapara el sistema operativo del órden que seguirán en verdad sus solicitudes, quese forman en el caché propio del disco. Dado que las actualizaciones suaves de-penden tan profundamente de con�ar en el ordenamiento, esto introduce aúnmás complejidad en el proceso.

6.4. Sistemas de archivo con bitácora (journaling �le sys-

tems)

Este esquema tiene su origen en el ámbito de las bases de datos distribuídas.Consiste en separar un área del volumen y dedicarla a llevar una bitácora contodas las transacciones de metadatos.31 Una transacción es un conjunto deoperaciones que deben aparecer como atómicas.

La bitácora es generalmente implementada como una lista ligada circular,con un apuntador que indica cuál fue la última operación realizada exitosamente.Periódicamente, o cuando la carga de transferencia de datos disminuye, el sis-tema veri�ca qué operaciones quedan pendientes, y avanza sobre la bitácora,marcando cada una de las transacciones conforme las realiza.

En caso de tener que recuperarse de una condición de fallo, el sistema op-erativo sólo tiene que leer la bitácora, encontrar cuál fue la última operacióncomprometida, y aplicar las restantes.

Una restricción de este esquema es que las transacciones guardadas en labitácora deben ser idempotentes �Esto es, si una de ellas es efectuada dos veces,el efecto debe ser exactamente el mismo que si hubiera sido efectuada una sólavez. Por poner un ejemplo, no sería válido que una transacción indicara �Agregaral directorio x un archivo llamado y�, dado que si la falla se produce después deprocesar esta transacción pero antes de avanzar al apuntador de la bitácora, eldirectorio x quedaría con dos archivos y � Una situación inconsistente. En todocaso, tendríamos que indicar �registrar al archivo y en la posición z del directoriox �; de esta manera, incluso si el archivo ya había sido registrado, puede volversea registrar sin peligro.

31Existen implementaciones que registran también los datos en la bitácora, pero tanto por eltamaño que ésta requiere como por el impacto en velocidad que signi�ca, son poco utilizadas.

43

Page 44: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

./img/dot/fs_journaling.pngEste esquema es el más implementado hoy en día, y está presente en casi

todos los sistemas de archivos modernos. Si bien con un sistema con bitácora nohace falta veri�car el sistema de archivos completo tras una detención abrupta,esta no nos exime de que, de tiempo en tiempo, el sistema de archivos seaveri�cado: Es altamente recomendado hacer una veri�cación periódica en casode presentarse alguna corrupción, sea por algún bug en la implementación, fallosen el medio físico, o factores similarmente poco frecuentes.

6.5. Sistemas de archivos estructurados en bitácora (log-structured �le systems)

Si llevamos el concepto del sistema de archivos con bitácora a su límite, ydesignamos a la totalidad del espacio en el volumen como la bitácora, hablamosde un sistema de archivos estructurado en bitácora. Obviamente, este tipo desistemas de archivos presenta una organización completa radicalmente diferentede los sistemas de archivo tradicionales.

Las ideas básicas detrás de la primer implementación de un sistema dearchivos de esta naturaleza (Ousterhut y Rosenblum, 1992) apuntan al empleoagresivo de caché de gran capacidad, y con un fuerte mecanismo de recolecciónde basura, reacomodando la información que esté más cerca de la cola de labitácora (y liberando toda aquella que resulte redundante).

Este tipo de sistemas de archivos facilita las escrituras, haciéndolas siempresecuenciales, y buscan �a través del empleo del caché ya mencionado� evitarque las cabezas tengan que desplazarse con demasiada frecuencia para recuperarfragmentos de archivos.

Una consecuencia directa de esto es que los sistemas de archivos estructura-dos en bitácora fueron los primeros en ofrecer fotografías (snapshots) del sistemade archivos: Es posible apuntar a un momento en el tiempo, y �con el sistema dearchivos aún en operación� montar una copia de sólo lectura con la informacióndel sistema de archivos completa (incluyendo los datos de los archivos).

Los sistemas de archivo estructurados en bitácora, sin embargo, no estánoptimizados para cualquier carga de trabajo. Por ejemplo, una base de datosrelacional, en que cada uno de los registros es típicamente actualizados de formaindependiente de los demás, y ocupan apenas fracciones de un bloque, resul-taría tremendamente ine�ciente. La implementación referencia de Ousterhut yRosenblum fue parte de los sistemas *BSD, pero dada su tendencia a la extremafragmentación, fue eliminado de ellos.

Este tipo de sistemas de archivo ofrece características muy interesantes,aunque es un campo que aún requiere de mucha investigación e implementa-ciones ejemplo. Muchas de las implementaciones en sistemas libres han llegadoa niveles de funcionalidad aceptables, pero por diversas causas han ido perdi-endo el interés o el empuje de sus desarrolladores, y su ritmo de desarrollo hadecrecido. Sin embargo, varios conceptos muy importantes han nacido bajo estetipo de sistemas de archivos, algunos de los cuales (como el de las fotografías)se han ido aplicando a sistemas de archivo estándar.

44

Page 45: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Por otro lado, dado el fuerte crecimiento que están registrando los mediosde almacenamiento de estado sólido (en la sección 7.2 abordaremos algunas desus características), y dado que estos sistemas aprovechan mejor varias de suscaracterísticas, es probable que el interés en estos sistemas de archivos resurja.

7. El medio físico

Hasta este punto, y siguiendo las prácticas a que la realidad de los últimos40 años nos han acostumbrado, hemos empleado el término genérico de discopara nuestra discusión.

En esta sección, abordaremos en primer término las características prin-cipales del medio aún prevalente, los discos duros magnéticos rotativos, ypresentaremos una introducción a las diferencias que encontraremos en otrosmedios, como los discos ópticos y los de estado sólido, y las implicaciones queéstos tienen sobre lo que venimos discutiendo a lo largo de la unidad.

7.1. Discos magnéticos rotativos

El principal medio de almacenamiento que hemos empleado en los últimos 40años es el disco magnético. Hay dos tipos diferentes de disco, aunque la lógicade su funcionamiento es la misma: Los discos duros y los discos �exibles (o�oppies).

La principal diferencia entre estos es que los primeros son típicamente alma-cenamiento interno en los equipos de cómputo, y los segundos están pensadospara ser almacenamiento transportable. Los discos duros tienen mucha mayorcapacidad y son mucho más rápidos, pero a cambio de ello, mucho más sensiblesa la contaminación por partículas de polvo y a daños mecánicos.

Un disco �exible es una hoja de material plástico, muy similar al empleadoen las cintas magnéticas, resguardado por un estuche plástico. Al insertarse eldisco en la unidad lectora, esta lo hace girar sujetándolo por el centro, y lascabezas lectoras32 se deslizan por una ventana que tiene el estuche. La mayorparte de los discos �exibles presentaban velocidades de rotación de entre 300 y400 revoluciones por minuto.

A lo largo de más de 20 años se presentaron muy diferentes formatos físicossiguiendo esta misma lógica, designándose principalmente por su tamaño (enpulgadas). La capacidad de los discos, claro está, fue creciendo con el paso delos años � Esto explica la aparente contradicción de que los discos más chicosfísicamente tenían más capacidad que los más grandes.

El nombre de disco duro o disco �exible se debe al medio empleado para elalmacenamiento de la información: Mientras que los discos �exibles emplean,como mencionamos, una hoja plástica �exible, los discos duros son metálicos.Los discos están permanentemente montados sobre un eje, lo que permite quetengan una velocidad de giro entre 20 y 50 veces más rápida que los discos

32en un principio una sola; posteriormente aparecieron las unidades de doble cara, con doscabezas lectoras

45

Page 46: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Cuadro 1: Principales formatos de disco �exible que se popularizaron en el mer-cado

8 pulgadas 5.25 pulgadas 3.5 pulgadasFecha de introducción 1971 1976 1982Capacidad 150KB-1.2MB 110KB-1.2MB 264KB-2.88MBVelocidad (kbit/s) 33 125-500 250-1000Pistas por pulgada 48 48-96 135

�exibles � Entre 4,200 y 15,000 revoluciones por minuto (RPM), esto es, conuna demora rotacional de entre 2 y 7.14 milisegundos..

Además, a excepción de algunos modelos tempranos, los discos duros consti-tuyen un paquete cerrado y sellado que incluye las cabezas de lectura y escritura,y toda la electrónica de control. Esto permite que los discos duros tengan den-sidades de almacenamiento y velocidades de transmisión muy superiores a lade los discos �exibles: Los primeros discos duros que se comercializaron paracomputadoras personales eran de 10MB (aproximadamente 70 discos �exiblesde su época), y actualmente hay ya discos de 4TB. La velocidad máxima detransferencia sostenida hoy en día es superior a los 100MB por segundo, 100veces más rápido que la última generación de discos �exibles.

Para medir la e�ciencia de un disco duro, el otro dato importante es el tiempoque toma la cabeza en moverse a través de la super�cie del disco. Hoy en día,las velocidades más comunes son de 20ms para un recorrido completo (desdeel primer hasta el último sector), y entre 0.2ms y 0.8ms para ir de un cilindroal inmediato siguiente. Como punto de comparación, el recorrido completo enuna unidad de disco �exible toma aproximadamente 100ms, y el tiempo de uncilindro al siguiente va entre 3 y 8ms.

7.1.1. Notación C-H-S

Independientemente de la tecnología, la manera en que el sistema operativohace referencia a la ubicación de un bloque de información en el disco es conoci-do como la notación C-H-S � Indicando el cilindro, cabeza y sector (Cylinder,Head, Sector) de la información. Esto permite mapear el espacio de almace-namiento de un disco a un espacio tridimensional, con cual resulta trivial ubicara alguna estructura en una región contigua.

La cabeza indica a cuál de las super�cies del disco nos referimos; en un disco�exible, tenemos sólo dos cabezas, pero en un disco duro es común tener variosplatos paralelos. Todas las cabezas van �jas a un mismo motor, y no puedenmoverse de forma independiente.

El cilindro indica la distancia del centro a la orilla del disco.Un sector es un segmento de arco de uno de los cilindros.Es frecuente ver referencias a una pista (track), esto es, a un cilindro en una

de las super�cies del disco � Un archivo almacenado secuencialmente ocupa

46

Page 47: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 15: Coordenadas de un disco duro, presentando cada uno de sus sectoresen C-H-S (Silberschatz, p.458)

sectores adyacentes a lo largo de una misma pista.

7.1.2. Algoritmos de plani�cación de acceso a disco

Como hemos visto, las transferencias a disco son uno de los procesos máslentos de los que gestiona el sistema operativo. Cuando éste tiene varias solici-tudes de transferencia pendientes, resulta importante encontrar un mecanismoóptimo para realizar la transferencia, minimizando el tiempo de demora. Pre-sentaremos a grandes rasgos tres de los algoritmos de plani�cación de accesoa disco � Pero abordaremos también el por qué estos hoy en día casi no sonempleados.

Como con los demás escenarios que hemos abordado analizando algoritmos,para analizar su rendimiento tenemos que presentar una cadena de referencia.En este caso, trabajaremos con un disco hipotético de 200 cilindros, la cadenade solicitudes 98, 183, 37, 122, 14, 124, 65, 67, y teniendo la cabeza al iniciode la operación en el cilindro 53.

Veamos, pues, de forma grá�ca la respuesta que presentarían los distintosalgoritmos ante la cadena de referencia dada, y procedamos a comparar a losalgoritmos en cuestión.

FIFO Al igual que cuando hablamos de algoritmos de asignación de procesadory de reemplazo de páginas, el primero y más sencillo de implementar esel FIFO � Primero en llegar, primero en servirse. Este algoritmo puedeverse como muy justo, aunque sea muy poco e�ciente: El movimiento totalde cabezas para el caso planteado es de 640 cilindros, equivalente a poco

47

Page 48: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 16: Movimientos de las cabezas bajo los diferentes algoritmos plani�-cadores de acceso a disco, indicando la distancia total recorrida por la cabezabajo cada uno, iniciando con la cabeza en la posición 53. Para SCAN, LOOK yC-SCAN, asumimos que iniciamos con la cabeza en dirección decreciente.

más que recorrer de extremo a extremo el disco completo tres veces. Estoes, despreciando la demora rotacional y el tiempo que le toma al brazodetenerse por completo antes de volver a moverse, esta lectura tomaría unmínimo de 60ms, siendo el recorrido completo del disco 20ms.

Podemos encontrar al causante de buena parte de esta demora en la quintaposición de la cadena de referencia: Entre solicitudes para el cilindro 122y 124, tenemos una solicitud al 14, que signi�ca un desplazamiento de(122− 14) + (124− 14) = 218 sectores.

SSTF Ahora bien, si el factor que impone la principal demora es el movimientode la cabeza, el segundo algoritmo busca reducir al mínimo el movimientode la cabeza: SSTF (Shortest Seek Time First, Tiempo de búsqueda máscorto a continuación) es el equivalente en este ámbito del Shortest JobFirst que vimos en plani�cación de procesos � con la ventaja de que noestamos prediciendo comportamiento futuro, sino que tenemos ya la listade solicitudes pendientes. Empleando SSTF, el tiempo de desplazamientopara este caso se reduce a tan sólo 236 cilindros � muy cerca del mínimoabsoluto posible.

Una desventaja de SSTF es que puede llevar a la inanición: Si hay una

48

Page 49: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

gran densidad de solicitudes para cilindros en determinada zona del disco,una solicitud para un cilindro alejado puede quedar a la espera inde�nida-mente. Ejempli�quemo esto con una serie de solicitudes distinta a la queestamos tomando como referencia: Si el sistema tuviera la cadena de solic-itudes 15, 175, 13, 20, 14, 32, 40, 5, 6, 7, SSTF penalizaría a la segundasolicitud (175) hasta terminar con los cilindros bajos.

Familia de algoritmos de elevador (SCAN, LOOK, C-SCAN) Hablamosen este tercer lugar no de un algoritmo, sino que de una familia, dado queparten de la misma idea, pero con modi�caciones menores llevan a que elpatrón de atención resultante sea muy distinto.

El planteamiento base para el arlgoritmo básico de elevador (SCAN) buscaevitar la inanición, minimizando al mismo tiempo el movimiento de lascabezas. Su lógica marca que la cabeza debe recorrer el disco de extremoa extremo, como si fuera un elevador en un edi�cio alto, atendiendo a todaslas solicitudes que haya pendientes en su camino. Si bien los recorridos paraciertos patrones pueden resultar en mayores desplazamientos a los quedaría SSTF, la garantía de que ningún proceso esperará inde�nidamentelo hace muy atractivo.

Atender la cadena de referencia con la que estamos trabajando bajo SCAN,asumiendo un estado inicial descendente (esto es, la cabeza está en elcilindro 53 y va bajando) da un recorrido total de 236 cilindros; empleandoLOOK, se reduce a 208 cilindros, y evita el movimiento innecesario hastael límite del disco.

Una primer (y casi obvia) modi�cación a este algoritmo sería, cada vez quela cabeza se detenga para satisfacer una solicitud, veri�car si hay algunaotra solicitud pendiente en la dirección actual, y de no ser así, emprenderel camino de regreso sin llegar a la orilla del disco. Esta modi�cación esfrecuentemente descrita como LOOK.

Sin embargo, el patrón de atención a solicitudes de SCAN y LOOK dejanqué desear: Al llegar a un extremo del recorrido, es bastante probable queno haya ninguna solicitud pendiente en la primer mitad del recorrido devuelta (dado que acaban de ser atendidas). El tiempo que demora atendera una solictud se compone de la suma del desplazamiento de la cabezay la demora rotacional (que depende de cuál sector del cilindro nos fuesolicitado). Para mantener una tasa de transferencia más predecible, elalgoritmo C-SCAN (SCAN Circular) realiza las operaciones en el discoúnicamente en un sentido � Si el algoritmo lee en órden descendente, alllegar a la solicitud del cilindro más bajo, brincará de vuelta hasta el másalto para volver a iniciar desde ahí. Esto tiene como resultado, claro, queel recorrido total aumente (aumentando hasta los 326 para nuestra cadenade referencia.

49

Page 50: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

7.1.3. Limitaciones de los algoritmos presentados

Ahora, mencionamos que estos algoritmos hoy en día ya casi no se usan.Hay varias razones para ello. En primer término, todos ellos están orientadosa reducir el traslado de la cabeza, pero ignoran la demora rotacional. Comovimos, en los discos duros actuales, la demora rotacional va entre 1

10 y 13 del

tiempo total de recorrido de la cabeza. Y si bien el sistema podría consideraresta demora como un factor adicional al plani�car el siguiente movimiento deforma que se redujera el tiempo de espera, los algoritmos descritos obviamenterequieren ser replanteados por completo.

Por otro lado, el sistema operativo muchas veces requiere dar distintas prior-idades a los diferentes tipos de solicitud. Por ejemplo, sería esperable dar pref-erencia a los accesos a memoria virtual por encima de las solicitudes de abrirun nuevo archivo. Estos algoritmos tampoco permiten expresar esta necesidad.

Pero el tercer punto es mucho más importante aún: Del mismo modo enque los procesadores se van haciendo más rápidos y que la memoria es cadavez de mayor capacidad, los controladores de discos también son cada vez másinteligentes, y esconden cada vez más información del sistema operativo, por locual éste cada vez más carece de la información necesaria acerca del acomodoreal de la información como para plani�car correctamente sus accesos.

Uno de los cambios más importantes en este sentido fue la transición delempleo de la notación C-H-S al esquema de direccionamiento lógico de bloques(Logical Block Addressing, LBA) a principios de los 1990. Hasta ese momento, elsistema operativo tenía información de la ubicación física de todos los bloquesen el disco.

Una de las desventajas, sin embargo, de este esquema es que el mismo BIOStenía que conocer la geometría de los discos � Y el BIOS presentaba límitesduros en este sentido: Principalmente, no le era posible referenciar más alláde 64 cilindros. Al aparecer la interfaz de discos IDE (Electrónica integrada aldispositivo) e ir reemplazando a la ST-506, se introdujo LBA, que en un primertérmino de la dirección C-H-S a una dirección lineal, presentando el disco alsistema operativo ya no como un espacio tridimensional, sino que como un granarreglo de bloques. En este primer momento, la equivalencia de una direcciónC-H-S a una LBA era:

LBA = ((C ×HPC) +H)× SPT + S − 1

Donde HPC es el número de cabezas por cilindro, SPT es el número desectores por pista.

LBA signi�có mucho más que una nueva notación � Marcó el inicio de latransferencia de inteligencia y control del CPU al controlador de disco. Podemosver el impacto de esto directamente en dos factores:

Sectores variables por cilindro En casi todos los discos previos a LBA33,33Como muy notorias excepciones tenemos a las unidades de disco Commodore 1541 y

Macintosh Superdrive, que empleaban velocidad variable por cilindro para aprovechar mejorel medio magnético; en ambos casos, sin embargo, terminaron desapareciendo por cuestionesde costos y de complejidad al sistema

50

Page 51: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

el número de sectores por pista se mantenía constante, se tratara de laspistas más internas o más externas. Esto signi�ca que, a igual calidad de lacobertura magnética del medio, los sectores ubicados en la parte exteriordel disco desperdiciaban mucho espacio (ya que el área por bit era muchomayor).

Figura 17: Disco formateado bajo densidad de bits por zona, con más sectorespor pista en las pistas exteriores. (Imagen: Wikipedia)

Bajo LBA, los discos duros comenzaron a emplear un esquema de densi-dad de bits por zona (zone bit recording), con la que en los cilindros másexternos se aumenta.

Reubicación de sectores Conforme avanza el uso de un disco, es posible quealgunos sectores vayan resultando difíciles de leer por daños microscópicosa la super�cie. El controlador es capaz de detectar estos problemas, y dehecho, casi siempre puede rescatar la información de dichos sectores deforma imperceptible al usuario.

Los discos duros ST-506 típicamente venían acompañados por una lista dedefectos, una lista de coordenadas C-H-S que desde su fabricación habíanpresentado errores. El usuario debía ingresar estos defectos al formatearel disco a bajo nivel.

Hoy en día, el controlador del disco detecta estos fallos y se los brinca,presentando un mapa LBA lineal y completo. Los discos duros típicamentevienen con cierto número de sectores de reserva para que, conforme sevan detectando potenciales daños, estos puedan reemplazarse de formatransparente.

Sumemos a esto que los controladores de disco tienen ya incluso caché paralas operaciones de lectura y escritura � El controlador del disco es hoy endía capaz de implementar estos mismos algoritmos de forma completamenteautónoma del sistema operativo.

51

Page 52: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Resulta claro que, dados estos cambios en la manera en que hacemos referen-cia a los bloques del disco, el sistema operativo no cuenta ya con la informaciónnecesaria para emplear los algoritmos de plani�cación de acceso a disco.

7.2. Almacenamiento en estado sólido

Desde hace cerca de una década va creciendo consistentemente el uso demedios de almacenamiento de estado sólido � Esto es, medios sin partesmóviles. Las características de estos medios de almacenamiento son muy dis-tintas de las de los discos. Si bien las estructuras que emplean hoy en día prác-ticamente todos los sistemas de archivos en uso mayoritario están pensadas yestructuradas siguiendo la lógica de los medios magnéticos rotativos, la necesi-dad de emplear las estructuras adecuadas es clara. Este es indudablemente unárea bajo intensa investigación y desarrollo, y que seguramente nos ofreceráimportantes novedades en los próximos años.

Lo primero que llama la atención de estos medios de almacenamiento es que,a pesar de ser fundamentalmente distintos a los discos magnéticos, se presentanante el sistema operativo como si fueran lo mismo: En lo que podría entendersecomo un esfuerzo para ser utilizados pronto y sin cambios, se conectan a través dela misma interfaz y empleando la misma semántica que un disco rotativo. Esto nosólo evita que se aprovechen sus características únicas, adoptando restriccionesy criterios de diseño que ahora resultan indudablemente arti�ciales, sino queincluso se exponen a mayor stress por no emplearse de la forma que les resultaríanatural. Antes de ver por qué, veamos un poco los tipos de discos de estado solidoque hay; esto nos dará pie a entender las características a las que en este párrafohacemos referencia.

Al hablar de la tecnología sobre la cual se implementa este tipo de almace-namiento, encontraremos dos medios principales:

NVRAM Unidades RAM No Volátil. Almacenan la información en memoriaRAM estándar, con un respaldo de batería para mantener la informacióncuando se desconecta la corriente externa. Las primeras unidades de estadosólido eran de este estilo; hoy en día son poco comunes en el mercado, perosiguen existiendo.

Su principal ventaja es la velocidad y durabilidad: El tiempo de accesoo escritura de datos es el mismo que el que esperaríamos de la memoriaprincipal del sistema, y al no haber demoras mecánicas, este tiempo es elmismo independientemente de la dirección que se solicite.

Su principal desventaja es el precio: En líneas generales, la memoria RAMes, por volumen de almacenamiento, cientos de veces más cara que el mediomagnético. Y si bien el medio no se degrada con el uso, la batería sí, loque podría poner en peligro a la supervivencia de la información.

Estas unidades típicamente se instalan internamente como una tarjeta deexpansión.

52

Page 53: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 18: Unidad de estado sólido basado en RAM: DDRdrive X1 (Imagen:Wikipedia)

Memoria �ash Derivada de los EEPROM (Electrically Erasable ProgrammableRead-Only Memory, Memoria de Sólo Lectura Programable y BorrableEléctricamente). Los EEPROM tienen la característica de que, además delectura y escritura, hay un tercer tipo de operación que deben implemen-tar: El borrado. Un EEPROM ya utilizado debe borrarse antes de volversea escribir a él. La principal característica que distingue a las memorias�ash de los EEPROMs tradicionales es que el espacio de almacenamientoestá dividido en páginas o bloques, y el controlador puede leer, borrar oescribir a cada uno de ellos por separado.

El uso de dispositivos �ash para almacenamiento de información inicióhacia 1995 como respuesta a las necesidades de las industrias aeroespacialy militar, dada la frecuencia de los daños a la información que presentabanlos medios magnéticos por la vibración. Hoy en día hay dispositivos �ashde muy bajo costo y capacidad, aunque presentan una gran variabilidadtanto en su tiempo de acceso como en su durabilidad. En este sentido,podemos hablar de dos tipos principales de dispositivos �ash:

Almacenamiento primario (SSD) Las llamadas formalmente unidadde estado sólido (Solid State Drive)34 son unidades Flash de altavelocidad y capacidad, y típicamente presentan una interfaz similara la que tienen los discos duros (hoy en día, la más común es SATA).

Su velocidad de lectura es muy superior y su velocidad de escritura(incluyendo el borrado) es comparable a la de los discos magnéticos.Su precio por el mismo volumen de almacenamento es entre 5 y 10veces el de los discos magnéticos.

Podemos encontrar este tipo de unidades tanto como unidades inde-pendientes en servidores, equipos de alto desempeño e incluso algunassubportátiles (netbooks) o como un componente de la tarjeta madreen dispositivos móviles como teléfonos y tabletas.

34Un error muy común es confundir la D con Disk, que denotaría que llevan un disco, unmedio rotativo

53

Page 54: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 19: Unidad de estado sólido basado en Flash con interfaz SATA (Imagen:Wikipedia)

Transporte de archivos Esta tecnología también está presente en lasdiversas unidades extraíbles o móviles, como las unidades USB, SD,Memory Stick, Compact Flash, etc. La principal diferencia entre es-tas son los diferentes conectores que emplean; todas estas tecnologíaspresentan dispositivos que varían fuertemente en capacidad, veloci-dad y durabilidad.

Figura 20: Unidad de estado sólido basado en Flash con interfaz USB (Imagen:Wikipedia)

Independientemente del tipo, las unidades de estado sólido presentan ven-tajas ante los discos rotativos, como un muy bajo consumo eléctrico, operacióncompletamente silenciosa, y resistencia a la vibración o a los golpes. Además, elmedio es verdaderamente de acceso aleatorio: Al no ser ya un disco, desaparecentanto la demora de movimiento de cabezas como la rotacional.

54

Page 55: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

7.2.1. Desgaste del medio

La memoria Flash presenta patrons de desgaste muy distintos de los quepodemos ver en otros medios. La memoria Flash tiene capacidad de aguantarun cierto número de operaciones de borrado por página.35 Las estructuras tradi-cionales de sistemas de archivos basados en disco concentran una gran cantidadde modi�caciones en ciertas regiones clave: Las tablas de asignación y directoriosregistran muchos más cambios que la región de datos.

Casi todos los controladores de discos Flash cuentan con mecanismos denivelamiento de escrituras (write leveling). Este mecanismo busca reducir eldesgaste focalizado modi�cando el mapeo de los sectores que ve el sistema oper-ativo respecto a los que son grabados en verdad en el medio: En vez de actualizarun bloque (por ejemplo, un directorio) en su lugar, el controlador le asigna unnuevo bloque de forma transparente, y marca el bloque original como libre.

Los mecanismos más simples de nivelamiento de escrituras lo hacen única-mente intercambiando los bloques libres con los recién reescritos; mecanismosmás avanzados buscan nivelar el nivel de reescritura en toda la unidad reubi-cando también a los bloques que típicamente sólo se leen.

7.2.2. Emulación de discos

Hoy en día, la casi totalidad de medios de estado sóldo se presentan ante elsistema con una interfaz que emula la de los discos, la FTL (Flash TranslationLayer, Capa de Traducción de Flash). La ventaja de esta emulación es que nohizo falta desarrollar controladores adicionales para comenzar a emplear estosmedios. La desventaja, sin embargo, es que al ocultarse el funcionamiento realde las unidades de estado sólido, el sistema operativo no puede aprovechar lasventajas estructurales � Y más importante aún, no puede evitar las debilidadesinherentes al medio.

Uno de los ejemplos más claros de esta falta de control real del medio lailustra el artículo de Valerie Aurora (2009), que menciona que tanto la pocainformación públicamente disponible acerca del funcionamiento de los contro-ladores como los patrones de velocidad y desgaste de los mismos apuntan aque la estructura subyacente de casi todos los medios de estado sólido es la deun sistema de archivos estructurado en bitácora. Aurora indica que hay variasoperaciones que no pueden ser traducidas e�cientemente a través de esta capade emulación, y que seguramente permitirían un mucho mejor aprovechamientodel medio. Como mencionamos en la sección 6.5 (Sistemas de archivo estruc-turados en bitácora), si bien varios de estos sistemas de archivos han presentadoimplementaciones completamente utilizables, la falta de interés ha llevado a quemuchos de estos proyectos sean abandonados.

En su artículo de 2012, Neil Brown apunta a que Linux tiene una interfazapta para hablar directamente con dispositivos de estado sólido, llamada mtd� memory technology devices, dispositivos de tecnología de memoria.

35Dependiendo de la calidad, va entre las 3,000 y 100,000

55

Page 56: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Como lo mencionamos al inicio de esta sección, si bien los discos duros se hanempleado por ya 50 años y los sistemas de archivos están claramente desarrol-lados para aprovechar sus detalles físicos y lógicos, el uso de los dispositivos deestado sólido apenas está despegando en la última década. Y si bien esta primeraproximación que nos permite emplear esta tecnologíá transparentemente essu�cientemente buena para muchos de los usos básicos, sin duda hay espaciopara mejorar. Este es un tema que seguramente brinda amplio espacio parainvestigación y desarrollo para los próximos años.

8. Manejo avanzado de volúmenes

En la sección 4 (Plasmando la estructura en el dispositivo) presentamos muyescuetamente al concepto de volumen. Mencionamos que un volumen típica-mente coincide con una partición, aunque no siempre es el caso � Y no profun-dizamos más al respecto. En esta sección describiremos uno de los mecanismosen que podemos combinar diferentes dispositivos físicos en un sólo volumen,y cómo �bajo las diferentes modalidades que presentaremos� lleva a ganar encon�abilidad, rendimiento y espacio disponible.

Abordaremos un esquema llamado RAID, Arreglo Redundante de DiscosBaratos (Redundant Array of Inexpensive Disks)36, propuesto en 1988 por DavidPatterson, Garth Gibson y Randy Katz ante el diferencial que se presentaba (yse sigue presentando) entre el avance en velocidad y con�abilidad del cómputoen relación al almacenamiento magnético. Bajo los esquemas RAID queda so-breentendido que los diferentes discos que forman parte de un volumen son delmismo tamaño. Si se remplaza un disco de un arreglo por uno más grande, lacapacidad en exceso que tenga éste sobre los demás discos será desperdiciada.

Por muchos años, los arreglos RAID se hacían a través de controladores ded-icados, presentándose como un dispositivo único al sistema operativo. Hoy endía, prácticamente todos los sistemas operativos incluyen la capacidad de in-tegrar varias unidades independientes en un arreglo por software; esto conllevaun impacto en rendimiento, aunque muy pequeño. Hay también, y abordare-mos algunas de estas implementaciones hacia el �nal de esta sección, variasimplementaciones derivadas de RAID que han incorporado conceptos de capassuperiores en algunos sistemas operativos modernos.

RAID no es un sólo esquema, sino que es un conjunto de esquemas, cada unode ellos diseñado para mejorar distintos aspectos del almacenamiento en discos.Veamos las características de los principales niveles en uso hoy en día.

8.1. RAID 0: División en franjas

Este esquema nos brinda una mejoría tanto en espacio total, dado que pre-senta a un volumen grande en vez de varios discos probablemente más pequeños,

36Ocasionalmente se presenta a RAID como acrónimo de Arreglo Redundante de Discos

Independientes (Redundant Array of Independent Disks)

56

Page 57: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

simpli�cando la tarea del administrador, como de velocidad, dado que las lec-turas y escrituras al volumen ya no estarán sujetas al movimiento de una solacabeza, sino que habrá una cabeza independiente por cada uno de los discos quetengamos en el volumen.

Figura 21: Cinco discos organizados en RAID 0

Los discos que participan en un volumen RAID 0 no son sencillamente con-catenados, sino que los datos son divididos en franjas (en inglés, el proceso seconoce como striping, de la palabra stripe, franja; algunas traducciones al es-pañol se re�eren a este proceso como bandeado). Esto hace que la carga searepartida de forma uniforme entre todos los discos, y asegura que todas lastransferencias mayores al tamaño de una franja provengan de más de un discoindependiente.

Figura 22: División de datos en franjas

La con�abilidad del volumen, sin embargo, disminuye respecto a si cada unode los discos se manejara por separado: Basta con que uno de los discos presentedaños para que la información contenida en el volumen se pierda.

Puede construirse un arreglo bajo RAID nivel 0 con un mínimo de dos discos.

8.2. RAID 1: Espejo

Este nivel está principalmente orientado a aumentar la con�abilidad de lainformación: Los datos son grabados de forma simultánea e idéntica en todoslos discos que formen parte del volumen. El costo de mantener los datos enespejo, claro está, es el del espacio empleado: En su con�guración habitual, dedos discos por volumen, el 50% del espacio de almacenamiento se pierde porfungir como respaldo del otro 50%.

57

Page 58: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

La velocidad de acceso a los datos bajo RAID 1 es mayor a la que tendríamoscon un disco tradicional: Basta con que obtengamos la respuesta de uno de losdiscos; el controlador RAID (sea el sistema operativo o una implementación enhardware) puede incluso programar las solicitudes de lectura para que se vayanrepartiendo entre ambas unidades. La velocidad de escritura se ve levementereducida, dado que hay que esperar a que ambos discos escriban la información.

Figura 23: Dos discos organizados en RAID 1

Un arreglo RAID nivel 1 se construye típicamente con dos discos.

8.3. Los niveles 2, 3 y 4 de RAID

Los siguientes tres niveles de RAID combinan propiedades de los primerosjunto con un algoritmo de veri�cación de integridad y corrección de errores.Estos han caído casi por completo en el desuso dado que los otros niveles, ymuy en particular el nivel 5, ofrecen las mismas características, pero con mayorcon�abilidad

8.4. RAID 5: Paridad dividida por bloques

El nivel 5 de RAID proporciona un muy buen equilibrio respecto a las car-acterísticas que venimos mencionando: nos brinda el espacio total de almace-namiento de todos los discos que formen parte del volumen menos uno. Paracada una de las franjas, RAID5 calcula un bloque de paridad. Ahora, este bloquede paridad no siempre va al mismo disco, sino que se va repartiendo entre todoslos discos del volumen, desplazándose a cada franja, de modo que cualquiera delos discos puede fallar, y el arreglo continuará operando sin pérdida de informa-ción. Esta falla se noti�ca al administrador del sistema, quien debe reemplazarel disco lo más pronto posible (dado que, de no hacerlo, la falla en un segundodisco resultará en la pérdida de toda la información).

Dependiendo de la con�guración, la velocidad de acceso de este nivel puedeser es ligeramente menor que la que obtendríamos de los discos sin RAID, oligeramente menor a la que obtendríamos con RAID nivel 0. Dado que la elec-trónica en los discos actuales nos noti�cará explícitamente en caso de fallo delectura, al leer información podemos leer únicamente los discos que contenganla información (e ignorar al de paridad); si nuestro RAID está con�gurado paraveri�car la paridad en lecturas, claro está, todas las lecturas tendrán que obtenerla franja correspondiente de todos los discos del arreglo para poder calcularla.

58

Page 59: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 24: División de datos en franjas, con paridad, para RAID 5

Las escrituras son invariablemente más lentas que lo que obtenemos tantoen ausencia de RAID como en niveles 0 y 1, dado que siempre tendrá querecalcularse la paridad; en el caso de una escritura mínima, menor a una franja,tendrá que leerse la franja entera de todos los discos participantes en el arreglo,recalcularse la paridad, y grabarse en el disco correspondiente.

Cuando uno de los discos falla, el arreglo comienza a trabajar en el modointerino de recuperación de datos (Interim data recovery mode), en el que todaslas lecturas involucran a todos los discos, ya que tienen que estar recalculandoy rellenando la información que provendría del disco dañado.

Figura 25: Cinco discos organizados en RAID 5

Para implementar RAID nivel 5 son necesarios por lo menos 3 discos, aunquees común verlos más anchos, pues de este modo se desperdicia menos espacioen paridad. Si bien teóricamente un arreglo nivel 5 puede ser arbitrariamenteancho, en la práctica es muy raro ver arreglos con más de 5 discos: Tener unarreglo más ancho aumentaría la probabilidad de falla. Si un arreglo que estáya operando en el modo interino de recuperación de datos se encuentra con unafalla en cualquiera de sus discos, tendrá que reportar un fallo irrecuperable.

8.5. RAID 6: Paridad por redundancia P+Q

Se trata nuevamente de un nivel de RAID muy poco utilizado. Se basa en elmismo principio que el de RAID 5 pero, empleando dos distintos algoritmos paracalcular la paridad, permite la pérdida de hasta dos de los discos del arreglo.La complejidad computacional es sensiblemente mayor a la de RAID 5, no sóloporque se trata de un segundo cálculo de paridad, sino porque este cálculo debehacerse empleando un algoritmo distinto y más robusto � Si bien para obtener

59

Page 60: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

la paridad P basta con hacer una operación XOR sobre todos los segmentosde una franja, la segunda paridad Q típicamente emplea al algoritmo Reed-Solomon, paridad diagonal o paridad dual ortogonal. Esto conlleva a una mayorcarga al sistema, en caso de que sea RAID por software, o a que el controladorsea de mayor costo por implementar mayor complejidad, en caso de ser hardwarededicado.

Figura 26: Cinco discos organizados en RAID 6

El nivel 6 de RAID puede implementarse con 4 o más unidades, y si bien elespacio dedicado a la redundancia se incrementa a dos discos, la redundanciaadicional que ofrece este esquema permite crear volúmenes con un mayor númerode discos.

8.6. Niveles combinados de RAID

Viendo desde el punto de vista de la abstracción presentada, RAID toma unaserie de dispositivos de bloques y los combina en otro dispositivo de bloques.Esto signi�ca que puede tomarse una serie de volúmenes RAID y combinarlosen uno solo, aprovechando las características de los diferentes niveles.

Si bien pueden combinarse arreglos de todo tipo, hay combinaciones másfrecuentes que otras. Con mucho, la más popular es la de los niveles 1 + 0 �Esta combinación, frecuentemente llamada sencillamente RAID 10, ofrece unmáximo de redundancia y rendimiento, sin sacri�car demasiado espacio.

Con RAID nivel 10 creamos volúmenes que suman por franjas unidadesen espejo (un volumen RAID 0 compuesto de varios volúmenes RAID 1). Encaso de fallar cualquiera de las unidades del arreglo, ésta puede ser reemplazadafácilmente, y su reemplazo no signi�cará un trabajo tan intensivo para el arregloentero, sólo para su disco espejo.

Bajo este esquema, en el peor de los casos, en un volumen con n discos físicostendríamos n

2 volúmenes nivel 1, y por tanto podríamos soportar la pérdida dehasta n

2 discos � Siempre que estos no formen parte de un mismo volumen nivel1.

Ahora bien, esta combinación nos ilustra cómo el órden de los factores sí al-tera el producto: Si en vez de la concatenación de varias unidades espejeadas (un

60

Page 61: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 27: Seis discos organizados en RAID 1+0

volumen nivel 0 compuesto de varios volúmenes nivel 1) armáramos nuestro ar-reglo en órden inverso, esto es, como el espejeo de varias unidades concatenadaspor franjas, parecería que obtenemos los mismos bene�cios � Pero analizandolo que ocurre en caso de falla, resulta claro que el nivel de redundancia resultamucho menor.

En este caso, nuestro arreglo soportará también el fallo de hasta n2 de sus dis-

cos, pero únicamente si ocurren en el mismo volumen del espejo. Si se perdieranal mismo tiempo el disco 1 (del subvolumen 1) y el disco 5 (del subvolumen 2),tendríamos pérdida de datos.

8.7. Más allá de RAID

Los esquemas RAID vienen, sin embargo, de �nes de la década de 1980, y enlos más de 20 años desde que fueron planteados, si bien han cambiado el panora-ma del almacenamiento, han sido ya superados. En nuestro caso, profundizamosen estos esquemas y no los desarrollos posteriores dada la limpieza conceptualque presentan, y dado que otros esquemas incluso hacen referencia al nivel deRAID que estarían reemplazando en su documentación.

Varios sistemas operativos ofrecen hoy el concepto de un gestor de volúmeneslógicos: Una interfaz que permite, como dos pasos independientes, agregar difer-entes volúmenes físicos a un

61

Page 62: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Figura 28: Seis discos organizados en RAID 0+1

9. Otros recursos

Practical File System Design (Dominic Giampaolo, 1999): El autor fueparte del equipo que implementó el sistema operativo BeOS, un sistemade alto rendimiento pensado para correr en estaciones de alto rendimiento,particularmente enfocado al video. El proyecto fracasó a la larga, y BeOS(así como BeFS, el sistema que describe) ya no se utilizan. Este libro tieneuna muy buena descripción de varios sistemas de archivos, y aborda aprofundidad técnicas que hace 15 años eran verdaderamente novedosas, yhoy forman parte de casi todos los sistemas de archivos con uso amplio, eincluso algunas que no se han logrado implementar y que BeFS sí ofrecía.

FAT Root Directory Structure on Floppy Disk and File Information (MuftiMohammed, Codeguru, 2007)

File Allocation Table - 16bit (Peter Clark)

A Fast File System for UNIX (Marshall Kirk Mckusick, William N. Joy,Samuel J. Le�er, Robert S. Fabry, 1984)

The Design and Implementation of a Log-Structured File System (MendelRosenblum, J. K. Ousterhout, 1992)

The Second Extended File System: Internal Layout (Dave Poirier, 2001-2011)

NILFS2 en Linux (César Yáñez)

Los discos desde la perspectiva de un sistema de archivos (César Yáñez)

A hash-based DoS attack on Btrfs (LWN)

Denial-of-Service Attack Found In Btrfs File-System (Slashdot)

62

Page 63: Sistemas de archivossistop.gwolf.org/pdf/06_sistemas_de_archivos.pdf · 2013. 10. 8. · mo sistemas de archivos en red, o compresión y cifrado de la información. Una referencia

Default /etc/apache2/mods-available/disk_cache.conf is incompatible withext3 (bug de Debian ilustrando los límites en números de archivos paraExt3)

The Design and Implementation of a Log-Structured File System (JohnK. Ousterhout, Mendel Rosenblum, 1992)

File-system development with stackable layers (Heidemann y Popek, 1994ACM Transactions on Computer Systems)

Serverless network �le systems (Thomas E. Anderson et. al., 1996, ACMTransactions on Computer Systems)

LogFS � Finally a scalable �ash �le system (Jörn Engel, Robert Mertens,2005)

Log-structured �le systems: There's one in every SSD (Valerie Aurora,2009)

JFFS2, UBIFS, and the growth of �ash storage (Neil Brown, 2012)

A case for Redundant Arrays of Inexpensive Disks (Patterson, Gibson,Katz 1988)

Unidades de estado sólido. El reto de la computación forense en el mundode los semiconductores (Cano Martinez, 2013)

Non-volatile memory based on the ferroelectric photovoltaic e�ect (Guo,You, Zhow et. al., 2013)

eMMC/SSD File System Tuning Methodology, Cogent Embedded, 2013(referido desde A �ash �lesystem tuning guide, LWN, julio 2013)

OpenPlanets Results Evaluation Framework, Open Planets Foundation.Muestra la evolución a lo largo de los años de cómo reconocen archivosde tipos conocidosvarias herramientas (para reconocimiento de tipo dearchivos)

63