私が理解しているのは、「要求時にゼロを埋める」ということです。これは、ファイルシステムがファイル割り当てにデータを書き込むのではなく、ZFOD範囲のみを提供し、アプリケーションがデータを読み書きしようとしたときにデータをゼロで埋め、読み取り/書き込みを実行することを意味します。源泉]。
私の質問は次のとおりです
- 上記の理解は正しいですか?
- 単にデータを割り当てないと、これが脆弱性であるという意味ですか?
答え1
次の2つを考慮する必要があります。
- データにスペースが割り当てられているかどうか
- 実際のデータが記録されたかどうか。
ファイルにデータがなく、ファイルに割り当てられたスペースがない場合は、ファイルを読み取ろうとするとファイルの終わりマークが表示されます。書き込みを実行する場合、ファイルシステムは書き込み時にスペースを割り当てる必要があります。つまり、割り当てる空きディスク容量がないと、ENOSPCエラーが原因で書き込み操作が失敗する可能性があります。
スパースファイルの穴には割り当てられたスペースがなく、ファイルの対応する部分を読み取ろうとすると、すべてゼロのデータが得られます。ファイルの対応する部分が書き込まれると、ファイルシステムは書き込み操作中にその部分にスペースを再割り当てする必要があるため、ディスクがいっぱいになるとENOSPCエラーで書き込み操作が失敗する可能性があります。
ZFOD 範囲は公称ファイルに割り当てられますが、データはまだ記録されていません。読み取るとすべて0になり、書き込むとスペースがすでに割り当てられているため、ENOSPCエラー条件が発生するリスクはありません。
最後に、一般的なデータ範囲があります。読み込むと実際のデータが返され、書き込むと既存のデータが新しいデータに置き換えられます。
つまり、ZFODスコープは、アプリケーションが大容量ファイルを割り当て、すべてのファイルをすぐに使用せずに必要なときにスペースを使用できることを確認する必要がある状況に最適化されています。 SSDストレージでは、ブロック内の既存のデータを消去するのが最も遅い作業であるため、ZFODエクステントはシステムが最初にZFODエクステントに割り当てて大規模なデータエクステントをすばやく作成できます。これにより、ファイルシステムは実際の削除を実行し、ゼロで埋めることができます。実際に使用されるすべてのブロック。
SSDストレージを使用して仮想マシンのディスクイメージなどを保存する場合は、ZFOD拡張を使用して物理ディスクブロックを削除する回数を最小限に抑えてSSDの寿命を延ばすことができます。