ZFS: Existe uma maneira de descobrir onde os blocos de um arquivo estão armazenados?

4

Existe uma maneira no zfs de descobrir onde os blocos de um determinado arquivo são armazenados? Gostaria de poder pedir os locais de todos os blocos para um arquivo, incluindo os blocos idem.

(Sim, eu entendo que isso é algo de baixo nível que normalmente não é exposto aos usuários.)

(v0.6.0.56-rc8, pool do ZFS versão 28, sistema de arquivos ZFS versão 5, Ubuntu 11.10)

    
por James Moore 11.04.2012 / 18:48

2 respostas

9

Isso não é trivial e, possivelmente, está além do escopo de uma questão / resposta do SF, já que as ferramentas necessárias não aparecem bem documentadas. Provavelmente você pode usar zdb (1m) em conjunto com o no formato de disco doc para encontrar as informações que você deseja. Há um blog sobre como fazer isso aqui

Essencialmente

use ls -i para obter o inode inicial.

use zdb -ddddd <inodenum> para obter as informações do bloco e decodificá-las usando o ODF

    
por 11.04.2012 / 19:20
3

Você pode usar ls -i para ver o inode inicial, depois sugiro ler o código-fonte publicado para entender as estruturas de dados em disco. Depois de concluir, sugiro escrever suas próprias ferramentas para ler o dispositivo bruto e reunir todas as informações de layout de bloco nas quais você está interessado. Há um projeto de API do ZFS (libzfs) pequeno que oferece apenas a configuração básica do ZFS como listar, criar etc. zpools.

    
por 11.04.2012 / 18:57

Tags