एक ही फ़ाइल के दो ZFS स्नैपशॉट के बीच परिवर्तित बाइट्स की संख्या की पहचान करना


10

मान लेते हैं कि मेरे पास एक ZFS फाइल सिस्टम है जिसमें वर्चुअल मशीन डिस्क चित्र हैं, उदाहरण के लिए

/tank/examplevm/examplevm-flat.vmdk

चलो आगे मान लेते हैं कि मैं उस ZFS फाइलसिस्टम के दैनिक स्नैपशॉट लेता हूं, उदा

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

जाहिर है, प्रत्येक दैनिक स्नैपशॉट के बीच की अवधि में, परिवर्तन मेरे उदाहरण के लिए किए जाते हैं- flat.vmdk (ज्यादातर मामलों में, छवि का आकार स्थिर रहता है, लेकिन वर्चुअल डिस्क में ब्लॉक संशोधित होते हैं)।

तदनुसार, 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.