Sistemas de archivos de Linux: desafíos al recuperar lo borrado

En estos días, la popularidad del sistema operativo Linux está creciendo constantemente entre un grupo más amplio de usuarios. Su ventaja evidente es ante todo la distribución gratuita. Además, este SO está disponible en una enorme variedad de versiones y derivados que cubren diversas necesidades de usuarios de todo tipo de dispositivos, desde teléfonos móviles hasta supercomputadoras.

El sistema operativo Linux utiliza numerosos sistemas de archivos, incluidos Ext2, Ext3 y Ext4, XFS, ReiserFS, JFS (JFS2), etc. Los sistemas de archivos de Linux difieren en su funcionalidad; y cada uno sirve para ciertos propósitos. En cuanto a la eliminación de archivos, cada sistema de ficheros lo realiza de su manera, lo que conduce a diferentes resultados y, a veces, incluso a la falla de recuperación.


La información del presente artículo le ayudará a comprender los principios generales del funcionamiento del sistema operativo Linux y las razones de la falla en recuperar los archivos eliminados por completo y con sus nombres originales de los sistemas de archivos de Linux. Nuestro software de recuperación de datos permite lograr el resultado de recuperación más alto posible incluso en casos complicados. Consulte los productos de software para obtener más información.

¿Cómo están organizados los datos?

Como la mayoría de los otros sistemas de archivos, los de Linux utilizan la organización de datos en bloques. Al nivel lógico, los almacenamientos de datos operan con pequeñas unidades de datos (sectores), normalmente de 512 bytes de tamaño. Los sectores se pueden imaginar como celdas con números ordinales. Para escribir unos fragmentos de datos, se toma uno o más de esos sectores. Y para leer los datos, el controlador del almacenamiento se dirige a este sector.

Para optimizar el direccionamiento del disco, el sistema de archivos combina conjuntos iguales de sectores en bloques direccionables con el controlador del sistema de archivos al nivel lógico. El tamaño mínimo posible del bloque es un solo sector. En la mayoría de los sistemas de archivos, incluidos los sistemas de archivos de Linux, el bloque se utiliza como la unidad direccionable más pequeña del disco. Por lo general, un archivo o su fragmento menor que un bloque ocupa todo el bloque. Sin embargo, algunos sistemas de archivos como ReiserFS pueden usar el espacio restante dentro del bloque para asignar archivos pequeños y fragmentos de archivos.

Normalmente, en un almacenamiento, los datos se organizan de la siguiente manera: un archivo se coloca en un bloque; si su tamaño excede el del bloque, el sistema de archivos le asigna un bloque más para el archivo (excepto en los sistemas como el de ReiserFS). Los datos se escriben en bloques libres, no ocupados por ningún archivo ni por metadatos (información técnica del sistema de archivos).

Espacio libre y fragmentación

Muchas solicitudes secuenciales o concurrentes como 'crear un archivo', 'agregar datos', 'truncar datos', 'eliminar un archivo' conducen a la fragmentación del espacio libre del sistema de archivos.

Block fragmentation

Imagen 1. Fragmentación

La Imagen 1 muestra el ejemplo más simple de fragmentación. Cuando se inició la escritura del archivo 3, no había espacio para escribir todos los fragmentos del archivo de forma secuencial, por lo que se asignaron a dos bloques libres no vinculados. En la práctica, los archivos grandes pueden constar de hasta cientos de fragmentos de datos no vinculados de varios bloques cada uno.

El sistema de archivos no borra inmediatamente los fragmentos del archivo una vez aplicado el comando 'eliminar', sino marca el espacio ocupado por estos fragmentos como libre. Este espacio se percibe por el sistema como libre para escribir nuevos datos. Así que, el archivo eliminado sigue siendo recuperable antes de que se sobrescriba con uno nuevo.

El sistema de archivos utiliza agentes especiales que describen archivos, los llamados nodos de información (brevemente, inodos), para vincular información sobre fragmentos separados de archivos. Esta información incluye la descripción del tipo de objeto, su tamaño y la tabla/lista/árbol de asignación.

Al leer un inodo, el sistema de archivos puede identificar el tipo de objeto y decidir sobre las operaciones posteriores: lectura/escritura/manejo. El tamaño del objeto es el número de bloques ocupados por él. Y, por último, la asignación proporciona información sobre las ubicaciones reales de los bloques de datos.

Los datos de asignación se organizan de la siguiente manera: la parte clave de estos datos es una matriz, una lista o un árbol B de punteros a bloques de datos o a fragmentos continuos de bloques. La primera parte o la raíz de esta información se almacena como parte del inode.

Problema de recuperación de datos

Comúnmente, los sistemas de archivos de Linux borran una parte de la información del inodo justo después de la eliminación del archivo. Reemplazan la información sobre el tamaño del objeto, el tipo/modo del objeto y la asignación con ceros, lo que provoca la pérdida de toda la información sobre el archivo. Supongamos que los archivos 2 y 3 en la Imagen 1 son archivos RAW cifrados sin encabezados, y que ambos ocuparon bloques completos y ambos se eliminaron. Como resultado, no quedó ninguna información sobre la asignación de archivos, lo que imposibilita que el software de recuperación de datos detecte las ubicaciones de los fragmentos del archivo 2 y del archivo 3. En la práctica, las situaciones que dificultan la recuperación son, desafortunadamente, demasiado comunes para los sistemas de archivos de Linux. Esto suele deberse a los factores como la fragmentación de archivos grandes.

Solución

Afortunadamente, el software de recuperación de datos ofrece un conjunto de métodos de recuperación, que, sin embargo, no garantizan un resultado del 100%. Entre ellos se encuentran:

  • Análisis del registro por diario (journal) del sistema de archivos. Las versiones anteriores de los descriptores de archivos aún pueden permanecer en el registro.

  • Análisis de estructuras incompletas. El software puede predecir los archivos del sistema de archivos utilizando los fragmentos no borrados de los metadatos de archivos que aún pueden estar presentes en el disco.

  • Búsqueda por firmas: el software busca fragmentos de archivos conocidos y asume el contenido de los siguientes fragmentos. Pero, a menudo, los resultados de esta recuperación no brindan tamaños de archivo exactos, excepto en los casos en que se encuentra un encabezado de archivo que contiene el tamaño del archivo en sí mismo. Este método es inútil cuando se necesita recuperar archivos altamente fragmentados.

  • Análisis estadístico de fragmentos: el software asume enlaces de fragmentos basándose en los métodos estadísticos del análisis de datos. Este método puede ser útil en caso de archivos homogéneos (la mayoría de las imágenes bmp, algunos archivos, etc.), pero no sirve para contenidos heterogéneos (como imágenes de CD/DVD, etc.).

  • Búsqueda de estructuras perdidas del sistema de archivos: el software encuentra las estructuras perdidas del sistema de archivos que ayudan a determinar el diseño de los fragmentos perdidos.

Si planea realizar la recuperación de datos usted mismo, prepárese para realizar el análisis manual de archivos sin nombre o fragmentos de archivos, ya que la mayoría del software de recuperación de datos a menudo proporcionan resultados incompletos de la restauración desde los sistemas de archivos de Linux. 

Los productos de recuperación de datos UFS Explorer emplean mecanismos potentes, incluida la búsqueda IntelliRAW™ por firmas, que permiten a los usuarios reconocer tipos de archivos y analizar estructuras de sistemas de archivos. Las técnicas eficientes del software brindan la oportunidad de lograr el mejor resultado de recuperación posible con el mínimo esfuerzo.

Última actualización: el 10 de noviembre de 2022

Si le gusta este artículo, compártalo en sus redes sociales: