domingo, 4 de abril de 2010

Sistemes de fitxers

Un sistema de fitxer es un conjunt de tipus de dades abstractes que son implementades per el emmagatzematge, la organització jeràrquica, la manipulació, l’accés, el direccionalment i la recuperació de dades.
Aquest sistemes son utilitzats habitualment en dispositius com CD-ROM o discs durs. Els sistemes d’arxius es manipulen de manera molt semblant a les bases de dades (fem operacions com: open, close, copy, rename, list, create, destroy).

El sistema de fitxers es un component important d’un SO y sol tenir:
  • Mètodes d’accés relacionat amb la manera d’accedir a les dades guardades en arxius.
  • Administració d’arxius, son els mecanismes necessaris perquè els arxius siguin emmagatzemats, reverenciats, compartits i assegurats.
  • Integritat de l’arxiu per garantir la integritat de la informació de l’arxiu.
No tots els sistemes d'arxius son compatible amb tots els sistemes de fitxers. En aquesta taula podem observar les compatibilitats:


Abans de fer un petit resum dels sistemes de fitxers esmentats a classe i fer una taula comparativa, us definiré alguns dels conceptes que apareixen en el document.

Vocabulari
i-node: Un i-node es una estructura de dades propia dels sistemes d'arxius tradicionalment empleats en els SO de tipus UNIX. Aquest inodes de disc emmagatzeman arxius regulars, directoris, i enllaços simbòlics. Un inode conté les característiques (persmisos, data, ubicació, pero no el NOM) d'un arxiu regular, directori, o qualsevol altre objecte que pugui contenir un sistema de fitxers.
Arbres-B: Es un tipus d'estructura de dades d'arbres. Representa una col·lecció de dades ordenades de manera que es permet una inserció i eliminació eficient dels elements.
Bifuració: Crida al sistema que crea una copia d'un procès.
Journaling: Es un mecanisme que permet implementar transaccions en un sistema informàtic. Es basa en portar un journal o registre de diari en el que s'emmagatzema la informació necessària per reestablir les dades afectades per la transacció en cas de que aquesta falli.

Tipus de sistemes de fitxers

FAT (File Allocation Table)

La FAT es una taula formada per elements que es corresponen amb cadascun dels clusters del disc. Es el sistema natiu de MS-DOS i Windows. GNU/Linux pot també llegir-lo i escriure’l, tot i que no l’utilitzi com natiu. Es utilitzat en disquets, memòries USB i altres dispositius d’emmagatzematge.

S’utilitza com mecanisme d’intercanvi de dades entre SO diferents que estan en el mateix ordinador (“multiarranque”).

Aquest sistema d’arxius va ser el principal de les edicions no empresarials de Microsoft Windows fins Windows Me.

Han aparegut diverses versions, sent la última la FAT32, que tot i que tenia la mateixa velocitat que la FAT16, utilitzava el disc dur de manera més eficient (clústers més petits).

Un dels principals inconvenients d’aquest sistema es que es necessita desfragmentar el disc freqüentment perquè no es redueixi la velocitat de lectura i escriptura.

NTFS

Aquest sistema de fitxers va ser dissenyat per ser un SO de xarxa i multitasca que, no tenia res de veure amb FAT, ja que es va crear des de cero per ser utilitzat en Windows NT.

NTFS es un sistema robust que permet la compressió de fitxers un a un. Aquest sistema esta molt desarrollat, i algunes de les seves caracteristiques son:
  • Conté una estructura de dades complexa, que accelera l’accés els fitxers i redueix la fragmentació (arbres-B).
  • Tot el que te a veure amb els fitxer, es guarda en forma de metadades.
  • Te un sistema d’operacions basat en transaccions.
  • Possibilitat de ajuntar les capacitats de dos unitats en un sol disc.
  • Una de les coses que cal destacar, es la tecnologia que incorpora per evitar pèrdues de dades anomenada Journaling.
HFS y HFS+

HFS es un sistema d’arxius jeràrquic desenvolupat per els ordinadors que treballen en Mac OS (Desarrollat per Apple Inc).

Originalment es va dissenyar per ser utilitzat en disc durs i disquets, tot i que també es pot trobar en dispositius de només lectura com els CD-ROM.

Més tard, va aparèixer una versió millorada anomenada HFS+, la qual suportava arxius molt més grans i utilitzava Unicode (en comptes de Mac OS Roman) per el nom d’arxius. Això permetia un màxim de 255 caràcters per els noms d’arxiu.

EXT2
El sistema de fitxers EXT2, té un tipus de taula FAT de grandària fixa. Les dades que estan en els fitxers, es guarden en blocs de dades. Aquests blocs de dades son tots de la mateix longitud,i tot i que la longitud pot variar entre diferents sistemes de fitxers, la grandària dels blocs es decideix quan es crea. La longitud de cada fitxer s’arrodoneix fins un numero sencer de blocs.

No tots els blocs del sistema contenen dades, alguns s’han d’utilitzar per mantenir la informació que descriu l’estructura del sistema de fitxers. EXT2 defineix la topologia del sistema de fitxer descrivint cadascun d’ells com una estructura de dades i-node.

Un i-node descriu que blocs ocupen les dades d’un fitxer i també els permisos d’accés del fitxer, les hores de modificació del fitxer i el tipus de fitxer. Aquest i-nodes es guarden junts en taules de i-nodes. Els directoris EXT2 son simplement fitxer especials, que contenen punters als i-nodes de les seves entrades de directori.

EXT 3

Extended 3 té una funcionalitat similar a EXT2. Aquest es el sistema d’arxius més utilitzat en distribucions Linux. Les principals diferencies amb l’anterior sistema, són les següents:
  • Ext3 treballa amb journaling.
  • Utilitza arbre AVL. Aquest es un tipus especial d’arbre binari auto-balanceable, es a dir que els nodes sempre estan equilibrats sense que l’altura de la rama esquerra sigui superior a la rama dreta o a l’inversa.
  • Incorpora assignador de blocs de disc Orlov. Aquest fa que millori el rendiment.
  • Creixement en línea.
EXT4

Es una millora del sistema EXT3. També utilitza el journaling però de manera millorada, utilitzant cheksums en el registre per augmentar la fiabilitat (Journal checksumming).
Algunes millores importants d’aquest sistema son:
  • Utilitza extents, en comptes de blocs. Ens ajuda a disminuir la fragmentació, augmentar la velocitat i el rendiment amb fitxer grans.
  • Compatibilitat en les diverses versions.
  • Reserva de memòria retardada: Retarda la reserva de blocs de memòria fins que la informació estigui apunt de ser escrita en el disc.
  • Permet assignar diversos blocs per a un fitxer en una sola operació.
REISERFS / REISER3

Va ser el primer sistema de fitxers transaccional (journaling) de Linux. A part del journaling, també ens ofereix altres funcionalitats dels quals en destacaré dues:
  1. Re-particionament amb el sistema de fitxer muntat i desmuntat. Podem augmentar la grandària del sistema de fitxers m’entres el tenim online i offline. Namesys proporciona les eines necessàries per fer aquestes operacions.
  2. Tail packing es un esquema per reduir la fragmentació interna.
REISER4

Es la versió més recent del sistema d’arxius ReiserFS. Algunes de les seves característiques son les següents:
  • Journaling més eficient gràcies a la tècnica de “wandering log”.
  • Suport més eficient d’arxius petits, en termes de espai en disc i velocitat gràcies a “tail packing”.
  • Administració més rapida de directoris amb un numero elevat de fitxers.
  • Infraestructura de plugins més flexible.
  • Suport transaccional.
  • Optimació dinàmica de la estructura del disc a traves del mètode “allocate-on-flush”.
  • Transaccions atòmiques.
  • Integració de metadades en el espai de noms del sistema de arxius.
ZFS

Es un sistema de fitxers desenvolupat per Sun Microsystems. ZFS es una nova classe de sistema de fitxers que proporciona una administració simple, semàntica transaccional, integritat de les dades, i una immensa escalabilitat.

Com en altres casos, ZFS no es una millora d’una tecnologia existent, es una nova tecnologia a l’administració/gestió de les dades.

ZFS presenta un model d’emmagatzematge que elimina totalment el concepte de volums i els problemes associat de particions, de l’aprovisionament, l’ample de banda perdut i de l’emmagatzematge immobilitzat.

No hi ha límit de fitxers. Tots els sistemes de fitxers poden escriure’s en un pool d’emmagatzematge comú, cadascú consumin solament tan espai com realment necessiti.

L’ample de banda combinat de E/S de tots els dispositius en el pool esta sempre disponible per tots els fitxers. Totes les operacions son transaccions “copia-en-escritura”, així que l’estat de les dades en disc sempre son vàlids. Cada bloc es comprovat per prevenir la corrupció silenciosa de dades i aquests son comprovats en configuracions replicades. Si es fa mal bé una còpia, ZFS la detectarà i utilitzarà un altre copia per reparar-la.

XFS
Es un sistema de fitxers de 64 bits d’alt rendiment amb journaling creat per SGI per implementar a sistemes UNIX.

Aquest sistema es el mes antic dels sistemes de fitxers amb journaling (inici al 1993). De les seves característiques cal destacar:
  • Capacitat: Soporta un sistema d’arxius de fins 9 exabytes, tenint en compte que aixo pot variar depenent del SO utilitzat.
  • LVM: Es capaç d’augmentar la capacitat de sistemes de fitxers XFS.
  • Grups d’assignacio: Aquest sistemes estan particionats internament en grups d’assignacio, que son regions de la mateixa grandaria. Cada grup gestiona els seus inodes i el seu espai lliure de forma independent, proporcionant escalabilitat i paral•lelisme.
Taula comparativa


Que és un RAID?

Un RAID (Redundant Array of Inexpensive Disks) consisteix en una sèrie de sistemes per organitzar més d'un disc com si de un sol es tractés, però fent que treballin en paral·lel per augmentar la velocitat d’accés o la seguretat davant d’errors del hardware.

Aquest dispositiu es fa servir per augmentar la integritat de les dades dels discos, obtenir disc durs més grans, millorar la tolerància a error, i millorar el rendiment.

Els RAID son especialmente útils si es tenen que controlar grans quantitats de dades. Les principals raons per utilitzar-ne son les següents:

• Augment de la velocitat.
• Augment de la capacitat d’arxiu.
• Eficàcia per recuperar-se d’un error del sistema.

Hardware i Software

Existeixen dos tipus de possibilitats alhora d'utilizar un RAID: Hardware i Software.

L’avantatge dels RAID basats en hardware, es la seva independència de la plataforma o SO, ja que son vistos per aquest com un disc dur més. El sistemes RAID software no són implementacions adequades en la majoría del casos, i cada vegada s’utilitzen menys.

Tipus de RAID

Alhora de muntar un RAID, em de tenir en comptes els diferents nivells que hi ha. Jo os explicaré els més comuns, tot i que hi ha més nivells de RAIDs que deriven de combinar aquests.

Lineal

Diferents discos s’enllacen un darrera l’altre per fer que el sistema vegi un sol disc més gran. Si falla un perdem tot el sistema de fitxers.

RAID 0

La informació es grava i es llegeix en paral•lel entre diversos discos. Com no hi ha redundacia, el risc d’error augmenta, però el rendiment es molt bo.


RAID 1

Aquest nivell no ofereix la velocitat en la manipulació de dades que ofereix el RAID 0, però en canvi, ens ofereix més seguretat. El que fa el RAID 1, es generar una copia exacta (o mirall) del disc dur en temps real.

EL gran avantatge que ofereix es que si ens falla qualsevol dels dos discos que tenim en “mirall”, podem treballar amb el altre fins que reemplacem el disc.

Tot i així hem de fer còpies de seguretat, ja que si el problema que tenim no es dany físic del disc (virus, corrupció en fitxers...) el problema ens afectarà per igual a les dues unitats.


RAID 2

Aquest nivell divideix les dades a nivell de bits en comptes de nivell de blocs. Aquest RAID, es l’únic que utilitza el codi Hamming (permet detectar errors en un bit o dos bits i corregir-los) en comptes de la paritat (només detecta errors en un bit, i no els corregeix) per corregir els errors.

Permet una velocitat de transferència molt alta, però el problema esta en el cost d’aquest mètode.

Per exemple en un sistema modern, necessitaríem 39 discos per funcionar. 32 discos per emmagatzemar les dades (1 bit en cada disc) més 7 per la correcció dels errors.

RAID 3

Aquest nivell utilitza una divisió a nivell de bytes, més un disc de paritat. Una de les conseqüències que suposa això es el no poder atendre més d’una petició d’informació a la vegada, ja que un bloc es divideix entre tots els discos en la mateixa direcció.

Això fa que es tinguin que activar tots els discos per escriure o llegir aquesta informació, fent que no puguem atendre més peticions fins que no termini l’anterior.

Tot i que pràcticament no s’utilitza, si volem utilitzar-lo necessitarem com a mínim tres discos.


RAID 4

Pràcticament es igual que el RAID 3, però amb les dades dividides a nivell de bloc, més un disc de paritat.

Això suposa que s’activi un sol disc si demanem informació que ocupa un sol bloc. Amb controladores que ho permetin, es poden atendre varies operacions de lectura simultàniament.

També es necessiten 3 discos com a mínim.

RAID 5

Es el més versàtil (potser el més complet) del diversos tipus de RAID i un dels més utilitzat. També es el nivell més eficaç, ja que ens ofereix una bona optimació del sistema i una gran tolerància a errors.

Grava la informació en blocs de forma alternativa, distribuïda entre tots els discos. A diferència del RAID 4, no s’assigna un disc per a la paritat, sinó que distribueix aquesta en blocs entre discos. El rendiment d’aquest nivell s’aproxima al del RAID 0.

Es necessari 3 discos per el seu funcionament, tot y que amb 7 discos s’aconsegueix el rendiment més òptim.


RAID 6

Similar al RAID 5, però amb un segon esquema de paritat distribuït entre els discos. Ofereix una tolerància extremadament alta tant a errors com a caigudes del disc. Això es deu a que reemplaça les dades pràcticament en temps real, però té l’inconvenient de que necessita unes controladores RAID que suporten aquesta doble paritat, bastant complexes y molt cares.

Per aquest últim motiu no s’utilitza gaire aquest sistema de RAID. Aquest es el millor tipus de RAID per a grans sistemes, en els que la seguretat i la integritat de dades estan per sobre de l’elevat cost que suposa.

RAID 0+1

No es un dels RAID originals, sino que es una mescla de dos. Crea dues líneas de RAID 0 i un disc mirall (RAID 1). Té tots els avantatges del RAID 0 més les del RAID 1, pero també té els problemes d’aquest últim. No tolera dos errors simultanis de disc.


RAID 10 (1+0)

Al igual que l’anterior, aquest no es un dels tipus originals. Es creen múltiples discos mirall i una línea de RAID 0 sobre ells. Es tolerant a múltiples errors de disc, m’entres que un de cada parell estigui en funcionament. Aquest sistema requereix un mínim de dos canals RAID amb dos discos cadascun. Crea una distribució de les dades igual a RAID 0 més un mirall de cada disc. Té els mateixos avantatges y inconvenients que el RAID 1.

Altres dades importants
  • El millor rendiment en qualsevol configuració RAID s’aconsegueix amb discos iguals (de la mateixa velocitat, transferència i capacitat).
  • Totes les targes RAID SCSI o SATA permeten el canvi de discos “en calent”, es a dir, sense necessitat d’apagar el sistema.
  • En sistemes RAID grans, es comú incorporar un o més discos que estiguin desactivats, que només s’activin per entrar en funcionament en cas de fallar un disc i així reconstruir aquest. Aquest discos s’anomenan discos “dormits”.
Actualment també s’utilitzen els sistemes de seguretat RAID en unitats especials independents, conectats per xarxa, USB o FireWire.

Serveix un sistema RAID com copia de seguretat?

En un sistema RAID el segon disc es una copia mirall del primer, per tant tindrà la mateixes dades que el primer, i això implica que tingui els mateixos errors i virus.

Cal aclarir que un sistema RAID serveix per garantir que si es fa mal bé un disc, podrem seguir funcionant, però no per tenir una copia de seguretat de les nostres dades.

Es a dir, podem tenir un sistema RAID sobre el que escrivim la nostra copia de seguretat. Amb això assegurem la integritat d’aquesta còpia, però no podem utilitzar un disc RAID com copia de seguretat pròpiament dita.