Bloque de arranque Ext2
Estás mezclando completamente las capas de abstracción involucradas. Si algo como tu código pudiera funcionar (no estoy seguro de que pueda hacerlo), explotaría de forma grave y colapsaría el kernel o llevaría a la ejecución de código erróneo si alguien hiciera esta llamada al sistema en una ruta que no correspondiera realmente a un sistema de archivos ext2.
En la abstracción fs del núcleo, el hecho de que el sistema de archivos subyacente sea ext2 (o lo que sea) es irrelevante para la tarea de crear un archivo en él. Más bien, todo esto tiene que pasar por capas agnósticas al tipo fs que, a su vez, terminan utilizando los backends específicos del tipo fs para el fs montado en la ruta.
Ntfs vs ext3
El ext2 o segundo sistema de archivos extendido es un sistema de archivos para el núcleo de Linux. Fue diseñado inicialmente por el desarrollador de software francés Rémy Card para sustituir al sistema de archivos extendido (ext). Al haber sido diseñado según los mismos principios que el Berkeley Fast File System de BSD, fue el primer sistema de archivos de nivel comercial para Linux[4].
La implementación canónica de ext2 es el controlador del sistema de archivos “ext2fs” en el núcleo de Linux. Existen otras implementaciones (de calidad e integridad variables) en GNU Hurd, MINIX 3, algunos kernels BSD, en MiNT, Haiku y como controladores de terceros para Microsoft Windows y macOS.
ext2 era el sistema de archivos por defecto en varias distribuciones de Linux, incluyendo Debian y Red Hat Linux, hasta que fue suplantado por ext3, que es casi completamente compatible con ext2 y es un sistema de archivos con registro en el diario. ext2 sigue siendo el sistema de archivos de elección para los medios de almacenamiento basados en flash (como las tarjetas SD y las unidades flash USB) porque su falta de un diario aumenta el rendimiento y minimiza el número de escrituras, y los dispositivos flash pueden soportar un número limitado de ciclos de escritura. Desde 2009,[5] el kernel de Linux soporta un modo sin diario de ext4 que proporciona beneficios que no se encuentran en ext2, como mayores tamaños de archivo y volumen[6].
Tamaño del sector Ext4
Hola, por lo que he entendido leyendo la página wiki el sistema de archivos ext2 contiene un montón de nodos-i. De cada nodo-i, los primeros 12 bloques de datos a los que apunta contienen los datos reales del archivo. Entonces, ¿qué sucede cuando se “borra” un archivo? ¿Los punteros siguen apuntando a los mismos bloques de datos, pero el espacio del disco se marca como “libre” en alguna tabla (MFT) similar a la de ntfs? Y cuando se intenta recuperar los datos, ¿se leen los datos de los primeros 12 bloques a los que apunta el nodo-i? ¿Y se marcan después como “usados” en alguna tabla? ¿Y todo esto es posible mientras los bloques de datos no se sobrescriban manualmente? ¿Existe algún tipo de indicador que marque el archivo como usado/borrado, como el offset 22 en ntfs de la entrada del archivo en MFT? Así que básicamente mi pregunta es cómo se ve el proceso cuando se hace la recuperación de datos en un sistema de archivos ext2, ¿son mis suposiciones anteriores parcialmente correctas? 8 comentarioscompartirinformar78% VotadoEntrar o registrarse para dejar un comentarioEntrarRegistrarseOrganizar por: mejor
Estructura de los inodos de Ext2
Estoy aprendiendo el sistema de archivos EXT2. Estoy confundido sobre cómo funciona la eliminación de un archivo para EXT2. Tengo entendido que, al eliminar un archivo, no se borra realmente el inodo, sino que se marcan algunos metadatos como no utilizados. Mi pregunta es que, ¿qué metadatos se modifican en el momento de la eliminación, y cómo sabe el sistema de archivos que el archivo se ha eliminado? Gracias.
Así, elimina las páginas de la caché de páginas en truncate_inode_pages, establece dtime (tiempo de eliminación) y marca el inodo como sucio – I_DIRTY que es una combinación de (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES):
Luego escribe el inodo modificado, cambia su tamaño a cero, trunca todos los bloques enlazados desde el inodo con ext2_truncate() (el marcado real de los bloques de datos como libres se hace allí): http://lxr.free-electrons.com/source/fs/ext2/inode.c?v=2.6.32#L1025