Como produzo quanto do tamanho nominal do arquivo é realmente preenchido com dados? Como vmtouchmostra quanto do arquivo está atualmente na memória ...
Espero que o fluxo de trabalho seja assim:
$ fallocate -l 1000000 data
$ measure_sparseness data
100%
$ fallocate -p -o 250000 -l 500000 data
$ measure_sparseness
50%
Solução: use du -bshe du -she compará-los.
filefrag data-> múltiplo FIBMAP: Invalid argument-> data: 1 extent found...
filefrag -efunciona perfeitamente em XFS e ext4 pelo menos. Eu não testei em outros. Ele usa FIEMAP (mapa de extensão), com um fallback para o FIBMAP. Se esses ioctls não funcionarem, não será útil.
filefragnão tem -eopção.
e2fsprogs? Tenho certeza de que não é um recurso recente. Há também uma -vopção que imprime as mesmas informações detalhadas (mais algumas linhas de cabeçalho extras). Talvez você filefragtenha isso. Ao contrário xfs_bmap, porém, ele não indica explicitamente os furos com linhas separadas, apenas possui descontinuidades na posição do arquivo. De qualquer forma, não estou surpreso que tmpfsnão seja compatível com o FIEMAP, porque não existe um dispositivo de bloco como uma loja de suporte, portanto, não há valor sensato para a localização das extensões.
filefragpara qualquer sistema de arquivos exfs_bmap -vplpara o XFS, são as principais ferramentas para mostrar onde estão os dados (e onde estão as extensões não escritas pré-alocadas) ao brincar com arquivos esparsos e fazer furos.