Está en la página 1de 54

Sistemas de Archivos

Sebastin Snchez Prieto

Objetivo del SdA

Ocultar al usuario los detalles relativos al


almacenamiento de informacin en dispositivos fsicos
mediante el uso de abstracciones
La abstraccin fundamental proporcionada al usuario es
el archivo
Un archivo es una secuencia lgica de datos agrupados
bajo un nombre que el propio usuario asigna
Los usuarios pueden referirse al nombre de un archivo
independientemente de dnde y cmo se halle
fsicamente almacenado

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 2

Visin funcional: servicios

Servicio de nombrado

Servicios de almacenamiento

Identifica un archivo dentro de algn tipo de organizacin


lgica (p.e jerrquica)
Tipo del archivo, que permite saber qu tipo de informacin
contiene
Seguridad, proteccin y cifrado. Necesario en sistemas
multiusuario
Archivos compartidos por varios usuarios
Tratamiento especial segn el tipo de archivo (FIFOS,
enlaces, dispositivos)

Servicios de directorio

Organizacin lgica (p.e directorios jerrquicos)


Publicidad de la informacin

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 3

Visin funcional: organizacin lgica

En la vida real, las carpetas (archivos) en una oficina se


agrupan siguiendo algn criterio establecido por el
usuario formando grupos. A estos grupos se les asigna un
nombre distinguirlos de otros grupos y para facilitar su
localizacin
Los sistemas de archivos permiten agrupar varios
archivos en directorios
Cada directorio tiene un nombre lgico asignado por el
usuario
Inicialmente un archivo pertenece a un directorio, aunque
sera interesante que un mismo archivo pudiera
pertenecer a la vez a varios directorios

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 4

Visin funcional: directorios

Directorio nico u organizacin a un solo nivel:


Todos los archivos estn almacenados en un solo directorio
Es la estructura ms simple y fcil de soportar y entender
No permite clasificar la informacin 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 organizacin 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

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 5

Visin funcional: directorios

Estructura jerrquica en rbol:

Es el caso de UNIX
No hay diferencia entre el directorio raz 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 raz
hasta el que lo contiene (camino absoluto), o bien desde el
directorio actual (camino relativo)
UNIX puede trabajar con cualquier jerarqua de directorios,
pero existe una estandarizada

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 6

Visin funcional: directorios

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 7

Visin estructural: asignacin

El sistema de archivos es el encargado de relacionar el nombre del un


archivo con los datos que ste contiene
Alternativas de almacenamiento:

Contigua

Por bloques

Crecimiento del tamao de los archivos problemtico


La poltica de asignacin lleva a fragmentacin externa
Reubicar la informacin es un procedimiento muy costoso
Eleccin del tamao de bloque (fragmentacin 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 tamao fijo que dependen de su geometra

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 8

Visin estructural: localizacin

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

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 9

Visin estructural: localizacin

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 informacin del
sistema de archivos, no
solo del usuario

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 10

Visin estructural: localizacin

Nodos ndice
Junto con el nombre del
archivo se guardan
punteros a todos sus
bloques
Cuntos bloques
ocupar el archivo?
En caso de que el
archivo sea muy grande
podemos usar distintos
niveles de indireccin
usando para ello
bloques de
almacenamiento

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 11

Sistema de archivos FAT

Se divide el disco en bloques de


tamao 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 tamao de cada una de ellas
es fijo y depende del tipo de FAT
que utilicemos

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 12

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 geometra 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

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 13

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 informacin contenida en el Boot Record ocupa slo 62
bytes
Contiene el cdigo que se utiliza durante el arranque para cargar el sistema
operativo en memoria
# hexdump
00000000
00000010
00000020
00000030
00000040
00000050
00000060
00000070
00000080
00000090
000000a0
000000b0
000000c0
*
000001f0

-C
eb
02
00
20
be
5e
69
65
69
65
65
72
00

-s
3c
e0
00
20
5b
eb
73
20
6e
20
73
79
00

0x0000 -n 512 /dev/fd0


90 6d 6b 64 6f 73 66 73
00 40 0b f0 09 00 12 00
00 00 00 00 29 a7 b0 7b
20 20 20 20 46 41 54 31
7c ac 22 c0 74 0b 56 b4
f0 32 e4 cd 16 cd 19 eb
20 6e 6f 74 20 61 20 62
64 69 73 6b 2e 20 20 50
73 65 72 74 20 61 20 62
66 6c 6f 70 70 79 20 61
73 20 61 6e 79 20 6b 65
20 61 67 61 69 6e 20 2e
00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

00
02
40
32
0e
fe
6f
6c
6f
6e
79
2e
00

00
00
20
1f
10
20
6c
20
6c
72
74
00
00

|.<.mkdosfs......|
|...@............|
|......)..{@
|
|
FAT12
..|
|.[|.".t.V.......|
|^..2.......This |
|is not a bootabl|
|e disk. Please |
|insert a bootabl|
|e floppy and..pr|
|ess any key to t|
|ry again ... ...|
|................|

00 00 00 00 00 00 55 aa

|..............U.|

1999-2004 S2P, OGP & IGT

00
00
20
20
bb
54
6f
65
6f
64
20
2e
00

02
00
20
20
07
68
74
61
74
0d
74
20
00

01
00
20
20
00
69
61
73
61
0a
6f
0d
00

01
00
20
0e
cd
73
62
65
62
70
20
0a
00

Sistemas de Archivos 14

Interpretacin del sector de arranque

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 15

Tabla de asignacin de archivos (FAT)

Est situada despus 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 tamao de bloque es 512, el tamao mximo del sistema de
archivos con FAT-12 es de 4092*512=2^21= 2Mb
Y si el sistema de archivos es ms grande?
Solucin 1: Aumentar el tamao del bloque

Sistema de archivos de 4 Gb (2^32)


FAT-12. Capacidad de direccionamiento 2^12 bloques
Tamao del bloque 2^32/2^12 = 2^20 = 1Mb cada bloque
Cunto ocupar en el disco un archivo de 20Kb?

Solucin 2: Aumentar el tamao de las entradas en la FAT

FAT-16
FAT-32: Capacidad de direccionamiento 2^32 bloques de 1K/bloque

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 16

Tabla de asignacin de archivos (FAT)

Cada entrada en la FAT puede significar:


0 = cluster libre
0xFF0-0xFF6 = cluster reservado para
uso interno
0xFF7 = cluster con sectores errneos
Si es un nmero 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

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 17

Directorio raz

Se encuentra en una posicin fija del disco


Est limitada en tamao
Contiene los nombres de archivos y directorios que se
encuentren en el directorio raz junto con su primer bloque de
disco. Con esta informacin, consultando la FAT podemos
averiguar el resto

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 18

Ejemplo de estructura del directorio raz

Para localizar la posicin del directorio raz 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
1999-2004 S2P, OGP & IGT

Sistemas de Archivos 19

Ejemplo de estructura del directorio raz


# hexdump
00002600
00002610
00002620
00002630
00002640
00002650
00002660
00002670
00002680
00002690
000026a0
000026b0
000026c0
000026d0

-C
e5
ff
e5
76
e5
8d
41
6f
41
8d
41
6f
41
8d

-s
2e
ff
2e
00
52
30
61
00
52
30
61
00
52
30

0x2600 -n 512 /dev/fd0


00 73 00 77 00 70 00 00
ff ff ff ff ff ff ff ff
00 61 00 72 00 63 00 68
6f 00 32 00 2e 00 74 00
43 48 49 56 7e 31 53 57
8d 30 00 00 0b 66 8d 30
00 72 00 63 00 68 00 69
31 00 2e 00 74 00 78 00
43 48 49 56 4f 31 54 58
8d 30 00 00 09 66 8d 30
00 72 00 63 00 68 00 69
32 00 2e 00 74 00 78 00
43 48 49 56 4f 32 54 58
8d 30 00 00 10 66 8d 30

00
00
00
00
50
0b
00
00
54
0a
00
00
54
13

00
00
00
00
20
00
0f
00
20
00
0f
00
20
00

00
ff
00
78
00
00
00
74
00
23
00
74
00
26

c3
ff
c3
00
00
10
b5
00
00
00
55
00
00
00

ff
ff
69
74
0b
00
76
00
09
00
76
00
10
00

1999-2004 S2P, OGP & IGT

ff
ff
00
00
66
00
00
00
66
00
00
00
66
00

|...s.w.p........|
|................|
|...a.r.c.h....i.|
|v.o.2...t...x.t.|
|.RCHIV~1SWP ...f|
|.0.0...f.0......|
|Aa.r.c.h.i....v.|
|o.1...t.x...t...|
|ARCHIVO1TXT ...f|
|.0.0...f.0..#...|
|Aa.r.c.h.i...Uv.|
|o.2...t.x...t...|
|ARCHIVO2TXT ...f|
|.0.0...f.0..&...|

Sistemas de Archivos 20

Ejemplo de localizacin 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
200
00000200 f0 ff ff 00
201
00000210 0f 00 00 00
202
00000220 00 00 00 00

00 00 00 00 00 00 00 ff
00 00 00 00 f0 ff 00 00
00 00 00 00 00 00 00 00

FAT12 = 12 bit para cada entrada (packing)


Cada 24 bits dos entradas
Clusters 18 y 19 = 00 F0 FF

/dev/fd0
00 00 00 00
00 00 00 00
00 00 00 00

Cluster 18: 000 (libre)


Cluster 19: FFF (ltimo cluster del archivo)

Por lo tanto nuestro archivo solo tiene un cluster, el 19


1999-2004 S2P, OGP & IGT

Sistemas de Archivos 21

Ejemplo de localizacin 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 raz)

Los dos primeros clusters estn reservados, por lo tanto hay que
restar 2 al nmero de cluster lgico:
Las operaciones a realizar sern:

Restar 2 unidades del cluster lgico 19-2=17

Multiplicar el cluster por el nmero de sectores por cluster (1 en


nuestro caso)= 17*1=17

Sumar 33 al resultado 17+33= sector 50


La posicin dentro del dispositivo de almacenamiento ser
50*512=25600 (0x6400h)
# hexdump
00006400
00006410
00006420
00006430

-C
45
6e
32
00

-s
73
69
2e
00

0x6400 -n 10000 /dev/fd0


74 65 20 65 73 20 65 6c
64 6f 20 64 65 6c 20 61
74 78 74 0a 00 00 00 00
00 00 00 00 00 00 00 00

20
72
00
00

63
63
00
00

1999-2004 S2P, OGP & IGT

6f
68
00
00

6e
69
00
00

74
76
00
00

65
6f
00
00

|Este es el conte|
|nido del archivo|
|2.txt...........|
|................|

Sistemas de Archivos 22

Sistema de archivos de UNIX System V

El sistema de archivos reside en cualquier dispositivo que


permita almacenar bloques de informacin; tpicamente
una particin de un disco
El espacio de almacenamiento se interpreta como una
lista de bloques

El tamao de los bloques marca la granularidad del


almacenamiento
El tamao de bloque fsico es de 512 bytes
El sistema de archivos trabaja con bloques lgicos. El
manejador de dispositivo se encargar de hacer las
traducciones a bloque fsico en caso de que fuera
necesario

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 23

Nodos ndice

Unix identifica un archivo a


travs de un nodo ndice (inode o nodo-i) que almacena
toda la informacin 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 cules 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 indireccin
respectivamente

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 24

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 simblicos: contienen el nombre de otro
archivo al que hace referencia.

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 25

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 relacin jerrquica en sus directorios
El primer directorio de la jerarqua recibe el nombre de
raz 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 informacin:

Nombre del objeto del sistema de archivos


i-node nmero de nodo ndice de dicho objeto

Cmo se localiza el nodo ndice del archivo


/home/elena/quijote.txt?
1999-2004 S2P, OGP & IGT

Sistemas de Archivos 26

Bsqueda de un archivo

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 27

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 tamao de ambos depender del tamao 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

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 28

Superbloque

Es una estructura de datos que contiene informacin


global sobre el sistema de archivos
La informacin ms importante que mantiene es la
siguiente:

Nmero mgico (0xEF53) indica al software del sistema de


archivos que se trata de un sistema de tipo EXT2
Tamao del bloque del sistema de archivos (p.e 1024)
Nmero de bloques libres
Nmero de nodos ndice libres
Nmero del primer nodo ndice. Normalmente este nodo
ndice es el del directorio raz (nodo-i nmero 2).

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 29

Creacin de un sistema de archivos

Un dispositivo de
almacenamiento es una
secuencia de bloques de
almacenamiento sin ningn
significado especial
Cada sistema de archivo escribe
en esos bloques la informacin
necesaria para mantener los
archivos, directorios, etc.
(Metainformacin)
El proceso de creacin 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
#

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 30

Creacin de un sistema de archivos

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 31

Superbloque
# dumpe2fs /dev/fd0
dumpe2fs 1.27 (8-Mar-2002)
Filesystem volume name:
<none>
Last mounted on:
<not available>
Filesystem UUID:
685cf75c-936d-4802-9813243a7e9a3902
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:
184
Block count:
1440
Reserved block count:
72
Free blocks:
1396
Free inodes:
170
First block:
1
Block size:
1024
Fragment size:
1024
Blocks per group:
8192
Fragments per group:
8192
Inodes per group:
184
Inode blocks per group:
23
Last mount time:
Thu Jan 1 01:00:00 1970
Last write time:
Sat Apr 10 22:24:18 2004
Mount count:
0
Maximum mount count:
29
Last checked:
Sat Apr 10 22:10:04 2004
Check interval:
15552000 (6 months)
Next check after:
Thu Oct 7 22:10:04 2004
Reserved blocks uid:
0 (user root)
Reserved blocks gid:
0 (group root)
First inode:
11
Inode size:
128

Group 0: (Blocks 1-1439)


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: 44-1439
Free inodes: 15-184

Nmero mgico 0xEF53


Tamao del bloque 1024 bytes
Nmero de nodos ndice 184
Nmero de bloques 1440
Bloques libres 1396
Tamao del nodo ndice 128 bytes

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 32

Ejemplo: Localizar el directorio raz

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 informacin del archivo


/lecturas/quijote.txt
Buscamos el nodo ndice nmero 2 que contiene los archivos del directorio
raz. Segn la informacin anterior la tabla de nodos ndice comienza en el
bloque 5. El inode-2 comenzar en la posicin 128 de ese bloque, o lo que
es lo mismo (5*1024)+128 = 5248 = 0x1480
# hexdump
00001400
00001410
00001420
*
00001480
00001490
000014a0
000014b0

-C
00
11
00

-s
00
87
00

0x1400 -n 256 /dev/fd0


00 00 00 00 00 00 11 87 79 40 11 87 79 40
79 40 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00

|..........y@..y@|
|..y@............|
|................|

ed
7f
00
00

41
8a
00
00

00
79
00
00

|.A........y@..y@|
|..y@............|
|................|
|................|

00
40
00
00

00
00
00
00

04
00
00
00

00
00
00
00

00
00
00
00

a6
00
1c
00

8a
00
00
00

79
04
00
00

1999-2004 S2P, OGP & IGT

40
00
00
00

7f
02
00
00

8a
00
00
00

79
00
00
00

40
00
00
00

Sistemas de Archivos 33

Ejemplo: Localizar el directorio raz

El nodo ndice indica que la entrada es un directorio y


que el bloque que contiene los datos es el 0x0000001C.
Ese bloque de datos comenzara en la posicin
0x400*0x1C=0x7000
# hexdump
00007000
00007010
00007020
00007030
00007040
*
00007400

-C
02
0c
6c
d4
00

-s
00
00
6f
03
00

0x7000 -n 1024
00 00 0c 00 01
02 02 2e 2e 00
73 74 2b 66 6f
08 02 6c 65 63
00 00 00 00 00

/dev/fd0
02 2e 00
00 0b 00
75 6e 64
74 75 72
00 00 00

00
00
00
61
00

00
00
00
73
00

02
14
0c
00
00

00
00
00
00
00

00
0a
00
00
00

00
02
00
00
00

|................|
|................|
|lost+found......|
|....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 */
};

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 34

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 posicin en el disco ser 0x29*0x400=0xA400
# hexdump
0000a400
0000a410
0000a420
0000a430
*
0000a800

-C
0c
0c
71
00

-s
00
00
75
00

0xa400 -n 1024
00 00 0c 00 01
02 02 2e 2e 00
69 6a 6f 74 65
00 00 00 00 00

/dev/fd0
02 2e 00
00 0d 00
2e 74 78
00 00 00

00
00
74
00

00
00
00
00

02
e8
00
00

00
03
00
00

00
0b
00
00

00
01
00
00

|................|
|................|
|quijote.txt.....|
|................|

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 posicin
en el disco ser 0x2A*0x400=0xA800
# hexdump
0000a800
0000a810
0000a820
0000a830
0000a840
*
0000ac00

-C
45
61
20
6f
00

-s
6e
20
6e
0a
00

0xA800 -n 1024
20 75 6e 20 6c
6d 61 6e 63 68
6f 6d 62 72 65
00 00 00 00 00
00 00 00 00 00

/dev/fd0
75 67 61
61 20 64
20 6e 6f
00 00 00
00 00 00

72
65
20
00
00

20
20
71
00
00

1999-2004 S2P, OGP & IGT

64
63
75
00
00

65
75
69
00
00

20
79
65
00
00

6c
6f
72
00
00

|En un lugar de l|
|a mancha de cuyo|
| nombre no quier|
|o...............|
|................|

Sistemas de Archivos 35

Ejemplo: contabilidad
i-node

Propsito

Directorio raz

12

lecturas

13

quijote.txt

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 36

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

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 37

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 jerarqua
Partiendo de una estructura jerrquica 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 tcnica podemos combinar varios
sistemas de archivos (diferentes incluso) en una nica
jerarqua
1999-2004 S2P, OGP & IGT

Sistemas de Archivos 38

Montaje de sistemas de archivos

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 39

Montaje de sistemas de archivos

Cada sistema de archivos puede ser de tipos diferentes


Cada uno de ellos tiene su propia metainformacin (p.e.
superbloque, tabla de nodos ndice, etc)
Esto significa que habr tantos nodos ndice con el nmero 2
(directorio raz) y tantas tablas de nodos ndice como sistemas de
archivos tengamos montados
El sistema de archivos utiliza la metainformacin del sistema de
archivos donde nos encontremos
El sistema operativo lleva el control de los sistemas de archivos
montados:
# cat /etc/mtab
/dev/hda1
/
proc
/proc
devpts
/dev/pts
/dev/hdb1
/mnt/data
/dev/fd0
/mnt/disquete

1999-2004 S2P, OGP & IGT

ext2
proc
devpts
ext2
ext2

rw
rw
rw
rw
rw

Sistemas de Archivos 40

Enlaces

El sistema de archivos es capaz de relacionar un nombre


de archivo con los bloques de datos que contienen la
informacin 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 simblicos). Son archivos cuyo bloque
de datos contiene el nombre completo (incluyendo la ruta
desde la raz) del archivo que queremos enlazar

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 41

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
415172 drwxr-xr-x
4 root
12 -rw-r--r-4 root
12 -rw-r--r-4 root
12 -rw-r--r-4 root
12 -rw-r--r-4 root
11 drwx-----2 root

Mismo nodo ndice


root
root
root
root
root
root
root

Cuatro referencias al mismo


1024 Apr 12 18:15 .
archivo
4096 Apr 12 17:59 ..
11 Apr 12 18:10 ArchivoOriginal.txt
11 Apr 12 18:10 duro1
11 Apr 12 18:10 duro2
11 Apr 12 18:10 duro3
12288 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

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 42

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
415172
12
13
14
15
11

drwxr-xr-x
drwxr-xr-x
-rw-r--r-lrwxrwxrwx
lrwxrwxrwx
lrwxrwxrwx
drwx------

3
4
1
1
1
1
2

root
root
root
root
root
root
root

root
root
root
root
root
root
root

1024
4096
11
19
19
19
12288

Apr
Apr
Apr
Apr
Apr
Apr
Apr

12
12
12
12
12
12
11

18:25
17:59
18:10
18:25
18:25
18:25
19:57

.
..
ArchivoOriginal.txt
blando1 -> ArchivoOriginal.txt
blando2 -> ArchivoOriginal.txt
blando3 -> ArchivoOriginal.txt
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
1999-2004 S2P, OGP & IGT

Sistemas de Archivos 43

Implementacin de los enlaces blandos

Observemos el contenido del nodo ndice 13


# hexdump
00001a80
00001a90
00001aa0
00001ab0
00001ac0
*
00001ae0
00001af0
00001b00

-C
ff
e8
00
72
00

-s
a1
c2
00
69
00

0x1A80 -n 128 /dev/fd0


00 00 13 00 00 00 eb c2
7a 40 00 00 00 00 00 00
00 00 00 00 00 00 41 72
67 69 6e 61 6c 2e 74 78
00 00 00 00 00 00 00 00

00 00 00 00 8b 6e 2d 48
00 00 00 00 00 00 00 00

7a
01
63
74
00

40
00
68
00
00

e8
00
69
00
00

c2
00
76
00
00

7a
00
6f
00
00

40
00
4f
00
00

|..........z@..z@|
|..z@............|
|........ArchivoO|
|riginal.txt.....|
|................|

00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00

|.....n-H........|
|................|

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
tcnica
En caso contrario hay que reservar un bloque y escribir el nombre del
archivo referenciado en l

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 44

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 metainformacin
La metainformacin (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 tensin de alimentacin)

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 45

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 aplicacin que
comprueba e intenta corregir las incosistencias (fsck)
Comprobar estado del superbloque
Comprobar que los nodos-i ocupados/libres son slo los
marcados como ocupados/libres en el mapa de bits
Comprobar que los bloques asignados segn el mapa de bits
estn 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 ms de un
directorio
Problemas:
Hay que comprobar todo el sistema de archivos
Si el sistema de archivos es muy grande la comprobacin puede
llevar demasiado tiempo

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 46

Correccin de inconsistencias

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 47

Control de consistencia: journals

Es una nueva aproximacin para controlar la consistencia


de los sistemas de archivos
Se aade una nueva estructura de datos a la
metainformacin que ya exista en el sistema de archivos:
el journal
Es un cuaderno de bitcora donde se apuntan por orden
cronolgico 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 atmica
1999-2004 S2P, OGP & IGT

Sistemas de Archivos 48

Control de consistencia: transacciones

Una transaccin 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
transaccin o bien no se realiza ninguna de ellas
El objetivo de impedir que una transaccin quede a la
mitad es evitar inconsistencias en el sistema de archivos
Una transaccin debe cumplir cuatro reglas bsicas:

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 peticin
en el sistema, sin depender de ninguna otra
Perdurabilidad: los cambios deben prevalecer incluso en el
caso de un error

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 49

Transacciones

Operaciones para crear un archivo


1.
2.
3.
4.
5.

6.

Obtener un nmero 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 nmero de su nodo ndice

Todas estas operaciones deben ejecutarse como una


transaccin. Si se interrumpe durante la ejecucin
podemos crear inconsistencias (p.e un bloque ocupado
que no pertenece a ningn nodo ndice)
1999-2004 S2P, OGP & IGT

Sistemas de Archivos 50

Transacciones: fundamentos

Actualmente, los discos son capaces de finalizar una


escritura completa de un bloque fsico de 512 bytes
incluso si la tensin de alimentacin falla durante dicha
operacin
Este comportamiento sirve para escribir un sector
especial que indica cuando una transaccin ha
finalizado con xito (commit)
Ejemplo: dado un vector con 10 nmeros (salarios)
incrementar todos en un 50%

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 51

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 transaccin los
datos originales siguen intactos

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 52

Transacciones: registro de transacciones

Si la transaccin 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 transaccin
del registro
Si se produce un fallo durante
la copia, el sistema detectar
que hay una transaccin
inconclusa y la finalizar

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 53

Sistema de archivos virtual de Unix

Proporciona una capa de


abstraccin 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

1999-2004 S2P, OGP & IGT

Sistemas de Archivos 54