Post on 16-Jan-2016
description
Tema 4: Sistema de Archivos
Miguel Ramos Soto
IES Serra Perenxisa 2008
controlador periféricoparte física periférico
El núcleo LinuxAplicaciones
Hardware
controlador periféricoparte física periférico
sub-sistemaE/S
sistemaarchivos seguridad
sistemade procesos
comunicacióninter-procesos
sub-sistema
E/S
sub-sistemaarchivos
caché
sub-sistemade
procesos
sub-sistemaIPC
El subsistema de archivos
Garantiza una administración correcta de los archivos y de los derechos de acceso
La administración varia mucho según el tipo de sistema de archivos
Linux adopto el concepto de VFS (Virtual File System)
Acceso estándar archivo en VFS
Principio: todos los módulos de un sistema de archivos, vistos del exterior, presentan las misma rutinas
Es responsabilidad del núcleo de convertir las llamadas de sistemas estándares en las específicas a los archivos
Programador no debe preocuparse del tipo de sistema archivos con el que trabaja
Sistema archivos virtualAplicaciones
Sistema de Archivos Virtual (VFS)
subsistemaext2
subsistemasys V
subsistemaFat/ntfs
subsistemaproc
Cache
Controlador de periféricos
Hardware
E/S y sistema de archivos
Aplicaciones
Sistema de Archivos Virtual (VFS)
Control de periféricos
3. Bloques datos en la caché
1. Lectura Archivo
2. Lectura bloquesdatos del archivo
5. Lectura de losbloques de datos
6. Escritura de los bloques de datos en el caché
7. Liberación del contenido de la caché
8. Datos leídos
Caché
4. Lectura de los bloques de datos en la caché
El sistema archivos de Linux
características
Definición sistema archivos
Soporte físico y lógico que le da al usuario una visión del espacio de almacenamiento.
Este espacio es percibido por el usuario como una estructura de árbol, con una raíz única.
El FS de Linux está compuesto por una agregación-integración de unidades:– En uno o varios dispositivos (discos, particiones)– En uno o varios hosts (local y remoto[s])– De una única arquitectura o de varias arquitecturas
diferentes
Definición sistema archivos
Organización de los dispositivos de almacenamiento en Linux con un elemento base (el bloque):– espacio disco duro se expresa en bloques– los bloques son de tamaño fijo pero configurable
(tunning) al crear el FS y cuyo valor es múltiplo de 512 bytes.
– Tunning afecta a velocidad de transferencia a memoria:
Desaprovechamos espacio con bloques grandes Mucho overhead con bloques pequeños
Estructura interna sistema archivos
Vista usuario: arborescencia homogénea ¿Qué forma tienen los datos y los archivos
en el disco duro?
Sistemas archivos reconocidos por Linux
ext2fs: Extended File System ext3fs: Extended File System v.3 (journalised) hpfs: High Performance File System (OS/2) iso9660: sistema ISO 9660 (usado en CD-ROMs) minix: MINIX File System ncpfs: sistema archivos para clientes Novell nfs: Network File System
Sistemas archivos Linux
proc: pseudo sistema de archivos smbfs: Samba File Systems sysv: Sistema archivos del sistema V Unix ufs: Sistema archivos FreeBSD y Solaris umsdos: extensión sistema archivos MS-DOS vfat: Sistema de archivos de Windows95 ... “man mount” nos muestra los tipos posibles de
filesystems actualmente soportados
Mount y Umount
mount : agrega-anexa (monta) un sistema de ficheros en un punto de montado (o directorio) fijado por el usuario que debe existir previamente.
mount [opciones] [tipoFS] dispositivo directorio mount –t iso9660 /dev/cdrom /cd “man mount” para ver todas las opciones Los sistemas de ficheros los vemos a través de
dispositivos (/dev/...) o de recursos remotos (IP:/directorio para NFS ó //recurso para SAMBA)
Mount y Umount
Umount : operación inversa:desmonta un sistema de ficheros del directorio fijado.
umount [dispositivo] [directorio] umount /dev/cdrom /cd La operación “umount” es necesaria antes de
retirar el medio (diskette p.e.) de la unidad, excepto con Supermount.
El montado/desmontado sólo puede hacerlo en un principio el superusuario (root o administrador).
Fichero de configuración: fstab
/etc/fstab: tabla de filesystems a ser montados en el sistema.
[dispositivo] [punto_montado] [tipo] [opciones] /dev/cdrom /cd iso9660 user, noauto Procesado durante el arranque, con “mount –a”
que recorre secuencialmente el archivo Nos abrevia los montajes: “mount [dispositivo]” Montajes remotos via NFS (UNIX o NFSServers)
y SAMBA (NetBios-LanManager)
Elementos sistema archivos ext2http://es.wikipedia.org/wiki/Ext2
Bloque de arranque o boot Superbloque Tabla de nodos-i Bloques de datos
Estructura sistema ext2
Bloquede
arranque
Super-bloque ... Tabla
denodos-i
Bloquede
datos
Super-bloque
Grupo bloques 1 Grupo bloques 2
...
El bloque de boot
Se ubica en el bloque cero de todos los sistemas de archivos.
Contiene el programa que permite lanzar e inicializar todo el sistema
Ningún programa usuario tiene acceso
El grupo de bloques
El superbloque La lista de descripción de los grupos de
bloques La imagen de los bloques La imagen de los nodos-i La tabla de los nodos-i Los bloques de datos
Datos importantes en el Superbloque
Tamaño total del sistema de archivos, en bloques o nodos-i
Nombre del sistema de archivos Número de bloques libres del sistema Número de bloques reservados a nodos-I Número de nodos-I libres Dirección del primer bloque de datos libre en la lista Tamaño de un bloque de datos Tamaño de la lista de inodos
Datos importantes en el Superbloque (II)
Hora de la última modificación del sistema archivos
Hora integración (montaje) del sistema Número de versión del sistema Hora de la última verificación del sistema
Operaciones con el Superbloque
Cada operación de E/S consulta al Superbloque Suele estar en memoria principal (buffer cache) Las actualizaciones se hacen en memoria y
periódicamente se actualizan a disco (y al cerrar el sistema). Un demonio realiza esta operación y controla la consistencia.
Contiene la información “administrativa” de cada FS (unidad o partición o recurso remoto o ...)
La tabla de nodos-i
Compuesto por un conjunto de nodos-i, del mismo tamaño
Un nodo-i puede estar almacenado:– como nodo-I en el disco duro– cargado en memoria para su tratamiento
Cada inodo describe todas las características de un único archivo, directorio, socket, link ...
En el arranque se suele traer parte de esta lista a memoria principal para agilizar la E/S.
La tabla de nodos-i
Operación similar al Superbloque (en memoria con volcados periódicos a disco)
El inodo contiene información administrativa del fichero.
Una escritura en fichero implica una escritura en su inodo y en el/los bloques de datos implicados.
Algunos datos de los nodos-i Permisos de acceso al archivo Identificador –número- usuario propietario Tamaño, en bytes, del archivo Acceso
– hora del último acceso– hora de la última modificación – hora de la creación de nodo-i– hora de la última supresión del nodo-i
Identificador –número- del grupo del propietario
Número de enlaces Semáforos del nodo-I derechos de acceso tipo de archivo:
– archivo clásico– directorio– archivo periférico– archivo FIFO– referencia (ejemplo enlace simbólico)
tabla de punteros de dirección a los bloques que componen el archivo (simples, dobles y triples)
Propiedades del archivo
Informacionesdiversas
Tabla de las direccionesde los bloques de datos
Estructura de un nodo-iT
ipo
arch
ivo
Pro
piet
ario
Tam
año
arch
ivo
Dir
ecci
óndi
rect
a
1. D
irec
ción
ind
irec
ta2.
Dir
ecci
ón i
ndir
ecta
3. D
irec
ción
ind
irec
ta
…. …. ….
Punteros del inodo Se trata de una estructura flexible, para indexar los
bloques que forman parte de un cierto archivo. Cada inodo tiene los siguientes punteros a bloques de
datos:– 10 punteros directos (a 10 bloques de datos)– 1 puntero indirectos simple ( a otro bloque con 256 punteros
a bloque de datos = 256 bloques de datos)– 1 puntero indirecto doble (a bloque con 256 punteros que
apunta a 256 bloques con punteros a 256 bloques de datos = 256*256 bloques de datos)
– 1 puntero indirecto triple (=256^3 bloques de datos) Bloques direccionables totales= 10+256+256^2+256^3 Ej. Tamaño bloque 1024bytes(1k) -> 16Gbytes
direccionables (para un solo fichero)
Bloques de datos
Contienen una parte de la información –el contenido real- del fichero del que forman parte
Pueden contener también punteros indirectos o directorios (bloque de datos normal interpretado de manera especial por el fs)
Estructura interna de un directorio
Un bloque de datos con entradas– Nº de inodo + nombre de fichero
En ext2fs tiene tamaño variable (hasta 256 bytes) Inodo (4 bytes) Tamaño de la
entrada (1byte)Longitud del nombre (1byte)
Nombre archivo (250 bytes)
Inodo (4 bytes) Tamaño de la entrada (1byte)
Longitud del nombre (1byte)
Nombre archivo (250 bytes)
···
Estructura interna de un directorio
La estructura del FS queda ligada:– Un inodo apunta a uno o varios bloques de datos– Un bloque de datos apunta –o no- a otros bloques de datos– Un inodo puede apuntar a un directorio– Un directorio, a su vez, apunta a ficheros a través de su inodo.
Bloquede
arranque
Super-bloque ...Tabla
denodos-i
Bloquede
datos
datos ...Direc-torio
Comandos para la creación y administración del FS
Usar “man <comando>” para obtener una descripción detallada y las opciones y parámetros que se deben usar.– Fdformat: formato a bajo nivel de la unidad
– Mke2fs: creación de la estructura ext2fs en una unidad
– Badblocks: busca bloques erroneos en una unidad
– E2fsck: comprueba integridad de un fs ext2fs.
– Debugfs: depurador del sistema de ficheros
– Tune2fs: configura parámetros de un fs.
– Dumpe2fs: muestra información sobre un fs
Comandos para la creación y administración del FS
– dd
– Mkswap, swapon, swapoff
– tar.
– Gzip
– ln
Estructura directorios Linux La distribución de Linux no ha transformado
en mucho la arborescencia Existe un estándar de sistema de archivos
(FSSTND: File System Standard) Las distribuciones Linux más importates y
algunos Unix respetan este estándar http://es.tldp.org/Estandares/fsstnd12.html
Los directorios Linux
/bin /boot /dev /etc /home /lib /mnt
/proc /root /sbin /tmp /usr /var
Archivos arranque: /boot
Al inicio del sistema el programa de “booteo” analizará el directorio /boot
Entre los objetos buscados esta el archivo map, a través del cual LILO determinará el lugar del núcleo en el disco duro
Sin esta información LILO no puede cargar el kernel en memoria principal
Los comandos en /bin
Los comandos más importantes están almacenados en este directorio
Ejemplo: ls, who, ps etc. Menos importantes: /usr/bin El colocar un comando en un directorio o en
otro es una elección perfectamente arbitraria Se justificaba en la época de discos duros
rápidos y caros, contra los lentos y baratos
Los periféricos /dev
Todos los controladores (drivers) de periféricos son accedidos a través archivos de periféricos
Son interfaces con los controladores de periféricos y no contienen nada
Dos tipos: caracteres y bloques No tienen lo que se podría llamar un tamaño
Los archivos configuración /etc
Archivos de configuración Antiguos sistemas: comandos administración FSSTD dice que solo archivos configuración En algunos casos existe directorio /etc/rc.d, que
contiene scripts usados en el booteo Se pueden almacenar archivos que serán
copiados automáticamente en el directorio personal de un nuevo usuario
Archivos importantes en /etc
fstab gettydefs group inittab lilo.conf
mtab passwd securetty shells termcap ttytype
/home
Directorio personal de los usuarios Ventajas:
– usuario se beneficia de su propio sistema de archivos– pocos derechos de escritura le son atribuidos
Una vez que los usuarios tienen definido su lugar en un sistema archivos, es posible definir las limites de zonas de memoria (quotas)– un usuario no podrá monopolizar toda la memoria
Las bibliotecas compartidas de /lib
Linux ofrece la posibilidad de utilizar las bibliotecas de funciones comunes
Las bibliotecas compartidas indispensables al arranque se encuentran aquí
Otras bibliotecas se encuentran en /usr/lib
El directorio /proc
Es un pseudo-sistema de archivos Todos los archivos de este directorio no ocupan espacio
en el disco Se trata de construcciones lógicas en memoria Apuntan hacia programas en memoria principal que leen
información sin depositarla en el disco duro Contiene archivos que permiten
– leer la configuración actual del sistema – informarse acerca de los procesos en ejecución
Los comandos admon de /sbin Los archivos más importantes para iniciar Linux se
encuentran en /etc y /sbin Contiene comandos para administrar Linux Se pueden distinguir tres dominios claves:
– los comandos de sistema generales: init, swapon, getty, swapoff, mkswap, etc
– los comandos de arranque y detención del sistema: shudown, fastboot, fasthalt, reboot, etc
– los comandos que administran el espacio del disco duro: fsck, e2fsck, mkfs, mke2fs, fdisk, etc
Los archivos temporales de /tmp
Mucho software necesita un espacio temporal de almacenamiento
Por ejemplo: editores, compiladores, etc Directorio accesible a todo mundo en
lectura/escritura
Las variables del directorio /var
FSSTND hace diferencia entre zonas en las que los usuarios solo pueden leer y las que solo pueden escribir
Los datos de usuario son divididos en – /usr: datos que los usuarios solo pueden leer– /var: datos que los usuarios pueden leer/escribir
Usuario común no sabe que algunos comandos crean datos bajo su nombre, ejemplo: man
La impresión es otro ejemplo, la tarea es provisoriamente almacenada en los sub-directorios: /var/spool/lpd.
Otros dominios en los cuales son creados archivos y tratados a nombre del usuario:– el lanzamiento por calendarización a intervalos
regulares de comandos y de scripts (comandos at y cron)
– la transmisión de informaciones (mail)– el contar con un registro de conexiones o
contabilidad (p.e. archivos .log)
Los sub-directorios /usr
/usr/X11R6 /usr/bin /usr/doc /usr/etc /usr/games /usr/include
/usr/info /usr/lib /usr/local /usr/man /usr/sbin /usr/src
Contiene conjunto directorios en los cuales Linux almacena datos muy importantes