Write Amplification: cos'è e quali effetti ha sugli SSD

giovedì 31 gennaio 2019 di Michael Nuncic

In un articolo pubblicato su questo blog, abbiamo parlato della Garbage Collection e del comando Trim, dei metodi utilizzati per identificare e contrassegnare i dati che non vengono più utilizzati e possono quindi essere sovrascritti in un SSD basato su Flash NAND.

Questi due metodi cercano di risolvere un problema intrinseco di ogni SSD costituito da chip Flash NAND: la Write Amplification (WA) e il Write Amplication Factor (WAF).

Come abbiamo appreso dai post precedenti del nostro blog, una delle differenze principali tra un disco rigido magnetico "normale" (HDD - Hard Disk Drive) e un disco Solid State Drive (SSD) è il modo in cui essi gestiscono le scritture dei dati. Mentre gli HDD scrivono "semplicemente" i dati in uno spazio vuoto che è disponibile sul piatto, gli SSD cancellano sempre i dati prima di scrivere quelli nuovi sui chip di storage Flash. Ciò significa che, fatta eccezione per gli SSD nuovi in cui non sono stati precedentemente archiviati dei dati e/o sono stati cancellati in sicurezza dal produttore prima della messa in commercio, i chip di storage Flash devono essere ripuliti prima di eventuali scritture.

Questa dinamica non sarebbe un problema, se il processo di cancellazione fosse un'attività semplice, come per esempio la cancellazione di uno spazio di storage con i dati su uno dei chip Flash e la successiva scrittura di nuovi dati. Ma qui il caso è diverso, perché quando su un SSD si cancellano i dati e se ne scrivono di nuovi, è necessario che dati e metadati siano riscritti diverse volte. Questo perché lo storage Flash è composto da pagine e blocchi di dati.

I blocchi sono costituiti da diverse pagine e una pagina è in genere costituita da diversi chip di storage.

La sfida principale è data dal fatto che le celle Flash possono essere cancellate solo in base ai blocchi ed essere scritte in base alle pagine. Per scrivere dei nuovi dati su una pagina, essa deve essere del tutto vuota fisicamente. Altrimenti, occorre cancellare il contenuto della pagina. Tuttavia, non è possibile cancellare una singola pagina, ma tutte le pagine che fanno parte di un blocco. Poiché le dimensioni del blocco di un SSD sono fisse, per esempio 512 kb, 1024 kb fino a 4 MB, un blocco che contiene solo una pagina con 4k di dati, occuperà comunque l'intero spazio storage di 512 kb.

Ma non è finita!

Quando viene modificato un qualsiasi dato nel disco SSD, il blocco corrispondente deve prima essere contrassegnato per la cancellazione, in preparazione alla scrittura di nuovi dati. Quindi, l'algoritmo leggi/modifica/scrivi nel controller SSD determinerà il blocco in cui scrivere, recupererà eventuali dati in esso contenuti, contrassegnerà il blocco per la cancellazione, ridistribuirà i vecchi dati e depositerà i nuovi dati nel vecchio blocco.

Recuperare e ridistribuire i nuovi dati implica che i vecchi dati saranno copiati in una nuova posizione; ma implica anche che una copia e i calcoli di altri metadati complessi si aggiungeranno alla quantità totale dei dati.

Il risultato è che cancellando i dati da un SSD, vengono creati più dati di quanti ne vengono distrutti!

Dato che i chip Flash NAND prevedono solo un numero finito di cicli di lettura/scrittura, la Write Amplification (WA) comporta una minore aspettativa di vita dei dispositivi, oltre che una inferiore velocità.

La Write Amplification Factor (WAF)

Come descritto in precedenza, gli SSD consumer erano soliti avere una WAF elevata, perché quando, per esempio, si scrive un nuovo file di 4 kb, il disco SSD potrebbe scrivere 40 kb di dati. Questo perché il controller SSD cerca di unire i dati di diversi blocchi parzialmente utilizzati per liberare delle pagine, in modo che vi possano essere scritti dei nuovi dati.  In questo caso parliamo di un valore di Write Amplification Factor pari a 10. Se per esempio sono stati inviati 2 GB di dati dal computer host al disco SSD e sono stati scritti 4 GB sul disco SSD, il valore WAF è di 2.

Ecco la spiegazione fornita dal nostro partner Kingston Technology su come viene calcolato il valore WAF:

 

Come contrastare la Write Amplification

Puoi contrastare gli effetti della Write Amplification mantenendo dello spazio libero ottimizzato sul disco SSD.

È possibile, in effetti, ridurre al minimo la Write Amplification abilitatando il comando TRIM, a patto che le operazioni TRIM per ripulire lo spazio inutilizzato del disco siano effettuate in background dal sistema operativo.

Comunque, e questo implica il maggior rischio, quando il comando TRIM è attivo e lo spazio di storage viene sovrascritto non c'è possibilità di recuperare i dati originali salvati in precedenza.

Ciononostante, in caso di perdita di dati importanti, non bisogna arrendersi immediatamente, ma affidarsi agli specialisti di data recovery. In alcuni casi, essi possono recuperare dati "nascosti" nel disco o agire dove il comando TRIM non è stato eseguito correttamente.

Servizi di recupero dati

Hai perso i tuoi dati? Contattaci subito per recuperarli.


Cosa pensano i clienti dei nostri servizi: