書き込みサポートと動的サイズを備えたファイルベースのループデバイス
通常、ループデバイス(vノードディスク)は、事前に割り当てられたサイズのファイル(フロッピードライブまたはISOディスクのイメージなど)に基づいています。デバイスはブロックデバイスとして扱われ、ext3などのオペレーティングシステムでサポートされている任意のファイルシステムでフォーマットできます。 一方、FUSEでは、書き込みサポートを使用してアーカイブをマウントできます。つまり、archivemountです。マウントされたドライブにファイルを書き込むことができ、その下にあるアーカイブは、それに書き込まれたすべてのファイルを収容するために成長します。そのため、特定のファイルシステムを持たないブロックデバイスのように動作します。ファイルシステムは、zip、tarなどのアーカイブタイプによって決まります。 私は、任意の量のファイル(FUSEでマウントされたアーカイブのように振る舞う)に対応するように動的に成長できるが、読み取り/書き込み/シーク操作の効率的な実装を備えたファイルバックアップデバイスの実装を探していますブロックデバイスのファイルシステム)。 効率的というのは、ファイルを直線的に検索するよりも効率的であることを意味します。そのため、ファイルに含まれるファイルのある種の分散インデックスを使用する場合があります。 私が言うことの例として、archivemountでマウントされた非圧縮tarアーカイブを考えてみましょう。これは読み取り/書き込みをサポートしていますが、tarアーカイブはTOCをサポートしていないため、シーク操作は効率的ではありません。テープアーカイブで動作するはずです。 archivemount readおよびseekでマウントされたzipアーカイブの場合、zipはTOCをサポートするため効率的ですが、書き込みはアーカイブ全体を再圧縮することが多いため効率的ではありません。 別の例は、ループデバイスを介してマウントされたスパースファイルです。スパースなので、動的に成長できますが、指定された固定最大サイズまで増加しますが、これは要件を満たしていません。 さらに別の例は、CouchDBデータベースまたはMBoxファイル形式のファイルバックアップです。どちらの場合も、データは常にファイルに追加されます(たとえば、ファイルを削除する代わりに、削除済みとしてマークし、新しいバージョンを追加します)。また、削除されたファイルが使用するスペースを時々再利用するには、ファイルを圧縮する必要があります。このようなファイルでは、常にファイルの最後のバージョンを読み取るため、シークを含むすべての操作が高速です。しかし、私は任意のファイルを保存するためのそのような実装を知りません。 それで、そのようなファイル対応デバイスの実装は存在しますか?