現代のSSDのフラッシュは、通常、次のように構造化されています(2Kまたは4Kの書き込み可能なサイズと256Kの消去ブロック)。以前にページを消去することなくページを上書きすることはできません。ただし、消去操作は完全消去ブロックでのみ機能します。しかし、各消去操作は(他のIO操作とは対照的に)長い時間を要し、ゆっくりとSSDを消耗させる。
FTL(Flash Transition Layer)と呼ばれるSSDコントローラのコンポーネントは、フラッシュセマンティクスでHDDのようなブロックデバイスの錯覚を提供するために使用されます。 SSDはHDDのように使うことができますが、ストレージの知識を取り入れたソフトウェアIO設計が最も効果的です(長時間実行するには)。
しかし、SSDコントローラのロジックは通常わかりません。可能であれば、IOパターンとファイルサイズを完全消去ブロック(またはその倍数)に揃えることになります。これは、SSDとSSDの違いです。したがって、256Kのファイルを書き込むと、内部断片化のない完全消去ブロックが使用されます。 64Kのような小さなファイルは、その一部だけを使用します。残りのブロックにデータを書き込むと、リード・モディファイ・ライト・サイクルが発生する可能性があります。つまり、ブロック全体が読み込まれ、変更され、別の場所に書き込まれます。非常に高価です。
SSDが空の場合(コントローラに十分な未使用ブロックがあるため)は問題ありませんが、SSDがいっぱいであり、頻繁に使用されている場合は問題になる可能性があります。または、IOパターンが通常は非常に小さい書き込みであり、SSDが断片化された場合そのため、FTLは連続したフリー・フラッシュ・ページを見つけるのに時間がかかります。
システム管理者は、ファイルシステムをSSD消去ブロック境界に合わせる必要があります。これは本当に重要です。
実際には断片化はssdドライブには関係ありませんが、実際にはssdドライブの断片化を解除することをお勧めします。 –
@AndersK、aha、thansk。 –
これは、ソフトウェアのストレージアクセスパターンを設計する方法の質問です。それを閉じないでください。 – dmeister