У меня есть разреженный файл, в котором размещены только некоторые блоки:
~% du -h --apparent-size example
100K example
~% du -h example
52K example
Я хотел бы знать, какие блоки файла на самом деле выделены. Есть ли системный вызов или интерфейс ядра, который можно использовать для получения списка распределений или дыр в файле?
Простая проверка на наличие достаточно длинной строки нулей (подход, используемый GNU cp, rsync и т. Д.) Не работает правильно:
~% cp example example1
~% du -h example1
32K example1
Это обнаружило другие последовательности нулей, которые были фактически распределены.
--fibmap
вhdparm
утилите. Смотрите руководство.