Clase de Filesystem + Taller

Documentos relacionados
Clase práctica - Filesystem

PREPARACION DE UN DISCO

Sistemas de ficheros en Servidores de Información multimedia

Sistemas Operativos. Curso 2016 Sistema de Archivos

Componente del sistema operativo que maneja el acceso a los archivos.

Sistemas de archivos. Introducción Particiones. Proceso de arranque Sistemas de archivos. Administración

SISTEMAS OPERATIVOS: SISTEMAS DE FICHEROS. Aspectos del diseño de un sistema de ficheros

GESTIÓN DE ARCHIVOS. Presentado por: Alba Arosemena Alma Vargas Hospicia Mendoza Roselvira Fernández Ahías Arosemena

Gestión de almacenamiento secundario

Sistemas Operativos Tema 10. Sistema de archivos José Miguel Santos Alexis Quesada Francisco Santana Belén Esteban

Tema 1: Implementación del sistema de archivos

EJERCICIOS DE FICHEROS:

Sistemas de archivos distribuidos. Alvaro Ospina Sanjuan

Archivos. Teoría de Sistemas Operativos. Archivos. Archivos. Archivos. Archivos. Administración de Archivos

Los dispositivos de almacenamiento secundario pueden ser muy distintos (discos rígidos, memorias flash, DVD, magnetic tape)

Sistemas de archivos

6 Sistemas de Archivos

Sistemas de archivos: Estructura en el dispositivo

REPRESENTACIÓN INTERNA DE FICHEROS

NTFS (Windows NT) Principales características que se deseaba que tuviera. Manejo de disco: $MFT Master File Table

Sistemas operativos. Tema 10: Sistemas de ficheros

TEORÍA DE SISTEMAS OPERATIVOS Gabriel Astudillo Muñoz ALMACENAMIENTO JERARQUÍA DE MEMORIA PROBLEMA

Comandos para manipulación de archivos y directorios Parte II

Sistemas de Ficheros en GNU/Linux

Sistema de Ficheros. Sistemas Operativos - ITIG. Álvaro Polo Valdenebro. Abril apoloval@gsyc.es. GSyC Introducción 1

Estructura de un disco duro

Sistemas de Archivos Implementación. Módulo 11. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

aspectos fundamentales

FACULTAD DE INFORMATICA SISTEMAS OPERATIVOS 3º de Informática.

SISTEMAS DE ARCHIVOS. Conrado Perea

Unidad V: Sistemas de archivos 5.1 Concepto

Segundo control de teoría

SISTEMAS OPERATIVOS SISTEMA DE ARCHIVOS

Tema 5. Sistemas de Ficheros

T5.- Gestión de discos Estructura física del disco duro. TEMA 5 GESTIÓN DE DISCOS Estructura física del disco duro.

De Wikipedia, la enciclopedia libre

Recuperación de Información en RAIDs

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.

Unidad 4 - PARTICIONES -

Tablas de particiones y Sistemas de ficheros

TEMA 7: EL SISTEMA DE ARCHIVOS

Instalación de dos Sistemas Operativos en un mismo Computador

Capítulo 2. Sistemas Operativos. Elementos, estructura y funciones generales.

Introducción a los sistemas de archivos FAT, HPFS y NTFS

004. Archivos y directorios

Organización de Computadoras

Administrador de File System FAT16 y FAT32

TEMA 6: «LOS SISTEMAS DE ARCHIVO» Implantación de Sistemas Operativos

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009

Tema 5. Sistemas de ficheros avanzados

Tema 4. Particiones y Sistemas de Archivos. Sistemas Operativos Monopuesto 1º SMR

Práctica 7. Organización del Computador 1 2do. Cuatrimestre de 2005

NOCIONES SOBRE DISCOS DUROS

Persistencia de datos

Práctica 7 Dispositivos de Entrada/Salida

SOLUCIONES. DURACIÓN: Dispone de 120 minutos para realizar el examen.

Convivencia. Gestión del Sistema de Archivos

Diseño de Sistemas Operativos. Capítulo 8 Gestión de Archivos y Directorios

TEMA 4. SISTEMA DE ARCHIVOS

Cuestionario almacenamiento en disco y gestión de memoria.

Unidad 1 Discos Rígidos Sistemas de Archivos y Particiones.

GESTION DE LA MEMORIA

Análisis Forense. Prof. Reinaldo Mayol

Objetivos. Conocer los distintos dispositivos de memoria y almacenamiento existentes y valorar ventajas e inconvenientes de cada uno

Sistemas operativos y sistemas de archivos

Nombres de archivo. Sistemas Operativos III - ETB EMT - CETP

Recopilación presentada por 1

Sistemas de archivos: Estructura en el dispositivo

CURSO DE INFORMÁTICA. Unidades Penales Provincia de Buenos Aires Konrad Bucheli

Qué es una máquina virtual?

Organización de la información en disco: archivos y carpetas

Tema 3. Estructura física y lógica del Disco Duro

1 OBTENER EL CD DE UBUNTU 2 INSERTAR EL CD 3 ELEGIR EL IDIOMA. Coleccion: Ubuntu para Torpes

Tecnologías de la Información y la Comunicación I

Instalación de un segundo sistema operativo

Segundo parcial de Sistemas Operativos. 24/6/2008. Ejercicios. 5 puntos. Duración 2h.

TP N 7 Comandos "mount" y "umount"

TestDisk Paso a Paso

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

GUÍA DE INSTALACIÓN DE SLACKWARE LINUX 11.0 v. 1.0

Clase Práctica Memoria Caché

Selección de los puntos de montaje

Memoria Virtual. Ing. Jorge Castro-Godínez

Creación de un pendrive USB de instalación de SO

Trabajo Práctico Número 6

Examen de Fundamentos de sistemas distribuidos

Unidad 2: SISTEMAS ARCHIVOS

Transcripción:

Clase de Filesystem + Taller Juan Pablo Darago 3 de octubre de 2013

Introducción General Ideas generales Organizando Archivos Ext2 Enunciado Ejercicio

Introducción General

Sistemas de Archivos Qué es un sistema de archivos (filesystem)? Una abstracción sobre almacenamiento permanente que nos permite manejar y estructurar la información mediante archivos. Abstraer la ubicación física (la red, un sector de un disco, etc.) de la información en una ubicación abstracta (árbol de directorios, nombres). Qué es un archivo? En UNIX: TODO! Los directorios, los devices, archivos en disco, en un filesystem en la red, etc. En general, secuencia de bytes sin estructura. La estructura se las da el que los usa (o el mismo filesystem. Ejemplo: Directorios).

Filesystems en lo que vamos a ver Hay muchos sistemas de archivos Windows: FAT16, FAT32, NTFS UNIX/Linux: UFS, Minix 3, Ext2, Ext3 Nos vamos a concentrar en filesystems sobre disco y como organizar archivos ahi. Uno de los que vamos a ver (Ext2) también es la base de la capa de abstracción general (VFS) de Linux para todos los sistemas de archivos. Pero primero entonces, vendría bien un repaso de como es un disco duro.

Disco duro Figura: Disco duro

Ideas generales

Organizando Archivos

Asignación Continua Concepto: Ventajas: Almacenamos cada archivo en sectores consecutivos. Acceder al contenido de un archivo es muy muy rápido. Desventajas: Borrar o modificar un archivo tiene muchos problemas. Sufre de mucha fragmentación interna y externa. Interna: Necesito si o si bloques consecutivos. Si el más chico en donde entra es enorme, el resto esta perdido. Externa: Al crear muchos archivos chicos y borrarlos.

Lista enlazada Concepto: Ventajas: En cada bloque de un archivo guardo un puntero al proximo bloque (si lo hay). Menos fragmentación, uso mejor los bloques de disco. No es malo para acceso secuencial. Simple de implementar. Desventajas: Corrupción de puntero == archivo inconsistente. Seeks aleatorios son carísimos. Si uso sectores lejanos incluso el acceso secuencial es malo.

FAT (File Allocation Table) Concepto: Ventajas: Metamos todos los punteros en una tabla! Usando poca memoria RAM puedo acceder a cualquier lugar del disco en 1 acceso. Muy muy sencillo de implementar y debuggear. Desventajas: La tabla crece con el disco, para ciertos tamaños no es muy razonable. Necesito la tabla entera en memoria. Se daña el sector de la FAT == filesystem inconsistente. FAT en memoria + crash == filesystem inconsistente.

Ejercicio sobre FAT Se tiene un disco con capacidad de 128 GB, con bloques de 8 KB. Suponga un sistema de archivos similar a FAT, donde la tabla se ubica desde la posición 0. 1. Cuál es el tamaño de la tabla? 2. Se sabe que un archivo comienza en el bloque 2000. Dada la siguiente FAT, indicar el tamaño del archivo, asumiendo que ocupa totalmente todos los bloques que necesita. B 0 1... 614... 703 704... 2000 2001... S 1 2... EOF... 704 EOF... 2001 703...

Inodos Concepto: Utilizar una estructura para cada archivo. Ventajas: A cada archivo tiene un i-nodo con metadatos. El inodo contiene punteros a bloques de datos y a bloques con más punteros Los directorios en vez de punteros tienen entradas < nombre, inodo del subpedazo > Buen trade-off acceso secuencial y aleatorio. Cuanta RAM consumo depende de los inodos cargados. Robusto: se corrompe un inodo, no se cae todo el filesystem Inodos tiene tamaño fijo, fácil meter en arreglos. Desventajas: Tamaño máximo de archivo esta acotado.

Ejercicio i-nodos En un FS con inodos de 256 bytes se desea acelerar el resultado de la operación ls la que muestra los nombres de los archivos, sus atributos y su tamaño % l s l a drwxr xr x 20 r o o t wheel 2560 25 may 1 8 : 5 1. drwxr xr x 21 r o o t wheel 512 2 j u n 0 0 : 2 1.. drwxr xr x 2 r o o t wheel 512 16 may 1 9 : 4 4 X11 rw r r 1 r o o t wheel 221 16 f e b 2 3 : 1 9 amd. map rw r r 1 r o o t wheel 1248 16 f e b 2 3 : 1 9 apmd. c o n f rw r r 1 r o o t wheel 241 16 f e b 2 3 : 1 9 auth. c o n f drwxr xr x 2 r o o t wheel 512 16 f e b 2 3 : 1 9 b l u e t o o t h rw r r 1 r o o t wheel 736 16 f e b 2 3 : 1 9 c r o n t a b Si el FS tiene bloques de 512bytes, los i-nodos de un mismo directorio se encuentran contiguos y el primero comienza al principio de un bloque. En el listado del ejemplo, cuántos accesos a bloques fueron necesarios? Cómo podría modificarse el FS para resolverlo en un acceso? Cuál sería el precio que se pagaría?

Aspectos más generales Ok, ya sabemos como organizar un archivo. Pero, también de disco booteamos y desde ahi el filesystem se reconoce a si mismo. Cómo? Master Boot Record: Ubicado en el primer sector del disco. Levantado a memoria apenas termina el POST de la máquina. Contiene código de para levantar la computadora al principio. Tiene la tabla de partición: Las secciones del disco duro (donde están y su longitud). Ok, eso resuelve encender. Como incializo el Filesystem? Lo vamos a ver analizando Ext2, El Second Extended Filesystem, durante muchos años el más popular de Linux.

Ext2

Presentación Taller En el taller que nos trajo a todos aca, tienen que trabajar con el sistema de archivos Ext2 Popular, muy documentado, mejorado en Ext3 y Ext4. Empezó como el filesystem de Linux pero implementaciones existen para BSD, Windows, etc. Les damos una implementación parcial de un driver para Ext2 y tienen que implementar unas funciones. Luego tienen que usar esas funciones para leer una imágen de disco y obtener unos datos.

Estructura El disco empieza con espacio para el bootblock de la partición. Después sigue un conjunto de Block Groups. Empiezan con el super block, que tiene todos los datos del filesystem. Replicado en cada grupo. Sigue el block group descriptors, que tiene los datos de cada grupo. También replicado como el super block. Luego sigue la información específica a ese grupo de bloques. Data block bitmap Inode bitmap Inode table Data blocks: Donde guardamos los datos efectivamente.

En detalle Data block bitmap: Un mapa de bits: que bloques están libres. Inode bitmap: Un mapa de bits: que inodos estan libres. Inode table: Arreglo con los datos de los inodos. Figura: Estructura Ext2

Inodo de Ext2 en detalle. Cada inodo tiene 12 punteros a bloques con datos. Cada inodo tiene un puntero indirecto. Puntero a un bloque con punteros a bloques Cada inodo tiene un puntero doble indirecto. Puntero a un bloque con punteros a bloques con punteros. Los inodos pueden ser de varios tipos. Pueden ser desde directorios hasta pipes, sockets, devices, etc. Los inodos directorio en vez de punteros tienen En vez de punteros, tienen estructuras de directorio. Cada estructura guarda la longitud de la entrada, longitud del nombre, nombre (no necesariamente null-terminated) e inodo. Los pedazos se juntan con / en UNIX. Un inodo fijo (el 2) es el root node (/) del filesystem.

Inodo esquemático

Estructuras en el código Veamos como es cada estructura en el código. Las mismas son copia exacta de como se ubican en disco (asumiendo Little-Endian), ya que los structs y clases de C++ tienen contenido consecutivo en memoria. Miremos entonces: MBR Super bloque Descriptor de grupo de bloques Inodo Entrada de directorio.

Enunciado

Enunciado Taller 1. Completar la implementación de los siguientes métodos: 1.1 get_block_address(inode,block_number) 1.2 load_inode(inode_number) 1.3 get_file_inode_from_dir_inode(from,filename) 2. Hacer un programa que, utilizando el FS programado en el punto anterior, imprima los 17 caracteres que se encuentran guardados en el archivo /grupos/gnumero/nota.txt (de la imágen de disco hdd.raw provista) a partir de la posición 14000.

Ayudas para el taller Haganlos en el órden dado. Funciones utiles: read_block: Lee un bloque de disco a un buffer strcmp: Te devuelve 0 si dos strings son iguales. block_group: Devuelve el puntero a descriptor del blockgroup blockgroup_for_inode: Devuelve el número de blockgroup del inodo. blockgroup_inode_index: Devuelve el offset dentro de la tabla de inodos para el inodo. Datos sobre el filesystem en general: En el superbloque. Datos sobre un block group: En su descriptor de blockgroup. Directorio: Un archivo común cuyo CONTENIDO son entradas de directorio como la que vimos. Descompriman la imagen hdd.raw.gz para usarla. Tienen estructuras para cada tipo necesario!

Documentación Taller http://www.nongnu.org/ext2-doc/ext2.html http://e2fsprogs.sourceforge.net/ext2intro.html http://wiki.osdev.org/ext2 http://oreilly.com/catalog/linuxkernel2/chapter/ ch17.pdf

Ejercicio

Ejercicio de tarea para despues del taller Se tiene un disco rígido con un sistema de archivos de tipo FAT. Se pide programar el algoritmo l o a d F i l e ( const char path, v o id b u f f e r ) Para ello utilice las siguientes estructuras y funciones.

Estructuras s t r u c t F32BR { unsigned char jumpcode [ 3 ] ; unsigned char OEMName [ 8 ] ; unsigned s h o r t b y t e s _ p e r _ s e c t o r ; unsigned char s e c t o r s _ p e r _ c l u s t e r ; unsigned s h o r t r e s e r v e d _ s e c t o r s ; unsigned char number_of_fat_copies ; unsigned s h o r t max_dir_entries_for_root ; unsigned s h o r t small_num_of_sectors ; unsigned char m e d i a _ d e s c r i p t o r ; unsigned s h o r t sectors_per_fat ; unsigned s h o r t s e c t o r s _ p e r _ t r a c k ; unsigned s h o r t number_of_heads ; unsigned i n t h i d d e n _ s e c t o r s ; unsigned i n t number_ of_ sectors ; unsigned s h o r t l o g i c a l _ d r i v e _ n u m b e r ; unsigned char e x t e n d _ s i g n a t u r e ; unsigned i n t s e r i a l _ n u m b e r ; unsigned char volume_name [ 1 1 ] ; unsigned char FAT_name [ 8 ] ; unsigned char code [ 4 4 8 ] ; unsigned char b o o t _ r e c o r d _ s i g n a t u r e [ 2 ] ; } fat_bs ; // Ya e s t a c a r g a d a en memoria

Mas estructuras v o id hdd_load_sector ( unsigned i n t s e c t o r, v oid b u f f e r ) ; s t r u c t d i r _ e n t r y { unsigned char name [ 8 ] ; unsigned char e x t e n s i o n [ 3 ] ; unsigned char a t t r i b u t e s ; unsigned char nada [ 1 0 ] ; unsigned s h o r t time ; unsigned s h o r t d a t e ; unsigned s h o r t c l u s t e r ; unsigned i n t f i l e _ s i z e ; } ; bool i s _ d i r ( s t r u c t d i r _ e n t r y de ) ; bool i s _ f i l e ( s t r u c t d i r _ e n t r y de ) ; i n t s p l i t _ p a t h ( const char path, char a r r a y ) ; Documentación sobre FAT 32: http://home.teleport.com/~brainy/fat32.htm http://wiki.osdev.org/fat

Algunas aclaraciones Consideraciones: En FAT32 las direcciones de sectores son de 28 bits, los 4 más altos se ignoran. En FAT32 se le llama cluster al sector en disco y sector al bloque. En FAT32 hay varias FAT por redundancia. Los directorios empiezan donde indica la entrada de directorio y contienen entradas de directorios consecutivas. Asuman que terminan en 0. En FAT32, el layout del disco es F32BR Sectores Reserv. FAT1 FAT2 RootDir Datos

Dudas Dudas? A programar!