In che modo SSD raggiunge il livello di usura quando il disco è quasi pieno?


5

Sto cercando di capirlo. Supponiamo di avere un SSD da 256 GB, 180 GB dei quali sono già occupati da file permanenti (sistema operativo, programmi installati, ecc.). I restanti 70 GB circa creano e cancellano nuovi file. Questo non significa che i chip NAND di quella porzione si consumeranno prima dell'area i cui file non sono modificati? Oppure SSD sposta anche i file non modificabili nel corso del tempo?


La risposta breve è che gli SSD spostano continuamente i blocchi e non si preoccupano davvero se i dati sono referenziati attivamente o meno. Considerare che l'eliminazione dei file normalmente rimuove solo il puntatore ai blocchi dal file system, in realtà non cancella i blocchi di dati. Non ho abbastanza tempo per comporre una risposta corretta in questo momento, ma molto probabilmente sarà l'essenza di una risposta anche con riferimenti.
un CVn

Se il tuo sistema operativo utilizza di volta in volta il comando TRIM, cancellerà sicuramente i blocchi di dati dopo aver eliminato un file. Almeno periodicamente. E anche se non lo fa: i blocchi devono essere cancellati la prossima volta che vuoi scriverci.
Fiammato il

Allo stesso modo lo fa sempre solo con le celle che non sono contrassegnate come contenenti file dal file system.
Ramhound,

Direi che la risposta corretta è "dipende" ... principalmente dall'SSD, o più precisamente dal suo controller e firmware. Gli algoritmi di wearleveling differiranno a seconda del silicio e dei diversi produttori.
Fox,

Risposte:


4

L'SSD sposta i file non modificabili nel corso del tempo.

Prima di tutto, hai i settori virtuali che sono esposti al sistema operativo (da non confondere con i cluster di file system) e quindi hai le celle fisiche nei chip flash. Quando il controller flash alloca / dealloca le celle, rimappa i settori virtuali di conseguenza, quindi è trasparente per il sistema operativo (gli stessi settori virtuali possono apparire in posizioni diverse nelle celle flash in momenti diversi).

In secondo luogo, gli SSD hanno celle di riserva che non sono utilizzabili come spazio libero. Sono specificamente messi da parte allo scopo di livellare l'usura, mitigare l'amplificazione della scrittura e rimappare le cellule morte. In questo modo, anche se l'SSD ha zero byte di spazio libero su di esso, il controller flash ha ancora spazio per eseguire il livellamento dell'usura.

Supponiamo che tu abbia un SSD da 500 GB pieno al 100%. Ora diciamo che 499 GB di quei dati sono un file che non cambia mai, ma hai un file da 1 GB che cambia continuamente. Se elimini quel file da 1 GB e copi su un altro file da 1 GB, il controller flash eseguirà una delle due operazioni in quel momento:

  • Tutti o alcuni dei nuovi dati verranno allocati in celle di riserva, lasciando le vecchie celle in uno stato ancora tagliato.
  • 1 GB di celle entro i 499 GB di dati che non cambiano mai verranno copiati in altre celle disponibili. Le vecchie celle verranno quindi cancellate e riscritte con i nuovi dati.

In entrambi i casi, i settori virtuali presentati al sistema operativo non cambiano mai, quindi il sistema operativo non è a conoscenza di ciò che sta realmente accadendo. Il controller flash mantiene una tabella di mappatura delle celle di memoria su settori virtuali.

L'obiettivo dell'algoritmo di livellamento dell'usura nella vita è quello di provare a esercitare tutte le cellule in modo uniforme, anche se ciò comporta lo spostamento dei dati per raggiungerlo. Questo processo rallenta l'unità e provoca (ironicamente) un'ulteriore usura delle celle flash. Si chiama amplificazione della scrittura ed è un problema significativo con gli SSD. Gli attuali algoritmi di livellamento dell'usura impiegati dagli SSD e il modo in cui mitigano l'amplificazione della scrittura sono segreti commerciali proprietari tra i produttori di SSD, quindi questo è solo un descrittore generale del processo.


"L'SSD sposta i file non modificabili nel corso del tempo." O almeno dovrebbero , ma dipende ovviamente dal controller. Se gli SSD spostassero sempre i dati obsoleti (come diciamo il sistema operativo installato e i file di programma), non avremmo mai riscontrato il problema del rallentamento di Samsung 840 Evo.
Karan,

Non necessariamente. Dipende dal controller, ma non sapremo mai i dettagli su come il firmware prende le sue decisioni di riallocazione. Se l'unità trascorre la maggior parte del tempo a fare letture (come nel caso di un'unità OS), è necessario un livello di usura molto ridotto. Presumibilmente, il firmware conosce il conteggio dei cicli di ogni cella ed è logico supporre che il firmware preferisca utilizzare una cella "nuova" piuttosto che una usata, ma ridotta. Per un SSD di grandi dimensioni, è concepibile che potrebbero trascorrere anni prima che si verifichi una riallocazione, a seconda dell'uso ovviamente.
Wes Sayeed,

Il problema 840 EVO è stato causato da un bug del firmware. Come abbiamo scoperto, la deriva della tensione nel tempo fa sì che le celle si indeboliscano e devono essere aggiornate di tanto in tanto indipendentemente dal fatto che ci siano dati da scrivere o meno. Il problema di Samsung era che l'algoritmo di livellamento dell'usura non stava riallocando le celle quando era necessario, probabilmente perché la deriva della tensione stava avvenendo più velocemente di quanto Samsung avesse previsto. Naturalmente, questa è un'ipotesi, perché Samsung non sta entrando nei dettagli grintosi del bug e influisce solo su quell'unità modello (altre unità basate su TLC non sono interessate).
Wes Sayeed,
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.