Sistemas de archivos de Linux: posibilidades de recuperar datos
Para evaluar la posibilidad de recuperar datos faltantes, es imprescindible saber qué sucede con ellos en el proceso de eliminación o formateo. Varios sistemas de archivos llevan a cabo estas dos operaciones de diferentes maneras. Y es por eso que la probabilidad de éxito depende tanto del tipo de sistema de archivos utilizado en el dispositivo de almacenamiento afectado.
Linux soporta una amplia variedad de formatos. Pero dado que la mayoría de ellos están diseñados para abordar problemas específicos, vamos a examinar sólo los más comunes como Ext2, Ext3/Ext4 y XFS.
Ext2
En Ex2, cada archivo y directorio está representado por una estructura de indexación individual llamada inodo. Cada inodo tiene su número único. Además de las características críticas del archivo, como el tamaño, los inodos también contienen enlaces a los bloques que almacenan sus datos reales.
Con todo, en Ex2, los nombres de archivos no se almacenan en los inodos. Se pueden encontrar únicamente en los directorios. Los directorios vinculan estos nombres con los inodos correspondientes. Los directorios mismos son solo archivos ordinarios que comprenden listas de nombres y números de inodos.
Todo el espacio de almacenamiento se divide en secciones llamadas Grupos de bloques. Cada Grupo de bloques almacena inodos en su propia Tabla de inodos. Además, incluye el Mapa de bits de bloques (Block Bitmap) y el Mapa de bits de inodos (Inode Bitmap) para tomar nota de cuáles de los bloques e inodos están actualmente en uso.
Procedimiento: Ext2 etiqueta el inodo del archivo como libre y actualiza los Mapas de bits de bloques y de inodos. Asimismo, elimina del directorio el nombre del archivo y el número del inodo respectivos.
Recuperación: La información sobre el tamaño del archivo y la ubicación de su contenido aún está disponible en el inodo. Gracias a esto, se mantienen las posibilidades grandes de recuperar el archivo. Por otro lado, el enlace a su nombre en la entrada respectiva del directorio se borra, por lo que es muy probable que el nombre inicial sea irrecuperable.
Procedimiento: Ext2 vacía los Grupos de bloques actuales y elimina los inodos.
Recuperación: No se queda ninguna información en el sistema de archivos que pueda ser de ayuda para la recuperación de archivos perdidos. Sin embargo, si los bloques con su contenido aún no se han reutilizado, la posibilidad de recuperar los archivos se mantiene. Una utilidad de recuperación de datos puede ignorar las estructuras del sistema de archivos y escanear el almacenamiento a un nivel más bajo. Así los archivos se buscan por los datos específicos que suelen estar presentes en los archivos de formatos comunes. Esta técnica también se llama recuperación por datos RAW. Desafortunadamente, ella no permite recuperar archivos con sus nombres originales y en sus directorios iniciales. Tampoco puede reconstruir archivos almacenados en bloques no vecinos y, como resultado, lo más probable es que los fragmentados se pierdan para siempre.
Ext3/Ext4
Ext3 es en esencia una versión mejorada de Ext2. Su principal fortaleza reside en el uso del journaling (registro por diario). El Journal (registro de diario) se encuentra en un área especial dentro del sistema de archivos. Antes de escribir cualquier cambio, Ext3 recopila todos los bloques a modificar, crea su copia y guarda la versión actualizada en el Journal. Solo así se aplican los cambios.
Ext4 también usa el Journal. Además, este sistema emplea estructuras especiales para almacenar el contenido de archivos. Estas se conocen como extents: rangos continuos de bloques representados sólo por el bloque inicial y la cantidad de bloques que lo siguen.
Los extents pueden almacenarse directamente en la estructura del inodo que describe el archivo. Pero si un archivo ocupa más de cuatro extents, el resto de ellos se organizan en una estructura separada, un árbol B+. Lo más notable de estos árboles es que no colocan información de forma secuencial. Ella, al contrario, está repartida entre múltiples niveles que están conectados entre sí en una cierta jerarquía.
Procedimiento:Ext3/Ext4 crea una entrada en el Journal y luego borra el inodo vinculado con el archivo. La información sobre el nombre del archivo permanece en el directorio.
Recuperación: Los archivos eliminados se pueden restaurar con la ayuda del Journal, incluso con sus nombres originales. Aún así, el resultado puede ser incompleto, si el sistema de archivos sigue siendo utilizado durante mucho tiempo después de la eliminación.
Procedimiento: Se borran todos los Grupos de bloques e inodos existentes. El Journal también se limpia, pero aún puede contener cierta información sobre los archivos creados recientemente.
Recuperación: Los archivos perdidos pueden restaurarse solamente mediante la recuperación por datos RAW. Con todo, en caso de que los bloques con su contenido estén dispersos por el almacenamiento, las posibilidades de éxito son considerablemente más bajas.
XFS
XFS consta de partes del mismo tamaño llamadas Grupos de asignación. Cada Grupo de asignación funciona como si fuera un sistema de archivos independiente.
Al igual que en Ext4, el contenido de archivos se almacena en extents y la información sobre ellos, excepto sus nombres, en inodos. Los nombres de archivos se almacenan sólo en los directorios correspondientes. Según el tamaño del archivo, las ubicaciones de sus extents pueden encontrarse directamente en el inodo o pueden estar organizadas en una estructura especial, un árbol B+.
En cada Grupo de asignación, los extents libres se rastrean mediante un par de árboles B+. El primer árbol ayuda a encontrar el bloque inicial de la región de espacio libre contigua, y el segundo, el número de bloques en esta región.
Un árbol B+ separado mantiene un registro de inodos en los Grupos de asignación a medida que se asignan y se liberan.
En adición, XFS también usa el Journal. Este mantiene los cambios en los metadatos del sistema de archivos hasta que se escriban en el almacenamiento.
Procedimiento: XFS excluye del árbol B+ el inodo vinculado con el archivo eliminado. La mayor parte de la información al respecto se sobrescribe. El nombre del archivo se elimina del directorio. Sin embargo, los extents con su contenido permanecen intactos.
Recuperación: Las copias de metadatos se almacenan en el Journal. Y se pueden usar para recuperar el archivo perdido. Las posibilidades de recuperarlo, incluso con su nombre original, son bastante altas.
Procedimiento: Los árboles B+ responsables de la asignación de espacio se borran. Además, se crea un nuevo directorio raíz sobreescribiendo el anterior.
Recuperación: Los archivos ubicados más cerca del inicio del almacenamiento tienen pocas posibilidades de ser restaurados. Pero el resto de ellos pueden ser recuperados con éxito.
Siga leyendo para aprender más sobre las posibilidades de recuperar datos de otros sistemas de archivos: