¿Qué es exactamente TRIM?

14

Desde la página de Wikipedia de TRIM, tengo la impresión de que TRIM se introdujo para reducir las escrituras a un SSD, pero le escribí al sistema de archivos en caso de que los bloques no se usen.

Si eso es correcto, ¿eso significa que los SSD que no usan TRIM escriben ceros en los bloques, cuando se elimina un archivo, para que el SSD sepa que los bloques están libres?

Leyendo esto

Los sistemas de archivos dentro de un invitado tienden a no reutilizar bloques, lo que significa que incluso si un sistema de archivos sigue siendo pequeño en relación con el tamaño de la imagen virtual, el tamaño real de la imagen tiende a crecer hasta alcanzar el tamaño máximo.

me lleva a pensar, ¿los SSD no se sobrescriben con ceros? ¿O son los sistemas de archivos en invitados, algo completamente diferente?

Sandra
fuente

Respuestas:

16

Los dispositivos de memoria flash (que se usan para los SSD de hoy) no pueden escribir datos arbitrarios en ningún momento; antes de escribir en una celda (normalmente 4KB) debe borrarse primero. Desafortunadamente, la operación de borrado es muy lenta; Es por eso que los dispositivos flash eran mucho más lentos que las unidades magnéticas, a pesar de no tener partes móviles.

Los SSD modernos ocultan el tiempo de borrado al mantener un conjunto de celdas previamente borradas, lo que significa que un comando de escritura no sobrescribirá inmediatamente los datos existentes, en cambio, el controlador de la unidad elige una celda borrada, la reasigna y escribe con los nuevos datos. Eso (y varias estrategias de caché de pensamiento de escritura) le da al disco una gran velocidad, superando en gran medida las unidades magnéticas.

Para garantizar que siempre haya un conjunto de celdas borradas previamente, cada vez que no se necesita una celda, la unidad la programa para el borrado de fondo y se agrega a la lista de celdas de tarifa.

Desafortunadamente, los sistemas de archivos existentes no se molestaron en decirle a la unidad cuándo un sector estaba libre. Se suponía que la unidad era solo un tonto repositorio de bits, después de todo. Eliminar un archivo o cualquier otra operación que marque un sector como libre desde el punto de vista del sistema de archivos fue solo una marca en alguna estructura de metadatos. El sector en sí no fue tocado. Incluso si el sistema de archivos lo borró escribiendo ceros sobre él, la unidad no podría saber si eso significaba que el sector estaba libre, o si el usuario quería algunos ceros en un archivo. Después de un tiempo, la unidad no tendría ninguna celda libre para borrar antes de escribir; y rendimiento degradado trágicamente.

La instrucción TRIM fue redactada y adoptada rápidamente por la mayoría de los sistemas de archivos que se mantienen actualmente. Es una señal simple que el sistema de archivos usa para decirle a la unidad que el contenido de un sector ya no es importante. Tan pronto como todos los sectores mapeados en una celda estén libres, el controlador SSD desarma la celda y la programa para borrarla. Si el host lee esos sectores, el SSD no se molestaría en buscar desde Flash, inmediatamente responde con ceros; pero el efecto más importante es mantener la lista de celdas borradas siempre que se reponen.

Aún así, la mayoría de los SSD exponen una capacidad menor que el tamaño físico de la memoria Flash, a veces tan bajo como el 75%. Eso le permite mantener algunas celdas no utilizadas, incluso en un sistema 100% completo, de modo que (sobre) escribir sectores usados ​​todavía es rápido.

Javier
fuente
Interesante. Conceptualmente sabía cómo funcionaba TRIM, pero me preguntaba cuánto almacenamiento expondría un SSD. Ahora quiero ver si esos datos se publican en algún lugar para SSD dados ...
Michael B
La cantidad de celdas reservadas generalmente se publica. Comúnmente es entre 5 y 10% para unidades de consumo más baratas, 20% o más para unidades de consumo de gama alta. Las unidades flash empresariales (EFD) tienden a tener una reserva en cualquier lugar del 100% al 400%; por lo tanto, por qué son tan caros, mantienen esta reserva masiva porque escribir en una ubicación de memoria flash destruye las ubicaciones un poco cada vez. Escribir aplicaciones pesadas, que generalmente se encuentran en entornos de servidor, eliminaría rápidamente la mayoría de los SSD de los consumidores.
Chris S
"escritura en una celda (típicamente 4KB)" : está haciendo un mal uso del concepto de "celda" en comparación con el uso convencional de la memoria flash. Una "celda" flash almacena solo uno (o algunos) bit (s). Su uso de "celda" parece corresponder al bloque mucho más grande (borrar) (podría ser 128K), como se describe típicamente en las hojas de datos flash IC. La organización de datos es la celda <sector <página <bloque <plano <chip.
aserrín
8

TRIM se introdujo para que un sistema operativo (el sistema de archivos dentro del sistema operativo) pudiera comunicarse con un medio de almacenamiento ATA de que el sistema de archivos ya no utiliza un sector. Esto no tiene nada que ver con escribir en el disco.

TRIM no garantiza que el sector se ponga a cero en los medios. Si el sistema de archivos solicita una lectura de ese sector, garantiza que se devuelven ceros (tenga en cuenta que debido a que el SSD sabe que el sector debe ser cero, los devolverá independientemente de lo que esté realmente almacenado en los medios; puede ser posible recuperar datos de un disco que simplemente se ha recortado, aunque normalmente los SSD borran la memoria).

Los sistemas de archivos tienden a distribuir sus escrituras (por una variedad de razones, desde intentar nivelar la escritura, recolectar basura, aleatorizar ubicaciones de almacenamiento y más). Debido a esto, si los medios desconocen qué sectores no está utilizando el sistema de archivos, simplemente escribir ceros no significa necesariamente que el sector no esté en uso, entonces debe suponer que eventualmente todo el disco está en uso.

Para los SSD, esta suposición significa que un sector debe borrarse en el momento de la escritura, disminuyendo la velocidad de escritura; en lugar de borrar la ubicación de la memoria en el momento en que se elimina el archivo. De manera similar para los archivos de disco virtual en sistemas de virtualización, el archivo de disco dinámico eventualmente abarcará la capacidad total del disco virtual. Si el sistema de virtualización implementa TRIM, sabrá cuándo ya no se usa un sector y, por lo tanto, el disco dinámico no necesita realizar un seguimiento de esa ubicación.

Chris S
fuente
¿Significa eso que TRIM se introdujo para que el SSD sepa qué sectores se utilizan, para que pueda poner los nuevos datos en sectores que se han usado menos?
Sandra
1
Los SSD simplemente usan TRIM para saber cuándo un sector ya no es necesario. No garantiza la nivelación de escritura ni ninguna otra característica que el medio de almacenamiento pueda implementar. Dicho esto, la mayoría de los SSD lo usan para nivelar la escritura, recolectar basura (en medios flash, borrar sectores no utilizados) y mantener listas de sectores libres para mejorar el rendimiento de escritura).
Chris S