Sistemas de archivos Leopoldo Taravilse1 1 Departamento de Computación Sistemas Operativos 05/05/2015 Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 1 / 138 File Systems ¿Qué es un archivo? Definición de archivo Un archivo es: Un recurso del sistema donde almacenamos informacin durable, en el sentido de que luego de que el programa que lo crea termina de ejecutar el archivo sigue existiendo y estando disponible para que otros programas lo usen. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 2 / 138 File Systems ¿Qué es un archivo? Definición de archivo Un archivo es: Un recurso del sistema donde almacenamos informacin durable, en el sentido de que luego de que el programa que lo crea termina de ejecutar el archivo sigue existiendo y estando disponible para que otros programas lo usen. Para nosotros, un subconjunto de los bytes disponibles en el disco que un programa puede crear, leer, escribir o eliminar entre otras operaciones. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 2 / 138 File Systems ¿Qué es un archivo? Definición de archivo Un archivo es: Un recurso del sistema donde almacenamos informacin durable, en el sentido de que luego de que el programa que lo crea termina de ejecutar el archivo sigue existiendo y estando disponible para que otros programas lo usen. Para nosotros, un subconjunto de los bytes disponibles en el disco que un programa puede crear, leer, escribir o eliminar entre otras operaciones. ¿Pero cómo se organizan los archivos en el disco? Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 2 / 138 File Systems ¿Qué es un archivo? Cómo organizamos los archivos en disco? Los archivos tienen varios atributos que es necesario almacenar: Nombre: Un nombre human-friendly para que el usuario identifique el archivo. Identificador: Un nombre no legible por seres humanos, generalmente un número, que sirve para que el File System identifique el archivo. Ubicación: El lugar en el disco donde el file system va a buscar el archivo cuando lo necesita. Tamaño: El tamao del archivo. Sirve para que el file system sepa qué porciones del disco ocupa el archivo. Permisos: Sirven para identificar qué puede hacer cada usuario con el archivo (leer, modificar, borrar, etc). Timestamp y usuario: Identifican tanto quién y cuando creó el archivo como la misma información sobre la última modificación. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 3 / 138 File Systems File Systems ¿Pero qué es un File System? El file system define como se organiza toda esta información para que los archivos puedan ser accedidos con facilidad por el usuario. Algunas de las operaciones que puede realizar el usuario gracias al file system son: Crear un archivo Escribir en un archivo Leer un archivo Mover un archivo de un directorio a otro Borrar un archivo Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 4 / 138 File Systems File Systems ¿Pero qué es un File System? El file system define como se organiza toda esta información para que los archivos puedan ser accedidos con facilidad por el usuario. Algunas de las operaciones que puede realizar el usuario gracias al file system son: Crear un archivo Escribir en un archivo Leer un archivo Mover un archivo de un directorio a otro Borrar un archivo Más adelante vamos a ver en detalle cómo se guardan los directorios. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 4 / 138 File Systems File Systems Tipos de File System Hoy en dı́a existen distintos file systems soportados por los distintos sistemas operativos: FAT (en sus distintas versiones FAT, FAT12, FAT16, FAT32) exFAT NTFS ext2, ext3, ext4 HFS ReiserFS y muchos otros más. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 5 / 138 File Systems File Systems Tipos de File System Hoy en dı́a existen distintos file systems soportados por los distintos sistemas operativos: FAT (en sus distintas versiones FAT, FAT12, FAT16, FAT32) exFAT NTFS ext2, ext3, ext4 HFS ReiserFS y muchos otros más. También existen File Systems para sistemas distribuidos, pero esos no los vamos a ver por ahora. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 5 / 138 File Systems File Systems Tipos de File System Hoy en dı́a existen distintos file systems soportados por los distintos sistemas operativos: FAT (en sus distintas versiones FAT, FAT12, FAT16, FAT32) exFAT NTFS ext2, ext3, ext4 HFS ReiserFS y muchos otros más. También existen File Systems para sistemas distribuidos, pero esos no los vamos a ver por ahora. De hecho hoy vamos a ver sólo dos de los mencionados en esta slide, adivinen cuáles... Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 5 / 138 File Systems FAT File allocation table (FAT) Originalmente diseñado para el uso en diskettes y adoptado por Windows y DOS durante casi 20 años. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 6 / 138 File Systems FAT File allocation table (FAT) Originalmente diseñado para el uso en diskettes y adoptado por Windows y DOS durante casi 20 años. Si queda tiempo después de la clase les cuento lo que era un diskette! Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 6 / 138 File Systems FAT File allocation table (FAT) Originalmente diseñado para el uso en diskettes y adoptado por Windows y DOS durante casi 20 años. Si queda tiempo después de la clase les cuento lo que era un diskette! Al ser pensado para dispositivos de almacenamiento 1.44MB por gente que pensaba que 640KB de memoria iban a ser suficientes no pensaron en escalabilidad a la hora de diseñar FAT. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 6 / 138 File Systems FAT File allocation table (FAT) Originalmente diseñado para el uso en diskettes y adoptado por Windows y DOS durante casi 20 años. Si queda tiempo después de la clase les cuento lo que era un diskette! Al ser pensado para dispositivos de almacenamiento 1.44MB por gente que pensaba que 640KB de memoria iban a ser suficientes no pensaron en escalabilidad a la hora de diseñar FAT. Por esta razón con el crecimiento del tamaño de los discos se dejó de usar en PCs. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 6 / 138 File Systems FAT File allocation table (FAT) Originalmente diseñado para el uso en diskettes y adoptado por Windows y DOS durante casi 20 años. Si queda tiempo después de la clase les cuento lo que era un diskette! Al ser pensado para dispositivos de almacenamiento 1.44MB por gente que pensaba que 640KB de memoria iban a ser suficientes no pensaron en escalabilidad a la hora de diseñar FAT. Por esta razón con el crecimiento del tamaño de los discos se dejó de usar en PCs. Sin embargo se sigue utilizando por ejemplo en dispositivos de almacenamiento externo como PenDrives o memorias SD. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 6 / 138 File Systems FAT File allocation table (FAT) Originalmente diseñado para el uso en diskettes y adoptado por Windows y DOS durante casi 20 años. Si queda tiempo después de la clase les cuento lo que era un diskette! Al ser pensado para dispositivos de almacenamiento 1.44MB por gente que pensaba que 640KB de memoria iban a ser suficientes no pensaron en escalabilidad a la hora de diseñar FAT. Por esta razón con el crecimiento del tamaño de los discos se dejó de usar en PCs. Sin embargo se sigue utilizando por ejemplo en dispositivos de almacenamiento externo como PenDrives o memorias SD. Pero... ¿Cómo funciona FAT? Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 6 / 138 File Systems FAT File allocation table (FAT) Con FAT el disco está dividido en bloques, tı́picamente de entre 2KB y 32KB. Cada bloque pertenece a un sólo archivo (o a ninguno si está libre) y cada archivo puede ocupar uno o más bloques. Un bloque no es lo mismo que un sector del disco. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 7 / 138 File Systems FAT File allocation table (FAT) Con FAT el disco está dividido en bloques, tı́picamente de entre 2KB y 32KB. Cada bloque pertenece a un sólo archivo (o a ninguno si está libre) y cada archivo puede ocupar uno o más bloques. Un bloque no es lo mismo que un sector del disco. FAT guarda una tabla que indica para cada bloque del disco cuál es el bloque que le sigue en el archivo, o si es el último bloque del archivo, y en caso de que el bloque esté libre indica que no pertenece a ningún archivo. Esta tabla se guarda en disco y por cuestiones de eficiencia se carga en memoria al momento del booteo. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 7 / 138 File Systems FAT File allocation table (FAT) Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 8 / 138 File Systems FAT File allocation table (FAT) Todo muy lindo hasta ahora pero... ¿Y el primer bloque de un archivo, de dónde lo sacamos? Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 8 / 138 File Systems FAT File allocation table (FAT) Todo muy lindo hasta ahora pero... ¿Y el primer bloque de un archivo, de dónde lo sacamos? Para eso están los directorios. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 8 / 138 File Systems FAT Directorios Los directorios son tratados como archivos en FAT en el sentido de que cada directorio ocupa bloques del disco y contiene información adentro de los bloques sobre los datos del directorio. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 9 / 138 File Systems FAT Directorios Los directorios son tratados como archivos en FAT en el sentido de que cada directorio ocupa bloques del disco y contiene información adentro de los bloques sobre los datos del directorio. Existe un bloque distinguido en la FAT para el directorio root de modo que siempre es posible ubicar dicho directorio. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 9 / 138 File Systems FAT Directorios Los directorios son tratados como archivos en FAT en el sentido de que cada directorio ocupa bloques del disco y contiene información adentro de los bloques sobre los datos del directorio. Existe un bloque distinguido en la FAT para el directorio root de modo que siempre es posible ubicar dicho directorio. Además, cada directorio tiene información en sus bloques sobre los bloques en los cuáles empiezan los archivos y directorios que contiene. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 9 / 138 File Systems FAT Directorios Los directorios son tratados como archivos en FAT en el sentido de que cada directorio ocupa bloques del disco y contiene información adentro de los bloques sobre los datos del directorio. Existe un bloque distinguido en la FAT para el directorio root de modo que siempre es posible ubicar dicho directorio. Además, cada directorio tiene información en sus bloques sobre los bloques en los cuáles empiezan los archivos y directorios que contiene. De esta manera podemos recorrer desde root cualquier path que querramos recorrer. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 9 / 138 File Systems FAT Directorios Los directorios son tratados como archivos en FAT en el sentido de que cada directorio ocupa bloques del disco y contiene información adentro de los bloques sobre los datos del directorio. Existe un bloque distinguido en la FAT para el directorio root de modo que siempre es posible ubicar dicho directorio. Además, cada directorio tiene información en sus bloques sobre los bloques en los cuáles empiezan los archivos y directorios que contiene. De esta manera podemos recorrer desde root cualquier path que querramos recorrer. Pero... y si hacemos cd .., ¿hay que volver a root? Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 9 / 138 File Systems FAT Directorios Los directorios son tratados como archivos en FAT en el sentido de que cada directorio ocupa bloques del disco y contiene información adentro de los bloques sobre los datos del directorio. Existe un bloque distinguido en la FAT para el directorio root de modo que siempre es posible ubicar dicho directorio. Además, cada directorio tiene información en sus bloques sobre los bloques en los cuáles empiezan los archivos y directorios que contiene. De esta manera podemos recorrer desde root cualquier path que querramos recorrer. Pero... y si hacemos cd .., ¿hay que volver a root? No! También se guarda en el bloque de un directorio el bloque inicial del directorio padre. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 9 / 138 File Systems FAT Problemas de FAT FAT presenta muchos problemas. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 10 / 138 File Systems FAT Problemas de FAT FAT presenta muchos problemas. Por ejemplo, al estar la tabla en memoria puede ocupar mucho lugar. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 10 / 138 File Systems FAT Problemas de FAT FAT presenta muchos problemas. Por ejemplo, al estar la tabla en memoria puede ocupar mucho lugar. Además los archivos en FAT no pueden ocupar más de 232 − 1 bytes (4GB), ası́ que olvidense de tener Avengers II en 1080p en una computadora que use FAT. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 10 / 138 File Systems FAT Problemas de FAT FAT presenta muchos problemas. Por ejemplo, al estar la tabla en memoria puede ocupar mucho lugar. Además los archivos en FAT no pueden ocupar más de 232 − 1 bytes (4GB), ası́ que olvidense de tener Avengers II en 1080p en una computadora que use FAT. La razón por la cual los archivos no pueden ocupar más de 232 − 1 bytes es porque el campo de tamaño de un archivo, que se mide en bytes, mide 32 bits. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 10 / 138 File Systems FAT Problemas de FAT FAT presenta muchos problemas. Por ejemplo, al estar la tabla en memoria puede ocupar mucho lugar. Además los archivos en FAT no pueden ocupar más de 232 − 1 bytes (4GB), ası́ que olvidense de tener Avengers II en 1080p en una computadora que use FAT. La razón por la cual los archivos no pueden ocupar más de 232 − 1 bytes es porque el campo de tamaño de un archivo, que se mide en bytes, mide 32 bits. También existen problemas con la seguridad en FAT ya que no es posible gestionar permisos con FAT. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 10 / 138 File Systems ext2 i-nodos Como ya cursaron Algo II ya saben todos lo que es un nodo, por ejemplo, en el contexto de una lista enlazada. Pero... ¿Qué es un i-nodo? Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 11 / 138 File Systems ext2 i-nodos Como ya cursaron Algo II ya saben todos lo que es un nodo, por ejemplo, en el contexto de una lista enlazada. Pero... ¿Qué es un i-nodo? Ya lo vieron en la teórica pero lo vamos a repasar ya que les va a servir para el taller de File Systems. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 11 / 138 File Systems ext2 i-nodos Como ya cursaron Algo II ya saben todos lo que es un nodo, por ejemplo, en el contexto de una lista enlazada. Pero... ¿Qué es un i-nodo? Ya lo vieron en la teórica pero lo vamos a repasar ya que les va a servir para el taller de File Systems. Para el que no vino a la teórica... no, un i-nodo no es un nodo de Apple! Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 11 / 138 File Systems ext2 i-nodos Como ya cursaron Algo II ya saben todos lo que es un nodo, por ejemplo, en el contexto de una lista enlazada. Pero... ¿Qué es un i-nodo? Ya lo vieron en la teórica pero lo vamos a repasar ya que les va a servir para el taller de File Systems. Para el que no vino a la teórica... no, un i-nodo no es un nodo de Apple! Un i-nodo es una estructura que sirve para almacenar información sobre archivos y directorios. ext2, ext3 y ext4 son tres file systems que están implementados utilizando i-nodos. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 11 / 138 File Systems ext2 i-nodos Como ya cursaron Algo II ya saben todos lo que es un nodo, por ejemplo, en el contexto de una lista enlazada. Pero... ¿Qué es un i-nodo? Ya lo vieron en la teórica pero lo vamos a repasar ya que les va a servir para el taller de File Systems. Para el que no vino a la teórica... no, un i-nodo no es un nodo de Apple! Un i-nodo es una estructura que sirve para almacenar información sobre archivos y directorios. ext2, ext3 y ext4 son tres file systems que están implementados utilizando i-nodos. Se llaman nodos porque la forma de llegar a un archivo es parecida a la de recorrer una lista enlazada. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 11 / 138 File Systems ext2 i-nodos ¿Qué es un i-nodo? Un i-nodo (del inglés index node) es una estructura de datos que representa un archivo o directorio dentro del file system. El directorio root está guardado en el i-nodo número 2 y cada i-nodo representa un archivo o directorio. Desde root se pueden recorrer los directorios al igual que en FAT moviendose por los directorios como si fuesen archivos, ya que un directorio tiene en sus bloques en disco la información de los archivos que contiene, entre ellos, sus subdirectorios. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 12 / 138 File Systems ext2 Indirecciones en i-nodos Un i-nodo puede tener hasta 12 entradas, representando 12 bloques de memoria. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 13 / 138 File Systems ext2 Indirecciones en i-nodos Un i-nodo puede tener hasta 12 entradas, representando 12 bloques de memoria. Además, un i-nodo puede apuntar a un bloque que se comporta como un i-nodo, en el sentido de que tiene entradas que representan direcciones de bloques en el disco. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 13 / 138 File Systems ext2 Indirecciones en i-nodos Un i-nodo puede tener hasta 12 entradas, representando 12 bloques de memoria. Además, un i-nodo puede apuntar a un bloque que se comporta como un i-nodo, en el sentido de que tiene entradas que representan direcciones de bloques en el disco. Y también hay una entrada del i-nodo que apunta a bloques que apuntan a bloques que apuntan a bloques donde está la información de los archivos. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 13 / 138 File Systems ext2 Indirecciones en i-nodos Y hay una entrada que apunta a bloques que apuntan a bloques que apuntan a bloques que apuntan a los bloques que tienen la información del archivo. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 14 / 138 File Systems ext2 Indirecciones en i-nodos Y hay una entrada que apunta a bloques que apuntan a bloques que apuntan a bloques que apuntan a los bloques que tienen la información del archivo. Ası́ dicho es un lio, mejor veamoslo gráficamente. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 14 / 138 File Systems ext2 Indirecciones en i-nodos Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 15 / 138 File Systems ext2 Datos y metadata Los i-nodos guardan mucha información sobre los archivos: El tamaño del archivo. El ID del dispositivo donde está el archivo. El User ID del dueño del archivo y el group ID del archivo. Los permisos. Timestamps. Link count: cuenta cuántos links apuntan a ese i-nodo. Los punteros a los bloques del archivo. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 16 / 138 File Systems ext2 Directorios en i-nodos Cómo contamos los archivos que hay en un directorio Un caso de uso muy común puede ser querer contar la cantidad de archivos de un directorio. ¿Se les ocurre cómo? Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 17 / 138 File Systems ext2 Directorios en i-nodos Cómo contamos los archivos que hay en un directorio Un caso de uso muy común puede ser querer contar la cantidad de archivos de un directorio. ¿Se les ocurre cómo? Con el tamaño del directorio podemos ir leyendo las entradas hasta que leemos N bytes donde N es el tamaño del directorio. Si no tuviesemos el tamaño del directorio no sabrı́amos hasta donde leer. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 17 / 138 File Systems ext2 Dir-entries Los bloques de directorios están compuestos por dir-entries, que contienen información sobre los archivos y directorios que se encuentran dentro del directorio al cuál representan. Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 18 / 138 File Systems Manos a la obra Ejercicio Se tiene un disco con 225 sectores de 1KB y: Tamaño de bloque de 2, 4 u 8 sectores. Identificadores de bloque de 8, 16, 24 o 32 bits. Se pide: 1 Suponiendo que se configura con 2 sectores por bloque, identificadores de 16 bits. Cuál es el tamaño que ocupa la FAT? 2 ¿Cuál es el máximo tamaño que pueden ocupar los archivos en disco? 3 ¿Cuántos archivos de 1MB puedo guardar en el disco? 4 ¿Y de 1KB? Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 19 / 138 File Systems Preguntas ¿Preguntas? Leopoldo Taravilse (DC-UBA) File Systems 05/05/2015 20 / 138