Cómo funciona un SSD: NAND Flash, controlador y wear leveling
Los SSD han reemplazado a los discos duros mecánicos en la mayoría de los ordenadores modernos, pero su funcionamiento interno es radicalmente diferente al de un HDD. Entender cómo funciona la memoria NAND Flash, qué hace el controlador y por qué el wear leveling es necesario es clave para comprender tanto el rendimiento como los modos de fallo, y las dificultades especiales que presentan para la recuperación de datos.
NAND Flash: la memoria que no olvida (hasta que se rompe)
La memoria NAND Flash es una tecnología de almacenamiento no volátil basada en transistores de puerta flotante (floating gate transistors) o, en generaciones más recientes, celdas de trampa de carga (charge trap flash). La característica fundamental es que puede almacenar información sin necesidad de alimentación eléctrica.
La capacidad de almacenamiento por celda determina el tipo de NAND, y este tipo afecta directamente a la fiabilidad, la velocidad y la durabilidad:
SLC (Single Level Cell): 1 bit por celda
Una celda SLC almacena un único bit (cargada o descargada). Esto permite distinguir fácilmente entre los dos estados, lo que se traduce en máxima fiabilidad (hasta 100.000 ciclos de escritura/borrado, P/E cycles) y máxima velocidad. El inconveniente obvio es el coste: necesitas el doble de celdas para la misma capacidad que MLC. Hoy se usa principalmente en SSD industriales y de misión crítica.
MLC (Multi Level Cell): 2 bits por celda
Almacena dos bits por celda distinguiendo cuatro niveles de carga. Ofrece un buen equilibrio entre durabilidad (3.000 a 10.000 ciclos P/E), velocidad y coste. Fue el estándar en SSD de gama alta para consumidores durante años. Los SSD de servidor (DWPD alto) siguen usando MLC o versiones industriales de TLC.
TLC (Triple Level Cell): 3 bits por celda
Ocho niveles de carga por celda. Es el tipo dominante en el mercado de consumo actual: Samsung 870 EVO, WD Blue, Crucial MX500. La durabilidad baja a 1.000-3.000 ciclos P/E. Para compensar, los fabricantes incorporan una caché SLC virtual (SLC caching) que usa parte del espacio TLC como si fuera SLC para las escrituras más frecuentes, luego migra los datos al espacio TLC en momentos de baja actividad.
QLC (Quad Level Cell): 4 bits por celda
Dieciséis niveles de carga. Máxima densidad y mínimo coste por GB (Samsung 870 QVO, WD Blue QLC). La durabilidad cae a 100-1.000 ciclos P/E. Los QLC son adecuados para almacenamiento masivo de lectura frecuente pero escritura moderada. Son los más susceptibles a fallos por desgaste prematuro si se usan intensivamente como discos de sistema.
3D NAND (V-NAND): la solución al límite físico del plano
La reducción de tamaño de celda en 2D llegó a sus límites físicos alrededor de 2013. La solución fue apilar capas de celdas en vertical, creando la NAND tridimensional o V-NAND. Samsung, Micron, Intel y SK Hynix producen NAND con 96, 128, 176 y hasta 238 capas. La 3D NAND permite mayor densidad sin reducir el tamaño de la celda, lo que mejora la fiabilidad respecto a la 2D equivalente.
El controlador: el cerebro que hace posible el SSD
El controlador es el chip más crítico de un SSD. Es un procesador dedicado que ejecuta firmware especializado y gestiona todas las operaciones del disco. Sus funciones principales son:
Wear Leveling (nivelación de desgaste)
Las celdas NAND se degradan con cada ciclo de escritura/borrado. Si el sistema operativo siempre escribiera en las mismas celdas (como ocurre con las mismas posiciones lógicas en un HDD), esas celdas se agotarían rápidamente mientras el resto permanecía sin usar. El wear leveling distribuye las escrituras uniformemente por todas las celdas del SSD, extendiendo su vida útil. Existen dos tipos:
- Wear leveling dinámico: distribuye solo las escrituras activas entre celdas libres.
- Wear leveling estático: también mueve datos fríos (sin modificar) para usar las celdas menos desgastadas, permitiendo que las nuevas escrituras vayan a las celdas más frescas.
Garbage Collection (recolección de basura)
La NAND Flash no puede sobrescribir datos directamente: primero debe borrar el bloque completo (que contiene múltiples páginas) y luego escribir los nuevos datos. Un bloque típico contiene 128 o 256 páginas de 4 o 16 KB. El garbage collection identifica bloques que contienen páginas inválidas (datos borrados a nivel lógico), copia las páginas válidas a bloques limpios y borra el bloque original, dejándolo disponible para nuevas escrituras. Este proceso consume ciclos P/E y puede ralentizar el rendimiento si el disco está muy lleno.
ECC (Error Correction Code)
Cuantos más bits almacena una celda, más difícil es distinguir entre niveles de carga y más errores de lectura se producen. El controlador aplica algoritmos de corrección de errores (BCH, LDPC) para detectar y corregir errores de bits antes de entregar los datos al sistema. Los SSD modernos pueden corregir errores de hasta 40-100 bits por kilobyte de datos leídos. Cuando el número de errores supera la capacidad de corrección del ECC, el bloque se marca como irrecuperable.
FTL (Flash Translation Layer)
La capa de traducción Flash es la pieza de firmware que mapea las direcciones lógicas (LBA, los sectores que ve el sistema operativo) a las direcciones físicas reales en los chips NAND. Este mapeo es dinámico y cambia constantemente debido al wear leveling. El mapa de traducción se almacena en la DRAM del controlador durante la operación y se persiste periódicamente en la NAND. Si el SSD pierde alimentación en un momento crítico, el mapa puede corromperse, lo que puede hacer que el disco parezca vacío aunque los datos estén físicamente presentes.
TRIM: el comando que hace posible el rendimiento sostenido
En un HDD, cuando el sistema operativo borra un archivo, simplemente marca el espacio como libre en la tabla de sistema de ficheros. El HDD no sabe nada del borrado hasta que el OS escribe nuevos datos en esa posición.
En un SSD, este comportamiento sería catastrófico para el rendimiento: el garbage collection no sabría qué páginas son realmente inválidas y desperdiciaría recursos copiando datos borrados que el OS ya no necesita. El comando TRIM (ATA DATA SET MANAGEMENT en SATA, Deallocate en NVMe) informa al controlador del SSD de qué rangos de LBA ya no contienen datos válidos para el sistema operativo. El controlador puede entonces incluir esas páginas en el garbage collection sin necesidad de preservarlas.
La implicación para la recuperación de datos es importante: en un SSD con TRIM habilitado, los datos borrados pueden desaparecer físicamente de la NAND en cuestión de segundos o minutos, sin posibilidad de recuperación. En sistemas Windows modernos, TRIM está habilitado por defecto en todos los SSD que lo soportan.
Over-provisioning: espacio reservado para el controlador
Los fabricantes de SSD reservan una porción del espacio NAND para uso exclusivo del controlador, no visible para el sistema operativo. Este espacio de over-provisioning (típicamente entre el 7% y el 28% de la capacidad total del chip) se usa como pool de bloques limpios para el garbage collection, buffer para el SLC caching y reserva de bloques de repuesto para sustituir bloques defectuosos.
Puedes aumentar el over-provisioning de un SSD dejando entre un 10% y un 20% del espacio sin particionar, lo que mejora el rendimiento sostenido y extiende la vida útil del disco en uso intensivo.
Por qué los SSD fallan de forma diferente a los HDD
Los SSD no tienen partes móviles, lo que elimina los modos de fallo mecánicos (head crash, stiction, fallo del motor). Sin embargo, presentan sus propios patrones de fallo:
- Muerte súbita (sudden death syndrome): a diferencia de un HDD que suele dar señales previas de fallo (sectores defectuosos, ruidos), un SSD puede pasar de funcionar perfectamente a no responder en absoluto sin ningún aviso. El fallo repentino del controlador o la corrupción del FTL pueden hacer que el disco desaparezca completamente del sistema.
- Retención de carga con el tiempo: las celdas NAND pierden carga gradualmente, especialmente a temperaturas elevadas. Un SSD guardado sin alimentación durante años puede perder datos. La JEDEC especifica retención mínima de 1 año a 30°C para SSD de consumidor.
- Fallo de firmware: bugs en el firmware del controlador pueden causar comportamientos erráticos, corrupción del FTL o pérdida del mapeo de direcciones. Actualizar el firmware del SSD puede a veces resolver estos problemas, pero también puede empeorarlos si la actualización falla a mitad.
- Desgaste por escritura excesiva: usar un SSD TLC o QLC como disco de caché de máquina virtual o base de datos de alta transaccionalidad puede agotar los ciclos P/E en meses. Los SSD de consumidor no están diseñados para estas cargas.
Por qué no puedes usar las mismas herramientas de HDD en un SSD
Las herramientas de recuperación diseñadas para HDD asumen que las direcciones lógicas corresponden a posiciones físicas fijas en el disco. En un SSD, la FTL hace que esto sea completamente falso: la misma dirección lógica puede corresponder a diferentes posiciones físicas en cada escritura, y los datos borrados (marcados con TRIM) pueden haberse sobrescrito físicamente aunque no hayan sido sobreescritos lógicamente.
Además, muchos SSD modernos (especialmente en MacBook, algunos portátiles Windows con Bitlocker y todos los modelos con cifrado de hardware) cifran los datos por defecto con claves almacenadas en el propio controlador. Si el controlador falla, la clave se pierde y los datos en los chips NAND son inaccesibles incluso si se extraen físicamente y se leen directamente.
La recuperación de SSD requiere herramientas específicas que comprenden la arquitectura de cada familia de controladores (Samsung, Phison, Silicon Motion, Marvell, Western Digital), pueden leer chips NAND en modo off-the-controller cuando el controlador está dañado, y tienen implementaciones de los principales algoritmos de FTL para reconstruir el mapa de direcciones sin el controlador original.