Che cos'è esattamente TRIM?


14

Dalla pagina Wikipedia di TRIM ho l'impressione che sia stato introdotto TRIM per abbassare le scritture su un SSD, ma lettera il file system prendendo in considerazione i blocchi inutilizzati.

Se questo è corretto, significa che gli SSD che non usano TRIM scrivono zero sui blocchi, quando un file viene eliminato, per far sapere all'SSD che i blocchi sono liberi?

Leggendo questo

I file system all'interno di un guest tendono a non riutilizzare i blocchi, il che significa che anche se un file system rimane piccolo rispetto alla dimensione dell'immagine virtuale, la dimensione effettiva dell'immagine tende a crescere fino a raggiungere la dimensione massima.

mi porta a pensare, gli SSD non sovrascrivono con zeri? O i file system negli ospiti sono qualcosa di completamente diverso?

Risposte:


16

I dispositivi di memoria flash (utilizzati per gli attuali SSD) non possono scrivere dati arbitrari in qualsiasi momento; prima di scrivere su una cella (in genere 4KB) deve essere prima cancellato. Sfortunatamente, l'operazione di cancellazione è molto lenta; ecco perché i dispositivi flash erano molto più lenti delle unità magnetiche, nonostante non avessero parti mobili.

Gli SSD moderni nascondono il tempo di cancellazione mantenendo un set di celle pre-cancellate, ciò significa che un comando di scrittura non sovrascriverà immediatamente i dati esistenti, invece il controller dell'unità preleva una cella cancellata, la rimappa e scrive con i nuovi dati. Questo (e diverse strategie cache pensate per la scrittura) danno all'unità un enorme aumento di velocità, superando notevolmente le unità magnetiche.

Per garantire che ci sia sempre un set di celle pre-registrate, ogni volta che una cella non è necessaria, l'unità la pianifica per la cancellazione dello sfondo e si aggiunge all'elenco delle celle delle commissioni.

Sfortunatamente, i filesystem esistenti non si sono preoccupati di dire all'unità quando un settore era libero. Dopotutto, il disco doveva essere solo un muto archivio di bit. L'eliminazione di un file o di qualsiasi altra operazione che contrassegna un settore come libero dal punto di vista del file system era solo un segno su una struttura di metadati. Il settore stesso non è stato toccato. Anche se il filesystem lo cancellava scrivendo degli zeri su di esso, l'unità non poteva sapere se questo significava che il settore era libero o se l'utente voleva alcuni zeri su un file. Dopo un po ', l'unità non avrebbe alcuna cella libera da cancellare prima di scrivere; e le prestazioni sono peggiorate tragicamente.

L'istruzione TRIM è stata rapidamente redatta e adottata dalla maggior parte dei filesystem attualmente mantenuti. È un semplice segnale che il filesystem usa per dire all'unità che il contenuto di un settore non è più importante. Non appena tutti i settori mappati su una cella sono liberi, il controller SSD ripristina la mappatura della cella e la pianifica per la cancellazione. Se l'host legge questi settori, l'SSD non si preoccuperebbe di recuperare da Flash, rispondendo immediatamente con zeri; ma l'effetto più importante è quello di mantenere sempre aggiornato l'elenco delle celle preeseguite.

Tuttavia, la maggior parte degli SSD espone una capacità inferiore rispetto alla dimensione fisica della memoria Flash, a volte fino al 75%. Ciò gli consente di mantenere alcune celle inutilizzate anche su un sistema completo al 100%, in modo che la (sovrascrittura) dei settori utilizzati sia ancora veloce.


Interessante. Conoscevo concettualmente il funzionamento di TRIM, ma mi chiedevo quanto spazio avrebbe esposto un SSD. Ora voglio vedere se quei dati sono pubblicati ovunque per determinati SSD ...
Michael B

La quantità delle celle riservate viene generalmente pubblicata. Di solito è tra il 5 e il 10% per unità consumer più economiche, il 20% + per unità consumer di fascia alta. Le unità Flash Enterprise (EFD) tendono ad avere una riserva dal 100% al 400%; quindi perché sono così dannatamente costosi, mantengono questa enorme riserva perché la scrittura in una posizione di memoria flash distrugge le posizioni un po 'ogni volta. Scrivere applicazioni pesanti, in genere presenti negli ambienti server, ucciderebbe rapidamente la maggior parte degli SSD consumer.
Chris S,

"scrittura su una cella (in genere 4KB)" - Stai abusando del concetto di "cella" rispetto all'uso convenzionale per la memoria flash. Una "cella" flash memorizza solo uno (o pochi) bit. L'uso di "cell" sembra corrispondere al blocco molto più grande (cancella) (potrebbe essere 128K), come tipicamente descritto nei fogli dati IC flash. L'organizzazione dei dati è cella <settore <pagina <blocco <piano <chip.
segatura

8

TRIM è stato introdotto in modo che un sistema operativo (il file system all'interno del sistema operativo) potesse comunicare con un supporto di archiviazione ATA che un settore non è più utilizzato dal file system. Questo non ha nulla a che fare con la scrittura sul disco.

TRIM non garantisce che il settore sia azzerato sui media. Garantisce quando il file system richiede una lettura da quel settore che vengono restituiti zero (si noti che poiché l'SSD sa che il settore dovrebbe essere zero, li restituirà indipendentemente da ciò che è effettivamente archiviato nel supporto; potrebbe essere possibile ripristinare i dati da un disco che sono stati semplicemente ritagliati, sebbene in genere gli SSD cancellino effettivamente la memoria).

I file system tendono a distribuire le loro scritture (per una varietà di ragioni, dal tentativo di livellare la scrittura, alla garbage collection, alla randomizzazione delle posizioni di archiviazione e altro). Per questo motivo, se il supporto non è a conoscenza di quali settori non utilizza il file system, la semplice scrittura di zero non significa necessariamente che il settore non sia in uso, quindi deve assumere infine che l'intero disco sia in uso.

Per gli SSD questo presupposto significa che un settore deve essere cancellato al momento della scrittura, diminuendo la velocità di scrittura; invece di cancellare la posizione di memoria nel momento in cui il file viene eliminato. Analogamente per i file del disco virtuale nei sistemi di virtualizzazione, il file del disco dinamico includerà infine l'intera capacità del disco virtuale. Se il sistema di virtualizzazione implementa TRIM, allora saprà quando un settore non viene più utilizzato e quindi il disco dinamico non deve tenere traccia di quella posizione.


Ciò significa che è stato introdotto TRIM per far sapere all'SSD quali settori sono utilizzati, in modo da poter mettere i nuovi dati su settori che sono stati utilizzati meno?
Sandra,

1
Gli SSD usano semplicemente TRIM per sapere quando un settore non è più necessario. Non garantisce il livellamento della scrittura o altre funzionalità che il supporto di memorizzazione può implementare. Detto questo, la maggior parte degli SSD lo usano per il livellamento della scrittura, la garbage collection (nei supporti flash, la cancellazione di settori inutilizzati) e la conservazione di elenchi di settori gratuiti per migliorare le prestazioni di scrittura).
Chris S,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.