Визначення кількості змінених байтів між двома знімками ZFS одного і того ж файлу


10

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

/tank/examplevm/examplevm-flat.vmdk

Давайте припустимо, що я роблю щоденні знімки цієї файлової системи ZFS, наприклад

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

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

Відповідно, команда ZFS diff тепер повідомить про файл як про модифікований між двома знімками:

$ 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.