การระบุจำนวนไบต์ที่เปลี่ยนแปลงระหว่างสองสแนปชอตของ 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 เพื่อแยกบล็อกของไฟล์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.