Apple Core Storage: Estructura y desafíos posibles de la recuperación de datos

Durante mucho tiempo, Apple ha tenido muy poco que ofrecer en cuanto a la flexibilidad de almacenamiento, especialmente al usuario promedio de Mac que carece de experiencia técnica o que simplemente no quiere profundizarse en los conceptos complejos de RAID para beneficiarse de la tecnología AppleRAID. La introducción de Core Storage en 2011, aunque pasó casi desapercibida para el público general, abrió el camino a algunas funciones importantes de gestión de almacenamiento, la implementación de las cuales se hizo posible sólo gracias a esta tecnología. Sin embargo, junto a los beneficios considerables para las computadoras Macintosh, la tecnología Core Storage también tiene algunas desventajas con respecto a la seguridad de datos almacenados y las posibilidades de recuperarlos.


Conceptos básicos de Apple Core Storage

Utilizada por primera vez en macOS 10.7 Lion, la tecnología Core Storage ha sido uno de los componentes clave del sistema de administración de datos de Mac hasta macOS 10.13 High Sierra. En esencia, se trata de la implementación patentada de Apple de un administrador de volúmenes lógicos: al igual que LVM de Linux, sirve de una capa de virtualización entre el esquema de partición aplicado al almacenamiento físico y los sistemas de archivos en los que están formateados sus volúmenes.

En el modelo básico, un esquema de partición da algunos parámetros lógicos al disco físico y establece límites fijos entre las "regiones" en él (las llamadas particiones) para que el sistema operativo pueda administrar la información en cada una de las regiones de forma independiente y presentar las últimas al usuario como discos lógicos separados. Después de eso, en cada una de las particiones se puede crear un sistema de archivos las estructuras del cual definen la forma en que se organizan realmente los fragmentos de datos.

En comparación con los esquemas de partición convencionales, un administrador de volúmenes lógicos permite establecer una relación mucho más flexible entre discos y volúmenes: el sistema puede asignar dinámicamente las particiones, mientras que un solo volumen puede abarcar más de un dispositivo de almacenamiento físico.

Inicialmente, Core Storage sirvió como base para FileVault 2, la tecnología de cifrado de disco completo introducida en las Mac de la versión Lion. En Mountain Lion, gracias a que un solo volumen de Core Storage puede superar la capacidad de una sola unidad física, el uso de la tecnología se expandió a la configuración de Fusion Drive, una combinación de una unidad de disco duro y una de estado sólido que se trata como un solo elemento lógico.

Sugerencia: Se puede encontrar más información sobre la tecnología Fusion Drive en el artículo correspondiente.

¿Cómo se organizan los datos en Core Storage?

La estructura de Core Storage es similar a la del LVM de Linux: también consta de cuatro niveles principales, aunque no coinciden completamente: uno o varios volúmenes físicos se combinan en un Grupo de volúmenes lógicos en el que se crean Volúmenes lógicos, y que puede exportar una o varias Familias de volúmenes:

  • al igual que en el LVM de Linux, un Volumen físico (Physical Volume o PV en inglés) es un elemento básico, generalmente, un dispositivo de almacenamiento físico real (por ejemplo, una unidad de disco duro o de estado sólido), pero también puede ser una imagen de disco o un conjunto de discos que forman una matriz RAID. Con todo, para convertirse en un Volumen físico, un almacenamiento se debe particionar con el esquema de partición GPT (GUID Partition Table o Tabla de particiones GUID) y obtener su propio identificador llamado GUID. Además, cada uno de los Volúmenes físicos almacena cierta información sobre el Grupo de volúmenes lógicos al que pertenece;

  • un Grupo de volúmenes lógicos (Logical Volume Group o LVG en inglés) es un equivalente de un Grupo de volúmenes en LVM y abarca uno o más Volúmenes físicos que forman un solo grupo de almacenamiento (pool) para Volúmenes lógicos. Por lo general, se configura un solo Volumen lógico cuya capacidad es igual a la suma de las capacidades de todos los Volúmenes físicos;

  • un Volumen lógico (LV o Logical Volume en inglés) es un dispositivo de almacenamiento virtual dentro de un Grupo de volúmenes lógicos que obtiene un sistema de archivos (HFS+) y se monta. En un Volumen lógico, los datos se organizan al igual que en cualquier volumen regular para que se pueda acceder a ellos y leerlos fácilmente.

  • una Familia de volúmenes lógicos (Logical Volume Family o LVF en inglés) es un nuevo concepto introducido por Apple, en esta familia se almacenan varios metadatos relacionados con los Volúmenes lógicos de un Grupo de volúmenes lógicos junto con un conjunto de propiedades con respecto a su cifrado. Todas las propiedades especificadas son heredadas por cada uno de los Volúmenes lógicos.

Debido a que puede llevar a cabo las operaciones de asignación de almacenamiento en segundo plano, Core Storage se utiliza para facilitar el proceso de cifrado de disco realizado por FileVault 2. Anteriormente, FileVault almacenaba un sistema de archivos cifrado en archivos normales, pero la tecnología basada en archivos estaba lejos de ser perfecta, especialmente cuando se necesitaba cifrar un volumen completo. Core Storage permite cifrar los datos de un volumen al nivel de bloques: crea Volúmenes lógicos para los datos del usuario y del sistema cifrados y luego agrega o quita bloques de la partición cifrada. De esta forma, cuando se desbloquea un volumen cifrado, se crea un nuevo Volumen lógico que contiene el sistema de archivos cifrado completo y el espacio no asignado como una secuencia de bloques. La configuración típica de FileVault 2 se ve como:

  • /dev/disk0 – un sistema de almacenamiento físico con varios volúmenes;

  • /dev/disk0s3 – un Volumen físico en disk0s3, cuyo contenido está cifrado y el volumen está incluido en el Grupo de volúmenes lógicos de Core Storage;

  • /dev/disk1 – un Volumen lógico en un Grupo de volúmenes lógicos que es el punto de inicio para descifrar el contenido de disk0s3.

En segundo lugar, Core Storage se ha convertido en el principal mecanismo que ayuda a automatizar el proceso de distribución de datos entre los dos componentes de Fusion Drive, que suele tener la siguiente estructura:

  • dev/disk0 – una unidad de estado sólido física que forma parte del Grupo de volúmenes lógicos de Core Storage;

  • dev/disk1 – una unidad de disco duro física incluida en el Grupo de volúmenes lógicos de Core Storage;

  • dev/disk2 – un Volumen lógico que consta de disk0 y disk1.

En esta configuración, disk0 está configurado como el dispositivo principal en un Grupo de volúmenes lógicos, por lo que el sistema le da prioridad al almacenar archivos, de manera que los usados con frecuencia se mueven en bloques de 128KB al almacenamiento SSD más rápido y viceversa. La migración de datos se realiza mediante cuatro llamadas principales de Core Storage: RdChunkCS, WrChunkCS, WrBgMigCS y RdBgMigrCs. Como resultado, el usuario obtiene un sistema optimizado en el que se combinan el rendimiento de la memoria flash y la capacidad de la magnética.

Ventajas y desventajas de Core Storage

Core Storage es un formato de volumen confiable y de alto rendimiento. La tecnología sirve como base para Fusion Drive y su migración de datos inteligente, sin mencionar las transformaciones dinámicas necesarias para la implementación del cifrado de disco FileVault 2. Aún así, la tecnología tiene unas desventajas importantes que se debe tener en cuenta:

  • a diferencia del LVM de Linux, Core Storage no soporta el aprovisionamiento ligero (thin provisioning en inglés);

  • la expansión de capacidad "sobre la marcha" no está disponible en Core Storage, al contrario del LVM, por lo que es imposible expandir el grupo de almacenamiento (pool) a medida que crece el almacenamiento. De verdad, el comando diskutil permite cambiar el tamaño de los grupos y volúmenes de Core Storage, pero no está realmente bien documentado y conlleva un riesgo inherente de pérdida total de datos;

  • Disk Utility no permite modificar la estructura de Core Storage: no se puede crear o eliminar Volúmenes lógicos, ni ver Grupos o Familias sin usar la Terminal;

  • Core Storage no es compatible con el nuevo sistema de archivos APFS de Apple: después de la instalación de macOS High Sierra o uno de una versión más nueva (macOS Mojave para Fusion Drive), el Grupo de volúmenes lógicos se convertirá en un contenedor especial de APFS;

  • la tecnología no ofrece ninguna opción de tolerancia a fallas. En adición, cada unidad que pertenece a Core Storage es parte de un todo único y no se puede acceder por separado en caso de que uno de los discos-componentes se desconecte o falle. Pues, todos los datos que se almacenan en el sistema defectuoso inevitablemente se pierden.

Posibilidad de recuperar datos

Para verificar si las unidades problemáticas son componentes de Core Storage, se puede examinar los contenidos hexadecimales de la partición más grande de cada una de ellas: el "número firma" 0x4353 debe estar presente en la posición 0x58.

Todos los datos de usuario que se almacenan en Core Storage se distribuyen entre sus discos-componentes. Además, se necesitan los metadatos cifrados especiales al final de cada almacenamiento para su interpretación correcta. Por lo tanto, la presencia de todos los componentes es absolutamente obligatoria para la recuperación de datos: la falla total de al menos uno de ellos conduce a la pérdida irreversible de datos. Asimismo, el daño severo de los metadatos cifrados o el GUID del almacenamiento hace que sea imposible obtener incluso los archivos intactos. Entre otros problemas potenciales cabe resaltar:

Pérdida de la tabla de particiones en uno de los discos

En este caso, el almacenamiento se puede abrir al definir manualmente todas las particiones: hay que especificar correctamente el sector inicial y el tamaño de la partición en sectores.

Problemas relacionados con el cifrado del almacenamiento

Cuando el cifrado de disco completo se habilita en Mac, se genera una clave de cifrado especial que se guarda en el área de metadatos o en un archivo especial en la partición de configuración del sistema llamado EncryptedRoot.pllist.wipekey. En el caso de que el área de metadatos se corrompa o EncryptedRoot.pllist.wipekey se vuelva inaccesible, desafortunadamente, los datos no se pueden descifrar y su recuperación está más allá de los límites de lo posible.

En otros casos, UFS Explorer reconoce los metadatos de Core Storage y puede ensamblar el almacenamiento y luego escanearlo. Si usted necesita recuperar los datos de un volumen de Core Storage, por favor, consulte las instrucciones respectivas.

Para descubrir otras tecnologías utilizadas para almacenar y administrar datos, consulte la sección de tecnologías de almacenamiento.

Última actualización: el 31 de agosto de 2022