В ядре Linux 4.1 добавлена опция FALLOC_FL_INSERT_RANGE
. Из справочной страницы fallocate(2)
:
Задание флага FALLOC_FL_INSERT_RANGE (доступно с Linux 4.1) в режиме увеличивает файловое пространство, вставляя дыру в размер файла без перезаписи существующих данных. Отверстие начнется со смещением и продолжится для длинных байтов. При вставке отверстия внутри файла содержимое файла, начиная со смещения, будет смещено вверх (то есть в более высокое смещение файла) на длину в байты. Вставка дыры в файл увеличивает размер файла на длину в байт.
И недавно эта опция поддержки была добавлена в util-linux
:
-i, --insert-range
Insert a hole of length bytes from offset, shifting existing
data.
Поэтому, когда будет выпущена версия 2.30 util-linux
и ваш дистрибутив linux обновится до этой версии, мы сможем быстро увеличить размер файла, выполнив:
fallocate -i -l 1G -o 128M /path/to/file
где 128M
- текущий размер файла.