web-dev-qa-db-ja.com

ディスクがほぼ満杯の場合、SSDはどのようにしてウェアレベリングを実現しますか?

私はこれを理解しようとしています。 256GBのSSDがあり、そのうち180GBはすでに永続ファイル(OS、インストールされているプログラムなど)で占められているとします。残りの70GB程度は、新しいファイルが作成および削除されます。これは、その部分のNANDチップが、ファイルが変更されていない領域よりも早く摩耗することを意味しませんか?または、SSDは時間の経過とともに変化しないファイルも移動しますか?

5
dotNET

SSDは、時間の経過とともに変化しないファイルを移動します。

まず、オペレーティングシステムに公開されている仮想セクター(ファイルシステムクラスターと混同しないでください)があり、次にフラッシュチップに物理セルがあります。フラッシュコントローラーがセルを割り当て/割り当て解除すると、それに応じて仮想セクターが再マップされ、オペレーティングシステムに対して透過的になります(同じ仮想セクターがフラッシュセルの異なる場所に異なる時間に表示される場合があります)。

第二に、SSDには実際には空き領域として使用できないスペアセルがあります。これらは、ウェアレベリング、ライトアンプリフィケーションの軽減、およびデッドセルの再マッピングを目的として特別に確保されています。そうすれば、SSDにゼロバイトの空き領域がある場合でも、フラッシュコントローラーにはウェアレベリングを実行する余地があります。

100%フルの500 GBSSDがあるとします。ここで、そのデータの499 GBが変更されないファイルであるが、常に変更される1GBのファイルがあるとします。その1GBファイルを削除してから、別の1GBファイルにコピーすると、フラッシュコントローラーはその時点で次の2つのいずれかを実行します。

  • 新しいデータのすべてまたは一部がスペアセルに割り当てられ、古いセルはまだトリミングされた状態のままになります。
  • 変更されない499GBのデータ内の1GB相当のセルは、他の使用可能なセルにコピーされます。その後、古いセルが消去され、新しいデータで再書き込みされます。

どちらの場合も、オペレーティングシステムに表示される仮想セクターは変更されないため、OSは実際に何が起こっているかを認識しません。フラッシュコントローラは、メモリセルの仮想セクターへのマッピングテーブルを保持します。

ウェアレベリングアルゴリズムの人生の目標は、データを移動してそれを達成する必要がある場合でも、すべてのセルを均等に実行しようとすることです。このプロセスはドライブの速度を低下させ、(皮肉なことに)フラッシュセルに追加の摩耗を引き起こします。これは ライトアンプリフィケーション と呼ばれ、SSDの重大な問題です。 SSDで採用されている実際のウェアレベリングアルゴリズムと、それらが書き込み増幅を軽減する方法は、SSDメーカー間の独自の秘密であるため、これはプロセスの一般的な説明にすぎません。

4
Wes Sayeed