Ext2 es el tamaño máximo de archivo. El sistema de archivos ext2fs es el predecesor de ext3fs. Complemento para Total Commander DiskInternals Reader

Ahora describiremos el sistema de archivos de disco de Linux más popular: ext2. La primera versión de Linux utilizó el sistema de archivos MINIX 1, que tenía nombres de archivo cortos y un tamaño de archivo máximo de 64 MB. El sistema de archivos MINIX 1 finalmente fue reemplazado por el primer sistema de archivos extendido, ext, que permitía nombres de archivos más largos y tamaños de archivo más grandes. Debido a su baja eficiencia (en términos de rendimiento), el sistema ext fue reemplazado por su sucesor ext2, que todavía se usa ampliamente en la actualidad.

La partición del disco ext2 contiene el sistema de archivos que se muestra en la Fig. 10.17 diseño. El sistema Linux no utiliza el bloque 0 y contiene código para iniciar la computadora. Después del bloque 0, la partición del disco se divide en grupos de bloques (sin tener en cuenta los límites de los cilindros del disco). Cada grupo está organizado de la siguiente manera.


El primer bloque es el superbloque, que almacena información sobre el diseño del sistema de archivos, incluida la cantidad de i-nodos, la cantidad de bloques de disco y el comienzo de la lista de bloques de disco libres (generalmente varios cientos de elementos). A esto le sigue un descriptor de grupo que contiene información sobre la ubicación de los mapas de bits, la cantidad de bloques e i-nodos libres en el grupo y la cantidad de directorios en el grupo. Esta información es importante porque el sistema de archivos ext2 intenta distribuir directorios de manera uniforme en el disco.

Dos mapas de bits realizan un seguimiento de los bloques libres y los i-nodos libres (esto también se hereda del sistema de archivos MINIX 1 y difiere de la mayoría de los sistemas de archivos UNIX, que utilizan una lista de bloques libres). El tamaño de cada mapa de bits es un bloque. Para un tamaño de bloque de 1 KB, este esquema limita el tamaño del grupo de bloques a 8192 bloques y 8192 i-nodos. El primer número es una limitación real, pero el segundo prácticamente no lo es. Con bloques de 4 KB, los números son cuatro veces mayores.

Luego se ubican los propios i-nodos. Están numerados del 1 hasta un máximo determinado. El tamaño de cada i-nodo es de 128 bytes y describe exactamente un archivo. El i-nodo contiene información contable (incluida la devuelta por la llamada stat, que simplemente la toma del i-nodo), así como información suficiente para localizar todos los bloques de disco que contienen los datos del archivo.

Después de los i-nodos están los bloques de datos. Todos los archivos y directorios se almacenan aquí. Si un archivo o directorio consta de más de un bloque, entonces esos bloques no tienen que ser contiguos en el disco. En realidad, lo más probable es que los bloques de un archivo grande estén dispersos por todo el disco.

Los i-nodos correspondientes a los directorios están dispersos en todos los grupos de bloques de disco. Ext2 intenta colocar archivos normales en el mismo grupo de bloques que el directorio principal y archivos de datos en el mismo bloque que el i-nodo del archivo fuente (suponiendo que haya suficiente espacio allí). Esta idea fue tomada del Berkeley Fast File System (McKusick et al., 1984). Los mapas de bits se utilizan para tomar decisiones de asignación rápidas

espacio para nuevos datos del sistema de archivos.

Cuando se asignan nuevos bloques de archivos, ext2 también preasigna varios (ocho) bloques adicionales al mismo archivo (para minimizar la fragmentación del archivo debido a escrituras futuras). Este esquema distribuye el sistema de archivos por todo el disco. También tiene un buen rendimiento (gracias a sus tendencias de contigüidad y fragmentación reducida).

Para acceder a un archivo, primero debe utilizar una de las llamadas al sistema Linux (como abrir), que requiere que especifique la ruta al archivo. Esta ruta se analiza y se extraen los directorios que la constituyen. Si se especifica una ruta relativa, la búsqueda comienza desde el directorio del proceso actual; de lo contrario, desde el directorio raíz. En cualquier caso, el i-nodo para el primer directorio es fácil de encontrar: hay un puntero a él en el descriptor del proceso o (en el caso del directorio raíz) está almacenado en un bloque específico en el disco.

El directorio permite nombres de archivos de hasta 255 caracteres (Figura 10.18). Cada directorio consta de varios bloques de disco (de modo que el directorio se pueda escribir en el disco de forma atómica). En un directorio, los elementos de archivos y directorios están desordenados (cada elemento sigue inmediatamente al anterior). Los elementos no pueden cruzar los límites de los bloques, por lo que suele haber una cantidad de bytes no utilizados al final de cada bloque de disco.


Cada entrada del directorio en la Fig. 10.18 consta de cuatro campos de longitud fija y un campo de longitud variable. El primer campo es el número de i-nodo, que es 19 para colosal, 42 para voluminoso y 88 para bigdir. El siguiente es el campo rec_len, que proporciona el tamaño de toda la entrada del directorio en bytes (posiblemente junto con bytes de relleno adicionales después del nombre). Este campo es obligatorio para encontrar la siguiente entrada (en el caso de que el nombre del archivo se complete con un número desconocido de bytes). En la figura, este campo está indicado por una flecha. Luego viene un campo de tipo archivo, directorio, etc. El último campo de longitud fija contiene la longitud del nombre del archivo en bytes (8, 10 y 6 para este ejemplo). Finalmente, está el nombre del archivo en sí, que termina con un byte nulo y se completa hasta el límite de 32 bits. Puede ir seguido de bytes de relleno adicionales.

En la figura. La figura 10.18b muestra el mismo directorio después de que se haya eliminado la entrada de voluminoso. Todo lo que esto hace en el directorio es que el número en el campo de tamaño de entrada del archivo colosal anterior se incrementa y los bytes de entrada del directorio para el archivo voluminoso remoto se convierten en marcadores de posición para la primera entrada. Estos bytes se pueden utilizar posteriormente para escribir al crear un nuevo archivo.

Debido a que la búsqueda en los directorios se realiza de forma lineal, la búsqueda de una entrada que se encuentra al final de un directorio grande puede llevar mucho tiempo. Por lo tanto, el sistema mantiene un caché de los directorios a los que se accedió recientemente. La caché se busca por nombre de archivo y, si se encuentra, ya no es necesaria una costosa búsqueda lineal. Se ingresa un objeto dentry en la caché de entradas del directorio para cada uno de los componentes de la ruta y (a través de su nodo-i) se busca en el directorio entradas de ruta posteriores (hasta que se encuentra el nodo-i real del archivo).

Por ejemplo, para buscar un archivo especificado por una ruta absoluta (como /usr/ast/file), debe seguir estos pasos. Primero, el sistema encuentra el directorio raíz, que normalmente usa el i-nodo número 2 (especialmente cuando el i-nodo número 1 está reservado para tratar con bloques defectuosos). Coloca el elemento correspondiente en la caché de elementos del directorio (para futuras búsquedas en el directorio raíz). Luego busca en el directorio raíz la cadena "usr" para obtener el número de i-nodo para el directorio /usr (que también se almacena en caché para las entradas del directorio). Luego se lee este i-nodo y se recuperan los bloques de disco de él, de modo que pueda leer el directorio /usr y buscar la cadena "ast" en él. Una vez que se encuentra el elemento correspondiente, se puede determinar a partir de él el número de i-nodo para el directorio /usr/ast. Dado este número de i-nodo, se puede leer y encontrar bloques de directorio. Finalmente, buscamos "archivo" y encontramos su número de i-nodo. Por lo tanto, utilizar una ruta relativa no sólo es más conveniente para el usuario, sino que también reduce la cantidad de trabajo del sistema.

Si el archivo está disponible, el sistema recupera el número de i-nodo y lo utiliza como índice en la tabla de i-nodo (en el disco) para encontrar el i-nodo correspondiente y leerlo en la memoria. Este i-nodo se coloca en una tabla de i-nodos, una estructura de datos del kernel que contiene todos los i-nodos para los archivos y directorios actualmente abiertos. El formato del elemento i-node debe contener (como mínimo) todos los campos que devuelve la llamada al sistema stat para que funcione (consulte la Tabla 10.10). en la mesa La Figura 10.13 muestra algunos de los campos de la estructura i-node admitida en el sistema de archivos Linux. La estructura i-node real contiene muchos más campos, ya que esta misma estructura se utiliza para representar directorios, dispositivos y otros archivos especiales. La estructura i-node también contiene campos reservados para uso futuro. La historia ha demostrado que los bits no utilizados no permanecen por mucho tiempo.

Ahora veamos cómo el sistema lee el archivo. Recordará que una llamada típica a un procedimiento de biblioteca para activar la llamada al sistema de lectura se ve así:

n = lectura(fd, buffer, nbytes);


Cuando el kernel toma el control, lo único que tiene que empezar son estos tres parámetros y la información de sus tablas internas (relacionadas con el usuario). Uno de los elementos de estas tablas internas es una serie de descriptores de archivos. Está indexado por descriptores de archivos y contiene un elemento por archivo abierto (hasta un número máximo, el valor predeterminado suele ser 32).

La idea es comenzar con este descriptor de archivo y terminar con el nodo correspondiente. Veamos un esquema posible: colocar un puntero a un nodo en la tabla de descriptores de archivos. A pesar de su simplicidad, este método (desafortunadamente) no funciona. El problema es este. Cada descriptor de archivo debe tener un puntero de archivo asociado que especifique el byte del archivo en el que comenzará la siguiente operación de lectura o escritura. ¿Dónde debería almacenarse este puntero? Una opción es colocarlo en la tabla Nodos. Sin embargo, este enfoque no funcionará si varios procesos no relacionados abren el mismo archivo al mismo tiempo, ya que cada proceso debe tener su propio puntero.

La segunda solución es colocar el puntero en la tabla de descriptores de archivos. En este caso, cada proceso que abre un archivo tiene su propia posición en el archivo. Desafortunadamente, este esquema tampoco funciona, pero la razón del fallo en este caso no es tan obvia y tiene que ver con la naturaleza del intercambio de archivos en el sistema Linux. Considere el script de shell 5, que consta de dos comandos (p1 y p2) que deben ejecutarse a su vez. Si el script se llama desde la línea de comando

entonces se espera que el comando p1 escriba su salida en el archivo x, y luego el comando p2 también escribirá su salida en el archivo x, comenzando desde donde lo dejó el comando p1.

Cuando el shell inicia el proceso p1, el archivo x inicialmente estará vacío, por lo que el comando de p1 simplemente comenzará a escribir en el archivo en la posición 0. Sin embargo, cuando p1 haya terminado de ejecutarse, se necesitará algún mecanismo para garantizar que el proceso p2 vea la posición inicial. como algo distinto de 0. Esto es exactamente lo que sucederá si la posición en el archivo se almacena en la tabla de descriptores de archivo) y el valor en el que pi se detuvo.

Cómo se hace esto se muestra en la Fig. 10.19. El truco consiste en introducir una nueva tabla (la tabla de descripción de archivos abiertos) entre la tabla de descriptores de archivos y la tabla de i-nodos y almacenar el puntero al archivo (así como el bit de lectura/escritura) en ella. En la figura, el proceso padre es el shell y el proceso hijo es primero el proceso pi y luego el proceso p2. Cuando el shell crea el proceso pi, su estructura de usuario (incluida la tabla de descriptores de archivos) es una copia exacta de la misma estructura del shell, por lo que ambos contienen punteros a la misma tabla de descriptores de archivos abiertos. Cuando el proceso pi sale, el descriptor de archivo del shell continúa apuntando a la tabla de descripción del archivo abierto, que contiene la posición del proceso p1 en el archivo. Cuando el shell ahora crea el proceso p2, el nuevo proceso hijo hereda automáticamente la posición del archivo, sin que ni el nuevo proceso ni el shell necesiten saber el valor actual de esa posición.


Si algún proceso externo abre un archivo, recibirá su propia entrada en la tabla de descripción del archivo abierto con su posición en el archivo, que es exactamente lo que se necesita. Por lo tanto, el propósito de la tabla de descripción de archivos abiertos es permitir que los procesos padre e hijo compartan un único puntero a un archivo, pero asignen punteros privados a otros procesos.

Entonces (volviendo al problema de ejecución de lectura), hemos mostrado cómo se determinan la posición del archivo y el i-nodo. El nodo I contiene las direcciones de disco de los primeros 12 bloques del archivo. Si una posición en un archivo se encuentra dentro de sus primeros 12 bloques, entonces se lee el bloque deseado del archivo y los datos se copian al usuario. Para archivos de más de 12 bloques, el i-nodo contiene la dirección de disco de un único bloque indirecto (Figura 10.19). Este bloque contiene las direcciones de disco de bloques de disco adicionales. Por ejemplo, si el tamaño del bloque es 1 KB y la dirección del disco ocupa 4 bytes, entonces un único bloque indirecto puede almacenar hasta 256 direcciones de disco. Este esquema le permite admitir archivos de hasta 268 KB de tamaño.

Cómo hacer posible acceder a una partición de disco o medio extraíble con sistemas de archivos en un entorno Windows Ext2/3/4 ? Si, por ejemplo, en el ordenador también hay un segundo sistema linux. Y necesitas trabajar con sus datos del medio ambiente. ventanas. U otro ejemplo: cuando los discos virtuales con sistemas instalados en máquinas virtuales se montan dentro de Windows linux o Androide. Con Ext2/3/ 4 Windows no puede funcionar de forma nativa; necesita herramientas de terceros para ello. ¿Qué tipo de medios son estos? Miremos los que aparecen a continuación.

***
Las tres primeras herramientas permitirán leer únicamente dispositivos de información desde Ext2/3/4. La última solución le permitirá leer y escribir datos. Todas las herramientas que se analizan a continuación son gratuitas.

1. Lector de Linux DiskInternals

Un programa simple es un administrador de archivos primitivo, diseñado como un Explorador de Windows estándar, con soporte para sistemas de archivos. Extensión 2/3/4 , Reiser4 , HFS , UFS2. En la ventana del programa veremos particiones y dispositivos con linux o Androide.

Para copiar, debe seleccionar una carpeta o archivo, presione el botón "Ahorrar".

Luego especifique la ruta de copia.

2. Complemento para Total Commander DiskInternals Reader

Los fanáticos de lo popular pueden extraer datos linux o Androide dentro de Windows usando este administrador de archivos. Pero primero instale un complemento especial. Uno de estos complementos es que puede conectar y leer dispositivos de información formateados en Ext2/3/4 , Grasa/exGRASA , HFS/HFS+ , ReiserFS. Descargue el complemento, descomprima su archivo dentro , confirme la instalación.

vamos a lanzar (importante) en nombre del administrador. Vayamos a la sección. Hacer clic.

Aquí, junto con otras particiones de disco y medios, el que tiene Ext2/3/4 .

Los datos se copian tradicionalmente manera: presionando F5 en el segundo panel.

3. Complemento para Total Commander ext4tc

Una alternativa simplificada a la solución anterior: ext4tc, otro complemento para . Puede conectarse para leer dispositivos de información formateados sólo en Ext2/3/4. Descargue el complemento, descomprima su archivo dentro del administrador de archivos e inicie la instalación.

vamos a lanzar (importante) en nombre del administrador. Hacer clic. Vamos a.

Si necesita copiar datos, utilice el método habitual con la tecla F5.

4. Controlador de soporte Ext2Fsd

Programa Ext2Fsd– este es el conductor Ext2/3/4, implementa soporte para estos sistemas de archivos a nivel del sistema operativo. Las particiones de disco y las unidades formateadas con estos sistemas de archivos se pueden trabajar como dispositivos multimedia normales compatibles con Windows en una ventana del Explorador o de un programa de terceros. El controlador le permite leer y escribir datos.

Descargue la última versión actual Ext2Fsd.

Durante la instalación activamos (si es para trabajo a largo plazo) tres casillas de verificación sugeridas:

1 — Ejecución automática del controlador con Windows;
2 - Soporte de grabación para ext2;
3 - Soporte de formato para ext3.

En la etapa de preacabado, activamos la opción para iniciar la ventana del administrador de controladores, junto con la asignación de información a los dispositivos desde Ext2/3/4 letras de unidad.

En la ventana que se abre Veremos a los medios con la carta ya asignada. Por ejemplo, en nuestro caso, un transportista con ext4 se da la primera carta gratis F.

Ahora podemos trabajar con el disco. F en la ventana del Explorador.

Asigne una letra a los nuevos dispositivos conectados con Ext2/3/4 se puede hacer usando el menú contextual que aparece en cada uno de los que se muestran en la ventana dispositivos. Pero simplemente asignando una letra de unidad, dicho dispositivo no aparecerá después de reiniciar Windows; esta solución es sólo para una sesión de trabajo con la computadora; Para crear un nuevo dispositivo con Ext2/3/4 permanentemente visible en el entorno de Windows, debe hacer doble clic en él para abrir la ventana de configuración y establecer los parámetros de conexión permanente. En la segunda columna necesitas:

Para medios extraíbles, active la casilla de verificación indicada con el número 1 en la captura de pantalla y especifique la letra de la unidad;
Para discos y particiones internos, active la casilla de verificación indicada en la captura de pantalla a continuación con el número 2, y también indique la letra de la unidad.

El sistema de archivos de Linux suele ser ext4. Está registrado y le permite trabajar cómodamente con datos al resolver la gran mayoría de problemas. Sin embargo, hay otros. En el marco de este material se discutirán los principales tipos de sistemas de archivos y los principios para trabajar con ellos.

Tipos de sistemas de archivos Linux y sus características

Las características distintivas son la velocidad de trabajo con archivos, la seguridad y los parámetros (como el tamaño del bloque) que existen de forma predeterminada y se configuran al crear el FS. Quizás la característica más importante sea la presencia de una revista. El registro del sistema registra datos o metadatos(solo encabezados) desde donde se puede restaurar la información en caso de falla.

Se puede crear un sistema de archivos en cualquier dispositivo: en un disco o partición del sistema.

sistema de archivos EXT2

EXT2 es actualmente un sistema de archivos obsoleto que prácticamente no se utiliza en instalaciones modernas. La principal desventaja es la falta de registro, lo que, en consecuencia, imposibilita la recuperación de datos en caso de falla. Todavía se utiliza en medios de almacenamiento portátiles como USB. Para ellos no es necesario un cargador, ya que ocupa cierto espacio.

También garantiza la máxima velocidad de funcionamiento.

  • para EXT2 tamaño máximo de archivo -2 TB

sistema de archivos EXT3

EXT2 reemplazado, la característica principal es la apariencia de un cargador, es totalmente compatible con EXT2 (EXT2 se puede convertir libremente a EXT3). Hoy en día también es raro; casi siempre se utiliza EXT4.

Diario: un área especial en la memoria en la que se registra información sobre todos los cambios.

  • para EXT3 tamaño máximo de archivo -2 TB
  • El tamaño máximo de todos los archivos es 32 TB.
  • cada directorio puede tener hasta 32.000 subdirectorios

Al registrar en diario, hay tres opciones (especificadas al crear el sistema de archivos):

  • revista: metadatos, así como la información misma, en la revista.
  • ordenado: opción predeterminada, solo se guardan los metadatos incluso después de escribir en el disco
  • Escritura diferida: solo se guardan los metadatos, puede optar por guardarlos antes o después de escribirlos en el disco.

sistema de archivos EXT4

La versión moderna del sistema de archivos extendido, esta es la que se usa con más frecuencia.

  • tamaño máximo de archivo -2 TB 16 TB
  • El tamaño máximo de todos los archivos es 1 EB (exabyte). 1 EB = 1024 PB (petabyte). 1 PB = 1024 TB (terabyte).
  • cada directorio puede tener hasta 64.000 subdirectorios

En EXT4, el registro se puede desactivar configurando la opción datos cuando se monta en apagado

EXT como principal sistema de archivos y práctica operativa de Linux

El sistema de archivos se crea con el comando mk2fs.

La opción de registro requerida se especifica durante el montaje, por ejemplo:

montar /dev/vdc /mnt/1 -t text3 -o datos=diario

Conversión de EXT2 E a XT3

ReiserFS

ReiserFS (y la implementación moderna de Reiser4 con soporte SELinux) tiene un buen rendimiento y es muy productivo, especialmente cuando se trabaja con una gran cantidad de archivos pequeños. ReiserFS no asigna inodos para cada archivo pequeño sino que los procesa juntos, y ReiserFS también utiliza un diario con varias opciones disponibles. Actualmente, el sistema de archivos cuenta con el respaldo de desarrolladores de Rusia.

Puede crear un FS para un dispositivo con el comando

XFS

XFS es un sistema de archivos de registro en diario. Utiliza RAM para almacenar información, por lo que es posible la pérdida de datos, por ejemplo, cuando se apaga la alimentación.

Para usar XFS en Ubuntu necesitarás instalar paquetes xfsprogs Y xfsdump

vfat

El sistema de archivos Linux también existe en el entorno Windows. Se utiliza cuando es necesario organizar el acceso compartido a determinados discos y particiones de clientes con diferentes sistemas operativos. En otros casos, no se recomienda su uso ya que pueden surgir dificultades al trabajar en Linux.

Si tiene dos sistemas operativos instalados, Windows y Linux, probablemente le gustaría estar contenido en particiones de un sistema operativo gratuito directamente desde Windows, sin reiniciar la computadora.

Desafortunadamente, no hay soporte para particiones del sistema operativo Linux en Windows. Pero en vano. Me parece que esto podría ser un bonito gesto por parte de Microsoft.

La esencia del problema es que Windows utiliza el sistema de archivos NTFS y Linux tiene su propia forma de organizar archivos, el sistema de archivos extendido, cuya última versión tiene el número de serie 4.

Linux es más fácil de usar que su hermano comercial: Linux admite el sistema de archivos NTFS de Windows de forma predeterminada. Por supuesto, no podrá instalar Linux en una partición NTFS, pero podrá leer y escribir datos desde dicha partición.

Ext2 IFS

Ext2 IFS es compatible con las versiones Windows NT4.0/2000/XP/2003/Vista/2008 x86 y x64 y le permite ver el contenido de las particiones ext2 de Linux y también puede escribir en ellas. La utilidad instala el controlador del sistema ext2fs.sys, que amplía las capacidades de Windows e incluye soporte completo para ext2: a las particiones ext2 se les asignan letras de unidad y los archivos y carpetas que contienen se muestran en los cuadros de diálogo de todas las aplicaciones, por ejemplo, en Explorador.

Ext2 FSD

Ext2 FSD es un controlador gratuito para sistemas Windows (versiones 2K/XP/VISTA/7 x86 y x64). Al igual que la utilidad anterior, que también es un controlador en esencia, incluye soporte completo para el sistema de archivos ext2 en Windows.

LTOOLS es un conjunto de utilidades de línea de comandos que le permite leer y escribir datos en/desde particiones Linux ext2, ext3 y ReiserFS (sistemas de archivos estándar de Linux) desde una máquina que ejecuta DOS o Windows.

Existe una versión del programa con un shell gráfico (escrito en Java): LTOOLSgui, así como una versión con un shell gráfico escrito en .

Ext2Leer

El postre es, como siempre, el más delicioso.

Ext2Read es una utilidad de tipo administrador de archivos que le permite ver y escribir en particiones ext2/ext3/ext4. Es compatible con LVM2 y, lo que lo distingue de otros programas de esta revisión, el sistema de archivos ext4. Soporte integrado para copia recursiva de directorios.

Y aquí está el segundo postre. Al principio se dijo que un buen gesto por parte de Microsoft sería habilitar de forma predeterminada el soporte para particiones Linux en Windows.

Sin embargo, el gesto se realizó en el 20º aniversario de Linux. Vea usted mismo.

Eso es todo. Gracias por su atención. Iré a luchar contra los abejorros. Hay muchísimos de ellos esta primavera. 🙂

Veamos la estructura lógica del sistema de archivos ext2fs. Físicamente, el disco duro está dividido en sectores de 512 bytes. El primer sector de una partición de disco en cualquier sistema de archivos se considera el área de inicio. En la partición primaria, esta área contiene la entrada de arranque, un fragmento de código que inicia el proceso de carga del sistema operativo al inicio. Esta área no se utiliza en otras particiones. Los sectores restantes se combinan en bloques lógicos de 1, 2 o 4 kilobytes de tamaño. Un bloque lógico es el dato direccionable más pequeño: los datos de cada archivo ocupan un número entero de bloques. Los bloques, a su vez, se combinan en grupos de bloques. Los grupos de bloques y los bloques dentro de un grupo se numeran secuencialmente, comenzando desde 1.

Las estructuras de datos utilizadas cuando se trabaja con el sistema de archivos ext2fs se describen en el archivo de encabezado /usr/include/linux/ext2fs .h.

El superbloque sirve como punto de partida del sistema de archivos y almacena todos

información sobre ella. Tiene un tamaño de 1024 bytes y está ubicado en un desplazamiento de 1024 bytes desde el comienzo del sistema de archivos. Está duplicado en cada grupo de bloques, lo que le permite restaurarlo rápidamente después de fallas. El superbloque determina el tamaño del sistema de archivos, la cantidad máxima de archivos en la partición, la cantidad de espacio libre y contiene información sobre dónde buscar áreas no asignadas. Cuando se inicia el sistema operativo, el superbloque se lee en la memoria y todos los cambios en el sistema de archivos se reflejan primero en una copia del superbloque ubicado en el sistema operativo y se escriben en el disco solo periódicamente. Esto mejora el rendimiento del sistema porque muchos usuarios y procesos actualizan archivos constantemente. Por otro lado, cuando el sistema está detenido, el superbloque debe escribirse en el disco, lo que no permite apagar la computadora con simplemente apagarla. De lo contrario, la próxima vez que arranque, la información registrada en el bloqueador solar no será

correspondiente al estado real del sistema de archivos.

Después del superbloque viene una descripción (descriptor) del grupo de bloques. La información almacenada en él le permite encontrar los mapas de bits del bloque y del inodo, así como la tabla de inodos.

Un mapa de bits de bloque es una estructura en la que cada bit indica si el mismo bloque está asignado a un archivo. Un valor de 1 indica que el bloque está ocupado. Este mapa se utiliza para buscar bloques libres en los casos en que es necesario asignar espacio para un archivo..

El mapa de bits de inodos realiza una función similar a la tabla de inodos: muestra qué inodos están en uso.

Cada archivo tiene un y solo un inodo. (inodo, i-nodo, nodo de información), que se identifica por su número de serie: el índice del archivo. El inodo almacena los metadatos del archivo. Entre ellos se encuentran todos los atributos del archivo excepto su nombre y un puntero a los datos del archivo.

Para un archivo o directorio normal, este puntero es una matriz de 15 direcciones de bloque. Las primeras 12 direcciones de esta matriz son enlaces directos a los números de bloque en los que se almacenan los datos del archivo. Si los datos no caben en 12 bloques, se activa el mecanismo de direccionamiento indirecto. La siguiente dirección en esta matriz es un enlace indirecto, es decir, la dirección de un bloque que almacena una lista de direcciones de los siguientes bloques con datos de este archivo.

¿Cuántos bloques de datos se pueden abordar de esta manera? La dirección del bloque ocupa 4 bytes, el bloque, como ya se mencionó, ocupa 1, 2 o 4 kilobytes. Esto significa que mediante direccionamiento indirecto es posible colocar entre 256 y 1024 bloques.

¿Qué pasa si el archivo es aún más largo? La siguiente dirección en la matriz de punteros apunta al bloque de direccionamiento indirecto doble. (doble bloqueo indirecto). Este bloque contiene una lista de direcciones de bloque, que a su vez contienen listas de direcciones de los siguientes bloques de datos.

Y finalmente, la última dirección en la matriz de punteros especifica la dirección del bloque indirecto triple, es decir, un bloque con una lista de direcciones de bloque que son bloques indirectos dobles.

No está claro dónde está el nombre del archivo si no está entre los datos del archivo o sus metadatos. En sistemas tipo UNIX, un nombre de archivo es un atributo no del archivo en sí, sino del sistema de archivos, entendido como una estructura lógica de directorios. El nombre del archivo se almacena sólo en el directorio al que está asignado el archivo y en ningún otro lugar. De esto se derivan interesantes consecuencias.

En primer lugar, un único inodo puede corresponder a cualquier número de nombres asignados a diferentes directorios, todos los cuales son reales. El número de nombres (enlaces físicos) se cuenta en el inodo. Este es el número que puede ver usando el comando Is -1.

En segundo lugar, eliminar un archivo simplemente significa eliminar su entrada de los datos del directorio y disminuir el recuento de enlaces en 1.

En tercer lugar, sólo puede hacer coincidir un nombre con un número de inodo dentro del mismo sistema de archivos, por lo que no puede crear un enlace físico a otro sistema de archivos (es posible uno simbólico, tiene un mecanismo de almacenamiento diferente).

El directorio en sí se asigna a su directorio principal de la misma manera. El directorio raíz siempre se registra en el inodo número 2 (el número 1 está reservado para la lista de direcciones de bloques defectuosos). Cada directorio almacena un enlace a sí mismo y a su directorio principal; estos son los pseudosubdirectorios "." Y "..".

Por tanto, el número de enlaces a un directorio es igual al número de sus subdirectorios más dos.

Los datos del directorio son una lista vinculada con entradas de longitud variable y se parece a esto:

Estructura de directorios en ext2fs

¿Qué pasa con los archivos de dispositivos físicos? Pueden ubicarse en los mismos directorios que los archivos normales: no hay datos en el directorio que indiquen que el nombre pertenece al archivo en el disco o dispositivo. La diferencia está en el nivel de inodo. Si el i-nodo de un archivo normal apunta a los bloques de disco donde se almacenan sus datos, entonces el i-nodo del archivo de dispositivo contiene un puntero a la lista de controladores de dispositivos en el kernel: el elemento de la lista que corresponde a el número de dispositivo principal:

Diferencia entre archivo normal y archivo de dispositivo

Propiedades del sistema de archivos ext2fs:

El tamaño máximo del sistema de archivos es 4 TB.

El tamaño máximo de archivo es de 2 GB.

La longitud máxima del nombre de archivo es de 255 caracteres.

El tamaño mínimo de bloque es 1024 bytes.

El número de inodos asignados es 1 por 4096 bytes de la partición.




Arriba