Posibilidades de recuperar datos en función del sistema de archivos
Como se mencionó en el artículo dedicado a las posibilidades de recuperación en varios casos de pérdida de datos, el sistema de archivos es uno de los factores principales que determinan la probabilidad de éxito. Sirve como un mecanismo que permite al sistema operativo organizar y obtener datos de un medio de almacenamiento. Pero aparte de simplemente definir la manera de almacenar información en el disco, cada sistema de archivos tiene sus propias prácticas distintivas de realizar la eliminación de archivos y el formateo del medio de almacenamiento. Y dado que diferentes sistemas operativos emplean diferentes sistemas de archivos, las posibilidades de recuperar datos dependen en gran medida del sistema de archivos particular que se utiliza. La información que se presenta a continuación ayudará a evaluar las perspectivas de la recuperación de datos después de la eliminación accidental de ficheros o después del formateo del sistema de archivos, según el sistema de ficheros aplicado en su dispositivo.
Al mismo tiempo, si tanto el sistema operativo como el dispositivo de almacenamiento soportan el comando TRIM, la posibilidad de una recuperación exitosa de datos virtualmente desaparece, independientemente del tipo de sistema de archivos en uso. Se puede encontrar una exploración más detallada de los efectos de TRIM en el procedimiento en la sección Obstáculos para la recuperación de datos causados por TRIM.
Sugerencia: Los casos más comunes de pérdida de datos a los que se hace referencia en este artículo se describen en el artículo sobre los principios de recuperación de datos.
Sistemas de archivos de Windows
Los principales sistemas de archivos de la familia de sistemas operativos Windows son FAT (FAT32), exFAT y NTFS. Si bien estos se utilizan comúnmente en los sistemas de uso general para las computadoras de escritorio, ReFS, el sistema de ficheros de próxima generación, está diseñado para los casos de uso avanzados y se emplea en ciertos servidores basados en Windows, así como en las computadoras con las versiones profesionales de Windows (a partir de Windows 10).
Cabe mencionar que una recuperación exitosa de datos de estos sistemas de archivos puede verse obstaculizada por una fragmentación grave de archivos y sólo puede llevarse a cabo, si los ficheros afectados aún no se han sobrescrito.
FAT/FAT32
En FAT/FAT32, el espacio de almacenamiento se divide en unidades de igual tamaño que se llaman clústeres. Un archivo puede ocupar uno o más de estos clústeres. A pesar de ello, puede que los clústeres que contienen los datos del mismo archivo no se ubiquen uno al lado del otro. Dichos archivos se denominan fragmentados.
La Tabla de asignación de archivos (File Allocation Table o FAT) hace un seguimiento de la asignación de clústeres en el medio de almacenamiento y determina qué clústeres se asignan a qué archivos. Normalmente, se almacenan dos copias de la tabla FAT, en caso de que una de ellas se dañe. La tabla tiene una entrada para cada clúster del sistema de ficheros. Si un clúster está ocupado, su entrada en la FAT puede contener un vínculo al siguiente clúster utilizado por el mismo archivo o una indicación de que el clúster es el último en la secuencia de clústeres del archivo.
El Directorio raíz (Root Directory) contiene entradas para todos los archivos y carpetas almacenados en la raíz del dispositivo de almacenamiento. Cada entrada incluye información esencial sobre un archivo, como su clúster inicial, nombre, tamaño y otros atributos. Ella también apunta al primer clúster que pertenece a ese archivo.
Eliminación de archivos de FAT/FAT32
La entrada de directorio del archivo se marca como eliminada. El primer carácter del nombre del archivo se reemplaza por un valor especial que indica su estado eliminado. En FAT32, también puede que se actualice el clúster inicial. Las entradas de la tabla FAT que corresponden a los clústeres del fichero se marcan como "libres", lo que destruye la cadena de los clústeres por los que se compone el archivo eliminado.
-
Recuperación de archivos no fragmentados: Cuando los clústeres del archivo están ubicados de manera contigua, recuperar el fichero eliminado es relativamente fácil. Su nombre, tamaño y clúster inicial todavía están presentes en la entrada de directorio. Esto aumenta las posibilidades de restaurar el archivo que a menudo pueden llegar a casi el 100%.
-
Recuperación de archivos fragmentados: La cadena de los clústeres del archivo que se almacena en la entrada de la FAT se destruye, sin que se queden vínculos a sus clústeres intermedios y final. Sin embargo, la entrada de directorio permanece intacta, por lo que aún se preservan el nombre, el tamaño y la posición inicial del archivo. Es posible predecir las ubicaciones de los fragmentos del archivo con la ayuda de la heurística (métodos de prueba y error), pero esto no garantiza el éxito.
Formateo de FAT/FAT32
Se borran ambas copias de la tabla FAT, lo que destruye la información sobre la asignación de los clústeres del archivo. Las entradas del Directorio raíz también se borran. Pero el contenido de datos permanecerá en el disco hasta que se sobreescriba.
-
Recuperación de archivos no fragmentados: El formateo borra las entradas de directorio, por lo que ya no se dispone de los nombres, tamaños y clústeres iniciales de los archivos. Los algoritmos de recuperación basados en el uso de las firmas de archivos conocidas (el llamado método de recuperación RAW) pueden identificar el contenido de datos de los archivos y recuperarlos con éxito. Al mismo tiempo, los nombres de archivos, directorios y otros atributos se pierden.
-
Recuperación de archivos fragmentados: Las cadenas de clústeres que anteriormente estaban disponibles en las tablas FAT ya faltan y la fragmentación hace que sea extremadamente difícil predecir las posibles ubicaciones del contenido. Es probable que la mayor parte de los archivos se dañen.
exFAT
Como sucesor de FAT/FAT32, este sistema de archivos es muy similar a él en cuanto a la estructura y el funcionamiento. exFAT también se basa en la Tabla de asignación de archivos (File Allocation Table o FAT), pero esta tabla se utiliza para rastrear las secuencias de clústeres de sólo los archivos fragmentados. Además, solamente hay una copia de dicha tabla.
Por otro lado, exFAT cuenta con una estructura separada dedicada al manejo del uso de los clústeres. En lugar de hacerlo directamente en las entradas de la tabla FAT, utiliza un Mapa de bits de asignación (Allocation Bitmap). Dicho mapa se almacena en el área de datos e indica el estado de cada clúster: ocupado o disponible para guardar nuevos datos. Este enfoque ayuda a optimizar la colocación de los datos y bajar el nivel de la fragmentación.
Eliminación de archivos de exFAT
exFAT actualiza el Mapa de bits de asignación para marcar los clústeres ocupados por el archivo como libres. Sin embargo, las entradas de la tabla FAT no se actualizan de inmediato y aún pueden contener vínculos a los clústeres que pertenecen al archivo eliminado. El contenido del archivo también permanecerá en el almacenamiento hasta que se reemplace por nuevos datos.
-
Recuperación de archivos: Cuando las entradas de la FAT aún están intactas, la secuencia de clústeres de un archivo fragmentado se puede reconstruir fácilmente y utilizar para recuperarlo por completo. Pero si se han sobreescrito, ya no se queda información sobre la ubicación de los fragmentos del archivo. No obstante, en el caso de exFAT, el método de recuperación RAW todavía puede dar resultados precisos en vista de un menor grado de fragmentación propio de dicho sistema.
NTFS
El componente clave de NTFS es la Tabla maestra de archivos (Master File Table o MFT). Ella contiene registros detallados de cada archivo y carpeta que se almacena dentro del sistema de ficheros. Un atributo de Mapa de bits (Bitmap) de la tabla MFT marca cuáles de sus registros están actualmente en uso y cuáles, libres. Un registro de la MFT puede almacenar varios atributos del archivo, entre los cuales su ubicación, nombre, tamaño y fecha/hora de creación y de última modificación.
El contenido de datos de un archivo pequeño se almacena directamente en su registro en la MFT. Los archivos grandes, a su vez, se almacenan fuera de la MFT, y los registros en la MFT contienen punteros a sus ubicaciones físicas en el disco. Los atributos grandes también pueden almacenarse fuera de la MFT, y en este caso, el registro del archivo en la MFT incluye sus direcciones.
En NTFS, los directorios están representados por archivos especiales. Dicho tipo de archivo contiene una lista de entradas de todos los archivos y subdirectorios dentro del directorio dado, con referencias a sus registros en la MFT.
Además del atributo de Mapa de bits dentro de la MFT, NTFS también tiene un archivo de Mapa de bits separado para todo el sistema de archivos. Con la ayuda de este archivo, se hace un seguimiento de las áreas ocupadas y libres en el medio de almacenamiento.
Eliminación de archivos de NTFS
El registro del archivo en la MFT no se borra, sino que se marca como "no utilizado" lo que significa que puede sobrescribirse pronto. El espacio de almacenamiento ocupado por el contenido del archivo se marca como libre en el Mapa de bits y ahora se puede reutilizar para escribir otros datos. La entrada del archivo también se elimina del directorio.
-
Recuperación de archivos: Si el registro de la MFT aún contiene el nombre, el tamaño y la ubicación en el disco, un programa de recuperación de datos puede reconstruir con precisión el fichero eliminado. Siempre que no se haya sobrescrito el contenido, hay casi un 100% de posibilidades de recuperarlo.
Formateo de NTFS
NTFS genera una nueva Tabla maestra de archivos. Esta nueva MFT sobrescribe la parte inicial de la MFT anterior, pero el resto de la tabla permanece intacto.
-
Recuperación de archivos: La información sobre los primeros 256 archivos se pierde debido a la sobrescritura parcial de la MFT. Dichos archivos sólo se pueden restaurar con el método de recuperación RAW y sin sus nombres iniciales, directorios y otros atributos. Y los ficheros que van después de los mencionados 256 pueden recuperarse con éxito con una probabilidad de hasta el 100%, a menos que se sobreescriba su contenido de datos.
ReFS
A diferencia de sus predecesores, ReFS organiza los datos mediante los árboles B+ que funcionan de manera similar a las bases de datos. Dicho árbol consta de una raíz, nodos internos y hojas. Cada nodo contiene una lista ordenada de claves utilizadas para guiar el proceso de búsqueda y los punteros a los nodos de nivel inferior o a los datos reales en las hojas. Los árboles B+ se utilizan para organizar casi todos los elementos del sistema de ficheros, incluido el contenido de los archivos y los metadatos.
El Directorio (Directory) es el componente principal de ReFS y también se representa como un árbol B+. Utiliza claves que corresponden a los números de objetos de la carpeta, mientras que los archivos que contiene se almacenan no como entradas de directorio sino como registros.
ReFS emplea Copy-on-Write (CoW, Copiar al escribir o Copiar en escrito en español) lo que garantiza que las entradas originales del sistema de archivos nunca se modifiquen directamente. Los datos, en cambio, se copian y los cambios se escriben en nuevas ubicaciones, mientras que la información original se preserva.
Eliminación de archivos de ReFS
Como ReFS utiliza la técnica de Copiar en escrito (CoW), se crea una nueva copia de los metadatos del archivo, se hacen los cambios necesarios para reflejar la eliminación del archivo y se actualiza la estructura del almacenamiento de datos sólo después de que los metadatos nuevos se hayan escrito correctamente.
-
Recuperación de archivos: Gracias a la técnica de Copiar al escribir (CoW), la versión original de los metadatos se queda en el almacenamiento. Siempre que ella no se haya sobrescrito con nueva información, hay una posibilidad de hasta el 100% de recuperar el fichero por completo.
Sugerencia: Por favor, lea las instrucciones respectivas, si necesita recuperar datos de los sistemas de archivos de Windows.
Sistemas de archivos de macOS
Todas las computadoras Mac modernas bajo el SO a partir de macOS 10.14 (Mojave) usan APFS como su sistema de archivos predeterminado. Este formato también se emplea en otros productos de Apple, incluidos los dispositivos en iOS, iPadOS, tvOS y watchOS. Aunque APFS es el estándar actual, Apple todavía soporta HFS+, el sistema de archivos anterior, principalmente para asegurar la compatibilidad con las versiones anteriores de macOS. Además, el sistema de archivos exFAT de Microsoft se utiliza ampliamente en los dispositivos externos de Apple a los que se suele acceder desde diferentes sistemas operativos.
Cabe enfatizar que la recuperación de datos de los sistemas de archivos de macOS sólo es posible antes de que los archivos se sobreescriban.
HFS+
En HFS+, el espacio de almacenamiento se divide en bloques de asignación de igual tamaño que pueden agruparse para reducir la fragmentación. El Archivo de asignación (Allocation File) controla el estado de cada bloque de asignación: si está libre u ocupado.
El contenido de todos los archivos se organiza utilizando las estructuras llamadas fork (o flujos alternativos): un data fork (flujo alternativo de datos) contiene los datos reales, mientras que toda la información adicional (los metadatos) se almacena en un resource fork (flujo alternativo de recursos). Cada uno de los forks abarca algunos bloques de asignación. Un rango continuo de bloques de asignación asignados a un determinado fork se llama extent. Un extent, a su vez, está representado por un bloque de inicio y una cantidad de bloques que ocupa.
La mayoría de los metadatos del sistema de archivos son manejados por medio de los archivos especiales que están estructurados como árboles B. El Archivo de catálogo (Catalog File) es de particular significado: describe la jerarquía de directorios del sistema de ficheros, contiene las propiedades esenciales de cada archivo y carpeta, incluidos sus nombres, y almacena las primeras ocho extents de los forks de datos y de recursos del archivo. Si un fork tiene más extents, se registran en el Archivo de desbordamiento de extents (Extents Overflow File). Todo tipo de propiedades adicionales del archivo, como los metadatos extendidos, se almacenan en el Archivo de atributos (Attributes File).
HFS+ soporta los enlaces duros (hard links) lo que permite que el mismo archivo aparezca en varios directorios sin duplicación. Los datos del archivo permanecen almacenados en una sola ubicación en el disco, mientras que varias entradas de enlaces duros en el Archivo de catálogo simplemente se vinculan a ese mismo contenido.
El registro por diario (journal) se utiliza para registrar los cambios realizados en el sistema de archivos. Pero este registro por diario tiene un tamaño limitado, por lo que, cuando se llena, las entradas antiguas se sobrescriben con las nuevas de manera cíclica.
Eliminación de archivos de HFS+
HFS+ actualiza el Archivo de catálogo reorganizando el árbol B y eliminando las referencias al archivo eliminado. En caso de un enlace duro, la referencia al archivo se elimina del directorio correspondiente. Los bloques ocupados por el archivo se marcan como libres en el Archivo de asignación y se pueden utilizar de nuevo para guardar otros datos. Sin embargo, el contenido real no se borra inmediatamente. La información también permanece en el registro por diario durante cierto tiempo.
-
Recuperación de archivos: El registro por diario todavía puede contener cierta información sobre el archivo eliminado, pero esto depende de cuánto tiempo haya pasado desde la eliminación. Si las entradas del registro por diario han sido sobrescritas ya, se puede utilizar el método de recuperación RAW, aunque sólo es eficaz en caso de los archivos no fragmentados y aún así no permite restaurar los nombres de archivos iniciales, directorios y otras propiedades.
Formateo de HFS+
El Archivo de catálogo se restablece a su estado predeterminado, lo que borra todos los registros sobre los archivos anteriores. No obstante, el registro por diario y el contenido de datos real permanecen inalterados.
-
Recuperación de archivos: Algunos metadatos pueden restaurarse con la ayuda del registro por diario. El resto de los archivos faltantes se reconstruirán utilizando la técnica de recuperación RAW. El éxito de la operación depende del grado de fragmentación del sistema de ficheros.
APFS
Un volumen APFS se encuentra dentro de un Contenedor (Container) que puede alojar varios sistemas de archivos que comparten el espacio de almacenamiento disponible. Todos los bloques de almacenamiento ocupados y libres en el Contenedor se rastrean utilizando un Mapa de bits (Bitmap) común. Cada sistema de archivos es responsable de administrar su propia jerarquía de directorios, contenido de archivos y metadatos.
La asignación de archivos y carpetas se realiza a través de un árbol B similar al Archivo de catálogo en HFS+. Los archivos se componen de extents que especifican el bloque de inicio del contenido y su longitud en bloques. También hay un árbol B separado para manejar los extents dentro del sistema de archivos.
En lugar de modificar los objetos existentes del sistema de archivos, cuando se realizan cambios, APFS crea una copia de datos y escribe una nueva versión en una ubicación diferente en el medio de almacenamiento. Este enfoque se conoce como Copy-on-Write (CoW, Copiar al escribir o Copiar en escrito en español).
Eliminación de archivos de APFS
APFS elimina las referencias al archivo eliminado quitando los nodos correspondientes del árbol B de asignación.
- Recuperación de archivos: Es posible que algunas versiones anteriores de los metadatos del archivo eliminado aún se queden, lo que brinda la posibilidad de reconstruir el contenido del archivo. Sin embargo, APFS emplea el cifrado como parte integral de su arquitectura. Esta función es altamente recomendable y a menudo está habilitada de forma predeterminada en los dispositivos de Apple. Cuando está cifrado, el sistema de archivos protege no sólo los datos del usuario, sino también los metadatos críticos. El amplio uso del cifrado complica considerablemente el proceso de recuperación.
Sugerencia: Por favor, consulte las instrucciones respectivas, si necesita recuperar datos de los sistemas de archivos de macOS.
Sistemas de archivos de Linux
Linux es un proyecto versátil de código abierto que abarca numerosas versiones llamadas "distribuciones", cada una con sus propias peculiaridades y configuraciones. Y no es de sorprender que los sistemas de archivos de estas distribuciones también difieran significativamente entre sí. En general, el núcleo de todos estos sistemas operativos que se conoce como kernel de Linux es compatible con una amplia gama de formatos. Con todo, los sistemas de archivos más utilizados de Linux son los que pertenecen a la familia de Ext (Ext2, Ext3, Ext4), así como XFS, Btrfs, F2FS, JFS y ReiserFS.
Vale la pena señalar que la recuperación de datos de estos sistemas de ficheros sólo es posible hasta que los datos originales permanezcan en el almacenamiento y no se hayan sobrescrito.
XFS
XFS divide el volumen en regiones de igual tamaño llamadas Grupos de asignación (Allocation Groups). Cada uno de dichos grupos funciona como un sistema de archivos independiente, manejando su propio espacio de almacenamiento y sus estructuras.
En XFS, el espacio libre se controla con la ayuda de dos árboles B+: el primero registra el bloque inicial de un área contigua de espacio libre y el segundo, el número de bloques que contiene. Un mecanismo similar se utiliza para hacer un seguimiento de los bloques asignados a los archivos. Su contenido se almacena en bloques contiguos que se llaman extents.
Cada archivo y directorio está representado por un inodo (inode), una estructura especial que contiene sus metadatos, como tamaño, permisos, etc. En caso de ficheros pequeños, un inodo almacena la información sobre los extents asignados al fichero. Y en cuanto a los grandes o fragmentados, un inodo apunta a un árbol B+ separado que hace un seguimiento de los extents asociados con el archivo. Sin embargo, los inodos no incluyen los nombres de archivo. Estos se almacenan en las entradas de directorio que vinculan esos nombres con los inodos correspondientes. También hay un árbol B+ dedicado en cada Grupo de asignación que se utiliza para manejar la asignación y desasignación de los inodos.
XFS emplea un registro por diario para las operaciones con los metadatos. Todos los cambios en los metadatos se anotan en el registro por diario antes de escribirse en el disco.
Eliminación de archivos de XFS
El inodo asociado con el archivo eliminado se quita del árbol B+ en el Grupo de asignación y se vuelve disponible para la reutilización. Los árboles B+ de bloques libres se actualizan para que indiquen el espacio liberado. La entrada de directorio que vincula el nombre de archivo con el inodo correspondiente se borra. Pero la información del extent a menudo permanece intacta.
-
Recuperación de archivos no fragmentados: Si la información del extent no se ha sobrescrito, las posibilidades de recuperar el contenido del archivo son cerca del 100%. Recuperar el nombre del archivo es más complicado, ya que los nombres de archivos se almacenan en el directorio que ya no tiene referencias al archivo eliminado. No obstante, cuando se trata de los archivos eliminados recientemente, el registro por diario aún puede contener algunos metadatos sobre el archivo y ayudar a recuperar su nombre y directorio.
-
Recuperación de archivos fragmentados: Si bien los extents como tales pueden permanecer intactos, el inodo ya no está asociado con los datos del archivo, lo que complica el proceso de recuperación. Sin información sobre las relaciones entre los extents, reconstruir la secuencia completa puede resultar difícil.
Formatting of XFS
Se borran los árboles B+ responsables de controlar la asignación del espacio de almacenamiento. Se crea un nuevo directorio raíz que reemplaza al anterior.
-
Recuperación de archivos no fragmentados: Se restablecen las estructuras del sistema de ficheros, pero los bloques de datos reales pueden permanecer en el disco hasta que se sobreescriban. Las posibilidades de recuperación son generalmente más altas en caso de archivos no fragmentados.
-
Recuperación de archivos fragmentados: Dado que sus bloques de datos no se almacenan uno al lado del otro, hay menos posibilidades de recuperarlos en comparación con los archivos no fragmentados.
Sugerencia: Estas instrucciones le serán de ayuda, si necesita recuperar datos de los sistemas de archivos de Linux.
Ext2
Ext2 utiliza bloques como la unidad más pequeña de almacenamiento de datos. Los bloques se organizan en Grupos de bloques (Block Groups). Cada Grupo de bloques tiene un Mapa de bits de bloques (Block Bitmap) en el que se registra cuáles de los bloques están libres y cuáles, ocupados.
Las estructuras de inodos se utilizan para almacenar los metadatos sobre todos los archivos y directorios, incluidos sus tamaños y las ubicaciones de los bloques de datos reales. Los inodos que pertenecen a cada Grupo de bloques se almacenan en la Tabla de inodos (Inode Table) respectiva, mientras que un Mapa de bits de inodos (Inode Bitmap) registra qué inodos están ya asignados.
Sin embargo, los nombres de archivo no forman parte de los metadatos y no se almacenan directamente en los inodos. En cambio, se encuentran en los archivos de directorio que de hecho son archivos normales que contienen entradas de directorio.
Eliminación de archivos de Ext2
En el Mapa de bits de inodos, el inodo que describe el archivo eliminado se marca como libre. Los bloques utilizados para almacenar sus datos también se marcan como libres en el Mapa de bits de bloques y se vuelven disponibles para reutilizar. El nombre del archivo se elimina de la entrada de directorio, destruyendo el vínculo entre el nombre y el número del inodo.
-
Recuperación de archivos no fragmentados: El inodo aún contiene cierta información importante sobre el archivo, como su tamaño y las ubicaciones de sus bloques de datos. Siempre que el contenido no haya sido sobrescrito ya, las posibilidades de recuperar el archivo son bastante altas. Pero dado que el nombre del archivo no se almacena en el inodo y la referencia al inodo ya no está disponible en el directorio, dicho nombre se pierde para siempre.
-
Recuperación de archivos fragmentados: La información que se necesita para encontrar los bloques del archivo eliminado se puede encontrar en el inodo, por lo que las posibilidades de recuperación son más o menos las mismas que en caso de los archivos no fragmentados, aunque la fragmentación aumenta el riesgo de su sobrescritura parcial.
Formateo de Ext2
Se restablece el sistema de archivos, lo que borra el contenido de todos los Grupos de bloques, incluidos los inodos.
-
Recuperación de archivos no fragmentados: Todas las estructuras cruciales que describen el sistema de archivos están ausentes, por lo que sólo se puede aplicar el método de recuperación RAW para intentar recuperar algo. Los nombres de archivos iniciales y directorios se perderán de todos modos.
-
Recuperación de archivos fragmentados: Sin los metadatos apropiados del sistema de archivos, es difícil volver a unir los fragmentos de dichos archivos, por lo que es muy probable que los archivos fragmentados se corrompan.
Ext3/Ext4
Ext3 es un sucesor de Ext2 que se amplió con un archivo de registro por diario (journal). Todos los cambios se registran en dicho archivo antes de que se realicen en el sistema de archivos. Por lo tanto, cuando se hace una modificación, primero se anota en el registro por diario, lo que mejora la fiabilidad del sistema de archivos.
Ext4 que se desarrolló sobre la base de Ext3 está provisto de extents. Los extents se consideran un mecanismo más eficiente de colocación de datos en comparación con este basado en bloques utilizado por Ext2 y Ext3. Ellos permiten asignar áreas más grandes del espacio continuo que están descritas por la dirección del bloque inicial y por la cantidad total de bloques en el extent. En cuanto a los archivos pequeños, los extents se almacenan directamente en el inodo del archivo. Y si un archivo tiene más de cuatro extents, Ext4 los almacena en una estructura jerárquica separada de árbol B+.
Otra característica importante de Ext4 que se llama asignación retardada (o asignación retrasada) también ayuda a minimizar la fragmentación. En lugar de escribir datos de inmediato, Ext4 los acumula en la memoria y les asigna espacio sólo cuando hay más datos listos para escribirse o cuando se cierra el archivo.
Eliminación de archivos de Ext3/Ext4
Ext3/Ext4 apunta la operación en el registro por diario. Después de eso, el inodo del archivo se marca como listo para reutilizar en el Mapa de bits de inodos (Inode Bitmap). Los extents utilizados para almacenar su contenido también se marcan como libres. La entrada de directorio que vincula el nombre del archivo con el inodo no se borra por completo, pero se cambia el orden de lectura del directorio.
-
Recuperación de archivos no fragmentados: El vínculo entre el nombre del archivo y el inodo se rompe, pero el registro por diario aún puede contener los metadatos sobre los archivos que se han eliminado recientemente. Si el registro por diario todavía contiene algunos registros relacionados con el archivo, ellos pueden usarse para recuperar tanto el contenido del archivo como su nombre. La calidad del resultado de la recuperación depende de cuánto tiempo se haya utilizado activamente el sistema de archivos después de la eliminación.
-
Recuperación de archivos fragmentados: En caso de Ext3/Ext4, las probabilidades de recuperar estos archivos son menores, ya que los bloques/extents dispersos son mucho más difíciles de encontrar y unir. Aún así, el registro por diario puede mejorar las posibilidades de recuperación de los archivos eliminados recientemente (incluso con sus nombres originales).
Formateo de Ext3/Ext4
Esta operación implica la limpieza de todos los Grupos de bloques y el borrado de los inodos. El registro por diario se suele restablecer, por lo que todos los registros anteriores se pierden. No obstante, dependiendo del controlador en particular, puede que aún contenga información sobre los archivos que se han creado o modificado recientemente.
-
Recuperación de archivos no fragmentados: El método de recuperación RAW generalmente ayuda a recuperar los archivos intactos. Sin embargo, en la mayoría de los casos, es imposible recuperar los nombres de archivos iniciales. Sólo es posible recuperar los nombres de los archivos más recientes y siempre que el registro por diario no se haya limpiado como parte del formateo.
-
Recuperación de archivos fragmentados: Las posibilidades de una recuperación exitosa son bajas debido a la ubicación dispersa del contenido de estos archivos.
ReiserFS
Un volumen de ReiserFS se divide en bloques de tamaño fijo que sirven como una unidad básica de almacenamiento de datos. En un mapa de bits (bitmap) dedicado se registra qué bloques del sistema de archivos están en uso y cuáles están libres.
ReiserFS utiliza un árbol S+ para organizar todos los archivos, directorios y metadatos. El árbol consta de cuatro tipos de elementos: elementos indirectos, elementos directos, elementos de directorio y elementos de estadísticas. Los elementos directos contienen datos reales; los indirectos apuntan a las ubicaciones de los bloques de datos; los de directorio representan entradas de directorio; los de estadísticas contienen metadatos sobre archivos y directorios. Cada elemento del árbol S+ tiene una clave que lo identifica de forma única.
ReiserFS reduce el desperdicio del espacio de almacenamiento con la ayuda de una técnica especial que se llama tail-packing (empaquetamiento de colas). Cuando los archivos o fragmentos de archivos son menores que un bloque completo, se empaquetan juntos y se almacenan en la parte no utilizada de un bloque, lo que mejora la eficiencia del uso del espacio de almacenamiento.
En lugar de escribir cambios directamente en el árbol S+, ReiserFS primero los anota en el registro por diario. Después de eso, los bloques modificados se copian del registro por diario en las ubicaciones reales en el disco.
Eliminación de archivos de ReiserFS
ReiserFS actualiza el árbol S+ quitando los nodos que corresponden al archivo eliminado. Los bloques utilizados por el archivo se marcan como libres en el mapa de bits.
-
Recuperación de archivos no fragmentados: ReiserFS preserva copias del árbol S+ y anota cambios en el sistema de archivos en su registro por diario, por lo que es posible que en el sistema de archivos aún se queden versiones anteriores de los nodos del árbol S+ asociados con el archivo eliminado. En este caso, las posibilidades de recuperar este archivo, incluso con su nombre inicial, son de hasta el 100%.
-
Recuperación de archivos fragmentados: Debido a las particularidades de la arquitectura de ReiserFS, las perspectivas de restaurar los archivos fragmentados son las mismas que en caso de los archivos no fragmentados.
Formateo de ReiserFS
ReiserFS crea un nuevo árbol S+ que sobrescribe la estructura existente.
-
Recuperación de archivos no fragmentados: El sistema de archivos crea copias del árbol S+ en varias etapas, lo que brinda una gran posibilidad de recuperar el árbol S+ anterior y obtener los archivos junto con sus nombres originales. A pesar de ello, las probabilidades de recuperación son peores, si el volumen estaba lleno antes del formateo.
-
Recuperación de archivos fragmentados: Las posibilidades no difieren de estas en caso de archivos no fragmentados.
JFS (JFS2)
JFS se divide en varias regiones conocidas como Grupos de asignación (Allocation Groups). Los Grupos de asignación constan de bloques de datos y bloques de metadatos. También se utilizan mapas de bits (bitmaps) para realizar un seguimiento de estados de estos bloques.
Mientras tanto, los Conjuntos de archivos (FileSets) se utilizan para organizar los archivos y directorios dentro del sistema de archivos. Cada archivo y directorio en JFS está asociado con un inodo que no sólo lo describe, sino que también apunta a la ubicación de su contenido. Los directorios pequeños se almacenan en sus inodos, mientras que los grandes se representan por árboles B+ independientes.
Los datos reales del archivo se organizan como secuencias de bloques contiguos que se llaman extents. Todos los extents están indexados por un árbol B+ dedicado.
Aparte de esto, se utilizan dos árboles B+ para manejar el espacio de almacenamiento libre: uno registra los bloques iniciales de los extents libres y el otro monitorea la cantidad de extents disponibles.
Para garantizar la coherencia de los datos, JFS crea un área de registro dedicada y anota todos los cambios en sus metadatos en el registro por diario.
Eliminación de archivos de JFS
El sistema de archivos actualiza el árbol B+ que hace un seguimiento del espacio libre, marca el inodo del archivo como libre y luego re-construye la estructura del directorio para que refleje la eliminación del archivo.
-
Recuperación de archivos no fragmentados: Siempre que el inodo que pertenece al archivo eliminado no se haya sobrescrito, las posibilidades de recuperar el archivo suelen acercarse al 100%. Sin embargo, en ausencia del vínculo entre el inodo y el nombre del archivo en el directorio, recuperar su nombre original es poco probable.
-
Recuperación de archivos fragmentados: Las perspectivas son las mismas que en caso de los archivos no fragmentados.
Formateo de JFS
JFS crea un nuevo árbol B+. Pequeño al principio, dicho árbol crece a medida que se utiliza el sistema de archivos.
-
Recuperación de archivos no fragmentados: Las probabilidades de recuperación son relativamente altas, en particular, debido al tamaño pequeño del árbol B+ nuevo. Pero a medida que se escriben nuevos datos en el disco, la información sobre los archivos antiguos puede sobrescribirse.
-
Recuperación de archivos fragmentados: Las probabilidades son comparables a las en caso de los archivos no fragmentados.
Btrfs
Btrfs confía completamente en los árboles B en cuanto al manejo de sus datos y estructuras. Cada árbol B cumple una función específica como se explica a continuación.
Este sistema de archivos se puede aplicar a varios dispositivos sin que se utilicen tecnologías de almacenamiento adicionales. El espacio de almacenamiento de estos dispositivos se recopila en un único grupo lógico (pool) y a cada bloque del grupo se le asigna una dirección virtual. Dichas direcciones virtuales se utilizan en todo el sistema de archivos en lugar de direcciones físicas reales. El árbol B de fragmentos (Chunk B-tree) realiza un seguimiento del mapeo de las direcciones virtuales a las ubicaciones físicas reales. También registra qué dispositivos forman parte del grupo de almacenamiento. Por otro lado, el árbol B de dispositivos (Device B-tree) refleja las relaciones entre los bloques físicos en los dispositivos y sus direcciones virtuales.
Toda la información sobre los archivos y directorios se almacena en el árbol B del sistema de archivos (File System B-tree). Los archivos pequeños se almacenan directamente en este árbol B como elementos de extent. Si un archivo es más grande, su contenido se almacena fuera del árbol B del sistema de archivos, mientras que los elementos de extent de este árbol apuntan a todos los extents pertenecientes al archivo (regiones continuas del espacio de almacenamiento ocupado). En este árbol B, los elementos de directorio almacenan el contenido de los directorios, incluidos los nombres de archivos y las referencias a sus elementos de inodo correspondientes. Los elementos de inodo contienen varios metadatos, entre los que los tamaños, permisos y otros atributos de los archivos.
En Btrfs, la ubicación de extents es altamente dinámica. Se asignan según los requerimientos de varias tareas y se distribuyen de forma no secuencial. Se utiliza un árbol B de extents (Extent B-tree) independiente para controlar la asignación de todos los extents dentro del sistema de archivos.
Cuando se modifican algunos datos o metadatos, Btrfs los escribe en una nueva ubicación en lugar de sobrescribir la información existente. Este enfoque se llama Copy-on-Write (CoW, Copiar al escribir o Copiar en escrito en español) y ayuda a mantener la integridad del sistema de archivos, así como facilita la recuperación de datos después de una falla.
Eliminación de archivos de Btrfs
Btrfs cambia el árbol B del sistema de archivos quitando los nodos asociados con el archivo eliminado, incluidos sus inodos, entradas de directorio y contenido. El árbol B de extents también se actualiza para liberar los extents asignados a este archivo. Pero en vista del uso de Copy-on-Write, las referencias a los datos y metadatos del archivo eliminado permanecen en copias anteriores.
-
Recuperación de archivos: Mediante el análisis de las copias anteriores, es posible encontrar tanto los datos como los metadatos del archivo eliminado. En la mayoría de los casos, la recuperación de datos puede tener éxito. No obstante, cuando se trata de una eliminación masiva de datos, el cambio de la asignación del espacio de almacenamiento complica la recuperación debido a la naturaleza no lineal de la distribución de datos.
Formateo de Btrfs
Btrfs restablece sus estructuras de metadatos principales, incluido los Árboles del sistema de archivos y de extents.
-
Recuperación de archivos: Es posible que en el almacenamiento aún se queden copias antiguas de datos y metadatos. Aún así, la asignación del espacio de almacenamiento se restablece, lo que dificulta la búsqueda de referencias a esta información. En combinación con la asignación no secuencial, esto crea desafíos para la recuperación de datos.
F2FS
F2FS divide todo el espacio de almacenamiento en segmentos de tamaño fijo. Estos segmentos se agrupan en secciones, mientras que varias secciones forman una zona.
La ubicación de los datos se controla con la ayuda de los nodos. Estos pueden clasificarse en tres tipos: los nodos directos almacenan las direcciones de los bloques de datos reales; los indirectos contienen los enlaces a los bloques en otros nodos; y los inodos comprenden los metadatos de los archivos y directorios, entre los que se encuentran sus nombres, tamaños y otros atributos. El mapeo de estos nodos a sus ubicaciones físicas en el almacenamiento se realiza a través de la Tabla de direcciones de nodos (Node Address Table o NIT).
El contenido real de los archivos y directorios se almacena en el Área principal (Main Area). Dicha área se divide en secciones, separando los bloques de datos de los bloques de nodos. El estado de cada bloque se registra en la Tabla de información de segmentos (Segment Information Table o SIT). Los bloques se etiquetan como válidos, cuando están ocupados e inválidos, si contienen datos eliminados. Y en el Área de resumen de segmento (Segment Summary Area o SSA) se registra qué bloques pertenecen a qué nodo.
F2FS tiene su propia versión de entradas de directorio denominadas dentries. Las dentries se utilizan para el mapeo del nombre de archivo a los inodos que contienen el resto de los metadatos del archivo.
Cuando no hay suficiente espacio libre en el sistema de archivos para guardar nuevos datos, F2FS realiza operaciones de limpieza en segundo plano, generalmente cuando el sistema está inactivo. Los segmentos 'víctimas' se seleccionan en función de la cantidad de bloques utilizados o su "antigüedad".
La coherencia del sistema de archivos se mantiene con la ayuda de los Bloques de punto de control (Checkpoint blocks). Dichos bloques almacenan información sobre el estado de los elementos cruciales del sistema de archivos en momentos concretos, sirviendo de puntos de recuperación en caso de una falla.
Eliminación de archivos de F2FS
F2FS actualiza las tablas NAT y SIT para que ellas indiquen que los bloques del archivo ya no están en uso. Los cambios se conservan en la memoria hasta que se cree un nuevo punto de control que registre el estado actual del sistema de archivos. El contenido de datos real permanece en su lugar hasta que finalmente se borre.
-
Recuperación de archivos: Se puede utilizar el punto de control más reciente para localizar los nodos y los bloques de datos del archivo. Hay probabilidades altas de recuperar el archivo, siempre que no se haya borrado durante las operaciones de limpieza.
Sistemas de archivos de BSD, Solaris, Unix
La familia Unix de sistemas operativos que incluye los SO BSD y Solaris está históricamente dependiente del UFS (Unix File System o Sistema de archivos Unix). Con el paso del tiempo, UFS se actualizó a UFS2 que ofrecía varias mejoras como la compatibilidad con los archivos de tamaños más grandes y el rendimiento general mejorado. Más tarde, se desarrolló ZFS, un sistema de ficheros de próxima generación para Solaris. Desde entonces, ZFS ha sido adoptado por otros sistemas operativos, como, por ejemplo, FreeBSD, y se usa en particular en los entornos que requieren características modernas, un alto rendimiento y una mejor confiabilidad.
Se debe enfatizar que la recuperación de datos de los sistemas de archivos de BSD, Solaris y Unix es posible sólo cuando la información original esté presente en el almacenamiento y no haya sido sobrescrita.
UFS/UFS2
Un volumen de UFS consta de uno o más Grupos de cilindros (Cylinder Groups). Cada Grupo de cilindros tiene su propio conjunto de inodos que se utilizan para almacenar información sobre los archivos y los bloques de datos en los que se encuentra el contenido real de los archivos. Se utiliza un mapa de bits (bitmap) para hacer un seguimiento de qué bloques e inodos del Grupo de cilindros están ocupados.
En UFS, un archivo consta de bloques de datos y un inodo. Los inodos contienen los metadatos de los archivos, incluidos sus tamaños, permisos, etc., así como los punteros directos a los primeros 12 bloques de datos. Si un archivo es más grande, su inodo apunta a un bloque indirecto, que, a su vez, contiene direcciones de otros bloques de datos. Sin embargo, los inodos no incluyen los nombres de archivos; estos se almacenan en los directorios.
Y los directorios se presentan como listas de entradas. Cada entrada de directorio almacena el nombre de un archivo particular y el número del inodo correspondiente. Un solo archivo suele estar asociado a un solo inodo. Pero en el caso de un enlace duro, el mismo archivo puede tener varios nombres, con diferentes entradas de directorio que apuntan al mismo inodo. El inodo lleva cuenta del número de enlaces duros a él.
Eliminación de archivos de UFS
UFS borra el inodo del archivo que contiene su tamaño y las ubicaciones de los primeros 12 bloques de datos. El mapa de bits se actualiza: los bloques de datos e inodos respectivos se marcan como libres. También se elimina la entrada de directorio que vincula el nombre del archivo con su inodo.
-
Recuperación de archivos no fragmentados: Falta el inodo del archivo y, en consecuencia, la información sobre el tamaño del archivo y las ubicaciones de sus primeros 12 bloques de datos. También se pierde de forma permanente el vínculo entre el nombre del archivo y su inodo. Con el método de recuperación RAW, es posible recuperar un archivo no fragmentado, aunque sin su nombre y directorio iniciales. Sin embargo, rara vez se puede encontrar archivos no fragmentados en UFS debido a las características específicas de su algoritmo Soft Updates.
-
Recuperación de archivos fragmentados: La información sobre los bloques de datos pertenecientes al archivo eliminado está ausente y, por lo tanto, en este caso, las posibilidades de recuperación son muy bajas.
Formateo de UFS
Esta operación restablece los Grupos de cilindros, lo que borra los inodos y las entradas de directorio existentes. En consecuencia, se destruyen todas las referencias a los archivos y sus nombres. Al mismo tiempo, los bloques de datos permanecen intactos hasta que se sobreescriban.
-
Recuperación de archivos no fragmentados: Los archivos no fragmentados pueden restaurarse aplicando el método de recuperación RAW, pero aún así sus nombres y directorios iniciales se perderán.
-
Recuperación de archivos fragmentados: Estos archivos son casi imposibles de reconstruir debido a la falta de inodos que puedan ayudar a conectar sus fragmentos.
ZFS
ZFS se diferencia de la mayoría de los sistemas de archivos por su capacidad de combinar varias unidades físicas en un grupo de almacenamiento (pool) común. Un grupo de almacenamiento abarca uno o más dispositivos virtuales denominados vdevs. Cada vdev tiene una etiqueta con un Uberbloque (Uberblock) que sirve de una estructura de metadatos principal del grupo de almacenamiento.
ZFS asigna el espacio de almacenamiento en bloques de tamaños variables. Los bloques se organizan como objetos de diferentes tipos. Cada objeto se describe mediante un dnode, una estructura que registra los detalles como el tipo de objeto, el tamaño, etc. y contiene hasta tres punteros de bloque. Un puntero puede apuntar directamente a un bloque que contiene datos reales (bloque de hoja) o a un bloque indirecto vinculado a otro bloque.
Todos los objetos relacionados se agrupan en conjuntos de objetos. A cada objeto dentro de él se le asigna un identificador único llamado número de objeto. Los metadatos de estos objetos también se organizan como un objeto y están vinculados a través de una estructura especial conocida como metadnode. Un conjunto de objetos dedicado llamado Conjunto de objetos meta (Meta Object Set o MOS) contiene los metadatos del grupo de almacenamiento completo.
ZFS sigue el principio de Copy-on-Write (CoW, Copiar al escribir o Copiar en escrito en español) al escribir datos. En lugar de sobrescribir los bloques existentes, usa nuevos bloques de un área de espacio de almacenamiento libre para guardar los datos actualizados. Una vez que los datos nuevos se escriban correctamente, los metadatos del sistema de archivos se actualizan para apuntar a estos bloques recién escritos, mientras que los bloques antiguos también se quedan en el dispositivo.
Eliminación de archivos de ZFS
El dnode que describe el archivo eliminado y los bloques que contienen sus datos se desvinculan. El número de objeto asociado con el archivo se marca como listo para reutilizarse. La referencia al archivo se quita del objeto de directorio. Y se escribe un nuevo Uberbloque para reflejar el estado actualizado del sistema de archivos. No obstante, todas estas modificaciones se realizan aplicando la técnica de Copiar en escrito (COW).
-
Recuperación de archivos: Dependiendo del uso del sistema de archivos y de lo lleno que esté el grupo de almacenamiento, es posible que en el último todavía existan versiones anteriores de los datos y metadatos del archivo que se puedan utilizar para llevar a cabo la recuperación completa del archivo con el nombre correcto. Sin embargo, la recuperación puede complicarse por el hecho de que los datos están distribuidos en varias unidades, en bloques de diferentes tamaños. Sin los metadatos del grupo de almacenamiento (Uberblock, Meta Object Set, etc.), es casi imposible ensamblar el almacenamiento y reconstruir su diseño. Por lo tanto, el éxito también depende de la integridad de estos metadatos.
Sugerencia: Consulte las instrucciones correspondientes, si necesita recuperar datos de los sistemas de archivos de Unix, Solaris o BSD.
Para disfrutar de las mejores posibilidades de recuperar lo perdido desde los sistemas de archivos anteriormente descritos, se recomienda optar por UFS Explorer y Recovery Explorer, ya que son soluciones de software fiables y efectivas con una amplia compatibilidad. Estos programas funcionan en diferentes sistemas operativos y se destacan en la recuperación de datos eliminados, perdidos o inaccesibles desde todo tipo de dispositivos formateados con varios sistemas de archivos utilizados por Windows, Linux, macOS, Unix, BSD y Solaris.
Obstáculos para la recuperación de datos causados por TRIM
La mayoría de los discos SSD modernos y un número cada vez mayor de SMR están equipados con traductores (translators) compatibles con el comando TRIM. Cuando TRIM está habilitado, el sistema de archivos envía este comando al dispositivo de almacenamiento, informándole de que algunos de los bloques ya no están en uso y deben prepararse para el borrado. Estos bloques se marcan como libres en las tablas de mapeo internas del dispositivo y esperan su borrado físico que se conoce como recolección de basura. Estas medidas tienen como objetivo optimizar el rendimiento de la unidad y prolongar su vida útil. Aún así, ellas también constituyen obstáculos considerables, a menudo insuperables, para la recuperación de archivos después de la eliminación o el formateo.
Una vez ejecutado el comando TRIM, el dispositivo trata los bloques afectados como vacíos. Aunque los datos todavía pueden existir, las referencias a estos bloques se eliminan de manera permanente al nivel del mapeo interno de la unidad. Esto hace que los bloques se vuelvan invisibles no sólo para el sistema de archivos sino también para cualquier software de recuperación de datos. Y una vez hecha la recolección de basura, los bloques se borran a nivel de hardware y no hay ninguna posibilidad de recuperar datos por ningún medio.
La recolección de basura no se lleva a cabo inmediatamente después de la ejecución del comando TRIM, y es un proceso relativamente lento cuya velocidad varía según el proveedor, el modelo y el tipo de memoria de la unidad. La actualización del traductor (translator), en cambio, es una operación rápida que suele ocurrir casi al instante. Después de esta actualización, la unidad empieza a mostrar ceros en las áreas limpiadas, pero es posible que los datos reales aún no se hayan borrado.
Eliminación de archivos
El sistema de archivos marca el espacio de almacenamiento como libre para volver a utilizar y el comando TRIM se activa poco después. El traductor (translator) se actualiza y los datos eliminados se marcan como ya no necesarios. Los bloques ocupados por el fichero se preparan para la recolección de basura. El proceso de limpieza como tal puede iniciarse de inmediato o posponerse por un período de desde unos pocos segundos hasta una semana.
Recuperación de archivos: Hay una ventana de tiempo muy pequeña, generalmente de unos 5 segundos, para apagar el dispositivo antes de que se actualice el traductor. Después de la ejecución de TRIM, los métodos de recuperación regulares ya no dejan acceder a los datos. Por otro lado, los expertos en recuperación de datos aún pueden devolverlos utilizando equipos especializados para eludir la capa de traducción interna de la unidad. Pueden poner la unidad en modo de depuración (debug) y copiar el contenido sin procesar (raw) de sus chips de memoria. En este caso, el éxito no está garantizado y depende de muchos factores técnicos. Sin embargo, si la unidad permanece encendida durante algún tiempo, los datos eliminados se destruirán gradualmente mediante la recolección de basura.
Formateo
La operación restablece la estructura del sistema de ficheros. Mientras tanto, se activa el comando TRIM, informando a la unidad que los bloques antes ocupados ahora están "libres". El traductor (translator) de la unidad actualiza su mapeo interno. La recolección de basura puede de inmediato comenzar a borrar datos en esos bloques o posponer este procedimiento en función de la carga de trabajo de la unidad.
Recuperación de archivos: Al igual que en caso de la eliminación, si la unidad se desconecta antes de que se realice la recolección de basura, es posible que los especialistas de recuperación de datos aún tengan la oportunidad de recuperar los datos sin procesar (raw) de los bloques marcados como no utilizados por el traductor (translator). Pero una vez hecha la recolección de basura, los datos borrados desaparecen para siempre y ya no se pueden recuperar.
Daño a los metadatos
En caso de corrupción de datos o metadatos, el sistema de archivos ya no puede identificar y tratar correctamente los bloques afectados y tampoco puede emitir el comando TRIM. Sin dicho comando, el dispositivo de almacenamiento no puede actualizar el estado de esos bloques. En consecuencia, los bloques no se someten a la recolección de basura y permanecen intactos hasta que la unidad reciba instrucciones válidas.
Recuperación de archivos: Dado que TRIM no se ejecuta, los datos dentro de los bloques permanecen físicamente intactos, aunque ya no se puede acceder a ellos a través del sistema operativo. El software de recuperación de datos adecuado puede acceder a los archivos faltantes y reconstruirlos. La probabilidad de éxito depende del alcance del daño y de las características específicas del sistema de archivos en cuestión.
Última actualización: el 04 de diciembre de 2024