Identification du nombre d'octets modifiés entre deux instantanés ZFS du même fichier

10

Supposons que j'ai un système de fichiers ZFS qui contient des images de disque de machine virtuelle, par exemple

/tank/examplevm/examplevm-flat.vmdk

Supposons en outre que je prenne des instantanés quotidiens de ce système de fichiers ZFS, par exemple

$ zfs snapshot tank@20120716
$ zfs snapshot tank@20120717

Évidemment, dans la période entre chaque instantané quotidien, des modifications sont apportées à mon examplevm-flat.vmdk (dans la plupart des cas, la taille de l'image reste constante, mais les blocs du disque virtuel sont modifiés).

Par conséquent, la commande diff ZFS signale désormais le fichier modifié entre les deux instantanés:

$ zfs diff tank/@20120716 tank@20120717
M       /tank/examplevm/examplevm-flat.vmdk

Bien qu'il soit bon de savoir que le fichier a été modifié, je serais beaucoup plus intéressé par le nombre d'octets / blocs qui ont été modifiés dans le vmdk.

Par conséquent, je serais intéressé par des indices sur les questions suivantes:

  • ZFS a-t-il une fonctionnalité pour signaler le nombre de blocs modifiés dans un fichier spécifique entre deux instantanés?
  • Existe-t-il un autre outil qui diffère deux images du système de fichiers en binaire et signale le nombre de blocs ou d'octets modifiés? Je me rends compte que ça cmp –l file1 file2 | wc –lfait ça, mais c'est horriblement, horriblement lent.
nlx-ck
la source

Réponses:

7

ZFS n'a pas de fonctionnalité pour signaler que, cependant, l' outil zdb non documenté peut certainement être utilisé pour obtenir les blocs utilisés par un fichier dans un ensemble de données particulier (système de fichiers ou instantané), donc réaliser ce que vous recherchez avec un peu de script est faisable, bien que il faudrait probablement beaucoup de temps pour traiter la sortie zdb.

Voici un blog montrant comment utiliser zdb pour extraire les blocs d'un fichier.

jlliagre
la source