La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sebastián Sánchez Prieto

Presentaciones similares


Presentación del tema: "Sebastián Sánchez Prieto"— Transcripción de la presentación:

1 Sebastián Sánchez Prieto
Sistemas de Archivos Sebastián Sánchez Prieto

2 Objetivo del SdA Ocultar al usuario los detalles relativos al almacenamiento de información en dispositivos físicos mediante el uso de abstracciones La abstracción fundamental proporcionada al usuario es el archivo Un archivo es una secuencia lógica de datos agrupados bajo un nombre que el propio usuario asigna Los usuarios pueden referirse al nombre de un archivo independientemente de dónde y cómo se halle físicamente almacenado  S2P, OGP & IGT

3 Visión funcional: servicios
Servicio de nombrado Identifica un archivo dentro de algún tipo de organización lógica (p.e jerárquica) Tipo del archivo, que permite saber qué tipo de información contiene Servicios de almacenamiento Seguridad, protección y cifrado. Necesario en sistemas multiusuario Archivos compartidos por varios usuarios Tratamiento especial según el tipo de archivo (FIFOS, enlaces, dispositivos) Servicios de directorio Organización lógica (p.e directorios jerárquicos) Publicidad de la información  S2P, OGP & IGT

4 Visión funcional: organización lógica
En la vida real, las carpetas (archivos) en una oficina se agrupan siguiendo algún criterio establecido por el usuario formando grupos. A estos grupos se les asigna un nombre distinguirlos de otros grupos y para facilitar su localización Los sistemas de archivos permiten agrupar varios archivos en directorios Cada directorio tiene un nombre lógico asignado por el usuario Inicialmente un archivo pertenece a un directorio, aunque sería interesante que un mismo archivo pudiera pertenecer a la vez a varios directorios  S2P, OGP & IGT

5 Visión funcional: directorios
Directorio único u organización a un solo nivel: Todos los archivos están almacenados en un solo directorio Es la estructura más simple y fácil de soportar y entender No permite clasificar la información de ninguna manera Si el sistema es multiusuario pueden existir problemas para nombrar los archivos, aunque el espacio de nombres sea muy grande Directorio por cada usuario u organización a dos niveles: Se asigna un directorio a cada usuario o a cada tipo de archivo Existe un directorio de directorios por encima (Directorio maestro) Existen operaciones para actualizar el Directorio maestro Las operaciones sobre directorios se reducen al del usuario Existen problemas para cooperar entre usuarios  S2P, OGP & IGT

6 Visión funcional: directorios
Estructura jerárquica en árbol: Es el caso de UNIX No hay diferencia entre el directorio raíz y cualquier otro a otro nivel Para referirse a un archivo completo es necesario saber su nombre y el nombre de todos los directorios, desde la raíz hasta el que lo contiene (camino absoluto), o bien desde el directorio actual (camino relativo) UNIX puede trabajar con cualquier jerarquía de directorios, pero existe una estandarizada  S2P, OGP & IGT

7 Visión funcional: directorios
 S2P, OGP & IGT

8 Visión estructural: asignación
El sistema de archivos es el encargado de relacionar el nombre del un archivo con los datos que éste contiene Alternativas de almacenamiento: Contigua Crecimiento del tamaño de los archivos problemático La política de asignación lleva a fragmentación externa Reubicar la información es un procedimiento muy costoso Por bloques Elección del tamaño de bloque (fragmentación interna) Contabilidad de bloques libres Es necesario un mecanismo para averiguar qué bloques pertenecen a un archivo Habitualmente los dispositivos de almacenamiento permiten guardar y recuperar bloques de tamaño fijo que dependen de su geometría  S2P, OGP & IGT

9 Visión estructural: localización
Tablas de bloques Mantener una tabla con los bloques de cada archivo Se guarda el nombre del archivo junto con el primer bloque que ocupa El resto de los bloques se obtiene utilizando una estructura de datos especial (FAT) Para buscar un bloque hay que recorrer todos los anteriores  S2P, OGP & IGT

10 Visión estructural: localización
Bloques enlazados Se guarda el nombre del archivo junto con el primer bloque que ocupa Cada bloque guarda qué bloque es el siguiente Para buscar un bloque hay que recorrer todos los anteriores Los bloques de datos contienen información del sistema de archivos, no solo del usuario  S2P, OGP & IGT

11 Visión estructural: localización
Nodos índice Junto con el nombre del archivo se guardan punteros a todos sus bloques ¿Cuántos bloques ocupará el archivo? En caso de que el archivo sea muy grande podemos usar distintos niveles de indirección usando para ello bloques de almacenamiento  S2P, OGP & IGT

12 Sistema de archivos FAT
Se divide el disco en bloques de tamaño fijo Cada archivo se compone de una secuencia de bloques formando una lista enlazada mediante punteros Para encontrar un bloque es necesario recorrer todos los anteriores El tamaño de cada una de ellas es fijo y depende del tipo de FAT que utilicemos  S2P, OGP & IGT

13 Ejemplo de sistema de archivos FAT-12
En linux podemos crear un sistema de archivos FAT 12 con la orden: # mkfs.vfat –v /dev/fd0 /dev/fd0 has 2 heads and 18 sectors per track, logical sector size is 512, using 0xf0 media descriptor, with 2880 sectors; file system has 2 12-bit FATs and 1 sector per cluster. FAT size is 9 sectors, and provides 2847 clusters. Root directory contains 224 slots. Volume ID is 3fb0ff43, no volume label. La geometría utilizada en el disquete es: 2 cabezas (2 caras), 18 sectores/pista, 80 pistas por cada cara 2 caras * 80 pistas / cara * 18 sectores/pista = 2880 sectores 2880 sectores * 512 bytes /sector = 1440 Kbytes Se utiliza un sector por cada cluster Hay dos FAT (copia de seguridad) que ocupan cada una 9 sectores, es decir 9*512=4608 bytes  S2P, OGP & IGT

14 Sector de arranque (boot sector)
Comienza en el primer sector del disco. Ocupa un sector (512 bytes) en FAT12 y FAT16 y 32 sectores en FAT32 Normalmente la información contenida en el Boot Record ocupa sólo 62 bytes Contiene el código que se utiliza durante el arranque para cargar el sistema operativo en memoria # hexdump -C -s 0x0000 -n 512 /dev/fd0 eb 3c 90 6d 6b 64 6f |.<.mkdosfs......| e b f a7 b0 7b | e 1f | FAT | be 5b 7c ac 22 c0 74 0b 56 b4 0e bb cd 10 |.[|.".t.V | e eb f0 32 e4 cd 16 cd 19 eb fe |^ This | e 6f f 6f c |is not a bootabl| b 2e c |e disk. Please | e f 6f c |insert a bootabl| c 6f e 64 0d 0a |e floppy and..pr| 000000a e b f |ess any key to t| 000000b e 20 2e 2e 2e 20 0d 0a 00 |ry again | 000000c | | * 000001f aa | U.|  S2P, OGP & IGT

15 Interpretación del sector de arranque
 S2P, OGP & IGT

16 Tabla de asignación de archivos (FAT)
Está situada después del boot sector Sirve para averiguar los clusters que componen un archivo En el caso de FAT-12 cada entrada ocupa 12 bits, lo que permite direccionar hasta 2^12=4092 bloques de disco (clusters). Si el tamaño de bloque es 512, el tamaño máximo del sistema de archivos con FAT-12 es de 4092*512=2^21= 2Mb ¿Y si el sistema de archivos es más grande? Solución 1: Aumentar el tamaño del bloque Sistema de archivos de 4 Gb (2^32) FAT-12. Capacidad de direccionamiento 2^12 bloques Tamaño del bloque 2^32/2^12 = 2^20 = 1Mb cada bloque ¿Cuánto ocupará en el disco un archivo de 20Kb? Solución 2: Aumentar el tamaño de las entradas en la FAT FAT-16 FAT-32: Capacidad de direccionamiento 2^32 bloques de 1K/bloque  S2P, OGP & IGT

17 Tabla de asignación de archivos (FAT)
Cada entrada en la FAT puede significar: 0 = cluster libre 0xFF0-0xFF6 = cluster reservado para uso interno 0xFF7 = cluster con sectores erróneos Si es un número indica cual es el siguiente cluster del archivo 0xFF8-0xFFF = Último cluster del archivo Por ejemplo. Si sabemos que un archivo comienza en el cluster 3 y tenemos la FAT de la figura, podemos decir que ese archivo se compone de los clusters 3,12 y 18  S2P, OGP & IGT

18 Directorio raíz Se encuentra en una posición fija del disco
Está limitada en tamaño Contiene los nombres de archivos y directorios que se encuentren en el directorio raíz junto con su primer bloque de disco. Con esta información, consultando la FAT podemos averiguar el resto  S2P, OGP & IGT

19 Ejemplo de estructura del directorio raíz
Para localizar la posición del directorio raíz en el disco hay que tener en cuenta que: El sector de boot comienza en el 0 y ocupa 1 sector La tabla FAT ocupa 9 sectores Hay dos tablas FAT Por lo tanto el directorio comienza en el sector 19. 19 * 512 bytes/sector = offset 9728 bytes = 0x2600 Cada entrada en el directorio ocupa 32 bytes y hay 224 entradas. 224*32= 7168 bytes = 14 sectores  S2P, OGP & IGT

20 Ejemplo de estructura del directorio raíz
# hexdump -C -s 0x2600 -n 512 /dev/fd0 e5 2e c3 ff ff |...s.w.p | ff ff ff ff ff ff ff ff ff ff ff ff ff ff | | e5 2e c |...a.r.c.h....i.| f e |v.o.2...t...x.t.| e e b 66 |.RCHIV~1SWP ...f| d 30 8d b 66 8d 30 0b | f | f 00 b |Aa.r.c.h.i....v.| f e |o.1...t.x...t...| f |ARCHIVO1TXT ...f| d 30 8d d 30 0a | f.0..#...| 000026a f |Aa.r.c.h.i...Uv.| 000026b0 6f e |o.2...t.x...t...| 000026c f |ARCHIVO2TXT ...f| 000026d0 8d 30 8d d | f.0..&...|  S2P, OGP & IGT

21 Ejemplo de localización de datos
Localicemos los datos del archivo2.txt Sabemos que comienza en el cluster 19 Para averiguar cuantos datos contiene consultamos la FAT (sector 1 del disco, desplazamiento 512 bytes) # hexdump -C -s 512 -n 512 /dev/fd0 f0 ff ff ff f f0 ff 00 00 FAT12 = 12 bit para cada entrada (packing) Cada 24 bits dos entradas Clusters 18 y 19 = 00 F0 FF Cluster 18: 000 (libre) Cluster 19: FFF (último cluster del archivo) Por lo tanto nuestro archivo solo tiene un cluster, el 19  S2P, OGP & IGT

22 Ejemplo de localización de datos
Para localizar el cluster 19 en el disco hay que tener en cuenta: Los sectores de datos comienzan en el 33 (Boot sector + 18 sectores de las dos tablas FAT + 14 sectores del directorio raíz) Los dos primeros clusters están reservados, por lo tanto hay que restar 2 al número de cluster lógico: Las operaciones a realizar serán: Restar 2 unidades del cluster lógico 19-2=17 Multiplicar el cluster por el número de sectores por cluster (1 en nuestro caso)= 17*1=17 Sumar 33 al resultado 17+33= sector 50 La posición dentro del dispositivo de almacenamiento será 50*512=25600 (0x6400h) # hexdump -C -s 0x6400 -n /dev/fd0 c f 6e |Este es el conte| e f c f |nido del archivo| e a |2.txt | | |  S2P, OGP & IGT

23 Sistema de archivos de UNIX System V
El sistema de archivos reside en cualquier dispositivo que permita almacenar bloques de información; típicamente una partición de un disco El espacio de almacenamiento se interpreta como una lista de bloques El tamaño de los bloques marca la granularidad del almacenamiento El tamaño de bloque físico es de 512 bytes El sistema de archivos trabaja con bloques lógicos. El manejador de dispositivo se encargará de hacer las traducciones a bloque físico en caso de que fuera necesario  S2P, OGP & IGT

24 Nodos índice Unix identifica un archivo a través de un nodo índice (i-node o nodo-i) que almacena toda la información necesaria para localizar los bloques que componen dicho archivo Cada nodo-i ocupa 128 en Linux 2.2 Modo: indica qué tipo de archivo es y cuáles son los permisos de acceso al mismo Propietario: UID y GID del propietario del archivo Punteros directos: 12 punteros directos (32 bit cada uno) Tres punteros con uno, dos y tres niveles de indirección respectivamente  S2P, OGP & IGT

25 Tipos de archivos El tipo de archivo al que se refiere un nodo-i se almacena en el campo modo Dependiendo del tipo de archivo se aplicará un tratamiento especial: Archivos regulares: necesitan bloques para almacenar datos Directorios: archivos especiales cuyos bloques contienen nombres y nodos-i de otros archivos Enlaces simbólicos: contienen el nombre de otro archivo al que hace referencia.  S2P, OGP & IGT

26 Archivos especiales: directorios
Los directorios almacenan los nombres que los usuarios dan a sus archivos y los relacionan con sus nodos índice UNIX establece una relación jerárquica en sus directorios El primer directorio de la jerarquía recibe el nombre de raíz o root. Los directorios pueden contener cualquier otro objeto del sistema de archivos (p.e. otro directorio) Cada entrada en un directorio almacena, entre otras cosas, la siguiente información: Nombre del objeto del sistema de archivos i-node número de nodo índice de dicho objeto ¿Cómo se localiza el nodo índice del archivo /home/elena/quijote.txt?  S2P, OGP & IGT

27 Búsqueda de un archivo  S2P, OGP & IGT

28 Contabilidad de uso del SdA
Para llevar la contabilidad del espacio disponible en el sistema de archivo se emplean dos estructuras: Mapa de bit de bloques Mapa de bit de nodos índice Un mapa de bit es una estructura de datos en la que cada bit representa si un bloque o nodo índice se encuentra libre u ocupado El tamaño de ambos dependerá del tamaño del sistema de archivos. Por ejemplo, un sistema de archivos con 256 nodos índice tendrá un mapa de bits de nodos índice con 256/8=32 bytes  S2P, OGP & IGT

29 Superbloque Es una estructura de datos que contiene información global sobre el sistema de archivos La información más importante que mantiene es la siguiente: Número mágico (0xEF53) indica al software del sistema de archivos que se trata de un sistema de tipo EXT2 Tamaño del bloque del sistema de archivos (p.e 1024) Número de bloques libres Número de nodos índice libres Número del primer nodo índice. Normalmente este nodo índice es el del directorio raíz (nodo-i número 2).  S2P, OGP & IGT

30 Creación de un sistema de archivos
Un dispositivo de almacenamiento es una secuencia de bloques de almacenamiento sin ningún significado especial Cada sistema de archivo escribe en esos bloques la información necesaria para mantener los archivos, directorios, etc. (Metainformación) El proceso de creación de un sistema de archivos se llama formateado Por ejemplo, para formatear un disquete con el sistema de archivos ext2 se emplea la siguiente orden mkfs.ext2 # mkfs.ext2 -v /dev/fd0 mke2fs 1.27 (8-Mar-2002) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 184 inodes, 1440 blocks 72 blocks (5.00%) reserved for the super user First data block=1 1 block group 8192 blocks per group, 8192 fragments per group 184 inodes per group Writing inode tables: done Writing superblocks and filesystem accounting information: done #  S2P, OGP & IGT

31 Creación de un sistema de archivos
 S2P, OGP & IGT

32 Superbloque Número mágico 0xEF53 Tamaño del bloque 1024 bytes
# dumpe2fs /dev/fd0 dumpe2fs 1.27 (8-Mar-2002) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: cf75c-936d a7e9a3902 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: filetype sparse_super Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: Block count: Reserved block count: Free blocks: Free inodes: First block: Block size: Fragment size: Blocks per group: Fragments per group: Inodes per group: Inode blocks per group: 23 Last mount time: Thu Jan 1 01:00: Last write time: Sat Apr 10 22:24: Mount count: Maximum mount count: Last checked: Sat Apr 10 22:10: Check interval: (6 months) Next check after: Thu Oct 7 22:10: Reserved blocks uid: (user root) Reserved blocks gid: (group root) First inode: Inode size: Group 0: (Blocks ) Primary Superblock at 1, Group Descriptors at 2-2 Block bitmap at 3 (+2), Inode bitmap at 4 (+3) Inode table at 5-27 (+4) 1396 free blocks, 170 free inodes, 5 directories Free blocks: Free inodes: Número mágico 0xEF53 Tamaño del bloque 1024 bytes Número de nodos índice 184 Número de bloques 1440 Bloques libres 1396 Tamaño del nodo índice 128 bytes  S2P, OGP & IGT

33 Ejemplo: Localizar el directorio raíz
Creamos un directorio lectura con un archivo llamado quijote.txt # mkdir lecturas # echo En un lugar de la mancha de cuyo nombre no quiero arcordarme > quijote.txt Vamos a localizar el bloque de disco que contiene la información del archivo /lecturas/quijote.txt Buscamos el nodo índice número 2 que contiene los archivos del directorio raíz. Según la información anterior la tabla de nodos índice comienza en el bloque 5. El inode-2 comenzará en la posición 128 de ese bloque, o lo que es lo mismo (5*1024)+128 = 5248 = 0x1480 # hexdump -C -s 0x1400 -n 256 /dev/fd0 | | * ed a6 8a f 8a f 8a 000014a c | | 000014b | |  S2P, OGP & IGT

34 Ejemplo: Localizar el directorio raíz
El nodo índice indica que la entrada es un directorio y que el bloque que contiene los datos es el 0x C. Ese bloque de datos comenzara en la posición 0x400*0x1C=0x7000 # hexdump -C -s 0x7000 -n 1024 /dev/fd0 c e | | c e 2e b a 02 | | c 6f b 66 6f 75 6e c |lost+found......| d c |....lecturas....| | | * struct ext2_dir_entry_2 { __u32 inode; /* Inode number; 0: unused */ __u16 rec_len; /* Directory entry length */ __u8 name_len; /* Name length */ __u8 file_type; char name[up to 255]; /* File name */ };  S2P, OGP & IGT

35 Ejemplo: Localizar el archivo quijote.txt
El nodo índice del directorio lecturas es el 0x1C. Buscamos esa entrada en la tabla de directorios y obtenemos que su bloque de datos asociado es 0x29. La posición en el disco será 0x29*0x400=0xA400 # hexdump -C -s 0xa400 -n 1024 /dev/fd0 0000a400 0c c e | | 0000a410 0c e 2e d e8 03 0b 01 | | 0000a a 6f e |quijote.txt.....| 0000a | | * 0000a800 El nodo índice del archivo quijote.txt es el 0x0D (13d). Buscamos ese nodo índice y obtenemos que su bloque de datos asociado es el 0x2A. Su posición en el disco será 0x2A*0x400=0xA800 # hexdump -C -s 0xA800 -n 1024 /dev/fd0 0000a e e 20 6c c |En un lugar de l| 0000a d 61 6e f |a mancha de cuyo| 0000a e 6f 6d e 6f | nombre no quier| 0000a830 6f 0a |o | 0000a | | 0000ac00  S2P, OGP & IGT

36 Ejemplo: contabilidad
i-node Propósito 2 Directorio raíz 12 lecturas 13 quijote.txt  S2P, OGP & IGT

37 Ejemplo: contabilidad
Si borramos el directorio lecturas se liberan dos entradas en la tabla de nodos índices (lecturas y quijote) En el mapa de nodos índice aparecen dichos nodos (12 y 13) como libres Se puede volcar el mapa de bit con la orden: # hexdump -C -s 0x1000 -n 1024 /dev/fd0  S2P, OGP & IGT

38 Concepto de montaje de SdA
Un sistema de archivos reside en un dispositivo de almacenamiento. Si tenemos varios sistemas de archivos es posible combinarlos todos formando una única jerarquía Partiendo de una estructura jerárquica de directorios, es posible colgar de cualquier rama otro sistema de archivos distinto. A este procedimiento se le llama montaje de un sistema de archivos El usuario no percibe en qué sistema de archivos residen realmente sus datos Utilizando esta técnica podemos combinar varios sistemas de archivos (diferentes incluso) en una única jerarquía  S2P, OGP & IGT

39 Montaje de sistemas de archivos
 S2P, OGP & IGT

40 Montaje de sistemas de archivos
Cada sistema de archivos puede ser de tipos diferentes Cada uno de ellos tiene su propia metainformación (p.e. superbloque, tabla de nodos índice, etc) Esto significa que habrá tantos nodos índice con el número 2 (directorio raíz) y tantas tablas de nodos índice como sistemas de archivos tengamos montados El sistema de archivos utiliza la metainformación del sistema de archivos donde nos encontremos El sistema operativo lleva el control de los sistemas de archivos montados: # cat /etc/mtab /dev/hda1 / ext2 rw proc /proc proc rw devpts /dev/pts devpts rw /dev/hdb1 /mnt/data ext2 rw /dev/fd0 /mnt/disquete ext2 rw  S2P, OGP & IGT

41 Enlaces El sistema de archivos es capaz de relacionar un nombre de archivo con los bloques de datos que contienen la información de dicho archivo Puede ser útil utilizar varios nombres para referirse al mismo archivo (alias o enlaces) En UNIX existen dos tipos de enlaces: Enlaces duros. Consiste en dar una entrada de directorio con el nodo índice del archivo al que queramos enlazar Enlaces blandos (o simbólicos). Son archivos cuyo bloque de datos contiene el nombre completo (incluyendo la ruta desde la raíz) del archivo que queremos enlazar  S2P, OGP & IGT

42 Cuatro referencias al mismo archivo
Enlaces duros Varias entradas de directorio apuntando al mismo nodo índice. Los enlaces duros son indistinguibles del archivo original al que apuntan Se crean con la orden ln # ln ArchivoOriginal.txt duro1 # ln ArchivoOriginal.txt duro2 # ln ArchivoOriginal.txt duro3 # ls –ali total 21 2 drwxr-xr-x 3 root root Apr 12 18:15 . drwxr-xr-x 4 root root Apr 12 17:59 .. 12 -rw-r--r root root Apr 12 18:10 ArchivoOriginal.txt 12 -rw-r--r root root Apr 12 18:10 duro1 12 -rw-r--r root root Apr 12 18:10 duro2 12 -rw-r--r root root Apr 12 18:10 duro3 11 drwx root root Apr 11 19:57 lost+found El archivo se elimina cuando no hay referencias a él en ninguna entrada de directorio El nodo índice al que se hace referencia es el nodo índice del sistema de archivos que contiene el archivo referenciado, por lo tanto no se pueden hacer enlaces duros a archivos que residen en otros sistemas de archivos Mismo nodo índice Cuatro referencias al mismo archivo  S2P, OGP & IGT

43 Enlaces blandos Los enlaces blandos son archivos que contienen el nombre de otro archivo al que referencian Como archivos que son tienen su propio nodo índice Se crean con ln –s # ln -s ArchivoOriginal.txt blando1 # ln -s ArchivoOriginal.txt blando2 # ln -s ArchivoOriginal.txt blando3 # ls -ali total 18 2 drwxr-xr-x 3 root root Apr 12 18:25 . drwxr-xr-x 4 root root Apr 12 17:59 .. 12 -rw-r--r root root Apr 12 18:10 ArchivoOriginal.txt 13 lrwxrwxrwx 1 root root Apr 12 18:25 blando1 -> ArchivoOriginal.txt 14 lrwxrwxrwx 1 root root Apr 12 18:25 blando2 -> ArchivoOriginal.txt 15 lrwxrwxrwx 1 root root Apr 12 18:25 blando3 -> ArchivoOriginal.txt 11 drwx root root Apr 11 19:57 lost+found Los nodos índice 13,14 y 15 son de tipo “enlace”, por lo tanto el sistema de archivos los trata de forma especial  S2P, OGP & IGT

44 Implementación de los enlaces blandos
Observemos el contenido del nodo índice 13 # hexdump -C -s 0x1A80 -n 128 /dev/fd0 00001a80 ff a eb c2 7a 40 e8 c2 7a 40 00001a90 e8 c2 7a 00001aa f 4f | ArchivoO| 00001ab e 61 6c 2e |riginal.txt.....| 00001ac | | * 00001ae b 6e 2d |.....n-H | 00001af | | 00001b00 Los nodos índice nunca almacenan nombres de archivos, de hecho el nombre del archivo está situado en las posiciones correspondientes a los punteros a bloques de disco Esto es un truco para no desperdiciar un bloque entero de disco para contener solo el nombre de un archivo Hay 15 punteros de 32 bits. 15*4=60 bytes. Mientras el nombre del archivo de destino sea menor de 60 caracteres se podrá emplear esta técnica En caso contrario hay que reservar un bloque y escribir el nombre del archivo referenciado en él  S2P, OGP & IGT

45 Journaled File Systems
El sistema de archivos necesita varias estructuras de datos que mantienen el estado de ese sistema de archivos A esas estructuras de datos que describen a su vez otros datos reciben el nombre de metadatos o metainformación La metainformación (p.e. superbloque, mapas de bits, etc) se proyecta en memoria para aumentar la eficiencia del sistema de archivos Cuando el sistema se apaga, los cambios realizados en el sistema de archivos se graban al disco ¿Qué ocurre si el sistema se apaga de forma irregular? (p.e fallo en la tensión de alimentación)  S2P, OGP & IGT

46 Control de consistencia: fsck
Antes de montar un sistema de archivos hay que asegurarse de que éste se encuentra en un estado consistente Existe un indicador en el superbloque que informa de si el sistema de archivos se desmontó correctamente la última vez que se utilizó Si el sistema está marcado como dirty se ejecuta una aplicación que comprueba e intenta corregir las incosistencias (fsck) Comprobar estado del superbloque Comprobar que los nodos-i ocupados/libres son sólo los marcados como ocupados/libres en el mapa de bits Comprobar que los bloques asignados según el mapa de bits están asignados a un archivo, y que no haya archivos que hagan referencia a bloques marcados como libres Comprobar que un mismo nodo-i no está asignado a más de un directorio Problemas: Hay que comprobar todo el sistema de archivos Si el sistema de archivos es muy grande la comprobación puede llevar demasiado tiempo  S2P, OGP & IGT

47 Corrección de inconsistencias
 S2P, OGP & IGT

48 Control de consistencia: journals
Es una nueva aproximación para controlar la consistencia de los sistemas de archivos Se añade una nueva estructura de datos a la metainformación que ya existía en el sistema de archivos: el journal Es un cuaderno de bitácora donde se apuntan por orden cronológico las operaciones que se realizan sobre el sistema de archivos En el arranque del sistema se comprueba si quedaron operaciones pendientes cuando se apagó (anormalmente) el sistema El objetivo es asegurar que las transacciones sobre el sistema de archivos se hacen de forma atómica  S2P, OGP & IGT

49 Control de consistencia: transacciones
Una transacción es un conjunto de varias operaciones sobre un dispositivo de almacenamiento Las transacciones deben asegurar que o bien se terminan con éxito todas las operaciones que componen la transacción o bien no se realiza ninguna de ellas El objetivo de impedir que una transacción quede a la mitad es evitar inconsistencias en el sistema de archivos Una transacción debe cumplir cuatro reglas básicas: Atomicidad: o se realiza completa o no se realiza en absoluto Consistencia: debe mantener la integridad del sistema Aislamiento: debe ejecutarse como si fuera la única petición en el sistema, sin depender de ninguna otra Perdurabilidad: los cambios deben prevalecer incluso en el caso de un error  S2P, OGP & IGT

50 Transacciones Operaciones para crear un archivo
Obtener un número de nodo índice Marcar el nodo como ocupado en el mapa de bits Obtener un bloque libre Marcar el bloque como ocupado en el mapa de bits Rellenar los campos del nodo índice con los datos necesarios Dar de alta el nombre del archivo en el directorio junto con el número de su nodo índice Todas estas operaciones deben ejecutarse como una transacción. Si se interrumpe durante la ejecución podemos crear inconsistencias (p.e un bloque ocupado que no pertenece a ningún nodo índice)  S2P, OGP & IGT

51 Transacciones: fundamentos
Actualmente, los discos son capaces de finalizar una escritura completa de un bloque físico de 512 bytes incluso si la tensión de alimentación falla durante dicha operación Este comportamiento sirve para escribir un sector especial que indica cuando una transacción ha finalizado con éxito (commit) Ejemplo: dado un vector con 10 números (salarios) incrementar todos en un 50%  S2P, OGP & IGT

52 Transacciones: journal log
El fallo anterior se produce porque los cambios se realizan directamente sobre los datos antiguos Los sistemas de archivos transacciones escriben las modificaciones a realizar en el log. Si todo sale bien se copia el log en el sistema de archivos Si se produce un fallo antes de concluir la transacción los datos originales siguen intactos  S2P, OGP & IGT

53 Transacciones: registro de transacciones
Si la transacción finaliza, se hace una marca especial en el registro de transacciones (commit) Hecho esto se copian las modificaciones a su destino final y se elimina la transacción del registro Si se produce un fallo durante la copia, el sistema detectará que hay una transacción inconclusa y la finalizará  S2P, OGP & IGT

54 Sistema de archivos virtual de Unix
Proporciona una capa de abstracción adicional entre los programas de usuario y las distintas implementaciones de cada sistema de archivos Linux permite montar varios tipos de sistemas de archivos distintos El objetivo es poder acceder a los archivos independientemente del tipo de sistema de archivos empleado  S2P, OGP & IGT


Descargar ppt "Sebastián Sánchez Prieto"

Presentaciones similares


Anuncios Google