Определение количества измененных байтов между двумя снимками ZFS одного и того же файла


10

Предположим, у меня есть файловая система ZFS, которая содержит образы дисков виртуальной машины, например

/tank/examplevm/examplevm-flat.vmdk

Предположим также, что я делаю ежедневные снимки этой файловой системы ZFS, например:

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

Очевидно, что в период между каждым ежедневным снимком вносятся изменения в мой examplevm-flat.vmdk (в большинстве случаев размер изображения остается постоянным, но блоки на виртуальном диске изменяются).

Соответственно, команда diff ZFS теперь сообщит о файле, который был изменен между двумя снимками:

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

Хотелось бы знать, что файл был изменен, меня гораздо больше интересует количество байтов / блоков, которые были изменены в vmdk.

Поэтому меня будут интересовать любые подсказки по следующим вопросам:

  • Есть ли в ZFS возможность сообщать о количестве измененных блоков в конкретном файле между двумя снимками?
  • Есть ли другой инструмент, который будет двоично различать два образа файловой системы и сообщать о количестве измененных блоков или байтов? Я понимаю, что это cmp –l file1 file2 | wc –lделает, но это ужасно, ужасно медленно.

Ответы:


7

ZFS не имеет возможности сообщать, что, тем не менее, недокументированный инструмент zdb , безусловно, можно использовать для получения блоков, используемых файлом в определенном наборе данных (файловая система или моментальный снимок), так что достижение того, что вы ищете с помощью небольшого количества сценариев, выполнимо, хотя вероятно, потребуется очень много времени, чтобы обработать вывод zdb.

Вот блог, показывающий, как использовать zdb для извлечения блоков файла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.