Sistema de archivos ext2 en Linux. Cómo acceder a los sistemas de archivos Ext2, Ext3, Ext4 en el sistema de archivos Ext2 del entorno Windows

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 se montan dentro de Windows con instalado maquinas virtuales sistemas 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? Veamos 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. Puede trabajar con particiones de disco y unidades formateadas con estos sistemas de archivos como con dispositivos multimedia normales compatibles con Windows en una ventana del Explorador o programas 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 reiniciar Windows, esta solución es sólo para una sesión de 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.

14 Jun

Sistemas de archivos ext2, ext3, XFS, ReiserFS, NTFS

Sistema de archivos- este es el orden que determina la forma de organizar, almacenar y nombrar datos en cualquier medio de almacenamiento electrónico en las computadoras.

La variedad de sistemas de archivos se explica por el hecho de que cada uno fue inventado para su propio conjunto específico de tareas. Algunos escriben archivos pequeños muy rápidamente (digamos, hasta 1 GB), pero al mismo tiempo interactúan mal con archivos grandes o no funcionan con ellos en absoluto. Algunos son buenos desde el punto de vista de la seguridad, otros desde el punto de vista de la velocidad de lectura/escritura. Cada sistema de archivos tiene sus propias ventajas, desventajas, vulnerabilidades y capacidades distintivas.

EN linux Los tipos de sistemas de archivos más utilizados son:

  1. ext2- representa Segundo sistema de archivos extendido(segundo sistema de archivos extendido). Desarrollado por Remy Card en 1993 como sistema de archivos para el kernel de Linux, de 1993 a 2001 fue el sistema de archivos principal linux.
    La ventaja es la alta velocidad de lectura/escritura.
    La principal desventaja del sistema. ext2 es que no está diarioizado, pero precisamente por eso tiene un gran rendimiento ( Inicio sesión es un proceso de registro en diario que almacena una lista de cambios que ayuda a mantener la integridad del sistema de archivos durante diversas fallas del sistema);
  2. ext3- representa Tercer sistema de archivos extendido(tercera versión del sistema de archivos extendido). Desarrollado por Stephen Tweedy en 2001, todavía se utiliza hoy en día en distribuciones. linux. Nació como un mejorado. ext2.
    La ventaja de este sistema es que está registrado, es decir, su confiabilidad aumenta significativamente en comparación con ext2.
    La desventaja es un rendimiento y una velocidad de lectura/escritura ligeramente inferiores.
  3. XFS— Desarrollado por la empresa. Gráficos de silicio en 1993, se añadió al núcleo linux como sistema de archivos en 2002 en toda la familia de distribuciones linux, actualmente utilizado como “nativo” en la distribución sombrero rojo.
    La ventaja es la presencia de registro de metadatos, alta estabilidad operativa, se admite la distribución de flujos de entrada/salida en grupos, altas velocidades de lectura/escritura, es posible desfragmentar incluso cuando la partición está montada y puede aumentar el tamaño de el sistema de archivos. Funciona más eficazmente con archivos grandes.
    La desventaja es que el tamaño de la partición no se puede reducir, el proceso de procesamiento de metadatos no es tan rápido y funciona notablemente más lento con archivos pequeños que con otros tipos de sistemas de archivos.
  4. ReiserFS- desarrollado por la empresa Nombresys bajo la dirección de Hans Reiser en 2001. Sólo usado en sistemas operativos linux. Fue el primer sistema de archivos registrado en ser adoptado en el kernel.
    La ventaja de este sistema de archivos es que funciona muy rápidamente con archivos pequeños (la velocidad de lectura/escritura es mayor que la del ext4), admite el registro.
    La desventaja es que su desarrollo se ha ralentizado notablemente debido al arresto de su líder, Hans Reiser, y no hay cifrado en segundo plano.
  5. NTFS- representa Sistema de archivos de nueva tecnología(Sistema de archivos de nueva tecnología). Desarrollado en julio de 1993 por la corporación. microsoft. Ampliamente utilizado en varios sistemas operativos, así como en diversos medios de almacenamiento.
    La ventaja es la capacidad incorporada de limitar el acceso a los datos para diferentes usuarios, así como asignar restricciones a volumen máximo espacio en disco, uso de un sistema de diario, lectura/escritura de archivos pequeños a alta velocidad.
    La desventaja es que el funcionamiento estable requiere una gran cantidad de RAM de la PC, funciona lentamente con archivos grandes y la longitud de la ruta a los archivos es limitada (32.767 caracteres Unicode).

De esta forma sencilla descubrimos los “sistemas de archivos ext2, ext3, XFS, ReiserFS, NTFS«!

Sistema de archivos(Sistema de archivos en inglés): un orden que determina la forma de organizar, almacenar y nombrar datos en los medios de almacenamiento de información de los equipos de TI (utilizando tarjetas de memoria flash portátiles para la grabación y el almacenamiento repetidos de información en dispositivos portátiles dispositivos electrónicos: cámaras digitales, teléfonos móviles etc.) y equipos informáticos. Define el formato del contenido y almacenamiento físico de la información, que suele agruparse en forma de archivos. Un sistema de archivos específico determina el tamaño del nombre del archivo (carpeta), el tamaño máximo posible de archivo y partición, y un conjunto de atributos de archivo. Algunos sistemas de archivos brindan capacidades de servicio, como control de acceso o cifrado de archivos.

Tareas del sistema de archivos

Las principales funciones de cualquier sistema de archivos están dirigidas a resolver las siguientes tareas:

denominación de archivos;

interfaz de software para trabajar con archivos para aplicaciones;

mapear el modelo lógico del sistema de archivos en la organización física del almacenamiento de datos;
organizar la resistencia del sistema de archivos ante cortes de energía y errores de hardware y software;

En los sistemas multiusuario aparece otra tarea: proteger los archivos de un usuario del acceso no autorizado por parte de otro usuario, así como asegurar la colaboración con los archivos, por ejemplo, cuando uno de los usuarios abre un archivo, para otros el mismo archivo será disponible temporalmente en modo de solo lectura.

Un sistema de archivos es la estructura básica que utiliza una computadora para organizar la información en su disco duro. Al instalar un nuevo disco duro debe particionarse y formatearse para un sistema de archivos específico, después de lo cual se pueden almacenar datos y programas en él. Hay tres opciones posibles de sistema de archivos en Windows: NTFS, FAT32 y el sistema FAT heredado, rara vez utilizado (también conocido como FAT16).

NTFS es el sistema de archivos preferido para esta versión de Windows. Tiene muchas ventajas sobre el antiguo sistema FAT32; Algunos de ellos se enumeran a continuación.

La capacidad de recuperarse automáticamente de algunos errores de disco (FAT32 no tiene esta capacidad).
Soporte mejorado para discos duros grandes.
Mayor grado de seguridad. Puede utilizar permisos y cifrado para denegar el acceso del usuario a determinados archivos.

El sistema de archivos FAT32 y el sistema FAT, poco utilizado, se utilizaron en anteriores Versiones de Windows, incluidos Windows 95, Windows 98 y Windows Millenium Edition. El sistema de archivos FAT32 no proporciona el nivel de seguridad que proporciona NTFS, por lo que si su computadora tiene una partición o un volumen formateado como FAT32, los archivos de esa partición son visibles para cualquiera que tenga acceso a la computadora. El sistema de archivos FAT32 también tiene limitaciones en el tamaño de los archivos. En esta versión de Windows, no es posible crear una partición FAT32 de más de 32 GB. Además, una partición FAT32 no puede contener un archivo de más de 4 GB.

La razón principal para usar un sistema FAT32 es que la computadora podrá ejecutar Windows 95, Windows 98 o Windows Millennium Edition, o esta versión de Windows (configuración de múltiples sistemas operativos). Para crear dicha configuración, debe instalar la versión anterior del sistema operativo en una partición formateada como FAT32 o FAT, convirtiéndola en la partición primaria (la partición primaria puede contener el sistema operativo). Otras secciones a las que se accede desde Versión anterior Windows también debe estar formateado como FAT32. Las versiones anteriores de Windows sólo pueden acceder a particiones o volúmenes NTFS en red. Las particiones NTFS en la computadora local serán inaccesibles.

GRASA – ventajas:

Requiere algo de RAM para funcionar de forma eficaz.
trabajo rapido con catálogos pequeños y medianos.
El disco realiza, en promedio, menos movimientos de cabeza (en comparación con NTFS).
Trabajo efectivo en discos lentos.

GRASA – contras:

Pérdida catastrófica de rendimiento con una fragmentación creciente, especialmente para discos grandes (solo FAT32).
Dificultades con el acceso aleatorio a archivos grandes (digamos, 10% o más del tamaño del disco).
Trabajo muy lento con directorios que contienen una gran cantidad de archivos.

NTFS - ventajas:

La fragmentación de archivos prácticamente no tiene consecuencias para el sistema de archivos en sí: el rendimiento de un sistema fragmentado se degrada sólo en términos de acceso a los datos del archivo.
La complejidad de la estructura de directorios y el número de archivos en un directorio tampoco suponen ningún obstáculo especial para el rendimiento.
Acceso rápido a un fragmento arbitrario de un archivo (por ejemplo, edición de archivos .wav grandes).
Acceso muy rápido a archivos pequeños (unos pocos cientos de bytes): el archivo completo se encuentra en el mismo lugar que los datos del sistema (registro MFT).

NTFS - desventajas:

Importantes requisitos de memoria del sistema (64 MB es el mínimo absoluto, más es mejor).
Los discos lentos y los controladores sin Bus Mastering reducen en gran medida el rendimiento de NTFS.
Trabajar con directorios de tamaño mediano es difícil porque casi siempre están fragmentados.
Un disco que funciona durante mucho tiempo al 80% - 90% de su capacidad mostrará un rendimiento extremadamente bajo.

Los siguientes sistemas de archivos se consideran “nativos” de Linux (es decir, aquellos en los que se puede instalar y desde los que se puede iniciar): ext2fs, ext3fs, ext4fs, ReiserFS, XFS, JFS. Suelen ofrecerse como opción a la hora de instalar la gran mayoría de distribuciones. Por supuesto, hay maneras Instalaciones de Linux a los sistemas de archivos FAT/VFAT/FAT32, pero esto es sólo para aquellos cariños y caballeros que entienden las perversiones, y no hablaré de ellas.

Los principales criterios a la hora de elegir un sistema de archivos suelen ser la fiabilidad y el rendimiento. En algunos casos, también hay que tener en cuenta el factor de compatibilidad; en este caso, se trata de la capacidad de otros sistemas operativos para acceder a un sistema de archivos concreto.
Comenzaré la revisión con ReiserFS, porque el motivo para escribir esta nota fue la pregunta: ¿qué deberían considerarse archivos pequeños? Después de todo, es bien sabido que la eficiencia de trabajar con archivos pequeños es el punto fuerte de este sistema de archivos.

Por lo tanto, los archivos pequeños significan archivos más pequeños que un bloque lógico del sistema de archivos, que en Linux en la mayoría de los casos equivale a cuatro kilobytes, aunque se puede especificar durante el formateo dentro de ciertos límites (dependiendo del FS específico). Hay innumerables archivos pequeños de este tipo en cualquier sistema operativo tipo Unix. Un ejemplo típico son los archivos que componen el árbol de ports de FreeBSD, portages de Gentoo y sistemas similares a ports.
En la mayoría de los sistemas de archivos, estos miniarchivos tienen su propio inodo (un nodo de información que contiene metainformación sobre el archivo) y un bloque de datos, lo que conduce tanto al consumo de espacio en disco como a una disminución en el rendimiento de las operaciones con archivos. En particular, esta es precisamente la razón de la catastrófica consideración del sistema de archivos FreeBSD (tanto el antiguo UFS como el nuevo UFS2) cuando trabaja con su propio sistema de puertos.

En el sistema de archivos ReiserFS, en tales casos, no se asignan bloques separados para los datos: logra enviar los datos del archivo directamente al área de inodo. Gracias a esto, se ahorra espacio en disco y el rendimiento aumenta, literalmente varias veces en comparación con todos los demás FS.
Este manejo de pequeños archivos ReiserFS ha dado lugar a la leyenda de su falta de fiabilidad. De hecho, cuando el sistema de archivos colapsa (es decir, se destruyen las áreas de servicio), los datos ubicados junto con sus inodos desaparecen junto con ellos, e irrevocablemente. Mientras que en aquellos sistemas de archivos donde los inodos y los bloques de datos siempre están separados espacialmente, estos últimos teóricamente pueden restaurarse. Entonces, para ext2/ext3 incluso hay herramientas que le permiten hacer esto.

Sin embargo, como toda leyenda, ésta sólo da la impresión de autenticidad. En primer lugar, la pérdida permanente de datos sólo se aplica a archivos muy pequeños. Entre los de usuario prácticamente no existen, y todos los demás se pueden restaurar fácilmente desde el kit de distribución.
En segundo lugar, al hablar de la posibilidad de recuperar datos de bloques que han perdido la conexión con sus inodos, no es casualidad que utilice la palabra "teórico". Porque en la práctica esta actividad requiere mucha mano de obra y no da un resultado garantizado. Cualquiera que haya tenido que hacer esto estará de acuerdo en que sólo se puede permitirlo si se está completamente desesperado. Y esto se aplica a todos. sistemas de archivos Linux. Por tanto, este aspecto puede descuidarse a la hora de elegir un sistema de archivos.

En términos de rendimiento general, ReiserFS es definitivamente más rápido que todos los demás FS registrados y, en algunos aspectos, es superior a ext2. Puede encontrar una comparación de velocidad de algunas operaciones de archivos comunes aquí.
Pero con ReiserFS la situación de compatibilidad es algo peor. Acceder a él desde sistemas operativos Windows, hasta donde yo sé, es imposible. Algunos sistemas operativos de la familia BSD (DragonFlyBSD, FreeBSD) admiten este sistema de archivos, pero en modo de solo lectura. Incluso la probabilidad de que un LiveCD de Linux arbitrario de años anteriores no sea compatible con ReiserFS no es cero.

Y aquí es el momento de recordar ext3fs. Su ventaja no es en absoluto una mayor confiabilidad; esta es la misma leyenda que la inestabilidad de ReiserFS. He oído hablar tanto de fallos de ext3fs como de incidentes similares con ReiserFS. Yo mismo no pude destruir ni a uno ni a otro. Excepto que funcionó con ext2, pero incluso entonces hace mucho tiempo, durante la época del kernel 2.2 (o incluso 2.0).

No, la principal ventaja de ext3fs es su compatibilidad: se garantiza que cualquier sistema Linux lo leerá. Por ejemplo, al restaurar desde algún LiveCD antiguo que tenía a mano, una situación que prácticamente no es tan increíble, tuve que entrar en ello. Nuevamente, la mayoría de los sistemas BSD pueden entender fácilmente ext3fs (aunque sin iniciar sesión). Para Windows también existen, hasta donde yo sé, todo tipo de controladores y complementos para aplicaciones comunes. administradores de archivos(tipo Comandante total), proporcionando acceso a particiones con ext2fs/ext3fs.

En términos de rendimiento, ext3fs deja una impresión mixta. En primer lugar, su rendimiento depende en gran medida del modo de registro, de los cuales hay tres: con registro de datos completo, registro parcial y registro solo de metadatos. En cada modo, muestra un rendimiento diferente en diferentes tipos de operaciones de archivos. Sin embargo, en ningún caso se trata de un rendimiento récord.

Sin embargo, si el requisito de rendimiento es lo primero, entonces ext2fs no tiene competencia; sin embargo, en este caso tendrá que aguantar la falta de registro. Y, en consecuencia, con largas comprobaciones del sistema de archivos en caso de un apagado incorrecto, y con el volumen de los discos modernos, esto puede llevar mucho tiempo...

Se puede decir lo siguiente sobre XFS. En términos de compatibilidad, se aplica todo lo escrito para ReiserFS; además, hasta hace algún tiempo no era compatible con el kernel estándar de Linux. En términos de rendimiento, XFS tampoco brilla, ya que en total se desempeña aproximadamente al mismo nivel que ext3fs. Y la operación de eliminación de archivos generalmente demuestra una lentitud deprimente.
Según mis observaciones, el uso de XFS vale la pena cuando se trabaja no sólo con archivos grandes, sino también con archivos muy grandes, que en realidad son sólo imágenes de DVD y archivos de vídeo.

Permítanme volver a la cuestión de la fiabilidad. Un corte de energía banal durante el trabajo normal del usuario, por regla general, es tolerado sin problemas por todos los sistemas de archivos registrados (y ninguno de ellos garantiza la seguridad de las operaciones del usuario que no están escritas en el disco; rescatar a las personas que se están ahogando sigue siendo trabajo de las propias personas que se están ahogando). Es cierto que para cualquier sistema de archivos es posible simular una situación en la que apagarlo provocará daños más o menos graves. Sin embargo, en la vida real es poco probable que se produzcan situaciones de este tipo. Y puede eliminarlos por completo comprando una fuente de alimentación ininterrumpida; esto le dará más confianza en la seguridad de los datos que el tipo de sistema de archivos. Bueno, en cualquier caso, la única garantía para restaurar datos dañados pueden ser copias de seguridad periódicas...

Creo que la información presentada anteriormente es suficiente para una elección informada. Mi elección personal durante los últimos años ha sido ReiserFS. Ocasionalmente, en sistemas donde está justificado mover todo lo posible fuera de la partición raíz, tiene sentido usar ext3fs para el sistema de archivos raíz y ReiserFS para todos los demás.

Si se proporciona una partición separada para el directorio /boot (y esto se recomienda cuando se usa gestor de arranque GRUB por sus desarrolladores) - para ello, no se justifica ningún otro sistema de archivos que no sea ext2fs, cualquier registro no tiene sentido aquí. Finalmente, si crea una partición separada para todo tipo de materiales multimedia, entonces puede pensar en XFS.

Si nos acercamos a la explicación de forma más metódica

ext: en los primeros días de Linux, ext2 (sistema de archivos extendido versión 2) era dominante. Desde 2002, fue reemplazado por el sistema ext3, que es en gran medida compatible con ext2, pero también admite funciones de registro y, cuando se trabaja con la versión del kernel 2.6 y superior, ACL. El tamaño máximo de archivo es 2 TB, el tamaño máximo del sistema de archivos es 8 TB. A finales de 2008, se anunció oficialmente el lanzamiento de ext4, que es compatible con versiones anteriores de ext3, pero muchas funciones se implementan de manera más eficiente que antes. Además, el tamaño máximo del sistema de archivos es 1 EB (1.048.576 TB), y puede esperar que sea suficiente durante algún tiempo. Acerca de reiser: el sistema lleva el nombre de su fundador, Hans Reiser, y fue el primer sistema con funciones de registro para acceder al kernel de Linux en busca de datos. La versión SUSE de Zp incluso se consideró estándar durante algún tiempo. Las principales ventajas de reiser en comparación con ext3 son una mayor velocidad y eficiencia de colocación cuando se trabaja con archivos pequeños (y en un sistema de archivos, por regla general, la mayoría de los archivos son pequeños). Sin embargo, con el tiempo el desarrollo de los reisefers se detuvo. Hace tiempo que se anunció que se lanzará la versión 4, que aún no está lista, y el soporte para la versión 3 ha cesado. Acerca de xfs: el sistema de archivos xfs se desarrolló originalmente para estaciones de trabajo SGI que ejecutan el sistema operativo IRIX. Xfs es especialmente bueno para trabajar con archivos grandes y es particularmente ideal para trabajar con transmisión de video. El sistema admite cuotas y atributos extendidos (ACL).
jfs

jfs - a66peBHaTypaJFS significa "Sistema de archivos con registro". Originalmente desarrollado para IBM y luego adaptado para Linux, Jfs nunca gozó de mucho reconocimiento en Linux y actualmente languidece en una existencia miserable, inferior a otros sistemas de archivos.
brtfs

brtfs: si es la voluntad de los principales desarrolladores del kernel, el sistema de archivos brtfs en Linux tiene un futuro brillante. Este sistema fue desarrollado desde cero en Oracle. Incluye soporte para mapeador de dispositivos y RAID. Brtfs es muy similar al sistema ZFS desarrollado por Sun. Sus características más interesantes incluyen la verificación del sistema de archivos sobre la marcha, así como soporte para SSD (las unidades de estado sólido son discos duros alimentados por memoria flash). Lamentablemente, el trabajo sobre los brtfs no finalizará en un futuro previsible. Fedora, a partir de la versión 11, ofrece la posibilidad de instalar brtfs, ¡pero recomiendo usarlo solo para desarrolladores de sistemas de archivos!
No existe un sistema de archivos "más rápido" ni "mejor": la evaluación depende de para qué pretende utilizar el sistema. Se recomienda a los usuarios principiantes de Linux que trabajen en una computadora local que trabajen con ext3 y a los administradores de servidores con ext4. Por supuesto, con ext4 la velocidad de funcionamiento es mayor que con ext3, pero al mismo tiempo, en el sistema ext4 la situación con la confiabilidad de los datos es mucho peor: es muy posible que pierda información si el sistema se apaga repentinamente.

Si ha instalado un segundo sistema operativo similar a UNIX en su computadora, los siguientes sistemas de archivos le serán útiles al intercambiar datos (de un sistema operativo a otro).

sysv: utilizado en SCO, Xenix y Coherent OS.

ufs: utilizado en FreeBSD, NetBSD, NextStep y SunOS. Linux sólo puede leer información de dichos sistemas de archivos, pero no puede realizar cambios en los datos. Para acceder a segmentos desde BSD, necesitará además la extensión disklabel BSD. Existe una extensión similar para las tablas de particiones de SunOS.

ZFS es un sistema relativamente nuevo desarrollado por Sun para Solaris. Debido a que el código ZFS no es compatible con GPL, no se puede integrar con el kernel de Linux. Por este motivo, Linux sólo soporta este sistema de archivos de forma indirecta, a través de FUSE.
Windows, MacOS X

Los siguientes sistemas de archivos serán útiles al intercambiar información con MS DOS, Windows, OS/2 y Macintosh.

vfat: utilizado en Windows 9x/ME. Linux puede leer información de dichas particiones y realizar cambios en ella. Los controladores del sistema vfat le permiten trabajar con sistemas de archivos MS DOS más antiguos (8 + 3 caracteres).

ntfs: el sistema se utiliza en todas las versiones modernas de Windows: otNT y superiores. Linux puede leer y modificar sus archivos.

hfs y hfsplus: estos sistemas de archivos se utilizan en computadoras Apple. Linux puede leer y modificar sus archivos.

Los CD y DVD de datos suelen utilizar sus propios sistemas de archivos.

iso9660: el sistema de archivos para CD-ROM se describe en el estándar ISO-9660, que sólo permite nombres de archivos cortos. Los nombres largos se admiten de manera diferente en diferentes sistemas operativos, utilizando una variedad de extensiones que son incompatibles entre sí. Linux puede ejecutar tanto la extensión Rockridge, que es común en UNIX, como la extensión Joliet, desarrollada por Microsoft.

udf: este formato (formato de disco universal) apareció y se desarrolló como sucesor de ISO 9660.

Sistemas de archivos de red

Los sistemas de archivos no tienen que estar en el disco local;
se puede conectar a una computadora y a través de una red. El kernel de Linux admite varios sistemas de archivos de red, de los cuales los siguientes son los más utilizados.

smbfs/cifs: ayuda a conectar los directorios de red de Windows o Samba a un árbol de directorios.

nfs es el sistema de archivos de red más importante en UNIX.

coda: este sistema es muy similar a NFS. Tiene muchas características adicionales, pero no es muy común.

ncpfs: se ejecuta en el protocolo del kernel NetWare; Novell Netware utiliza oH.

Sistemas de archivos virtuales

Linux tiene varios sistemas de archivos que no están diseñados para almacenar datos en el disco duro (u otros medios de almacenamiento), sino sólo para intercambiar información entre el kernel y los programas del usuario.
devpts: este sistema de archivos proporciona acceso a pseudo terminales (abreviados como PTY) a través de /dev/pts/* según la especificación UNIX-98. (Los pseudoterminales emulan una interfaz serie. En los sistemas UNIX/Linux, dichas interfaces son utilizadas por emuladores de terminales como xterm. Normalmente, se utilizan dispositivos como /dev/ttypn. Por el contrario, la especificación UNIX-98 define nuevos dispositivos. Se informa más información detallada en la terminal de texto H0WT0.)
proc y sysfs: el sistema de archivos proc se utiliza para mostrar información de servicio relacionada con el kernel y la gestión de procesos. Además de esto, el sistema de archivos sysfs establece relaciones entre el kernel y el hardware. Ambos sistemas de archivos están montados en /proc y /sys.
tmpfs: este sistema está construido sobre la base de la memoria compartida según el Sistema V. Generalmente se monta en la posición /dev/shm y permite un intercambio eficiente de información entre dos programas. En algunas distribuciones (como Ubuntu), los directorios /var/run y /var/lock también se crean utilizando el sistema de archivos tmpfs. Algunos demonios de red utilizan los archivos de estos directorios para almacenar números de identificación de procesos, así como información de acceso a archivos. Gracias a tmpfs, estos datos ahora se reflejan en la RAM. El método garantiza una alta velocidad y también que después de apagar la computadora, no quedarán archivos en los directorios /var/run o /var/lock.

usbfs: el sistema de archivos usbfs, a partir de la versión 2.6 del kernel y superiores, proporciona información sobre los dispositivos USB conectados. Suele estar integrado en el sistema de archivos proc. Acerca de la compatibilidad con dispositivos USB en Linux.

Otros sistemas de archivos

auto: de hecho, no existe ningún sistema de archivos con ese nombre. Sin embargo, la palabra auto se puede usar en /etc/fstab o con el comando mount para especificar el sistema de archivos. En este caso, Linux intentará reconocer el sistema de archivos por sí solo. Este método funciona con la mayoría de los principales sistemas de archivos.
autofs, autofs4

autofs, autofs4 tampoco son sistemas de archivos, sino extensiones del kernel que realizan automáticamente comando de montaje para sistemas de archivos seleccionados. Si un sistema de archivos no se utiliza durante algún tiempo, el comando umount se ejecuta automáticamente en él. Este método es conveniente principalmente en los casos en los que sólo algunos de los muchos directorios NFS se utilizan activamente al mismo tiempo.

Para realizar tales operaciones, el script /etc/init.d/autofs ejecuta automáticamente el programa de montaje automático cuando se inicia el sistema. Se configura utilizando el archivo /etc/auto.master. Los programas correspondientes se instalan automáticamente, por ejemplo, en Red Hat y Fedora. En cualquier caso, autofs sólo se activa después de configurar /etc/auto.master o /etc/auto.misc.
Cramfs y squashfs

cramfs y squashfs: los sistemas de archivos Cram y Squash son de solo lectura. Se utilizan para "empaquetar" tantos archivos comprimidos como sea posible en una memoria flash o ROM (memoria de sólo lectura).

fuse: FUSE significa sistema de archivos en el espacio de usuario y permite que los controladores del sistema de archivos se desarrollen y utilicen fuera del núcleo. Por lo tanto, FUSE siempre se utiliza con un controlador de sistema de archivos externo. FUSE funciona, en particular, con el controlador NTFS ntfs-3g.

gfs y ocfs: el sistema de archivos global y el sistema de archivos de clúster de Oracle (Oracle Cluster File System) le permiten crear sistemas de archivos de red gigantes a los que muchas computadoras pueden acceder en paralelo al mismo tiempo.

jffs y yaffs: Journaling Flash File System y Yet Another Flash File System están optimizados específicamente para trabajar con unidades de estado sólido y medios flash. Utilizando algoritmos especiales, intentan utilizar todas las celdas de memoria de manera uniforme (tecnología de nivelación de desgaste) para evitar fallos prematuros del sistema.
bucle

bucle: solía trabajar con pseudodispositivos. Un dispositivo loopback es un adaptador que puede acceder a un archivo normal como un dispositivo de bloque. Gracias a él, puede colocar cualquier sistema de archivos en cualquier archivo y luego conectarlo al árbol de directorios usando mount. La función del núcleo responsable de esto (soporte de pseudodispositivo) está implementada en el módulo de bucle.

Hay una variedad de usos para los pseudodispositivos. En particular, se pueden utilizar al crear discos RAM iniciales para GRUB o LILO, al implementar sistemas de archivos cifrados o al probar imágenes ISO para CD.

Sistemas de archivos de medios de almacenamiento

Sistemas de archivos
ISO 9660
Extensión del sistema de archivos Joliet ISO 9660.
Rock Ridge (RRIP, IEEE P1282): una extensión del sistema de archivos ISO 9660 diseñada para almacenar atributos de archivos utilizados en sistemas operativos POSIX.
Extensiones de Amiga Rock Ridge
El Torito
Extensiones ISO9660 de Apple
HFS, HFS+
Universal Formato de disco especificación de un formato de sistema de archivos independiente del sistema operativo para almacenar archivos en medios ópticos. UDF es una implementación del estándar ISO/IEC 13346
Monte Rainiero

Archivo sistema linux- esto 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 del 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. Usos RAM para almacenar información, por lo que es posible la pérdida de datos, por ejemplo, cuando se corta la energía.

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.

(Segundo sistema de archivos extendido).

· Historia del desarrollo de los sistemas de archivos Linux.

· Estructura de partición de disco en ext2fs

·

· Catálogos

· Archivos de dispositivo

·

·

· Biblioteca EXT2fs

· Herramientas del sistema EXT2fs

· Cálculo de rendimiento

facultad de matematicas

Programa de software

2º año 5º gr.

Chichirov Andrei

Falso sistema EXT2fs (Segundo sistema de archivos extendido).

Historia del desarrollo de los sistemas de archivos Linux.

Las primeras versiones de Linux se desarrollaron basándose en el sistema operativo Minix. Sería más fácil compartir los discos entre los dos sistemas que desarrollar un nuevo sistema de archivos, por lo que Linus Torvalds decidió introducir soporte Linux para el sistema de archivos Minix. En ese momento, este sistema de archivos era un producto de software bastante eficiente con una cantidad relativamente pequeña de errores.

Sin embargo, las limitaciones asociadas con la estructura del sistema de archivos Minix eran bastante altas, por lo que comenzaron a pensar en desarrollar un nuevo sistema de archivos para Linux.

Para simplificar la implementación del nuevo sistema de archivos en el kernel de Linux, se desarrolló un sistema de archivos virtual (VFS). VFS fue escrito originalmente por Chris Provenzano y luego reescrito por Linus Torvalds antes de integrarse en el kernel.

Después de instalar VFS en el kernel, en abril de 1992 se desarrolló un nuevo sistema de archivos, EXTfs (Sistema de archivos extendido), que se agregó a la versión 0.96c de Linux. En el nuevo sistema de archivos, se eliminaron dos limitaciones importantes del sistema Minix: su tamaño máximo podía alcanzar los 2 gigabytes y la longitud máxima del nombre del archivo podía ser de 255 caracteres. Esta fue una mejora con respecto al sistema de archivos Minix, aunque aún persistían algunos problemas. No hubo soporte para el acceso compartido, la modificación del descriptor de índice y la modificación de las celdas de tiempo de cambio de archivos. Este sistema de archivos utilizaba listas enlazadas para operar en bloques e inodos libres, lo que afectaba en gran medida el rendimiento del sistema: con el tiempo, las listas se desordenaban y desordenaban, lo que provocaba la fragmentación del sistema de archivos.

La solución a estos problemas fue el lanzamiento en enero de 1993 de versiones alfa de dos nuevos sistemas de archivos: Xia y EXT2fs (Segundo Sistema de Archivos Extendido). En su mayor parte, el sistema de archivos Xia se basó en Minix, con algunas características nuevas agregadas. Esto se debió principalmente a la capacidad de trabajar con nombres de archivos largos, compatibilidad con particiones de disco más grandes y compatibilidad con tres celdas de tiempo de cambio de archivos. Por otro lado, EXT2fs se basó en EXTfs con muchas mejoras y adiciones. También tenía oportunidades de desarrollo futuro.

Cuando se lanzaron estos dos sistemas de archivos, eran funcionalmente aproximadamente iguales. El sistema Xia era más confiable que el EXT2fs al minimizarlo. A medida que se utilizaron más, se descubrieron errores en el sistema EXT2fs y se agregaron una gran cantidad de nuevas características y mejoras. El sistema de archivos EXT2fs ahora es muy confiable y se ha convertido en el estándar de facto del sistema de archivos de Linux.

La siguiente tabla proporciona información general sobre la funcionalidad proporcionada por varios sistemas de archivos.

MinixFS

Ext FS

Ext2FS

Xia FS

Tamaño máximo del sistema de archivos

Longitud máxima del archivo

Longitud máxima del nombre de archivo

Soporte para tres celdas de tiempo de cambio de archivos

Ampliabilidad

Tamaño de bloque redimensionable

Protección de la información

Si es necesario, la longitud del nombre del archivo en Extensión 2 se puede aumentar a 1012.

EXT2fs reserva una cierta cantidad de bloques para el usuario root. Normalmente esto es el 5% del total, lo que permite al administrador del sistema evitar quedarse sin espacio en el disco duro cuando está lleno con procesos de otros usuarios.

Estructura de partición de disco en ext2fs

Los fabricantes de discos duros suelen enviar sus productos formateados a bajo nivel. Hasta donde yo sé, esto significa que todo el espacio en disco se divide en "sectores" de 512 bytes de tamaño mediante etiquetas especiales. Dicho disco (o partición de disco) debe estar preparado para su uso en un sistema operativo específico. En MS-DOS o Windows, el procedimiento de preparación se llama formateo y en Linux, creación de un sistema de archivos. Creando un sistema de archivos ext2fs Consiste en crear una determinada estructura lógica en una partición de disco. Esta estructura se construye de la siguiente manera. Primero, se asigna un área de arranque en el disco. El área de inicio se crea en cualquier sistema de archivos. En la partición primaria, contiene un registro de inicio, un fragmento de código que inicia el proceso de carga del sistema operativo al inicio. Esta área no se utiliza en otras particiones. El resto del espacio en disco se divide en bloques. Un bloque puede tener un tamaño de 1, 2 o 4 kilobytes. Un bloque es una unidad direccionable de espacio en disco. Los archivos se asignan en bloques, por lo que existen compensaciones al elegir el tamaño del bloque. Talla grande El bloque, por regla general, reduce la cantidad de accesos al disco al leer o escribir un archivo, pero aumenta la proporción de espacio desperdiciado, especialmente cuando hay una gran cantidad de archivos pequeños.

Los bloques de su área se combinan en grupos de bloques. Los grupos de bloques en un sistema de archivos y los bloques dentro de un grupo se numeran secuencialmente, comenzando con 1. El primer bloque de un disco tiene el número 1 y pertenece al grupo número 1. El número total de bloques en un disco (en una partición de disco) es un divisor de la capacidad del disco, expresada en sectores. Y el número de grupos de bloques no tiene por qué dividir el número de bloques, porque es posible que el último grupo de bloques no esté completo. El comienzo de cada grupo de bloques tiene una dirección, que se puede obtener como ((número de grupo - 1)* (número de bloques en el grupo)).

Cada grupo de bloques tiene la misma estructura. Su estructura se presenta en la siguiente tabla.

La estructura de un grupo de bloques de partición de disco en ext2fs

El primer elemento de esta estructura (supermanzana) es el mismo para todos los grupos, y el resto son individuales para cada grupo. El superbloque se almacena en el primer bloque de cada grupo de bloques (excepto el grupo 1, que tiene un registro de arranque en el primer bloque). Supermanzana es el punto de partida del sistema de archivos. Tiene un tamaño de 1024 bytes y Siempre ubicado en un desplazamiento de 1024 bytes desde el comienzo del sistema de archivos. La presencia de múltiples copias de un superbloque se explica por la extrema importancia de este elemento del sistema de archivos. Los duplicados de superbloque se utilizan al recuperar un sistema de archivos después de fallas.

La información almacenada en el superbloque se utiliza para organizar el acceso al resto de datos del disco. 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á apagado, el superbloque debe escribirse en el disco, lo que no permite apagar la computadora. apagado sencillo nutrición. De lo contrario, la próxima vez que inicie, la información registrada en el superbloque no corresponderá al estado real del sistema de archivos.

La supermanzana tiene la siguiente estructura

Nombre del campo

Tipo

Un comentario

s_inodes_count

ULONGO

Número de inodos en el sistema de archivos.

s_bloques_count

ULONGO

Número de bloques en el sistema de archivos.

s_r_blocks_count

ULONGO

Número de bloques reservados para superusuario

s_free_blocks_count

ULONGO

Contador de bloques gratis

s_free_inodes_count

ULONGO

Contador de inodos gratis

s_first_data_block

ULONGO

El primer bloque que contiene datos. Dependiendo del tamaño del bloque, este campo puede ser 0 o 1.

s_log_block_size

ULONGO

Indicador de tamaño de bloque lógico: 0 = 1 KB; 1 = 2 KB; 2 = 4 KB.

s_log_frag_size

LARGO

Indicador de tamaño de fragmento (parece que el concepto de fragmento no se utiliza actualmente)

s_bloques_por_grupo

ULONGO

Número de bloques en cada grupo de bloques

s_frags_por_grupo

ULONGO

Número de fragmentos en cada grupo de bloques.

s_inodes_por_grupo

ULONGO

Número de inodos en cada grupo de bloques

s_mtime

ULONGO

La hora en que se montó por última vez el sistema de archivos.

tiempo_s_w

ULONGO

Hora en la que se escribió por última vez el sistema de archivos

s_mnt_count

CORTO

Contador del número de montajes del sistema de archivos. Si este contador alcanza el valor especificado en el siguiente campo (s_max_mnt_count), se debe verificar el sistema de archivos (esto se hace al reiniciar) y el contador se restablece a cero.

s_max_mnt_count

CORTO

Un número que determina cuántas veces se puede montar el sistema de archivos.

s_magia

CORTO

"Número mágico" (0xEF53) que indica que el sistema de archivos es de tipo ex2fs

s_estado

CORTO

Banderas que indican el estado actual del sistema de archivos (está limpio, etc.)

s_errores

CORTO

Banderas que especifican procedimientos para procesar mensajes de error (qué hacer si se encuentran errores).

s_pad

CORTO

Relleno

s_lastcheck

ULONGO

Hora de la última comprobación del sistema de archivos

s_checkinterval

ULONGO

Período de tiempo máximo entre comprobaciones del sistema de archivos

s_creador_os

ULONGO

Una indicación del tipo de sistema operativo en el que se creó el sistema de archivos.

s_rev_level

ULONGO

Versión (nivel de revisión) del sistema de archivos.

s_reservado

ULONGO

Relleno hasta 1024 bytes

Después del superbloque hay una descripción del grupo de bloques (Descriptores de grupo). Esta descripción es una matriz con la siguiente estructura.

Nombre del campo

Tipo

Objetivo

bg_block_bitmap

ULONGO

Dirección del bloque que contiene el mapa de bits del bloque de este grupo

bg_inode_bitmap

ULONGO

Dirección del bloque que contiene el mapa de bits de inodo de este grupo

bg_inode_table

ULONGO

Dirección del bloque que contiene la tabla de inodos de este grupo.

bg_free_blocks_count

CORTO

Contador del número de bloques libres en este grupo

bg_free_inodes_count

CORTO

Número de inodos libres en este grupo

bg_used_dirs_count

CORTO

El número de inodos en un grupo determinado que son directorios.

bg_pad

CORTO

Relleno

bg_reservado

ULONGO

Relleno

El tamaño de la descripción del grupo de bloques se puede calcular como (tamaño_grupo_bloque_en_ext2 * número_de_grupos) / tamaño_bloque(redondo si es necesario).

La información almacenada en la descripción del grupo se utiliza para localizar los mapas de bits del bloque y del inodo, así como la tabla de inodos. No olvides que los bloques y grupos de bloques están numerados empezando por el 1.

Un mapa de bits de bloque es una estructura en la que cada bit indica si el bloque correspondiente está asignado a un archivo. Si el bit es 1, entonces el bloque está ocupado. Este mapa se utiliza para buscar bloques libres en los casos en los que es necesario reservar espacio para un archivo. El mapa de bits del bloque ocupa un número de bloques igual a (número_de_bloques_en_grupo / 8) / tamaño_bloque(redondo si es necesario).

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

La siguiente área en la estructura del grupo de bloques se utiliza para almacenar la tabla de inodos del archivo. La estructura del inodo en sí se analiza con más detalle en la siguiente subsección.

Bueno, y finalmente, todo el espacio restante en el grupo de bloques se asigna para almacenar los archivos reales.

Sistema de archivos ext 2 se caracteriza por:

  • estructura jerarquica,
  • procesamiento coordinado de conjuntos de datos,
  • extensión de archivo dinámica,
  • protección de la información en archivos,
  • Tratar los dispositivos periféricos (como terminales y dispositivos de cinta) como archivos.

Representación de archivos internos

Cada archivo en el sistema Ext 2 tiene un índice único. El índice contiene la información que necesita cualquier proceso para acceder al archivo. Los procesos acceden a archivos utilizando un conjunto bien definido de llamadas al sistema e identificando el archivo con una cadena de caracteres que actúa como un nombre de archivo calificado. Cada nombre compuesto identifica de forma única un archivo, por lo que el núcleo del sistema convierte este nombre en un índice de archivo, que incluye una tabla de direcciones donde se encuentra la información del archivo en el disco. Dado que cada bloque de un disco tiene su propio número, esta tabla almacena una colección de números de bloques de disco. Para aumentar la flexibilidad, el kernel agrega un archivo bloque a bloque, lo que permite que la información del archivo se distribuya por todo el sistema de archivos. Pero este diseño complica la tarea de buscar datos. La tabla de direcciones contiene una lista de números de bloque que contienen información perteneciente a un archivo, pero cálculos simples muestran que una lista lineal de bloques de archivos en un índice es difícil de administrar. Para que una estructura de índice pequeña permita trabajar con archivos grandes, la tabla de direcciones de bloques de disco se alinea con la estructura que se muestra en la Figura 1.

La mayoría de los archivos en un sistema Ext 2 no superan los 10 KB o incluso 1 KB. Debido a que 10 KB de un archivo se encuentran en bloques de direccionamiento directo, se puede acceder a la mayoría de los datos almacenados en los archivos en un único acceso al disco. Por lo tanto, a diferencia del acceso a archivos grandes, trabajar con archivos de tamaño estándar es rápido.

Inodos de archivo

Cada archivo en el disco está asociado con un solo inodo de archivo, que se identifica por su número secuencial: el índice del archivo. Esto significa que la cantidad de archivos que se pueden crear en un sistema de archivos está limitada por la cantidad de inodos, que se especifica explícitamente cuando se crea el sistema de archivos o se calcula en función del tamaño físico de la partición del disco. Los inodos existen en el disco en forma estática y el núcleo los lee en la memoria antes de trabajar con ellos.

El inodo del archivo tiene la siguiente estructura:

Nombre del campo

Tipo

Descripción

yo_modo

CORTO

El tipo y los derechos de acceso a este archivo.

yo_fluido

CORTO

Identificador del propietario del archivo (Owner Uid).

yo_talla

ULONGO

Tamaño del archivo en bytes.

yo_atime

ULONGO

Hora del último acceso al archivo (Tiempo de acceso).

yo_ctime

ULONGO

Hora de creación del archivo.

soy hora

ULONGO

Hora de la última modificación del fichero.

I_dtime

ULONGO

Hora de eliminación del archivo.

me_gid

CORTO

ID de grupo (GID).

I_enlaces_count

CORTO

Los enlaces cuentan.

Yo_bloques

ULONGO

El número de bloques ocupados por el archivo.

I_flags

ULONGO

Banderas de archivos (Archivo de banderas)

Yo_reservado1

ULONGO

Reservado para SO

Yo bloqueo

ULONGO

Punteros a bloques en los que se escriben datos de archivos (un ejemplo de direccionamiento directo e indirecto en la Fig. 1)

I_version

ULONGO

Versión del archivo (para NFS)

I_archivo_acl

ULONGO

archivo ACL

I_dir_acl

ULONGO

ACL de directorio

yo_faddr

ULONGO

Dirección de fragmento

yo_frag

UCHAR

Número de fragmento

I_ftamaño

UCHAR

Tamaño del fragmento

I_pad1

CORTO

Relleno

Yo_reservado2

ULONGO

Reservado

El campo tipo de archivo y derechos de acceso es una palabra de dos bytes, cada bit del cual sirve como indicador que indica la relación del archivo con un tipo específico o la configuración de un derecho de archivo específico.

Identificador

Significado

Propósito de la bandera (campo)

S_IFMT

F000

Máscara de tipo de archivo

S_IFSOCK

A000

Conector de dominio

S_IFLNK

C000

S_IFREG

8000

archivo normal

S_IFBLK

6000

Dispositivo orientado a bloques

S_IFDIR

4000

Catalogar

S_IFCHR

2000

Dispositivo orientado a bytes (caracteres)

S_IFIFO

1000

Tubería con nombre (fifo)

S_ISUID

0800

SUID - cambiar bit de propietario

S_ISGID

0400

SGID - bit de cambio de grupo

S_ISVTX

0200

Bit de guardado de tarea (bit adhesivo)

S_IRWXU

01C0

Máscara de derechos del propietario del archivo

S_IRUSR

0100

derecho a leer

S_IWUSR

0080

Escribe bien

S_IXUSR

0040

Derecho a ejecutar

S_IRWXG

0038

Máscara de derechos de grupo

S_IRGRP

0020

derecho a leer

S_IWGRP

0010

Escribe bien

S_IXGRP

0008

Derecho a ejecutar

S_IRWXO

0007

Máscara de derechos de otros usuarios

S_IROTH

0004

derecho a leer

S_IWOTH

0002

Escribe bien

S_IXOTH

0001

Derecho a ejecutar

Entre los inodos, hay varios inodos que están reservados para propósitos especiales y desempeñan un papel especial en el sistema de archivos. Estos son los siguientes descriptores

Identificador

Significado

Descripción

EXT2_BAD_INO

Un inodo que enumera las direcciones de los bloques defectuosos en el disco (inodo de bloques defectuosos)

EXT2_ROOT_INO

Inodo del directorio raíz del sistema de archivos (Inodo raíz)

EXT2_ACL_IDX_INO

inodo ACL

EXT2_ACL_DATA_INO

inodo ACL

EXT2_BOOT_LOADER_INO

Inodo del cargador de arranque

EXT2_UNDEL_DIR_INO

Recuperar inodo de directorio

EXT2_FIRST_INO

Primer inodo sin reservas

El identificador más importante de esta lista es el identificador del directorio raíz. Este identificador apunta al directorio raíz, que, como todos los directorios, consta de entradas con la siguiente estructura:

Nombre del campo

Tipo

Descripción

Inodo

ULONGO

número de inodo del archivo

rec_len

CORTO

Longitud de esta entrada

nombre_len

CORTO

Longitud del nombre del archivo

Nombre

CARBONIZARSE

Nombre del archivo

Una entrada de directorio individual no puede cruzar el límite de un bloque (es decir, debe estar ubicada completamente dentro de un solo bloque). Por lo tanto, si el siguiente registro no cabe por completo en un bloque determinado, se transfiere al siguiente bloque y el registro anterior continúa hasta llenar el bloque hasta el final.

Figura 1 Bloques de direccionamiento directo e indirecto en el índice

Figura 2 Tamaño de archivo en bytes con un tamaño de bloque de 1 KB

Figura 3. Ejemplo de índice de disco

La Figura 3 muestra el índice del disco de un determinado archivo. Este índice pertenece a un archivo normal cuyo propietario es "mjb" y cuyo tamaño es de 6030 bytes. El sistema permite al usuario "mjb" leer, escribir y ejecutar el archivo; Los miembros del grupo "os" y todos los demás usuarios solo pueden leer o ejecutar el archivo, pero no escribir datos en él. El expediente fue leído por última vez el 23 de octubre de 1984 a las 13:45 horas y escrito por última vez el 22 de octubre de 1984 a las 10:30 horas. El índice fue modificado por última vez el 23 de octubre de 1984 a las 13:30 horas, aunque en ese momento no se escribió ninguna información en el expediente. El kernel codifica todos los datos anteriores en un índice. Tenga en cuenta la diferencia al escribir en el disco el contenido del índice y el contenido del archivo. El contenido de un archivo cambia sólo cuando se escribe en el archivo. El contenido del índice cambia tanto cuando cambia el contenido del archivo como cuando cambian el propietario del archivo, los derechos de acceso y el conjunto de punteros. Cambiar el contenido de un archivo automáticamente hace que se ajuste el índice, pero ajustar el índice no significa cambiar el contenido del archivo.

Catálogos

Los directorios son los archivos a partir de los cuales se construye la estructura jerárquica del sistema de archivos; Desempeñan un papel importante al convertir el nombre del archivo en un número de índice. Un directorio es un archivo cuyo contenido es un conjunto de entradas que consta del número de índice y el nombre del archivo incluido en el directorio. Un nombre calificado es una cadena de caracteres terminada en un carácter nulo y separada por una barra ("/") en varios componentes. Cada componente excepto el último debe ser el nombre de un directorio, pero el último componente puede ser el nombre de un archivo que no sea un directorio. En UNIX versión V, la longitud de cada componente está limitada a 14 caracteres; Así, junto con los 2 bytes asignados al número de índice, el tamaño de la entrada del directorio es de 16 bytes.

Desplazamiento de bytes
dentro del directorio

Número de índice
(2 bytes)

Nombrearchivo

1798

en eso

1276

fsck

clri

1268

motd

1799

montar

mknod

2114

contraseña

1717

desmontar

1851

Lista de Verificación

fsdbld

configuración

1432

getty

chocar

mkfs

Figura 4 Formato del directorio /etc

La Figura 4 muestra el formato del directorio "etc". Cada directorio contiene archivos cuyos nombres se indican con un punto y dos puntos ("." y "..") y cuyos números de índice coinciden con los números de índice del directorio dado y del directorio principal, respectivamente. Número de índice del archivo "." en el directorio "/etc" tiene una dirección en el desplazamiento 0 y un valor de 83. El número de inodo para el archivo ".." tiene una dirección en el desplazamiento 16 desde el inicio del directorio y un valor de 2. Entradas en el El directorio puede estar vacío, pero el número de inodo es 0. Por ejemplo, la entrada en la dirección 224 en el directorio "/etc" está vacía, a pesar de que alguna vez contuvo un punto de entrada para un archivo llamado "crash". El programa mkfs inicializa el sistema de archivos para que los números de inodo de los archivos sean "." y ".." en el directorio raíz son los mismos que el número de índice raíz del sistema de archivos.

El kernel almacena datos en un directorio tal como lo hace en un tipo de archivo normal, utilizando una estructura de índice y bloques con niveles de direccionamiento directo e indirecto. Los procesos pueden leer datos de directorios de la misma manera que leen archivos normales, pero el kernel reserva el acceso de escritura exclusivo al directorio, lo que garantiza que la estructura del directorio sea correcta. Los permisos de directorio tienen el siguiente significado: el permiso de lectura otorga a los procesos la capacidad de leer datos del directorio; el permiso de escritura permite que un proceso cree nuevas entradas en un directorio o elimine las antiguas (usando las operaciones del sistema creat, mknod, link y unlink), cambiando así el contenido del directorio; El derecho de ejecución permite que un proceso busque un directorio por nombre de archivo (ya que "ejecutar" un directorio no tiene sentido).

Cuando un proceso utiliza una ruta de archivo, el núcleo busca en los directorios el número de inodo correspondiente. Una vez que el nombre del archivo se ha convertido en un número de inodo, el inodo se coloca en la memoria y luego se utiliza en solicitudes posteriores.

El concepto de sistema de archivos Unix incluye el concepto de enlace. Un solo inodo se puede asociar con múltiples nombres de archivos. El descriptor contiene un campo que almacena el número al que está asociado el archivo. Agregar un enlace consiste en crear una entrada de directorio donde el número de inodo apunta a otro inodo e incrementar el contador de enlaces en el inodo. Cuando se elimina un enlace, el kernel disminuye el contador de enlaces y elimina el identificador si el contador llega a cero.

Estos enlaces se denominan enlaces duros y sólo se pueden utilizar dentro de un sistema de archivos (no se puede crear un enlace para un archivo de otro sistema de archivos). Además, un enlace físico sólo puede apuntar a un archivo (un enlace físico a un directorio puede provocar un bucle en el sistema de archivos).

En la mayoría de los sistemas Unix existe otro tipo de enlace. Estos enlaces, que contienen sólo el nombre del archivo, se denominan simbólicos. Cuando el kernel procesa dichos enlaces, al convertir la ruta del archivo en un inodo, el kernel reemplaza el nombre del enlace con el contenido del inodo (es decir, el nombre del archivo de destino) y reinterpreta la ruta del archivo. Dado que un enlace simbólico no apunta a un inodo, es posible crear enlaces a archivos ubicados en otro sistema de archivos. Estos enlaces pueden apuntar a cualquier tipo de archivo, incluso a archivos inexistentes. Los enlaces simbólicos se utilizan ampliamente porque no tienen las mismas restricciones que los enlaces físicos. Sin embargo, ocupan algo de espacio en el disco donde se encuentran el inodo y los bloques de datos. Su uso puede provocar algunos retrasos en la conversión de la ruta del archivo a un inodo, debido al hecho de que el núcleo debe reinterpretar la ruta del archivo al procesar un enlace simbólico.

Archivos de dispositivo

En los sistemas operativos tipo Unix, se accede a los dispositivos a través de archivos especiales. Un archivo de este tipo no ocupa espacio en el sistema de archivos. Es sólo un punto de acceso al controlador del dispositivo.

Hay dos tipos de archivos de dispositivo: de carácter y de bloque. Cuando se utiliza un tipo de carácter, es posible intercambiar datos con el dispositivo sólo en modo personaje, mientras que los archivos de dispositivo de tipo bloque solo permiten intercambiar bloques utilizando un búfer. Cuando se realiza una solicitud de E/S a un archivo de dispositivo, la solicitud se reenvía al controlador de dispositivo apropiado. Cada uno de estos archivos tiene un número mayor que identifica el tipo de dispositivo y un número menor que identifica el dispositivo en sí.

Funciones adicionales de EXT2fs

Además de las funciones estándar de Unix, EXT2fs proporciona algunas funciones adicionales que normalmente no son compatibles con los sistemas de archivos Unix.

Los atributos de archivo le permiten cambiar cómo reacciona el kernel cuando trabaja con conjuntos de archivos. Puede establecer atributos en un archivo o directorio. En el segundo caso, los archivos creados en este directorio heredan estos atributos.

Durante el montaje del sistema, se pueden configurar algunas funciones relacionadas con los atributos del archivo. La opción de montaje permite al administrador elegir cómo se crean los archivos. En un sistema de archivos específico de BSD, los archivos se crean con el mismo ID de grupo que el directorio principal. Las características del System V son algo más complejas. Si un directorio tiene su bit setgid establecido, entonces archivos creados hereda el ID de grupo de ese directorio, y los subdirectorios heredan el ID de grupo y el bit setgid. De lo contrario, los archivos y directorios se crean con el ID del grupo principal del proceso de llamada.

El sistema EXT2fs puede utilizar la modificación de datos sincrónica similar a sistema BSD. La opción de montaje permite al administrador especificar que todos los datos (inodos, bloques de bits, bloques indirectos y bloques de directorio) se escriban en el disco de forma sincrónica cuando se modifican. Esto se puede utilizar para lograr una alta capacidad de registro de datos, pero también da como resultado un rendimiento deficiente. En realidad, esta función no se suele utilizar porque, además de degradar el rendimiento, puede provocar la pérdida de datos del usuario que no se marcan al comprobar el sistema de archivos.

EXT2fs le permite seleccionar el tamaño del bloque lógico al crear un sistema de archivos. Puede tener un tamaño de 1024, 2048 o 4096 bytes. El uso de bloques más grandes da como resultado operaciones de E/S más rápidas (ya que se realizan menos solicitudes de disco) y, por lo tanto, menos movimiento de cabeza. Por otro lado, el uso de bloques grandes genera una pérdida de espacio en disco. Normalmente, el último bloque de un archivo no se utiliza por completo para almacenar información, por lo que a medida que aumenta el tamaño del bloque, aumenta la cantidad de espacio desperdiciado en el disco.

EXT2fs le permite utilizar enlaces simbólicos acelerados. Cuando se utilizan dichos enlaces, no se utilizan bloques de datos del sistema de archivos. El nombre del archivo de destino no se almacena en el bloque de datos, sino en el propio inodo. Esta estructura le permite ahorrar espacio en disco y acelerar el procesamiento de enlaces simbólicos. Por supuesto, el espacio reservado para un identificador es limitado, por lo que no todos los enlaces pueden representarse como enlaces acelerados. La longitud máxima del nombre de un archivo en un enlace acelerado es de 60 caracteres. En un futuro próximo está previsto ampliar este esquema a archivos pequeños.

EXT2fs monitorea el estado del sistema de archivos. El núcleo utiliza un campo separado en el superbloque para indicar el estado del sistema de archivos. Si el sistema de archivos está montado en modo lectura/escritura, entonces su estado se establece en "No limpio". Si se desmonta o se vuelve a montar en modo de solo lectura, su estado se establece en "Limpiar". Durante las comprobaciones del estado del sistema de archivos y del arranque del sistema, esta información se utiliza para determinar si es necesaria una verificación del sistema de archivos. El kernel también coloca algunos errores en este campo. Cuando el kernel detecta una discrepancia, el sistema de archivos se marca como "erróneo". El verificador del sistema de archivos prueba esta información para verificar el sistema, incluso si su estado es realmente Limpio.

Ignorar las pruebas del sistema de archivos durante mucho tiempo a veces puede generar algunas dificultades, por lo que EXT2fs incluye dos métodos para verificar el sistema periódicamente. El superbloque contiene el contador de montaje del sistema. Este contador se incrementa cada vez que el sistema se monta en modo de lectura/escritura. Si su valor alcanza el máximo (también se almacena en el superbloque), entonces el programa de prueba del sistema de archivos comienza a verificarlo, incluso si su estado es "Limpio". La hora de la última verificación y el intervalo máximo entre comprobaciones también se almacenan en el superbloque. Cuando se alcanza el intervalo máximo entre análisis, se ignora el estado del sistema de archivos y se inicia su análisis.

El sistema EXT2fs contiene herramientas para configurarlo. El programa tune2fs se puede utilizar para cambiar:

  • acciones cuando se detecta un error. Cuando el kernel detecta una discrepancia, el sistema de archivos se marca como "Error" y se puede realizar una de las siguientes tres acciones: continuar la ejecución, volver a montar el sistema de archivos en modo de solo lectura para evitar daños o reiniciar el sistema para verificar el sistema de archivos.
  • valor máximo de montaje.
  • Intervalo máximo entre controles.
  • Número de bloques lógicos reservados para el usuario root.

Las opciones especificadas en el montaje también se pueden usar para cambiar lo que hace el kernel cuando detecta un error.

El uso de atributos permite a los usuarios eliminar archivos confidenciales. Cuando se elimina un archivo de este tipo, se escribe información aleatoria en los bloques que se utilizaron anteriormente para colocar este archivo. Esto evita que personas ajenas obtengan acceso al contenido anterior de este archivo mediante un editor de disco.

Recientemente se han agregado nuevos tipos de archivos al sistema EXT2fs, tomados del sistema de archivos BSD 4.4. Los archivos del primer tipo se pueden utilizar únicamente para lectura: nadie tiene derecho a modificarlos o eliminarlos. Esto se puede utilizar para proteger archivos de configuración importantes. Otro tipo de archivo es un archivo que se puede abrir en modo de escritura y los datos solo se pueden agregar al final del archivo. Los archivos de este tipo tampoco se pueden eliminar ni cambiar de nombre. Se pueden utilizar como archivos de registro, cuyo tamaño sólo puede crecer.

Optimización del rendimiento

El sistema EXT2fs contiene muchas funciones que optimizan su rendimiento, lo que conduce a una mayor velocidad de intercambio de información al leer y escribir archivos.

EXT2fs utiliza activamente el búfer del disco. Cuando es necesario leer un bloque, el kernel emite una solicitud de operación de E/S a varios bloques adyacentes. Por lo tanto, el núcleo intenta asegurarse de que el siguiente bloque a leer ya se haya cargado en el búfer del disco. Estas operaciones suelen realizarse al leer archivos de forma secuencial.

El sistema EXT2fs también contiene una gran cantidad de optimizaciones para la ubicación de la información. Los grupos de bloques se utilizan para agrupar los inodos y bloques de datos correspondientes. El kernel siempre intenta colocar los bloques de datos de un archivo en el mismo grupo, así como su descriptor. Esto tiene como objetivo reducir el movimiento de los cabezales de unidad al leer el descriptor y sus bloques de datos correspondientes.

Al escribir datos en un archivo, EXT2fs preasigna hasta 8 bloques contiguos al asignar un nuevo bloque. Este método le permite lograr un alto rendimiento bajo una carga pesada del sistema. Esto también permite colocar archivos en bloques contiguos, lo que acelera su lectura posterior.

biblioteca EXT2fs

Para simplificar el uso de los recursos EXT2fs y el funcionamiento de las estructuras de control de este sistema de archivos, se desarrolló la biblioteca libext2fs. Esta biblioteca contiene funciones que se pueden utilizar para definir y modificar datos del sistema de archivos EXT2 accediendo directamente al dispositivo físico.

La mayoría de las utilidades EXT2fs (mke2fs, e2fsck, tune2fs, dumpe2fs, debugfs, etc.) utilizan esta biblioteca. Esto simplifica enormemente la modificación de estas utilidades, ya que cualquier cambio para introducir capacidades adicionales en el sistema de archivos EXT2fs debe realizarse únicamente en la biblioteca EXT2fs.

Dado que la interfaz de la biblioteca EXT2fs es bastante amplia y abstracta, con su ayuda se pueden escribir fácilmente programas que requieren acceso directo al sistema de archivos. Por ejemplo, la biblioteca EXT2fs se utilizó durante la transferencia del volcado BSD 4.4 y la restauración de algunas utilidades. Se requirieron muy pocos cambios para adaptar estas herramientas a Linux (tuvimos que reemplazar varias funciones que interactúan con el sistema de archivos con llamadas a la biblioteca EXT2fs).

La biblioteca EXT2fs proporciona acceso a las operaciones de varias clases. La primera clase son las operaciones relacionadas con el sistema de archivos. Cualquier programa puede abrir o cerrar un sistema de archivos, leer o escribir un bloque de bits o crear un nuevo sistema de archivos en el disco. También hay funciones para manipular una lista de bloques defectuosos del sistema de archivos.

La segunda clase de operaciones trabaja con directorios. Un programa que utiliza la biblioteca EXT2fs puede crear o expandir un directorio, así como agregar o eliminar entradas en un directorio. Hay funciones tanto para determinar la ruta a un archivo usando un inodo como para determinar la ruta a un archivo usando un descriptor específico.

La última clase de operaciones opera en identificadores de índice. Es posible leer la tabla de descriptores, leer o escribir un descriptor y ver todos los bloques del descriptor especificado. Es posible utilizar funciones para colocar y liberar bloques y descriptores.

Herramientas del sistema EXT2fs

Se han desarrollado controles potentes para el sistema EXT2fs. Estas herramientas se utilizan para crear, modificar y corregir cualquier inconsistencia en los sistemas de archivos EXT2fs. El programa mke2fs se utiliza para montar una partición de disco que contiene un sistema de archivos EXT2fs vacío.

El programa tune2fs se puede utilizar para configurar los parámetros del sistema de archivos. Con su ayuda, puede cambiar la respuesta a los errores, el número máximo de montajes del sistema, el intervalo máximo entre comprobaciones del sistema y el número de bloques lógicos reservados para el usuario root.

Quizás la herramienta más interesante sea el comprobador del sistema de archivos. E2fsck está diseñado para eliminar inconsistencias en el sistema de archivos después de un cierre incorrecto de todo el sistema. La versión inicial del programa e2fsck se basa en el programa fsck de Linus Torvald para el sistema de archivos Minix. Sin embargo, la versión actual del programa se reescribe usando la biblioteca EXT2fs y es más rápida y puede corregir más errores en el sistema al verificarlo, en comparación con la versión original.

El programa e2fsck fue diseñado para ejecutarse a máxima velocidad. Dado que los programas de verificación del sistema de archivos provocan la carga del disco, los algoritmos e2fsck deben optimizarse para que se acceda a las estructuras del sistema de archivos con mucha menos frecuencia. Y, además, el orden de comprobación de inodos y directorios se realizaría por número de bloque para reducir el tiempo que lleva mover los cabezales de las unidades de disco.

En la primera pasada, e2fsck recorre todos los inodos del sistema de archivos y examina cada inodo como un elemento independiente del sistema. Por lo tanto, otros objetos del sistema de archivos no se verifican durante esta prueba. Uno de los objetivos de dichas comprobaciones es comprobar la existencia del tipo de archivo que se está comprobando, así como la correspondencia de todos los bloques del descriptor con los bloques con números existentes. La primera pasada comprueba los mapas de bits que indican el uso de bloques y descriptores.

Si e2fsck encuentra bloques de datos cuyos números están contenidos en más de un descriptor, entonces se ejecutan los pasos 1B a 1D para resolver la discrepancia, ya sea aumentando los bloques a compartir o eliminando uno o más descriptores.

La primera pasada es la que lleva más tiempo, ya que todos los inodos deben leerse en la memoria y comprobarse. Para reducir el tiempo de las operaciones de E/S en pasadas posteriores, toda la información necesaria permanece en el búfer. Un rasgo característico de este esquema es la búsqueda de todos los bloques de directorios del sistema de archivos. Para obtener esta información, en la segunda pasada se vuelven a leer las estructuras de descriptores de todos los directorios del sistema de archivos.

En la segunda pasada, los directorios se verifican como elementos separados del sistema de archivos. Cada bloque de directorio se verifica por separado, sin hacer referencia a otros bloques de directorio. Esto permite a e2fsck ordenar todos los bloques de directorio por número de bloque y verificarlos en orden ascendente, reduciendo así el tiempo de acceso al disco. Los bloques de directorio se prueban para garantizar que sus entradas sean válidas y que contengan referencias a identificadores con números existentes (como se determinó en la primera pasada).

Para el primer bloque de directorio en cada descriptor de directorio, se verifica la existencia de entradas "." y "..", y que el número de descriptor de la entrada "." coincide con el directorio actual. (El número de descriptor de la entrada ".." no se prueba hasta la tercera pasada).

Durante el segundo paso, la información correspondiente al directorio principal se almacena en un búfer.

Cabe señalar que al final del segundo paso, casi todas las operaciones de E/S en el disco están completas. Toda la información necesaria para los pases tercero, cuarto y quinto está contenida en la memoria; sin embargo, los pases restantes cargan el procesador y ocupan menos del 5-10% del tiempo total de ejecución de e2fsck.

En el tercer paso, se verifican las conexiones del directorio. E2fsck verifica las rutas de cada directorio hacia la raíz utilizando la información obtenida durante el segundo paso. Aquí se marca la entrada ".." para cada directorio. Todos los directorios identificados después de verificar y que no tienen una conexión con el directorio raíz se colocan en el directorio /lost+found.

En el cuarto paso, e2fsck verifica los recuentos de referencia para cada inodo revisando todos los inodos y comparando los recuentos de referencia (esta información se guarda del primer paso) con los contadores internos que se calcularon durante el segundo y tercer paso. Todos los archivos recuperados con un recuento de referencias de cero también se colocan en el directorio /lost+found.

Finalmente, en el quinto paso, e2fsck verifica que toda la información del sistema de archivos coincida. Aquí, los mapas de bits de bloques y descriptores obtenidos en pases anteriores se comparan con los valores reales y, si es necesario, la información en el disco se ajusta en consecuencia.

Otra herramienta útil es el depurador del sistema de archivos. Debugfs es un programa poderoso que le permite determinar y configurar el estado de un sistema de archivos. Básicamente, es una interfaz interactiva para la biblioteca EXT2fs, es decir, traduce comandos escritos en llamadas a funciones de la biblioteca.

Debugfs se puede utilizar para determinar la estructura interna de un sistema de archivos, reparar manualmente un sistema dañado o crear pruebas condicionales para e2fsck. Desafortunadamente, este programa puede dañar el sistema de archivos si no sabes cómo usarlo. Con esta herramienta, simplemente puede destruir el sistema de archivos. Por lo tanto, debugfs abre el sistema de archivos en modo de solo lectura de forma predeterminada. Para acceder en modo lectura/escritura, especifique la opción -w.

Cálculo de rendimiento

Los resultados de la prueba de Bonnie se pueden ver en la siguiente tabla:

Grabación carácter a carácter (Kb/s)

Grabación en bloque (Kb/s)

Doblaje (Kb/s)

Lectura carácter a carácter (Kb/s)

Lectura de bloque (Kb/s)

BSD asíncrono

Sincronización BSD

ext2fs

1237

1033

xia fs

Los resultados son bastante buenos para E/S en bloque: el sistema EXT2fs supera a otros sistemas en términos de rendimiento. Esto se debe a las optimizaciones incluidas en los procedimientos de colocación. La grabación también se realiza con bastante rapidez, debido a que se realiza en modo grupo. La alta velocidad de lectura se debe al hecho de que los bloques se han asignado al archivo, por lo que los cabezales de la unidad no se mueven entre dos lecturas y la optimización de la lectura previa está en pleno funcionamiento.

Por otro lado, el sistema FreeBSD tiene un mayor rendimiento para E/S simbólicas. Esto puede deberse al hecho de que FreeBSD y Linux utilizan procedimientos diferentes para las bibliotecas C correspondientes. Además, lo más probable es que FreeBSD tenga una biblioteca de lectura simbólica más optimizada y, por lo tanto, el rendimiento aquí es ligeramente mejor.

Resultados de la prueba de Andrés

Los resultados de la prueba de Andrew se pueden ver en la siguiente tabla:

Pasaje 1 Creación

Pasar 2 Copiar

Pasaje 3 Comprobación de estado

Pasar 4 verificación byte por byte

Compilación del pasaje 5

2203

7391

6319

17466

75314

Sincronización BSD

2330

7732

6317

17499

75681

ext2fs

Los resultados de las dos primeras pasadas muestran que Linux gana con el intercambio de datos asíncrono. Al crear directorios y archivos, el sistema BSD escribe identificadores de directorio y entradas de directorio de forma sincrónica. Se especula que el soporte asíncrono para FreeBSD aún no se ha implementado por completo.

En la tercera pasada, los valores para Linux y BSD son muy similares. Si bien BSD funciona mejor, agregar un búfer de nombre de archivo al VFS de Linux elimina este problema.

En los pases cuarto y quinto, Linux es más rápido que FreeBSD, principalmente debido al uso de una gestión unificada del búfer. El tamaño del búfer puede crecer según sea necesario y ocupar más memoria que FreeBSD, que utiliza un tamaño fijo. Una comparación de los resultados de los sistemas EXT2fs y Xia fs muestra que las optimizaciones incluidas en EXT2fs realmente se utilizan: la diferencia en el rendimiento de estos sistemas es de aproximadamente un 5-10%.

Conclusión

El sistema de archivos EXT2 es el más utilizado entre los usuarios de Linux. Proporciona funciones estándar de Unix y funciones adicionales. Además, gracias a la optimización incluida en el kernel, muestra excelentes resultados de rendimiento.

El sistema EXT2fs incluye funciones que le permiten agregar nuevas capacidades. Algunas personas están trabajando en el desarrollo de extensiones para el sistema de archivos real: Posix ACL, recuperación archivos eliminados y compresión de archivos en tiempo real.

Primero, el sistema EXT2fs se integró en el kernel de Linux y ahora se está migrando activamente a otros sistemas operativos. EXT2fs también es un componente importante del sistema operativo Masix, que actualmente está siendo desarrollado por uno de los autores.


Arriba