0

ファイルシステムでサポートされていれば非常に効率的に実装できる特定のファイルシステムAPIが必要になることがありますが、聞いたことがありません。例えば:

  • アロケーションユニットの境界で、ファイルを最初から切り捨てます
  • アロケーションユニットの境界でファイルを2つに分割する
  • アロケーションユニットの境界で、ファイルの中央からチャンクを挿入または削除します

このようなことをするために私が知っている唯一の方法は、データを新しいファイルに書き直すことです。これには、アロケーションユニットの関連性がなくなるという利点がありますが、一部の低レベルのファイルシステムの魔法と比較すると非常に低速です。

アラインメントの要件は、メソッドが常に適用できるとは限らないことを意味することを理解していますが、それでも役立つと思います。たとえば、ファイルアーカイバは、ユーザーがアーカイブからファイルを削除した後、アライメント上の理由でどちらかの側に少量のゴミが残っている場合でも、アーカイブを非常に効率的にトリミングできる場合があります。

そのようなAPIが存在しないのは本当ですか、それとも私は単にそれらに気づいていませんか?私は主にNTFSに興味がありますが、他のファイルシステムについて聞くことも興味深いでしょう。

4

2 に答える 2

0

レイモンド・チェンは本質的にこの質問に答えました

彼の答えは、そのようなAPIは需要が少なすぎるため、存在しないということです。Raymondは、スパースファイルを使用し、ブロックをゼロにすることでブロックを廃止することも提案しています。

于 2010-12-01T21:15:34.083 に答える
0

NTFSおよびFATの場合、そのようなAPIはありません。ファイルの最後を切り捨てることはできますが、最初を切り捨てることはできません。

ファイルシステムのキャッシュのため、これを実装することはお勧めできません。ほとんどの場合、これをサポートするために、NTFSの「上」にレイヤーを実装します。

于 2010-08-23T20:08:05.800 に答える