Diferencia entre revisiones de «Anàlisi d'ext2»

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda
Línea 68: Línea 68:
[[Archivo:Ext2grups.png]]
[[Archivo:Ext2grups.png]]


El primer bloc en altres particions Ext2 mai és manejat pel sistema de fitxers Ext2, ja que está reservat per al sector d'arrencada. La resta de la partició Ext2 es divideix en grups de blocs, redueixen la fragmentació, perquè el nucli intenta mantenir els blocs de dades d'un arxiu en el mateix grup de blocs, si és possible.
Els primers 1024 bytes mai són manejat pel sistema de fitxers Ext2, ja que está reservat per al sector d'arrencada. La resta de la partició Ext2 es divideix en grups de blocs, redueixen la fragmentació, perquè el nucli intenta mantenir els blocs de dades d'un arxiu en el mateix grup de blocs, si és possible.


Cada bloc en el grup conté algunes de les peces d'informació:
Cada bloc en el grup conté algunes de les peces d'informació:
Línea 90: Línea 90:


Clarament, a menor mida de bloc, major nombre de grups de blocs.
Clarament, a menor mida de bloc, major nombre de grups de blocs.
Si s'utlitzen blocs de 1KB el superbloc és el 1 i si són més grans és considera el 0. Cal recordar que el superbloc sempre utilitza 1kb independenment de la mida dels blocs.
En revisions posteriors, el superbloc no es guarda en tots els grups de blocs per no perdre espai.
El bloc de bitmap i de inodes está llimitat a 1 bloc, per tant, cada grup de blocs té un nombre llimitat de blocs.
<DIVCLASS="TABLE"><ANAME="DISK-LAYOUT-SAMPLE-FLOPPY"></A><P><B>Table 3-1. Sample Floppy Disk Layout, 1KiB blocks</B></P><TABLEBORDER="0"FRAME="void"WIDTH="100%"CLASS="CALSTABLE"><COLWIDTH="20%"TITLE="C1"><COLWIDTH="20%"TITLE="C2"><COLWIDTH="60%"TITLE="C3"><THEAD><TR><TH>Block Offset</TH><TH>Length</TH><TH>Description</TH></TR>
</THEAD><TBODY><TR><TD>byte 0</TD><TD>512 bytes</TD><TD>boot record (if present)</TD></TR>
<TR><TD>byte 512</TD><TD>512 bytes</TD><TD>additional boot record data (if present)</TD></TR>
<TR><TDCOLSPAN="3"ALIGN="LEFT">-- block group 0, blocks 1 to 1439 --</TD></TR>
<TR><TD>byte 1024</TD><TD>1024 bytes</TD><TD><AHREF="#SUPERBLOCK">superblock</A></TD></TR>
<TR><TD>block 2</TD><TD>1 block</TD><TD><AHREF="#BLOCK-GROUP-DESCRIPTOR-TABLE">block group descriptor table</A></TD></TR>
<TR><TD>block 3</TD><TD>1 block</TD><TD><AHREF="#BLOCK-BITMAP">block bitmap</A></TD></TR>
<TR><TD>block 4</TD><TD>1 block</TD><TD><AHREF="#INODE-BITMAP">inode bitmap</A></TD></TR>
<TR><TD>block 5</TD><TD>23 blocks</TD><TD><AHREF="#INODE-TABLE">inode table</A></TD></TR>
<TR><TD>block 28</TD><TD>1412 blocks</TD><TD>data blocks</TD></TR>


http://www.barnech.com/uai-sistemas/arq_so/Linux/sistema_de_archivos_ext2.htm
http://www.barnech.com/uai-sistemas/arq_so/Linux/sistema_de_archivos_ext2.htm

Revisión del 12:29 5 jun 2013

Ext2 és un dels sistemes d'arxius més utilitzats en Linux. Ha sigut extés per Ext3 i Ext4, però són ampliacions que milloren algunes coses sobre la base de Etx2. Per tant, resulta interesant parlar d'aquest sistema per a entendre millor cóm funciona el sistema de fitxers en Linux.

I-nodes

L'i-node (node índex) és un concepte fonamental en el sistema d'arxius de Linux i UNIX. Cada objecte en el sistema de fitxers està representat per un node-i.

Totes i tots els arxius sota Linux (i UNIX) té els següents atributs:

  • Tipus de fitxers (executables, especial, de blocs...)
  • Permisos (llegir, escriure...)
  • Propietari
  • Grup
  • Mida del fitxer
  • Temps d'accés de l'arxiu, el canvi i la modificació (UNIX o Linux mai emmagatzema el temps de creació de l'arxiu, això és pregunta favorita preguntar en UNIX/Linux en una entrevista de treball)
  • Temps d'eliminació del Arxiu
  • Nombre d'enllaços (soft / hard)
  • Atribut estès com només-afegir o no es pot eliminar el fitxer com a usuari root (irrevocabilitat)
  • Llista de control d'Accés (ACL)

Cal recordar que un i-node:

  • No conté el nom del fitxer. El nom el guarda el directori que el conté.
  • Els directoris són uns fitxers especials que contenen una llista de noms de fitxers i els seus inodes.

Podem fer les següents comande per vorer el i-node de l'arxiu:

$ ls -i /etc/passwd
$ stat /etc/passwd

Amb aquestes premises, es pot aconseguir:

  • Un fitxer pot tindre molts enllaços. Sols cal apuntar al mateix inode. (Hard Links)
  • Un nom de fitxer pot tindre enllaços que l'apunten. (Soft Links)
  • Un inode pot no tindre enllaços. Al esborrar un arxiu s'intenten alliberar els recursos. Però el sistema espera a que tots els processos lliberen l'inode.
  • Un inode permaneix encara que moguem el fitxer a un altre directori o es defragmente el disc.

Estructura d'un inode

Ext2-inode.gif

Els inodes tenen 15 punters:

  • Dotze punters que assenyalen directament als blocs de dades de l'arxiu (punters directes)
  • Un indicador indirecte per separat (un punter que apunta a un bloc de punters que apunten a continuació als blocs de dades de l'arxiu)
  • Un punter doblement indirectes (un punter que apunta a un bloc de punters que apunten a altres blocs de punters que apunten a continuació als blocs de dades de l'arxiu)
  • Un punter triplement indirecte (un punter que apunta a un bloc de punters que apunten a altres blocs de punters que apunten a altres blocs de punters que apunten a continuació als blocs de dades de l'arxiu)

Aquesta organització permet:

  • Una mida fixa de cada bloc. Pot ser es necessita sols un inode o més, però tots ocupen en mateix.
  • Facilitat per trobar les dades. No cal recorrer tot el fitxer, es pto trobar el bloc concret mirant el inode.
  • Els blocs indirectes poden estar en qualsevol part del sistema.

Etx2

El sistema de fitxers EXT2 es construeix amb la premissa que les dades contingudes en els fitxers es guardin en Blocs de Dades. Aquests blocs de dades són tots de la mateixa longitud i, si bé aquesta longitud pot variar entre diferents sistemes de fitxers EXT2 la mida dels blocs d'un sistema de fitxers EXT2 en particular es decideix quan es crea (usant mke2fs). La mida de cada fitxer s'arrodoneix fins a un nombre sencer de blocs. Si la mida de bloc és 1024 bytes, llavors un fitxer de 1025 bytes ocuparà dos blocs de 1024 bytes.

No tots els blocs del sistema de fitxers 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 fitxers descrivint cadascun d'ells amb una estructura de dades inode. Els inodes del sistema de fitxers s'emmagatzemen junts en Taules de inodes.

Els directoris EXT2 són simplement fitxers especials (ells mateixos descrits per inodes) que contenen punters als inodes de les seves entrades de directori.

Sist arch ext2.jpg

A la figura anterior es mostra la disposició del sistema de fitxers EXT2 ocupant una sèrie de blocs en un dispositiu estructurat bloc. Per la part que li toca a cada sistema de fitxers, els dispositius de bloc són només una sèrie de blocs que es poden llegir i escriure. Un sistema de fitxers no s'ha de preocupar on s'ha de posar un bloc en el medi físic, això és feina del controlador del dispositiu. Sempre que un sistema de fitxers necessita llegir informació o dades del dispositiu de bloc que els conté, demana que el controlador de dispositiu llegeixi un nombre sencer de blocs.

El sistema de fitxers EXT2 divideix les particions lògiques que ocupa en Grups de Bloc (Block Groups), en els quals cada grup duplica informació crítica per a la integritat del sistema de fitxers ja sigui valent-se de fitxers i directoris de blocs d'informació i dades. Aquesta duplicació és necessària per si ocorregués un desastre i el sistema de fitxers necessités recuperar-se.

Estructura en el disc

Ext2grups.png

Els primers 1024 bytes mai són manejat pel sistema de fitxers Ext2, ja que está reservat per al sector d'arrencada. La resta de la partició Ext2 es divideix en grups de blocs, redueixen la fragmentació, perquè el nucli intenta mantenir els blocs de dades d'un arxiu en el mateix grup de blocs, si és possible.

Cada bloc en el grup conté algunes de les peces d'informació:

  • Una còpia del superbloc del sistema de fitxers.
  • Una còpia del grup de descriptors de grups de blocs.
  • Un mapa de bits de bloc.
  • Un grup d'inodes.
  • Un mapa de bits d'inodes.
  • Un tros de dades pertanyents a arxiu, és a dir, blocs de dades (si un bloc no conté cap informació útil, es diu que aquesta lliure).

Tant el superbloc com els descriptors de grup estan duplicats en cada grup de blocs. Només el superbloc i els descriptors de grups inclosos en el grup de blocs 0 són utilitzats pel nucli, mentre que les altres còpies es deixen sense modificar, de fet, mai les mira.

Quan el programa /sbin/e2fsck realitza una comprovació de consistència, referència el superbloc i els descriptors de grups de blocs de grup 0 copiant a la resta de grups de blocs. Si es produeix una corrupció de dades, i el superbloc i els descriptors de grups del grup 0 es fan invàlids, l'administrador pot indicar a /sbin/e2fsck que faci referències a les velles còpies d'altres grups diferents de 0.

Usualment, les còpies redundants tenen prou informació per permetre al programa retornar la partició a un estat consistent.

El nombre de grups de blocs depèn tant de la mida de la partició com de la grandària de bloc. La principal restricció es deu al fet que el mapa de bits de bloc, que s'utilitza per identificar els blocs dins d'un grup que estan en ús o lliures, s'ha d'emmagatzemar en un únic bloc. Per tant, cada grup de blocs ha de tenir com a màxim 8 * b blocs, on b és la mida de bloc en bytes. Així, el nombre total de grups de blocs és aproximadament s / (8 * b), on s és la mida de la partició en blocs.

Com a exemple, considerem una partició Ext2 de 8 GB amb blocs de 4 KB de mida. En aquest cas, cada mapa de bits de blocs de 4KB descriu 32 KB de blocs de dades, és a dir, 128 MB. Per tant, com a màxim es necessiten 64 grups de blocs.

Clarament, a menor mida de bloc, major nombre de grups de blocs.

Si s'utlitzen blocs de 1KB el superbloc és el 1 i si són més grans és considera el 0. Cal recordar que el superbloc sempre utilitza 1kb independenment de la mida dels blocs.

En revisions posteriors, el superbloc no es guarda en tots els grups de blocs per no perdre espai.

El bloc de bitmap i de inodes está llimitat a 1 bloc, per tant, cada grup de blocs té un nombre llimitat de blocs.

<DIVCLASS="TABLE"><ANAME="DISK-LAYOUT-SAMPLE-FLOPPY"></A>

Table 3-1. Sample Floppy Disk Layout, 1KiB blocks

<TABLEBORDER="0"FRAME="void"WIDTH="100%"CLASS="CALSTABLE"><COLWIDTH="20%"TITLE="C1"><COLWIDTH="20%"TITLE="C2"><COLWIDTH="60%"TITLE="C3"><THEAD>Block OffsetLengthDescription </THEAD><TBODY>byte 0512 bytesboot record (if present) byte 512512 bytesadditional boot record data (if present) <TDCOLSPAN="3"ALIGN="LEFT">-- block group 0, blocks 1 to 1439 -- byte 10241024 bytes<AHREF="#SUPERBLOCK">superblock</A> block 21 block<AHREF="#BLOCK-GROUP-DESCRIPTOR-TABLE">block group descriptor table</A> block 31 block<AHREF="#BLOCK-BITMAP">block bitmap</A> block 41 block<AHREF="#INODE-BITMAP">inode bitmap</A> block 523 blocks<AHREF="#INODE-TABLE">inode table</A> block 281412 blocksdata blocks


http://www.barnech.com/uai-sistemas/arq_so/Linux/sistema_de_archivos_ext2.htm

Enllaços

http://en.wikipedia.org/wiki/Inode

http://acacha.org/mediawiki/index.php/Sistemes_de_fitxers#Sistemes_de_fitxers_Unix

http://www.nongnu.org/ext2-doc/ext2.html