SSDウェアレベリングとフラグメンテーション


4

SSDのフラグメンテーションに対するウェアレベリングの効果を理解しようとしています。具体的には、SSDコントローラがウェアレベリングのためにファイルに連続していないブロックを割り当てることを決定した場合、ファイルは断片化されます。

さて、この断片化はアドレス指定のPBA部分、またはLBAに反映されますか? 例として、ファイルAが論理ブロックアドレス(LBA)10、11、12を占有しているとします(PBA 300、301、302に対応)。ファイルが更新され、追加ブロックが必要です。今なぜならウェアレベリングのため、次の使用可能な連続ブロック(PBA 303)は、高いプログラム/回数を消去しており、コントローラは、LBA 600にマッピングされているBPAブロック500は、選択したと言うことができます コントローラは、今を指すようにLBA 13に更新されますBPA 500?(したがって、OSの観点から見た場合、断片化はありません)?それとも、ファイルにLBAの10、11、12、600があるのでしょうか。そのため、LBAは断片化されますか?(そしてホストOSはファイルを断片化しているとみなします)

ファイルがPBAの観点から断片化されていても、マッピングがLBAが常に隣接するように行われる場合、ホストOSの場合、ファイルは常に隣接します。

ただし、たとえばファイル回復の場合、SSDからファイルを回復する際の問題の1つは、断片化が非常に大きいことです。その場合、断片化がLBA自体に反映されていることになります。

BPAとLBAを考慮して、断片化が実際にどのように行われるのかについて、誰かがもっと光を当てることができれば本当に感謝します。ありがとう。

回答:


3

私の知る限りでは、ウェアレベリングはOSに対して完全に透過的です。OSはブロック10、11、12、および13を要求し、SSDはそれにLBA 10、11、12、および13を渡します(下記のultrasawbladeのコメントを参照)。

SSDは、最適化してもほとんどまたはまったく利点がないため、通常は非常に細かく断片化されています。PBA 10、11、12、および13 を要求すると、PBA 10、11、12、および600を要求するよりも実際には遅くなる可能性があります。後者3がすべて同じである場合、PBA 600はPBA 10、11、および12と並行してフェッチできるためです。チップと順番にフェッチする必要があります。ウェアレベリングは、実際には意図的にこれらのブロックを異なるチップにマッピングし、断片化を引き起こす可能性があります。

LBAはファイルの作成/削除によって自然に断片化します。

その結果、LBAが断片化され、LBA - > PBAマッピングによって PBA 断片化され、ディスクが確実に均等に消耗されます。LBAは断片化されているため、ファイルの回復は困難です。

したがって、LBAとPBAはどちらも独立して断片化されていますが、理由は異なります。OSがファイルシステムを完全に最適化したままにしておくと、実際には(LBAに関する限り、ウェアレベリングやPBAの断片化に関係なく)最適化され、ファイルの回復が容易になります。ほとんどのOSは、それがSSD上にあることを知っているなら、ファイルシステムをデフラグしたままにしません。なぜなら、それはドライブのさらなる磨耗をもたらし、パフォーマンス上の利益をほとんどまたはまったくもたらさないからです。


1
OSはLBAしか認識していないので(生のフラッシュでない限り)、SSDがLBAからPBAへのマッピングを駆動しているときに何が起こっているのかわからないし、気にする必要もありません。SSDはファイルシステムを理解していないので、OSのファイルからLBAへのマッピングを知らない、または気にしません。独自の内部LBAからPBAへのマッピングを気にするだけです。OSがSSDに実際にどのように使用しているかについてSSDに通知する唯一の方法は、TRIMを使用することです。
ローレンス

@ "Darth Android"それでは、OSの観点から見ることができるLBAフラグメンテーションは、ウェアレベリングとは無関係ですか?それで、データ復旧型のシナリオでは、ウェアレベリングは、FTLが破損した場合に断片化されたファイルの大きさを左右する要因になりますか?
OSM10

@ OSM10正しい!また、OSはLBAをデフラグしようとしないため、SSDのLBAビューでも非常に細分化されています。SSDからのデータ復旧は、あなたがそれを見ているにもかかわらず、単なる痛みを伴うものです。:(
Darth Android

@DarthAndroidありがとう。私はこれをよりよく理解するために、SSDを扱うときにファイルシステムがブロック割り当てを管理/実装する方法についての参考文献を見つけようとしていますが、リソースを見つけることができないようです。
OSM10

SSDを扱うとき、ブロック割り当てに関しては、@ OSM10ファイルシステムは何も変わりません。実際、TRIMコマンドの外側では、ファイルシステムはどの種類のメディア(HDD、SSD、ファイルコンテナなど)で実行されているかさえ認識していません。
Darth Android
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.