2011-11-18 20 views
1

私は自分のデータベースストアを作成したいと考えていますが、特に「新しい」SSDに照らして、断片化とファイルシステムのオーバーヘッドを避けるためにファイルのサイズはどれくらいですか?SSDの断片化を避けるためのスイートスポットは何ですか?

多くの64kバイトファイルは大丈夫でしょうか?それとも、ファイル(iノード)のエントリを驚くほど速く使っているでしょうか?

巨大なファイルを使用し、64 KB境界内でのみアクセスする方がよいでしょうか?

(私は例として64キロバイトを使用しています。たぶん、4Kバイトはまた、私はとりとめの午前なら、私に教えてくれたり、私は私のポイントを越えた場合、どうなりますか魔法のサイズです。)

+0

実際には断片化はssdドライブには関係ありませんが、実際にはssdドライブの断片化を解除することをお勧めします。 –

+0

@AndersK、aha、thansk。 –

+1

これは、ソフトウェアのストレージアクセスパターンを設計する方法の質問です。それを閉じないでください。 – dmeister

答えて

3

現代の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消去ブロック境界に合わせる必要があります。これは本当に重要です。

2

これは、システムのため、さらに悪化行われます最新のディスクのビューが物理デバイスの実際の位置と一致しません。現代のディスク(SSDと回転ディスクの両方)は、希望するセクターを配置します。

SSDはウェアレベリングセクタ27を備えているため、セクタ28の近くにはない可能性があります。また、「閉じる」を開始しても、少し書き込みを行っても閉じることはできません。もちろん、SSDとの「クローズ」というコンセプトは、シーク時間がないため、奇妙な概念です。

大きなファイルが少なくてもデザインがシンプルであれば、ファイルの読み込みと読み込みが発生するようなデザインは避けたいです。一方で、あなた自身がファイルシステムにどれくらいの量を書き込んで、あなたの単一の大きなファイルのブロックへのマッピングを行うのであれば、あなたの問題に非常に特殊な機能がない限り、常に時間と思考を利用する方が良いでしょう既存のファイルシステム設計に移行しました。

関連する問題