Sistemas de ficheros locales Sistemas de ficheros distribuidos Tema 4: Sistemas Operativos Distribuidos Sistemas de Ficheros Enrique Soriano LS, GSYC 5 de noviembre de 2014 Sistemas de ficheros locales Sistemas de ficheros distribuidos (cc) 2014 Grupo de Sistemas y Comunicaciones. Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento NoComercial - SinObraDerivada (by-nc-nd). Para obtener la licencia completa, v´ ease http://creativecommons.org/licenses/by-sa/2.1/es. Tambi´ en puede solicitarse a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Las im´ agenes de terceros conservan su propia licencia. Sistemas de ficheros locales Sistemas de ficheros distribuidos Sistemas de ficheros locales Sistemas de ficheros locales Sistemas de ficheros distribuidos Ficheros • Tradicionalmente: datos que persisten tras la ejecuci´ on del proceso y/o del sistema (excepci´ on: ramfs), y que son compartidos por distintos procesos y/o sistemas. • Requisitos: • • • • Gran tama˜ no Durabilidad Acceso concurrente Protecci´ on • M´ as general: es una interfaz. P. ej. puede representar un dispositivo. Sistemas de ficheros locales Sistemas de ficheros distribuidos Ficheros de datos • Estructura: fichero simple (UNIX), Resource Forks (Mac)... • Nombre: ¿extensi´ on? • ¿Tipos? Sistemas de ficheros locales Sistemas de ficheros distribuidos Ficheros: Estructura Interna • Bloque f´ısico → determinado por el HW (sector). Tradicionalmente de 512 bytes, algunos fabricantes est´an pasando a 4 Kb. • Bloque l´ ogico → determinado por el sistema de ficheros. • Si no coinciden, empaquetamos. • Siempre hay fragmentaci´ on interna en los bloques. • ¿Tama˜ no? compromiso entre: ↑ tama˜ no de bloque ⇒ ↑ fragmentaci´on ↑ tama˜ no de bloque ⇒ ↑ tasa de transferencia Sistemas de ficheros locales Sistemas de ficheros distribuidos Discos Acceso al disco: • Secuencial: se accede registro a registro (contiguos). Antiguo (cintas magn´eticas). • Aleatorio: se accede a cualquier registro inmediatamente. Los HD permiten este acceso. Sistemas de ficheros locales Sistemas de ficheros distribuidos Discos • Direccionamiento de bloques: CHS, LBA. • As´ı eran: 9/17/12 Imagen: Public Domain, Wikipedia upload.wikimedia.org/wikipedia/commons/0/02/Cylinder_Head_Sector.svg Sistemas de ficheros locales Sistemas de ficheros distribuidos Discos • Algoritmo de planificaci´ on de disco: c´ omo organiza el SO las operaciones de entrada/salida. • El algoritmo depende totalmente del tipo de disco que usemos. • Los cl´ asicos: • FIFO: es justo, no altera el orden de las operaciones. Lento en discos mec´anicos. • Shortests Seek First: no es justo, puede provocar hambruna, desordena operaciones. • SCAN (Ascensor): compromiso justicia/eficiencia, no provoca hambruna, desordena operaciones. Sistemas de ficheros locales Sistemas de ficheros distribuidos Discos: RAID • RAID: Redundant Array of Inexpensibe Disks. • Es un caso de virtualizaci´ on de almacenamiento. • Pueden estar implementados por HW o por el SO. Sistemas de ficheros locales Sistemas de ficheros distribuidos Discos: RAID 0 • Striping (interleaving) por bloques. • Sin redundancia. • Bloques contiguos se escriben en paralelo. 9/17/12 upload.wikimedia.org/wikipedia/commons/9/9b/RAID_0.svg RAID 0 Imagen: (cc) from Wikipedia A1 A3 A5 A7 A2 A4 A6 A8 Disk 0 Disk 1 Sistemas de ficheros locales Sistemas de ficheros distribuidos Discos: RAID 1 • Mirror. • Distintas lecturas en paralelo. 9/17/12 upload.wikimedia.org/wikipedia/commons/b/b7/RAID_1.svg RAID 1 Imagen: (cc) from Wikipedia A1 A2 A3 A4 A1 A2 A3 A4 Disk 0 Disk 1 Sistemas de ficheros locales Sistemas de ficheros distribuidos Discos: RAID 4 • Striping (interleaving) por bloques. • Dedica un disco entero para la paridad. • Se soporta el fallo de un disco. 9/17/12 upload.wikimedia.org/wikipedia/commons/a/ad/RAID_4.svg RAID 4 Imagen: (cc) Wikipedia A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3 Ap Bp Cp Dp Disk 0 Disk 1 Disk 2 Disk 3 Sistemas de ficheros locales Sistemas de ficheros distribuidos Discos: RAID 5 • • • • Striping (interleaving) por bloques. La paridad est´a distribuida por los discos. Se soporta el fallo de un disco. File:RAID 5.svg Soluciona el cuello de botella de RAID 4. From Wikipedia, the free encyclopedia 9/17/12 File:RAID 5.svg -‐‑ Wikipedia, the free encyclopedia No higher resolution available. RAID_5.svg (SVG file, nominally 675 × 500 pixels, file size: 26 KB) Imagen: (cc) Wikipedia This image rendered as PNG in other sizes: 200px, 500px, 1000px, 2000px. Sistemas de ficheros locales Sistemas de ficheros distribuidos SAN • SAN (Storage Area Network): proporciona almacenamiento de bloques a trav´es de la red. • Es un disco en red, no es un sistema de ficheros en red. • Ejemplos: iSCSI, ATA over Ethernet (AoE), HyperSCSI. Sistemas de ficheros locales Sistemas de ficheros distribuidos Particiones PC () Esquema tradicional de los PC (se est´a abandonando): • MBR: Primer bloque del disco (512 bytes). • Cargador primario: 440 bytes. • Tabla de particiones primarias: 4 entradas de 16 bytes. • Arrancable/no arrancable. • Direcci´ on del primer bloque (CHS). • Tipo de partici´ on (ntfs, linux, linux swap, plan9, ...). • Direcci´ on del u ´ltimo bloque (CHS). • Direcci´ on del primer bloque (LBA). • N´ umero de bloques de la partici´ on. • Direcciones de 32 bits: como mucho discos de 2TB. • Partici´ on l´ogica: partici´ on dentro de una partici´on primaria extendida. Sistemas de ficheros locales Sistemas de ficheros distribuidos Particiones UEFI GUID Partition Table (GPT) : • Usa direcciones y tama˜ nos de 64 bits. • Primer bloque (LBA 0): legacy MBR. • Segundo bloque (LBA 1): GPT header, con punteros para: • Array de bloques con la tabla de particiones (empieza en LBA 2). El array tiene un tama˜ no m´ınimo de 16 Kb independientemente del tama˜ no del sector f´ısico. Las entradas en la tabla (128 bytes) continenen: tipo de particion, LBA del primer bloque, LBA del u ´ltimo bloque, atributos (read-only, oculta, etc.), nombre de particion... • Copia de la cabecera. • El primer bloque usable. • ... • El cargador est´ a en una partici´ on de tipo ESP (EFI System Partition, que es una FAT). Sistemas de ficheros locales Sistemas de ficheros distribuidos Sistemas de Ficheros • Invenci´ on del SO para ofrecernos ficheros. • Se puede implementar de distintas formas: asignaci´ on continua, enlazada, enlazada con tabla, indexada... Sistemas de ficheros locales Sistemas de ficheros distribuidos Asignaci´on de espacio (FS): contigua • Un fichero ocupa una serie de bloques contiguos en disco. • Acceso a disco r´ apido (secuencial). • Rendimiento alto: un acceso para conseguir un dato cualquiera → la entrada de directorio contiene la direcci´on de inicio y la longitud del fichero. • Problema: si hay asignaci´ on din´amica → fragmentaci´on externa. • Problema: hay que saber el tama˜ no m´aximo del fichero cuando se crea. • Compactaci´ on. Sistemas de ficheros locales Sistemas de ficheros distribuidos Asignaci´on de espacio (FS): enlazada • Un fichero es una lista enlazada de bloques. • Se tienen punteros al primer y al u ´ltimo bloque. • Datos por bloque = tama˜ no de bloque - tama˜ no de estructura. • Ventajas: • No hay fragmentaci´ on externa. • Tama˜ nos no limitados por huecos. • Problemas: • Acceso aleatorio ineficaz. • Necesitamos estructura de metadatos en cada bloque para el enlace. ¿qu´e pasa si se pierde una estructura? Sistemas de ficheros locales Sistemas de ficheros distribuidos Asignaci´on de espacio (FS): enlazada de clusters • Cluster: agrupaci´ on de bloques contiguos (e.g. 32 Kb). • No se desperdicia tanto (1 estructura para n bloques). • B´ usqueda m´as r´apida (menos saltos). • Aumenta la fragmentaci´ on interna. Sistemas de ficheros locales Sistemas de ficheros distribuidos Asignaci´on de espacio (FS): enlazada con tabla Tabla FAT: • La tabla FAT reside en memoria. • Una entrada por cluster. • El ´ındice de la tabla es el n´ umero de cluster. • La entrada de directorio tiene la referencia a la entrada primer cluster. • La entrada del cluster actual referencia la entrada del siguiente cluster. • Mejora del acceso aleatorio: no hay que leer los clusters del fichero para conseguir la direcci´ on del cluster N. Sistemas de ficheros locales Sistemas de ficheros distribuidos Asignaci´on de espacio (FS): enlazada con tabla FAT 0 0 1 -1 2 0 3 0 4 9 5 0 6 0 7 0 8 0 9 11 10 0 11 1 12 0 ... n 0 MYFILE.txt First: 4 clusters: 4 9 11 1 Sistemas de ficheros locales Sistemas de ficheros distribuidos Asignaci´on enlazada con tabla: FAT • Tabla FAT en memoria principal → no puede ser muy grande → clusters grandes → fragmentaci´ on interna. • El acceso aleatorio es m´ as r´apido que en lista enlazada normal. • ¿Y si se estropea la tabla FAT? Sistemas de ficheros locales Sistemas de ficheros distribuidos Ejemplo: FAT32 Reserved sectors Fat Region Data Region • El sector 0 de la partici´ on es el boot sector (tambi´en est´a duplicado en el sector 6). Contiene c´ odigo del cargador e informaci´on sobre el sistema de ficheros: • • • • • No de sectores, 4 bytes (Max. tam. de disco: 2 Tb) Etiqueta del volumen. No de copias de la tabla FAT. Primer cluster del ra´ız. ... Sistemas de ficheros locales Sistemas de ficheros distribuidos Ejemplo: FAT32 • Entrada de directorio (32 bytes): • • • • • • • • Nombre del archivo, 8 Bytes. Extensi´ on del archivo, 3 Bytes. Atributos del archivo, 1 Byte. Reservado, 10 Bytes. Hora de la u ´ltima modificaci´ on, 2 bytes. Fecha de la u ´ltima modificaci´ on, 2 bytes. Primer cluster del archivo, 4 bytes. Tama˜ no del archivo, 4 bytes. • Clusters de 32 Kb, 64 sectores. Sistemas de ficheros locales Sistemas de ficheros distribuidos Asignaci´on de espacio (FS): indexada • Idea: se indexan los bloques de datos del fichero en un bloque de indirecci´on. • Bloque de indirecci´ on grande → desperdicio. • Bloque de indirecci´ on peque˜ no → no soporta ficheros grandes. • Para un acceso a datos, siempre son dos accesos a disco. Sistemas de ficheros locales Sistemas de ficheros distribuidos Asignaci´on de espacio (FS): indexada multinivel • Por niveles. P. ej. indirecci´ on doble: • Los bloques de ´ındice de 1er nivel apuntan a bloques de ´ındice de 2o nivel. • Los bloques de ´ındice de 2o nivel apuntan a bloques de datos. • Ejemplo: bloques de 4Kb con punteros de 4 bytes. • Problema: Para los ficheros peque˜ nos, desperdiciamos. • Problema: Para un acceso a datos, n accesos a disco. Sistemas de ficheros locales Sistemas de ficheros distribuidos Asignaci´on de espacio: indexada con esquema combinado • Algunos bloques directos de datos. • Algunos bloques de indirecci´ on simple. • Algunos bloques de indirecci´ on doble. • ... • Nos quedamos con lo mejor de cada m´ etodo anterior. Sistemas de ficheros locales Sistemas de ficheros distribuidos Ficheros en UNIX: I-NODOS Asignaci´on indexada con esquema combinado: I-NODE Data Metadata (size, mode, etc.) Data Data ... Direct Blocks Data Data Direct Blocks Data ... Single Indirect Double Indirect Data Data ... Single Indirect Triple Indirect ... ... ... Direct Blocks ... Data Sistemas de ficheros locales Sistemas de ficheros distribuidos UNIX: Partici´on Boot Block Super Block I-Node vector Data • Bloque de arranque (boot block): c´ odigo de arranque del sistema. • Superbloque: tama˜ no del volumen, n´ umero de bloques libres, lista de bloques libres, tama˜ no del vector de i-nodos, siguiente i-nodo libre, cierres... • Vector de i-nodos: representaci´ on de los ficheros. • Bloques de datos. Sistemas de ficheros locales Sistemas de ficheros distribuidos UNIX: I-NODOS • Cada fichero/directorio tiene un i-nodo asociado, definido por un n´ umero de i-nodo. El directorio ra´ız siempre tiene el n´ umero de i-nodo 2. • La estructura se localiza en el vector indexando por el n´ umero de i-nodo. • La estructura contiene: • permisos • tiempos • acceso a datos (atime) • modificaci´ on de los datos (mtime) • modificaci´ on del i-nodo (ctime) • tama˜ no • due˜ no • tipo • n´ umero de bloques • contador de referencias (links) • No contiene el nombre de fichero. Sistemas de ficheros locales Sistemas de ficheros distribuidos UNIX: I-NODOS • Un directorio relaciona un nombre con un i-nodo, en una entrada. • Tiene: • Su propio i-nodo • Bloques de datos con la lista de entradas • Entre las entradas, tiene la entrada de . (su i-nodo) y .. (i-nodo del padre). Sistemas de ficheros locales Sistemas de ficheros distribuidos UNIX: I-NODOS /home/joe/test.txt ROOT 2 2 3 5 DATA BLOCK 321 . .. usr home 5 2 7 9 ... I-NODE 5 DATA BLOCK 239 . .. joe jane ... 7 5 12 . .. test.txt ... I-NODE 7 METADATA METADATA direct-block 321 direct-block 239 Sistemas de ficheros locales Sistemas de ficheros distribuidos UNIX: I-NODOS • Enlaces duros: es otro nombre para el fichero, la entrada de directorio apunta al mismo i-nodo que el antiguo nombre. • Enlaces simb´ olicos: es un fichero cuyos datos contienen la ruta al fichero enlazado → pueden romperse. Sistemas de ficheros locales Sistemas de ficheros distribuidos Implementaci´on de directorios • Lineal • Pro: simple. • Contra: b´ usqueda lineal. • Lineal ordenada • Pro: b´ usqueda binaria. • Contra: complica creaci´ on y borrado. • Tabla hash con desbordamiento • Pro: mucho m´ as r´apida que lineal. • Contra: m´ as complejidad. ´ • Arboles (e.g. b+ en NTFS, JFS...) ... Sistemas de ficheros locales Sistemas de ficheros distribuidos Gesti´on de espacio libre • Bitmap: r´ apido. Inconveniente: puede ser demasiado grande como para tenerlo entero en memoria .P. ej. para 2TB de bloques → mapa de 512 MB. • Lista enlazada de bloques libres: ineficiente si buscamos varios, pero por lo general s´ olo se busca uno libre. • Agrupaciones: el primer nodo en la lista no est´ a vac´ıo; tiene enlaces a n bloques libres, los n-1 primeros vac´ıos, el u ´ltimo con n m´as. Ventaja: se pueden encontrar r´apidamente las direcciones de n bloques libres. • Cuenta: guarda en una lista el bloque libre y el n´ umero de bloques contiguos libres que le siguen. Sistemas de ficheros locales Sistemas de ficheros distribuidos Espacio de nombres • Se “camina” (walk) por la ruta, resolviendo cada parte. • Se pueden “pegar” ´ arboles a nuestro espacio de nombres: mount. • Unix: un espacio de nombres para el sistema (comando mount para listarlo). • Plan 9: es controlable, puede haber un espacio de nombres por proceso (comando ns para listarlo). Linux y otros han adoptado esta idea. Sistemas de ficheros locales Sistemas de ficheros distribuidos Espacio de nombres % 9fs marmita / 386 ... usr n bin marmita / FICHERO MONTADO 386 usr bin ... PUNTO DE MONTAJE Sistemas de ficheros locales Sistemas de ficheros distribuidos Im´agenes de disco • Un fichero que tiene dentro la estructura completa (sector por sector) de un disco duro, CD-ROM (ISO 9660), floppy, etc. • Utilidad: clonar sistemas, backups, crear CD/DVD, descargar discos, m´aquinas virtuales, etc. Sistemas de ficheros locales Sistemas de ficheros distribuidos Im´agenes de disco • Ejemplo en Linux: crear y usar una imagen de floppy: ~$ ~$ ~$ ~$ ~$ ~$ ~$ ~$ ~$ ~$ ~$ ~$ # creo un fichero de 1,44 MB con ceros dd if=/dev/zero of=/tmp/f bs=512 count=2880 # formateo la imagen de floppy con VFAT mkfs.vfat -v -c /tmp/f # monto en el punto de montaje /mnt/floppy mount -o loop /tmp/f -t vfat /mnt/floppy # creo un fichero en el floppy touch /mnt/floppy/afile # ver el espacio de nombres mount # desmontar el volumen umount /mnt/floppy Sistemas de ficheros locales Sistemas de ficheros distribuidos Uniones • Consiste en unir varios directorios en uno. • Utilidades: compartir c´ odigo fuente, agrupar binarios (/bin), reunir ficheros para crear un backup (CD,DVD,...), distribuciones live, etc. • Idea de Plan 9. UnionFS y Aufs en UNIX. Sistemas de ficheros locales Sistemas de ficheros distribuidos Uniones • Ejemplo en Plan 9: crear una uni´ on de tres directorios en el directorio $home/union term % term % term % term % term % bind -bc /tmp/a $home/union bind -bc /tmp/b $home/union # en $home/union vemos los ficheros de # /tmp/b, /tmp/a, y $/home/union, en ese orden ls $home/union Sistemas de ficheros locales Sistemas de ficheros distribuidos Mecanismo: Proyecci´on en memoria • mmap: mapea un fichero en memoria para poder acceder a los datos del fichero como si fuese un buffer, sin usar read ni write. • El fichero se trae poco a poco → paginaci´ on por demanda. • Llamadas al sistema: mmap y munmap en UNIX. Sistemas de ficheros locales Sistemas de ficheros distribuidos FS de Plan 9: fossil + venti • Venti es un servidor de bloques en espacio de usuario, identificados por su hash SHA-1 (20 bytes). • Venti nunca borra los bloques. • Fossil es un sistema de ficheros en espacio de usuario, que puede usar bloques del disco y bloques de venti. • Fossil tiene snapshots ef´ımeros y permanentes. • Para crear un snapshot permanente, archiva los bloques en venti. Sistemas de ficheros locales Sistemas de ficheros distribuidos FS en espacio de usuario en UNIX • VFS (Virtual File System): interfaz com´ un con el kernel para todos los FS. • FUSE: m´ odulo del kernel para implementar sistemas de ficheros en espacio de usuario que se puedan integrar con VFS. Sistemas de ficheros locales Sistemas de ficheros distribuidos FS en espacio de usuario en UNIX Userspace App App App FS Kernel VFS UFS EXT3 FUSE VFAT Sistemas de ficheros locales Sistemas de ficheros distribuidos Cache • El kernel mantiene una cache en RAM para los bloques. • Es muy eficiente. P. ej. La buffer cache de 4.4BSD evita el 85 % de los accesos a disco/red para conseguir bloques. • En ocasiones es recomendable salt´ arsela (e.g. modo O DIRECT de open en Linux). • Cuando el sistema se est´ a quedando sin marcos de p´agina, se suele sacrificar espacio de la cache. • El comando y llamada al sistema sync de UNIX sincroniza la cache con el disco y actualiza el superbloque. Se ejecuta peri´odicamente. Sistemas de ficheros locales Sistemas de ficheros distribuidos Cache Tipos de cache (en general): • Escrituras: • S´ıncrona (write-trough): evita problemas de coherencia. • As´ıncrona (delayed write-back): incrementa el rendimiento. • Para accesos secuenciales: • Read-ahead. • Free-behind. Sistemas de ficheros locales Sistemas de ficheros distribuidos Fallos • Perder la integridad de los metadatos (estructuras del FS) es peor que perder datos. • ¿Usamos una cache write-back para los datos y/o los metadatos? • Al crear un fichero, ¿creamos antes el i-nodo o la entrada en el directorio? • Al borrar un fichero, ¿liberamos antes el i-nodo o su entrada en el directorio? Sistemas de ficheros locales Sistemas de ficheros distribuidos Fallos Despu´es de un fallo: • Hay programas para reparar el sistema de ficheros, e.g. fsck en UNIX. • Hay que recorrer los bloques de los ficheros para detectar errores, e.g.: • Un bloque est´ a asignado a un fichero y en la lista de bloques libres a la vez. • Un bloque en dos ficheros a la vez. • Esto es caro. Sistemas de ficheros locales Sistemas de ficheros distribuidos Journaling Ideas b´asicas: • • • • Las operaciones se escriben en un journal (en disco) de forma at´ omica. Una vez escritas en el journal las operaciones est´ an comprometidas. En alg´ un momento las operaciones se aplicar´ an en el FS. Si el sistema falla, al rearrancar se aplican todas las operaciones pendientes en el journal (si las hay) para recuperar la coherencia. • Desventaja: hay que escribir los datos dos veces en el disco (pero en el journal es secuencial). • Normalmente se hace journaling s´olo de los metadatos. Sistemas de ficheros locales Sistemas de ficheros distribuidos Soft Updates Ideas b´asicas: • • • • La escritura de los metadatos es as´ıncrona (write-back). El usuario siempre ve la versi´ on m´ as reciente (en cache). En el disco siempre hay una versi´ on coherente. Se establecen dependencias entre las escrituras de metadatos, que marcan el orden al que van al disco, e.g.: • Nunca se referencia una estructura no inicializada. • Nunca se reusa una estructura sin borrar todas las referencias a la misma. • No se borra un puntero antiguo hasta que el nuevo est´a puesto (e.g. renombrado de un fichero). • Tras un fallo, se puede montar el volumen inmediatamente. • Es complicado de implementar, mantener y ampliar. Sistemas de ficheros locales Sistemas de ficheros distribuidos Soft Updates Ejemplo de situaci´on de rollback, dependencia c´ıclica: • Las entradas de directorio de /A/B y de /A/C est´ an en el mismo bloque X. • Los inodos de /A/B y de /A/C est´ an en el mismo bloque Y. • Se quieren hacer las siguientes operaciones: 1. Crear fichero /A/B, operaciones en orden: 1.1 Actualizar i-nodo. 1.2 Meter entrada de directorio. 2. Borrar fichero /A/C, operaciones en orden: 2.1 Borrar entrada de directorio. 2.2 Marcar i-nodo como libre. • Y no puede escribirse antes que X, ni X antes que Y. • Hay que deshacer una operaci´ on, escribir los bloques, rehacerla, y escribir de nuevo los bloques. Sistemas de ficheros locales Sistemas de ficheros distribuidos Sistemas de ficheros distribuidos Sistemas de ficheros locales Sistemas de ficheros distribuidos Sistemas de ficheros en red • Permite compartir ficheros a trav´ es de la red siguiendo un esquema cliente/servidor. • El cliente y el servidor deben hablar un protocolo de sistema de ficheros. • Protocolos: NFS, CIFS/SMB, WebDAV, 9P, AFP, ... • NAS (Network-Attached Storage): HW especializado en servir un FS en red, con RAID, etc. Sistemas de ficheros locales Sistemas de ficheros distribuidos Sistemas de ficheros en red • Stateless • Sencillo. • Operaciones autocontenidas. • Los handles que da el servidor tienen que ser u ´nicos (eg. fs id + inodo + versi´ on). • No requiere recuperaci´ on tras un fallo. • El servidor se puede reemplazar. • Stateful • Sesiones / estado permanente. • El servidor puede olvidar los handles despu´ es de una sesi´on. • Fallo del servidor → recuperar del estado o abortar. • ¿Cache coherente? ¿Locking ? ¿Callbacks? ¿Read-ahead? ¿DMEXCL? ¿DMAPPEND? Sistemas de ficheros locales Sistemas de ficheros distribuidos Sem´anticas de compartici´on de ficheros Las m´as comunes: • Sem´ antica UNIX (Strong Consistency). • Sem´ antica de sesi´ on. • Ficheros inmutables. • Transacciones. Sistemas de ficheros locales Sistemas de ficheros distribuidos NFS • Varias versiones diferentes. • Hasta NFSv3 era stateless: • File handles opacos, elegidos por el servidor. • No hay open ni close. • Problemas con locking, coherencia de cache, etc. • NFSv4: stateful, RPCs compuestas, etc. • Muy complejo: ACCESS, BACKCHANNEL CTL, BIND CONN TO SESSION, CLOSE, COMMIT, CREATE, CREATE SESSION, DELEGPURGE, DELEGRETURN, DESTROY CLIENTID, DESTROY SESSION, EXCHANGE ID, FREE STATEID, GETATTR, GETDEVICEINFO, GETDEVICELIST, GETFH, GET DIR DELEGATION, LAYOUTCOMMIT, LAYOUTGET, LAYOUTRETURN, LINK, LOCK, LOCKT, LOCKU, LOOKUP, LOOKUPP, NVERIFY, OPEN, OPENATTR, OPEN CONFIRM, OPEN DOWNGRADE, PUTFH, PUTPUBFH, PUTROOTFH, READ, READDIR, READLINK, RECLAIM COMPLETE, RELEASE LOCKOWNER, REMOVE, RENAME, RENEW, RESTOREFH, SAVEFH, SECINFO, SECINFO NO NAME, SEQUENCE, SETATTR, SET CLIENTID, SET CLIENTID CONFIRM, SET SSV, TEST STATEID, VERIFY, WANT DELEGATION, WRITE... Sistemas de ficheros locales Sistemas de ficheros distribuidos UNIX + NFS Client File Server Userspace App App Userspace App App App system calls system calls Kernel Kernel VFS UFS EXT3 VFS VFAT App NFS client NFS RPC UFS network NFS server Sistemas de ficheros locales Sistemas de ficheros distribuidos 9P • Stateful: el servidor mantiene el estado de la conexi´ on. • Stateful: posibilita la exportaci´ on de ficheros sint´eticos. • Sencillo: s´ olo 13 RPCs. • Totalmente integrado con el SO: el kernel de Plan 9 es un multiplexor de 9P. Sistemas de ficheros locales Sistemas de ficheros distribuidos 9P Userspace FS FS App Userspace FS system calls Kernel 9P #M mount driver 9P 9P* ... 9P* #p proc 9P 9P*: Within the kernel, 9P is implemented by procedure calls to the various kernel device drivers. Kernel 9P* ... #c cons FS network 9P 9P Sistemas de ficheros locales Sistemas de ficheros distribuidos 9P: RPCs • size[4] Tversion tag[2] msize[4] version[s] size[4] Rversion tag[2] msize[4] version[s] Acuerda la versi´ on del protocolo y comienza una nueva sesi´ on. • size[4] Tauth tag[2] afid[4] uname[s] aname[s] size[4] Rauth tag[2] aqid[13] Autenticaci´ on (externa a trav´ es de P9SK1). • size[4] Rerror tag[2] ename[s] Error para todos los tipos de peticiones. • size[4] Tflush tag[2] oldtag[2] size[4] Rflush tag[2] Aborta la petici´ on identificada con oldtag. Sistemas de ficheros locales Sistemas de ficheros distribuidos 9P: RPCs • size[4] Tattach tag[2] fid[4] afid[4] uname[s] aname[s] size[4] Rattach tag[2] qid[13] El cliente se ata al ra´ız del sistema de ficheros. A partir de este momento se referir´ aa´ el con el FID. El servidor responde con un identificador u ´nico para el ra´ız QID (versi´ on, tipo y path). • size[4] Twalk tag[2] fid[4] newfid[4] nwname[2] nwname*(wname[s]) size[4] Rwalk tag[2] nwqid[2] nwqid*(wqid[13]) Resuelve un path, que ser´ a referido con el FID newfid. Si no se pueden atravesar todos los nombres, newfid ser´ a fid. El servidor devuelve la lista de QIDs de los nombres que se han podido atravesar. Sistemas de ficheros locales Sistemas de ficheros distribuidos 9P: RPCs • size[4] Topen tag[2] fid[4] mode[1] size[4] Ropen tag[2] qid[13] iounit[4] • size[4] Tcreate tag[2] fid[4] name[s] perm[4] mode[1] size[4] Rcreate tag[2] qid[13] iounit[4] • size[4] Tread tag[2] fid[4] offset[8] count[4] size[4] Rread tag[2] count[4] data[count] • size[4] Twrite tag[2] fid[4] offset[8] count[4] data[count] size[4] Rwrite tag[2] count[4] Sistemas de ficheros locales Sistemas de ficheros distribuidos 9P: RPCs • size[4] Tremove tag[2] fid[4] size[4] Rremove tag[2] • size[4] Tstat tag[2] fid[4] size[4] Rstat tag[2] stat[n] • size[4] Twstat tag[2] fid[4] stat[n] size[4] Rwstat tag[2] • size[4] Tclunk tag[2] fid[4] size[4] Rclunk tag[2] Cierra el fichero representado por ese FID, ya no ser´ a referido m´ as. Sistemas de ficheros locales Sistemas de ficheros distribuidos 9P: RPCs a new fid (16 in the figure), which st of the fid mentioned (15 in the figure) this request walks that new fid to a p its original position in the server’s fil case, fid 16 points to the file /a/b/c w once the walk transaction completes. a stat request asks the server for meta entry) for the file identified by the fid client issues a clunk request when it n to use a particular fid, to let the serv it and release any resource used on it The part in the figure below the l corresponds to a client reading a file request defines a new fid (16 again) a the file of interest, /a/b/c in this c open transaction opens the fid for the in the request (not shown). After rece the client issues read requests (and th with data) for the offsets and number o Usually, the series of read transaction by a last one, which is used by the s the client that there is no more data the offset requested; this is the end-of At this point, the client probably clos a clunk transaction releases (and clos Figure 1: Styx dialog between a client (left) and a server (rigth). Sistemas de ficheros locales Sistemas de ficheros distribuidos FS distribuidos en cluster • Los bloques de los ficheros est´ an distribuidos. • Finalidad: file striping. • Ejemplo: Google FS. Sistemas de ficheros locales Sistemas de ficheros distribuidos Caso: Google FS • Tolera fallos de los servidores. • Optimizado para append y lecturas. • Escalabilidad: miles de nodos por cluster, petabytes de datos. • Sacrifican latencia por throughput. • Coherencia relajada: las r´ eplicas pueden diferir en ciertas partes. Las aplicaciones deben lidiar con esto. • Ficheros partidos en chunks de 64Mb (con checksum). Sistemas de ficheros locales Sistemas de ficheros distribuidos Caso: Google FS Imagen: (CC) Wikipedia Sistemas de ficheros locales Sistemas de ficheros distribuidos Caso: Google FS Master: ´ • ¿Unico punto de fallo? • Shadow Masters. • ¿Cuello de botella? No, s´ olo mantiene el control, no hace I/O, ni coordina modificaciones en los chunks (mutaci´on). Sistemas de ficheros locales Sistemas de ficheros distribuidos Caso: Google FS Master: • Almacena s´olo los metadatos: todo en memoria, log en disco para asegurar coherencia. • Las actualizaciones de metadatos son at´omicas. • Controla el espacio de nombres. • Hace polling para localizar los chunks, rebalancear y controlar ca´ıdas de chunk-servers. • • • • • • Crea nuevos chunks. Ordena la replicaci´ on de chunks en chunk-servers (3+). Controla los leases de las r´ eplicas primarias. Controla los locks sobre ficheros/directorios. Realiza la recolecci´ on de basura. No coordina las mutaciones (un write en un chunk). Sistemas de ficheros locales Sistemas de ficheros distribuidos Caso: Google FS Cliente: • No tienen cache de datos. • Tiene cache (con tiempo de caducidad) de metadatos (chunk-handles, etc.). • Suele resolver distintos chunks a la vez. Sistemas de ficheros locales Sistemas de ficheros distribuidos Caso: Google FS Mutaci´on: Write (poco usada) 1. El cliente pide al Master la lista de r´ eplicas y el primario. 2. El Master elige un primario si no hay. El primario adquiere un lease. El cliente cachea la respuesta del Master para futuras peticiones. Esos datos pueden caducar. 3. El cliente env´ıa los datos a todas las r´ eplicas. Las r´ eplicas guardan los datos en sus buffers. 4. El cliente env´ıa una petici´ on write al primario. 5. El primario serializa las distintas mutaciones que recibe y las aplica al chunk. Va enviando la secuencia al resto de r´ eplicas. 6. Cada r´ eplica aplica las modificaciones en el orden que dicta el primario. Al aplicar un cambio, notifica al primario. 7. Tras recibir las notificaciones de las r´ eplicas para el write, se responde al cliente. Si hay error en las r´ eplicas, el cliente puede reintentar (desde el paso 3 o desde el paso 1). Despu´ es del fallo habr´ a zonas de la r´ eplica fallida incoherentes → sem´ antica relajada (weak). Image extracted from the original GFS paper (SOSP 2003). Sistemas de ficheros locales Sistemas de ficheros distribuidos Caso: Google FS Mutaci´on: Atomic Record Append (muy usada) 1. El cliente env´ıa los datos del append a todas las r´ eplicas. 2. El cliente ordena el atomic-append al primario. 3. El primario comprueba si se desborda el u ´ltimo chunk. • Si se desborda, se rellena con un hueco el chunk y se le indica al cliente que la operaci´ on se debe realizar en el siguiente chunk (el Master lo crear´ a) → Fragmentaci´ on interna. El tama˜ no de un append est´ a limitado para evitar mucha fragmentaci´ on (1/4 de tama˜ no de chunk). • Si no se desborda, se serializa la escritura en el chunk como en un write. 4. Si falla alguna r´ eplica secundaria,se repite la operaci´ on append • El offset se avanza de todas formas en las r´eplicas que fallaron: todos los chunks tienen el mismo tama˜ no). • Los datos del append aparecen repetidos en las r´eplicas que no fallaron → sem´ antica at-least-once. Sistemas de ficheros locales Sistemas de ficheros distribuidos Bibliograf´ıa • • • • • • A. S. Tanenbaum. Operating Systems, design and implementaiton. Pearson Prentice Hill. A. S. Tanenbaum. Distributed Systems. Pearson Prentice Hill. A. S. Tanenbaum. Modern Operating Systems. Pearson Prentice Hill. A. Silberschatz. Operating Systems. Wiley. Plan 9 User Manual, Section 5, Introduction (man 5 0intro). S. Ghemawat, H. Gobioff, S. Leung. The Google File System. SOSP 2003.
© Copyright 2024