ज़फ़्स पर फोर्स अपडेट चेकसम?


13

मैंने हाल ही checksumमें अपने गैर-डुप्लिकेट किए गए zfs फाइलसिस्टम में sha256से एक पर संपत्ति को बदल दिया on(fletcher4) से बेहतर है कि इस कमांड में डुप्लिकेट किए गए प्रतिकृति स्टीम के भेजने का बेहतर समर्थन करें zfs send -DR -I _starting-snaphot_ _ending-snapshot_

हालाँकि, zfs मैनपेज के बारे में यह कहना है send -D:

इस ध्वज का उपयोग डेटासेट की डुप्लिकेट प्रॉपर्टी की परवाह किए बिना किया जा सकता है, लेकिन अगर फ़ाइल सिस्टम एक डिडअप-सक्षम चेकसम (उदाहरण। Sha256) का उपयोग करता है तो प्रदर्शन बेहतर होगा।

checksumसंपत्ति के बारे में zfs मैनपेज में यह भी लिखा है:

इस संपत्ति को बदलने से केवल नव-लिखित डेटा प्रभावित होता है।

मुझे fletcher4 पर भरोसा करने की कोई इच्छा नहीं है। ट्रेडऑफ यह है कि SHA256 के विपरीत, fletcher4 एक छद्म-यादृच्छिक हैश फ़ंक्शन नहीं है, और इसलिए इसे टकराने पर भरोसा नहीं किया जा सकता है। इसलिए यह केवल 'डुप्लिकेट' विकल्प के साथ संयुक्त होने पर कटौती के लिए उपयुक्त है, जो हैश टकरावों का पता लगाता है और हल करता है।

मैं सिस्टम को ऑफ़लाइन किए बिना फ़ाइल सिस्टम के चेकसम को कैसे अपडेट कर सकता हूं?

जवाबों:


11

पहले से ही लिखे गए डेटा के गुणों (इसे कंप्रेसन, डुप्लीकेशन या चेकसमिंग) के रूप में बदलने के लिए, zfs दृष्टिकोण को zfs send | zfs receiveअनुक्रम के माध्यम से डेटा को चलाना है । जाहिर है, इसके लिए आपको सिस्टम को ऑफलाइन करने की आवश्यकता नहीं है, बल्कि आपको इसकी आवश्यकता होगी

  1. आपके ज़ूल में पर्याप्त संसाधन / सिस्टम में प्रश्न में निर्धारित डेटा की दो डेडअप प्रतियां रखने के लिए
  2. डेटा सेट के लिए डाउनटाइम के रूप में आपको या तो इसे नष्ट करना होगा या प्रक्रिया में इसका नाम बदलना होगा
  3. ऑपरेशन को पूरा करने के लिए पर्याप्त समय और धैर्य

जैसा कि आप पहले से ही ज़ूल के लिए कटौती का उपयोग कर रहे हैं, zfs send | zfs receiveउसी पूल पर गंतव्य के साथ चल रहा है क्योंकि स्रोत केवल नव-लिखित मेटाडेटा ब्लॉकों के लिए आवश्यक स्थान का उपयोग करेगा। लेकिन थोड़ी देर लेने के लिए कॉपी के लिए तैयार रहें - डेडअप भयानक रूप से धीमा हो सकता है, खासकर यदि आपके पास रैम में संपूर्ण डिडअप टेबल रखने के लिए पर्याप्त रैम नहीं है।

आपको मोटे तौर पर डेटा सेट के अंतिम, आधिकारिक प्रतिलिपि बनाने के लिए सभी लिखने के कार्यों को बंद करने की आवश्यकता होगी, लेकिन एक स्नैपशॉट को पहले कॉपी करके डाउनटाइम को कम कर सकता है, सभी लिखना बंद कर देगा और zfs send -i | zfs receiveअंतिम चरण के रूप में वृद्धिशील कर देगा ।


यह मेरे लिए बिल्कुल भी स्पष्ट नहीं है कि zfs receiveफाइलसिस्टम के मेटाडेटा को अपडेट करता है। यह मुझे लगता है कि यह बहुत जल्दी होगा अगर यह बस मेटाडाटा के रूप में लिया है। हालांकि, ऐसा करना चेकसम के ब्लॉक के कारण असंभव हो सकता है, बजाय फाइल, स्तर प्रकृति के। उस मामले में zfs send | zfs receiveएक समाधान के लिए एक स्वीकार्य आधार बनेगा।
84104

1
zfs भेजना | zfs recv प्रभावी रूप से सभी मेटाडेटा (कम्प्रेशन चॉइस, चेकसम चॉइस, डेडअप चॉइस) को बदल देगा। zfs send एक ऐसी वस्तु का निर्माण कर रहा है जिसे आप zfs recv का उपयोग करके निगलना चाहते हैं, जो इसे बहुत ही सुंदर तरीके से लिखता है जैसे कि यह सभी नए डेटा थे। हालांकि - मुझे लगता है कि आप zfs भेजने के बारे में गलत धारणा के तहत हो सकते हैं। zfs सेंड डेटा को / स्ट्रीम स्ट्रीम में / के भीतर भेजने का प्रयास करता है, स्रोत डेटासेट से डेटा की मौजूदा डुप्लीकेशन को बनाए नहीं रखता है। यही कारण है कि कोई आवश्यकता नहीं है कि recv पक्ष भी गंतव्य डेटासेट पर सक्षम है।
नेक्स

आगे की व्याख्या करने के लिए - वर्तमान में zfs भेजने का कोई तरीका नहीं है। डेटा को इस तरह से घटाएं कि तार के पार जाने वाली सभी कटौती डेटा की एक प्रति और संबंधित डेड टेबल एंट्रीज़ हो। भले ही स्रोत और गंतव्य सिंक में हों और आप एक वृद्धिशील स्नैपशॉट से अधिक कुछ नहीं भेज रहे हों। ZFS अभी भी डेटा को पूर्ण आकार तक भेजता है यदि इसके भीतर का डेटा un-deduplicatable / धारा के दायरे के भीतर ही होता है /। आपके पास डेटा हो सकता है जिसे POOL DDT में आसानी से घटाया जा सकता है, लेकिन एक छोटी सी भेजने वाली वस्तु के रूप में, पूरी तरह से अन-डिसिप्लिसेबल हो।
नेक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.