Авторский канал по DevOps разработке.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!
Cотрудничество: @energy_c
Post #798
2.63K
Разрежённые файлы (sparse files) и экономия диска!
В Linux файл может иметь логический размер, превышающий фактически занятое место на диске. Незаписанные области представлены как дыры (holes) и физически места не занимают.
Создание файла большого размера без записи данных:
Файл имеет логический размер 10G, но почти не занимает место на диске.
Проверка:
Создание sparse-файла через
Смещение файлового офсета устанавливается на 10G без записи данных — создаётся файл с дырой.
Частичная запись данных:
Физически будет занят только небольшой участок около 1G, остальное останется дырами.
Просмотр расположения данных:
Показывает, какие диапазоны файла реально занимают блоки на диске (для классических FS вроде ext4/xfs).
Освобождение места внутри существующего файла, автоматическое преобразование участков, заполненных нулями, в дыры:
Точечное выбивание физических блоков с сохранением логического размера:
Корректное копирование sparse-файлов:
Для архивов:
Важно: поддержка sparse-файлов и hole punching зависит от файловой системы и её конфигурации (ext4, xfs — поддерживают).
🔥 Sparse-файлы — базовый механизм экономии диска для образов, дампов и крупных артефактов.
➡️ DevOps Ready | #практика
В Linux файл может иметь логический размер, превышающий фактически занятое место на диске. Незаписанные области представлены как дыры (holes) и физически места не занимают.
Создание файла большого размера без записи данных:
truncate -s 10G bigfile.img
Файл имеет логический размер 10G, но почти не занимает место на диске.
Проверка:
ls -lh bigfile.img
du -h bigfile.img
ls показывает логический размер файла, du — реально занятое дисковое пространство.Создание sparse-файла через
dd:dd if=/dev/zero of=bigfile.img bs=1 count=0 seek=10G
Смещение файлового офсета устанавливается на 10G без записи данных — создаётся файл с дырой.
Частичная запись данных:
printf 'DATA' | dd of=bigfile.img bs=1 seek=1G conv=notrunc
Физически будет занят только небольшой участок около 1G, остальное останется дырами.
Просмотр расположения данных:
filefrag -v bigfile.img
Показывает, какие диапазоны файла реально занимают блоки на диске (для классических FS вроде ext4/xfs).
Освобождение места внутри существующего файла, автоматическое преобразование участков, заполненных нулями, в дыры:
fallocate -d bigfile.img
Точечное выбивание физических блоков с сохранением логического размера:
fallocate --punch-hole --offset 1G --length 500M --keep-size bigfile.img
Корректное копирование sparse-файлов:
cp --sparse=always src.img dst.img
Для архивов:
tar --sparse -cf backup.tar bigfile.img
Важно: поддержка sparse-файлов и hole punching зависит от файловой системы и её конфигурации (ext4, xfs — поддерживают).
🔥 Sparse-файлы — базовый механизм экономии диска для образов, дампов и крупных артефактов.
➡️ DevOps Ready | #практика
- ❤ 13
- 👍 7
- 🔥 6
- 🤝 1














