Как вывести, сколько номинального размера файла фактически заполнено данными? Как vmtouchпоказывает, сколько файлов в данный момент находится в памяти ...
Я ожидаю, что рабочий процесс будет таким:
$ fallocate -l 1000000 data
$ measure_sparseness data
100%
$ fallocate -p -o 250000 -l 500000 data
$ measure_sparseness
50%
Временное решение: использование du -bshи du -shи сравнить их.
filefrag data-> несколько FIBMAP: Invalid argument-> data: 1 extent found...
filefrag -eотлично работает на XFS и ext4 по крайней мере. Я не проверял на других. Он использует FIEMAP (карта экстентов) с отступлением к FIBMAP. Если эти ioctlне работают, то это не будет полезно.
filefragнет -eвыбора.
e2fsprogs? Я уверен, что это не последняя функция. Там же также -vвариант , который печатает ту же информацию многословной (плюс некоторые дополнительные строки заголовка). Может быть, у вас filefragбудет это. В отличие от xfs_bmapэтого, он явно не указывает дырки отдельными линиями, он просто имеет разрывы в позиции файла. В любом случае, я не удивлен, что tmpfsне поддерживает FIEMAP, потому что нет блочного устройства в качестве резервного хранилища, поэтому нет разумного значения для местоположения экстентов.
filefragдля любой файловой системы иxfs_bmap -vplдля XFS являются ключевыми инструментами, показывающими, где находятся данные (и где находятся предварительно выделенные неписанные экстенты) при игре с разреженными файлами и пробиванием дырок.