Mengidentifikasi jumlah byte yang diubah antara dua snapshot ZFS dari file yang sama

10

Mari kita asumsikan saya memiliki sistem file ZFS yang berisi gambar disk mesin virtual, misalnya

/tank/examplevm/examplevm-flat.vmdk

Mari kita anggap saya mengambil snapshot sistem file ZFS setiap hari, misalnya

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

Jelas, dalam periode antara setiap snapshot harian, perubahan dibuat pada examplevm-flat.vmdk (dalam kebanyakan kasus, ukuran gambar tetap konstan, tetapi blok di disk virtual dimodifikasi).

Dengan demikian, perintah ZFS diff sekarang akan melaporkan file yang telah dimodifikasi antara dua snapshot:

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

Meskipun baik untuk mengetahui bahwa file telah dimodifikasi, saya akan jauh lebih tertarik dengan jumlah byte / blok yang telah dimodifikasi dalam vmdk.

Karena itu, saya akan tertarik pada petunjuk tentang pertanyaan-pertanyaan berikut:

  • Apakah ZFS memiliki fitur untuk melaporkan jumlah blok yang diubah dalam file tertentu antara dua foto?
  • Apakah ada alat lain yang akan membuat dua gambar sistem file biner dan melaporkan jumlah blok atau byte yang diubah? Saya menyadari hal cmp –l file1 file2 | wc –litu, tetapi sangat lambat, sangat lambat.
nlx-ck
sumber

Jawaban:

7

ZFS tidak memiliki fitur untuk melaporkan bahwa bagaimanapun, alat zdb tidak berdokumen pasti dapat digunakan untuk mendapatkan blok yang digunakan oleh file dalam dataset tertentu (filesystem atau snapshot) sehingga mencapai apa yang Anda cari dengan sedikit skrip dapat dilakukan, meskipun mungkin akan membutuhkan waktu yang sangat lama untuk memproses keluaran zdb.

Berikut ini adalah blog yang menunjukkan cara menggunakan zdb untuk mengekstrak blok file.

Jlliagre
sumber