Obtenha o status de alocação do intervalo de um arquivo em um FS que suporte a alocação atrasada

2

Para um arquivo muito grande com alocação atrasada, alguns setores podem ter sido alocados e outros não. Alocação atrasada é suportada pelo ext4 / xfs / etc ..

Por exemplo, crie um arquivo vazio e defina um tamanho muito grande usando fallocate (). Agora, o tamanho do arquivo pode ser GB, mas usando du , você obterá um uso de disco igual a zero. Depois de algumas gravações aleatórias, quero saber se um setor específico / página deste arquivo foi alocado.

Algumas chamadas do sistema relacionadas, como mincore / fincore, funcionam no status vm do cache de páginas. No entanto, eles não exibem informações de alocação em disco. Eu me pergunto se existe algum método para fazer isso. Obrigado.

    
por Wu Xingbo 02.08.2014 / 06:22

1 resposta

2

Você pode obter o mapeamento em disco de um arquivo com o FIEMAP ioctl . Há também o FIBMAP ioctl, que faz uma coisa semelhante, requer raiz e não está bem documentado.

Sem escrever C, você pode usar filefrag -v ou hdparm --fibmap para obter os dados.

    
por 02.08.2014 / 06:49