TRIMとは正確には何ですか?


14

TRIMのWikipediaページから、SSDへの書き込みを減らすためにTRIMが導入されたという印象を受けますが、どのブロックが使用されていないかをファイルシステムに通知します。

それが正しい場合、つまり、TRIMを使用しないSSDは、ファイルが削除されたときにブロックにゼロを書き込み、ブロックに空きがあることをSSDに知らせるということですか?

これを読んで

ゲスト内のファイルシステムはブロックを再利用しない傾向があります。つまり、ファイルシステムが仮想イメージサイズに対して小さいままであっても、実際のイメージサイズは最大サイズに達するまで大きくなる傾向があります。

SSDがゼロで上書きされないかと思いますか?それとも、ゲストのファイルシステムはまったく違うものですか?

回答:


16

フラッシュメモリデバイス(今日のSSDに使用されているもの)は、いつでも任意のデータを書き込むことはできません。セル(通常は4KB)に書き込む前に、最初に消去する必要があります。残念ながら、消去操作は非常に遅いです。そのため、フラッシュデバイスは、可動部分がないにもかかわらず、磁気ドライブよりも非常に低速でした。

最新のSSDは、事前に消去されたセルのセットを維持することで消去時間を隠します。つまり、書き込みコマンドが既存のデータをすぐに上書きするのではなく、代わりにドライブのコントローラーが消去されたセルを選択して再マッピングし、新しいデータで書き込みます。それ(といくつかの書き込みと思ったキャッシュ方式)のドライブになります巨大大幅磁気ドライブを抜いて、スピードアップを。

事前消去されたセルのセットが常に存在することを保証するために、セルが不要なときはいつでも、ドライブはバックグラウンド消去のためにそれをスケジュールし、料金セルのリストに追加します。

残念ながら、既存のファイルシステムは、セクターが解放されたことをドライブに通知することを気にしませんでした。結局のところ、このドライブは、ほんの数え切れないほどの単なるリポジトリであるはずでした。ファイルを削除したり、ファイルシステムの観点からセクターをフリーとしてマークする他の操作は、一部のメタデータ構造上のマークにすぎませんでした。セクター自体は変更されていません。ファイルシステムがゼロを上書きしてクリアしたとしても、ドライブはそれがセクターが空いたことを意味するのか、ユーザーがファイルにゼロを必要としていたのかを知ることができませんでした。しばらくすると、ドライブには書き込み前に消去する空きセルがなくなります。そしてパフォーマンスは悲劇的に低下しました。

TRIM命令はすぐに作成され、現在維持されているほとんどのファイルシステムで採用されています。これは、ファイルシステムがドライブに、セクターの内容がもはや重要でないことを伝えるために使用する単純な信号です。セルにマップされたすべてのセクターが解放されるとすぐに、SSDコントローラーはセルのマップを解除し、消去のためにそれをスケジュールします。ホストがこれらのセクターを読み取った場合、SSDはフラッシュからのフェッチを気にせず、すぐにゼロで応答します。しかし、最も重要な効果は、事前に消去されたセルのリストを常に補充することです。

それでも、ほとんどのSSDは、フラッシュメモリの物理サイズよりも小さい容量を、場合によっては75%程度しか公開しません。これにより、100%のフルシステム上でも未使用のセルを保持できるため、使用済みセクターの(上書き)書き込みは依然として高速です。


面白い。私はTRIMがどのように機能するかを概念的に知っていましたが、SSDがどれだけのストレージを公開するのか疑問に思いました。今、私は、データが与えられたのSSDのためにどこにも公開されているかどうかを確認したい...
マイケル・B

通常、予約されたセルの量は公開されます。一般に、安価な一般消費者向けドライブでは5〜10%、高級消費者向けドライブでは20%以上です。エンタープライズフラッシュドライブ(EFD)は、100%から400%の範囲で予約される傾向があります。したがって、なぜ非常に高価なのか、フラッシュメモリの場所に書き込むと毎回場所が少し破壊されるため、この膨大な予備を保持します。通常、サーバー環境で見られる重いアプリケーションを作成すると、ほとんどのコンシューマーSSDがすぐに停止します。
クリスS

「セルへの書き込み(通常4KB)」 - フラッシュメモリの従来の使用法と比較して、「セル」の概念を誤用しています。フラッシュ「セル」には、1つ(または数個)のビットのみが格納されます。「セル」の使用は、フラッシュICデータシートで一般的に説明されているように、はるかに大きな(消去)ブロック(128Kの可能性があります)に対応しているようです。データ構成は、セル<セクター<ページ<ブロック<平面<チップです。
おがくず

8

オペレーティングシステム(OS内のファイルシステム)がATAストレージメディアと通信できるように、TRIMが導入され、セクターがファイルシステムによって使用されなくなっていることがわかりました。これは、ディスクへの書き込みとは関係ありません。

TRIMは、セクターがメディア上でゼロになることを保証しません。ファイルシステムがそのセクターからの読み取りを要求すると、ゼロが返されることを保証します(SSDはセクターがゼロであることを知っているため、メディアに実際に格納されているものに関係なく、セクターが返されることに注意してください。通常、SSDは実際にメモリを消去しますが、単純にトリミングされたディスクからのデータ。

ファイルシステムは、書き込みを分散する傾向があります(さまざまな理由により、書き込みレベリングの試行から、ガベージコレクション、ストレージの場所のランダム化などまで)。このため、メディアがファイルシステムが使用していないセクターを認識しない場合、単にゼロを書き込んでも、セクターが未使用であることを必ずしも意味せず、最終的にディスク全体が使用中であると想定する必要があります。

SSDの場合、この仮定は、書き込み時にセクターを消去する必要があることを意味し、書き込み速度が低下します。ファイルが削除されたときにメモリの場所を消去する代わりに。仮想化システムの仮想ディスクファイルと同様に、ダイナミックディスクファイルには、最終的に仮想ディスクの全容量が含まれます。仮想化システムがTRIMを実装している場合、セクターが使用されなくなったことがわかるため、ダイナミックディスクはその場所を追跡する必要がありません。


つまり、TRIMはどのセクターが使用されているかをSSDに知らせるために導入されたので、使用されていないセクターに新しいデータを配置できるということですか?
サンドラ

1
SSDは、TRIMを使用して、セクターが不要になったことを知るだけです。書き込みレベリングまたはストレージメディアが実装する他の機能を保証するものではありません。ただし、ほとんどのSSDは、書き込みレベリング、ガベージコレクション(フラッシュメディアでの使用、未使用セクターの消去)、および書き込みパフォーマンスの向上のための空きセクターリストの保持に使用します。
クリスS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.