Fonti multiple (ma non molto recenti) suggeriscono che ~ 7% dello spazio SSD dovrebbe essere lasciato non allocato per ridurre l'usura dell'unità. È ancora valido per ora o la situazione è cambiata?
Fonti multiple (ma non molto recenti) suggeriscono che ~ 7% dello spazio SSD dovrebbe essere lasciato non allocato per ridurre l'usura dell'unità. È ancora valido per ora o la situazione è cambiata?
Risposte:
Windows utilizzerà generalmente TRIM. Ciò significa che se si dispone di spazio libero X% sul file system, l'unità visualizzerà X% come non allocato. [*] Over-provisioning non richiesto.
Eccezione: storicamente, gli SSD con controller / firmware Sandforce non hanno ripristinato le prestazioni complete dopo TRIM :(.
La perdita di prestazioni sull'intera unità può essere significativa e molto più di alcune altre unità. Ciò sarà associato con un'elevata amplificazione in scrittura e quindi aumenterà l'usura. Fonte: recensioni Anandtech.
Quindi è necessario se e solo se
Abilitare TRIM su Linux non è troppo difficile e difficilmente noterai alcun problema.
Fortunatamente, molti dei marchi più famosi creano il proprio controller. I controller Sandforce non sono così popolari come una volta. I problemi di Sandforce mi rendono scettico su quello specifico design "intelligente" del controller, che era molto aggressivo ai suoi tempi. Mi scuso con Sandforce ma non ho un riferimento per i modelli esatti di controller interessati.
[*] Ai filesystem piace avere anche molto spazio libero, per ridurre la frammentazione. Quindi TRIM è fantastico, poiché non è necessario aggiungere due margini di sicurezza insieme, lo stesso spazio libero aiuta entrambi :) L'unità può sfruttare lo spazio non allocato per migliorare le prestazioni, oltre a evitare un'usura elevata come dici tu.
I moderni controller SSD sono abbastanza intelligenti che l'overprovisioning non è in genere necessario per l'uso quotidiano. Tuttavia, ci sono ancora situazioni, principalmente negli ambienti di data center, in cui si consiglia l'overprovisioning. Per capire perché l'overprovisioning può essere utile, è necessario capire come funzionano gli SSD.
Gli SSD utilizzano un tipo di memoria chiamata memoria flash NAND . A differenza dei dischi rigidi, le celle NAND contenenti dati non possono essere sovrascritte direttamente; l'unità deve cancellare i dati esistenti prima di poter scrivere nuovi dati. Inoltre, mentre gli SSD scrivono dati in pagine di dimensioni generalmente comprese tra 4 KB e 16 KB, possono solo cancellare i dati in grandi gruppi di pagine chiamati blocchi , in genere da diverse centinaia di KB a diversi MB in SSD moderni.
NAND ha anche una quantità limitata di resistenza in scrittura . Per evitare di riscrivere inutilmente i dati al fine di cancellare i blocchi e per garantire che nessun blocco riceva un numero sproporzionato di scritture , l'unità tenta di distribuire scritture, in particolare piccole scritture casuali, su blocchi diversi. Se le scritture sostituiscono i vecchi dati, le vecchie pagine vengono contrassegnate come non valide. Una volta che tutte le pagine di un blocco sono contrassegnate come non valide, l'unità è libera di cancellarla senza dover riscrivere dati validi.
Se l'unità ha poco o nessun spazio libero rimanente, non sarà in grado di distribuire le scritture. Invece, l'unità dovrà cancellare immediatamente i blocchi mentre le scritture vengono inviate all'unità, riscrivendo in altri blocchi tutti i dati validi all'interno di quei blocchi. Ciò comporta la scrittura nella NAND di più dati di quanti ne vengano inviati all'unità, un fenomeno noto come amplificazione della scrittura . L'amplificazione della scrittura è particolarmente pronunciata con carichi di lavoro casuali ad alta intensità di scrittura, come l' elaborazione di transazioni online (OLTP) , e deve essere ridotta al minimo perché comporta prestazioni e resistenza ridotte.
Per ridurre l'amplificazione in scrittura, la maggior parte dei sistemi moderni supporta un comando chiamato TRIM , che indica all'unità quali blocchi non contengono più dati validi, quindi possono essere cancellati. Ciò è necessario perché altrimenti l'unità dovrebbe supporre che i dati eliminati logicamente dal sistema operativo siano ancora validi, il che ostacola la capacità dell'unità di mantenere uno spazio libero adeguato.
Tuttavia, a volte TRIM non è possibile, ad esempio quando l'unità si trova in un contenitore esterno (la maggior parte dei contenitori non supporta TRIM) o quando l'unità viene utilizzata con un sistema operativo precedente. Inoltre, in presenza di carichi di lavoro a scrittura casuale altamente intensivi, le scritture saranno distribuite su ampie aree della NAND sottostante, il che significa che la riscrittura forzata dei dati e l'amplificazione della scrittura degli operatori possono verificarsi anche se l'unità non è quasi piena.
I primi SSD avevano un firmware molto meno maturo che tendeva a riscrivere i dati molto più spesso del necessario. All'inizio Indilinx e JMicron controllori ( la JMF602 era famoso per la balbuzie e abissale prestazioni di scrittura casuale ) hanno sofferto di altissima write amplification sotto intensi carichi di lavoro casuali-scrittura, a volte superiore a 100x. (Immagina di scrivere oltre 100 MB di dati nella NAND quando stai solo cercando di scrivere 1 MB!). I controller più recenti, con il vantaggio di una maggiore potenza di elaborazione, algoritmi di gestione flash migliorati e supporto TRIM, sono molto più in grado di gestire queste situazioni, sebbene carichi di lavoro con scrittura casuale elevata possano comunque causare un'amplificazione della scrittura superiore a 10 volte nei moderni SSD .
L'overprovisioning fornisce all'unità un'area più ampia di spazio libero per gestire scritture casuali ed evitare la riscrittura forzata dei dati. Tutti gli SSD sono sottoposti a overprovisioning almeno a un livello minimo; alcuni usano solo la differenza tra GB e GiB per fornire circa il 7% di spazio libero per il funzionamento dell'unità, mentre altri hanno un overprovisioning per ottimizzare le prestazioni per le esigenze di applicazioni specifiche. Ad esempio, un SSD aziendale per carichi di lavoro OLTP o di database pesanti in scrittura può avere 512 GiB di NAND fisica ma avere una capacità pubblicizzata di 400 GB, anziché i 480-512 GB tipici degli SSD consumer con quantità simili di NAND.
Se il carico di lavoro è particolarmente impegnativo o se si sta utilizzando l'unità in un ambiente in cui TRIM non è supportato, è possibile effettuare l'overprovisioning manuale dello spazio partizionando l'unità in modo che parte dello spazio sia inutilizzato. Ad esempio, è possibile partizionare un SSD da 512 GB a 400 GB e lasciare lo spazio rimanente non allocato e l'unità utilizzerà lo spazio non allocato come spazio di riserva. Si noti, tuttavia, che questo spazio non allocato deve essere tagliato se è stato scritto in precedenza; in caso contrario, non avrà alcun vantaggio in quanto l'unità vedrà quello spazio occupato. (Le utility di partizionamento dovrebbero essere abbastanza intelligenti da farlo, ma non ne sono sicuro al 100%; vedi "Windows taglia lo spazio non partizionato (non formattato) su un SSD?" )
In ambienti di consumo tipici in cui è supportato TRIM, l'SSD è pieno per meno del 70-80% e non viene continuamente sbattuto con scritture casuali, l'amplificazione in scrittura non è in genere un problema e il sovraprovisioning non è generalmente necessario.
Alla fine, la maggior parte dei consumatori non scriverà quasi abbastanza dati su disco per logorare la NAND entro la vita utile prevista della maggior parte degli SSD, anche con un'elevata amplificazione della scrittura, quindi non è qualcosa su cui perdere sonno.
La dimensione dello spazio aggiuntivo varia notevolmente tra i modelli di unità SSD, ma in generale è ancora vero.