仮説
- 私たちは巨大なファイルを持っていますF。
- 私たちは「周り」を見るのが好きですSO(1)時間内に新しいBean(0で埋められた)ブロックを作成します(つまり、すべてのリマインド部分を書き換えないでください)。
- 「around」は私たちが囲むことができるという意味です。S最も近いファイルシステムブロックサイズに変換して挿入するブロックも、ファイルシステムブロックサイズにすることができます。
これを可能にするシステムコール/ファイルシステムはありますか?
btrfs_clone
そうでない場合は、この動作を模倣するために(mentied)を使用するのが良い考えですか?ここ)どのように?
答え1
から引用この回答:
Linux 4.1以降、エラー位置(2)
FALLOC_FL_INSERT_RANGE
後続のデータを書き換えることなく、ファイルの途中に指定された長さの穴を挿入できるこのフラグをサポートします。しかし、これは非常に制限的です。穴はファイルシステムブロックの境界に挿入する必要があり、挿入された穴のサイズはファイルシステムブロックサイズの倍数でなければなりません。さらに、4.1ではこの機能はXFSファイルシステムに対してのみサポートされ、4.2にはExt4サポートが追加されました。
~からエラー位置(1):
fallocate -d [-o offset] [-l length] filename
(...)
-d, --dig-holes
Detect and dig holes. This makes the file sparse in-place, without using extra disk space. The minimum size of the hole depends on
filesystem I/O block size (usually 4096 bytes). Also, when using this option, --keep-size is implied. If no range is specified by --offset
and --length, then the entire file is analyzed for holes.
You can think of this option as doing a "cp --sparse" and then renaming the destination file to the original, without the need for extra
disk space.
See --punch-hole for a list of supported filesystems.
(...)
-p, --punch-hole
(...)
Supported for XFS (since Linux 2.6.38), ext4 (since Linux 3.0), Btrfs (since Linux 3.7) and tmpfs (since Linux 3.5).