वर्तमान या बाहरी फाइल सिस्टम को क्लॉबरिंग / परिवर्तित किए बिना बाहरी ZFS फाइल सिस्टम को कैसे माउंट करें


11

मैं फ़ाइल सिस्टम (zroot01) के रूप में रूट पर ZFS का उपयोग करके FreeBSD 10.2 का उपयोग कर रहा हूं । मेरे पास एक बाहरी हार्ड डिस्क है, जिसमें एक और FreeBSD 10.2 सिस्टम (zroot02) से एक ZFS फाइल सिस्टम है, जिसे मैं अस्थायी रूप से माउंट करना चाहता हूं, केवल पढ़ता हूं, इसलिए मुझे इसकी कुछ फाइलें मिल सकती हैं, फिर बाद में इसे डिस्कनेक्ट कर दें। मैं बाहरी ZFS सिस्टम को क्लोब करने या अपने वर्तमान फ़ाइल सिस्टम को बदलने के लिए नहीं चाहता, और न ही मैं चाहता हूं कि बाहरी डेटा को भी दूषित / बदल दिया जाए।

यह प्रदर्शित करने के लिए कि मैं क्या पूरा करने की कोशिश कर रहा हूं, अगर मैं यूएफएस का उपयोग कर रहा था तो मैं ऐसा कुछ करूंगा:

mount -t ufs -o ro /dev/ada0s2 /mnt/my-fun-mountpoint

... जहां /dev/ada0s2मेरे बाहरी ड्राइव पर विभाजन है और मेरे मौजूदा ऑपरेटिंग सिस्टम /mnt/my-fun-mountpointकी /mntनिर्देशिका में है।

खोज और मैन पेज रीडिंग के सभी ने ऐसा करने के लिए एक क्रिस्टल-क्लियर विधि प्रदान नहीं की है। क्या उत्तर देता रहा था मेरे वर्तमान फाइल सिस्टम के ऊपर ले जा और मरम्मत के परे यह भ्रष्ट समाप्त हो गया लगता है - स्पष्ट रूप से नहीं परिणाम मैं तलाश कर रहा हूँ। मैंने कुछ समय पहले यह प्रयास किया था, इसलिए मुझे याद नहीं है कि मैंने कौन-सी कमांड की कोशिश की थी, दुर्भाग्य से।

क्या आप ऐसा करने के बारे में कुछ स्पष्ट मार्गदर्शन प्रदान कर सकते हैं? आपकी मदद के लिए अग्रिम धन्यवाद।

जवाबों:


13

खैर, यह वास्तव में निर्भर करता है कि केवल पढ़ने के लिए आप पूल को कैसे चाहते हैं। और नहीं, यह मजाक नहीं है।

सबसे पहले, शब्दावली का एक सा: ZFS में, आप एक पूल आयात करते हैं, और वैकल्पिक रूप से (किसी भी) फ़ाइल सिस्टम को इसके भीतर माउंट करते हैं। आप पास करके किसी भी फाइल सिस्टम बढ़ते बिना एक पूल आयात कर सकते हैं -Nकरने के लिए zpool importऔर फिर बाद में उपयोग कर किसी भी वांछित फाइल सिस्टम माउंट zfs mount। (यह पूरी तरह से मान्य परिदृश्य है, उदाहरण के लिए, आप कई में से केवल एक फ़ाइल सिस्टम का उपयोग करना चाहते हैं, या यदि आप पूल के ऑफ-लाइन स्क्रब जैसा कुछ करना चाहते हैं।)

ZFS वास्तव में केवल पढ़ने के लिए उपयोग का एक बड़ा प्रशंसक नहीं है। उदाहरण के लिए, यदि ZFS एक त्रुटि का पता लगाता है जिसे वह सुधारने में सक्षम है, मेरा मानना ​​है कि यह त्रुटि को सुधार देगा और मरम्मत किए गए डेटा को डिस्क पर लिख देगा भले ही आपने पूल को केवल पढ़ने के लिए आयात किया हो। मेरी समझ यह है कि, ZFS पार्सल में, "रीड-ओनली" केवल पूल और उसके डेटासेट के उपयोगकर्ता-दृश्यमान स्थिति पर लागू होता है । यदि, दूसरी तरफ, आप डिस्क की एक द्विआधारी प्रतिलिपि एक फ़ाइल (या फ़ाइलों के सेट) में बनाते हैं, तो उन फ़ाइलों को सही मायने में केवल पढ़ने के लिए बनाएं, और वहां से पूल को आयात करने का प्रयास करें, ZFS आयात नहीं कर पाएंगे। चाहे आप कितनी भी कोशिश कर लें। यदि आप फ़ाइलों को लिखने योग्य बनाते हैं, तो यह ठीक काम करेगा। (मैं वास्तव में यह सिर्फ कुछ हफ्ते पहले की कोशिश की, यद्यपि एक zvol का उपयोग कर, और ZFS सख्ती से इनकार कर दियापूल का आयात करने के लिए। जब मैंने पढ़ने-लिखने के बजाय zvol को पढ़ने / लिखने के लिए सेट किया, तो पूल ने ठीक आयात किया।) अन्य फ़ाइल सिस्टम जैसे (Linux पर) ext4 और शायद अन्य लोग इस स्थिति को कुछ हद तक इनायत से संभालते हैं, लेकिन ZFS बाल्स।

यदि आप अशुभ हैं, और आपके पास उस सिस्टम में ECC RAM स्थापित नहीं है, जहाँ आप पूल का आयात कर रहे हैं, तो ZFS का सामना करने वाली किसी भी त्रुटि को ठीक करने का प्रयास वास्तव में चीजों को बदतर बना सकता है , हालांकि इस पर राय अलग है कि क्या यह वास्तव में एक वास्तविक जोखिम है प्रयोग में। व्यक्तिगत रूप से मेरी राय है कि ZFS और स्नैपशॉट और स्टोरेज-स्तर अतिरेक और बैकअप के साथ रक्षा करने के बारे में किसी भी डेटा की मैं पर्याप्त देखभाल करता हूं और व्हाट्सएप ECC RAM द्वारा दी गई सुरक्षा की भी हकदार है, लेकिन कई पीसी में ECC RAM नहीं है।

तो, आप पूल को केवल-वैकल्पिक मोड में आयात कर सकते हैं, एक विशिष्ट वैकल्पिक रूट के साथ इसे किसी भी चीज़ के पैर की उंगलियों पर रखने से रोक सकते हैं, लेकिन आपको यह ध्यान रखने की आवश्यकता है कि यह वास्तव में केवल फॉरेंसिक अर्थों में रीड-ओनली नहीं है। (हालांकि, यह सुनिश्चित करेगा कि आप गलती से पूल में कुछ भी न बदलें।) केवल-पढ़ने के लिए आयात करना, यह मानते हुए कि पूल का नाम है tankऔर डिवाइस नोड (s) / में उपलब्ध है /dev, आप जैसे कमांड का उपयोग करें:

# zpool import tank -d /dev -o readonly=on -R /mnt/someplace

यह /devनाम के साथ ZFS पूल रखने वाली किसी भी चीज़ के लिए दिखेगा tank, इसे आयात करें , पूल संपत्ति readonlyको अस्थायी रूप से सेट करने के लिए on(जिसका अर्थ है कि सभी उपयोगकर्ता द्वारा लिखे गए लेख को अस्वीकार कर दिया जाएगा) और अस्थायी रूप से अपनी altrootसंपत्ति सेट करना /mnt/someplace। (ये संपत्ति मूल्य इस अर्थ में "अस्थायी" हैं कि वे वर्तमान संपत्ति मूल्यों के रूप में डिस्क (एस) पर कायम नहीं हैं, इसलिए यदि आप उनके बिना पूल को निर्यात और फिर से आयात करते हैं, तो मान वापस सामान्य हो जाएंगे। संभवतः पूल इतिहास के लिए लिखा जा सकता है, जो एक बार पूल के आयात के बाद आप के साथ देख सकते हैंzpool history tank यदि आप बहुत इच्छुक हैं।) एक बार पूल आयात हो जाने के बाद, आप अपनी फ़ाइलों को / mnt / someplace के तहत देखेंगे और सामान्य, केवल-पढ़ने के लिए उन तक पहुँच प्राप्त करेंगे, जिनमें पूल में पहले से ही डेटासेट पर बनाए गए स्नैपशॉट शामिल हैं।

आपके उदाहरण को देखते हुए, मुझे संदेह है कि आप कुछ का उपयोग करेंगे:

# zpool import zroot02 -d /dev -o readonly=on -R /mnt/my-fun-mountpoint

जब आप कर लें, तो पूल को साफ-साफ निर्यात करना याद रखें:

# zpool export tank

या शायद

# zpool export zroot02

यह पूल के भीतर सभी फ़ाइल सिस्टम और अन्य डेटासेट को अनमाउंट कर देगा, सभी बफ़र्स को फ्लश कर देगा (इस हद तक कि किसी भी तरह की ज़रूरत पड़ने पर), पूल को सभी घटक उपकरणों पर आयात नहीं किए जाने के रूप में चिह्नित करें , और यह सुनिश्चित करने के लिए किसी भी अन्य आवश्यक हाउसकीपिंग कार्य करें। पूल को सुरक्षित रूप से एक अलग प्रणाली में ले जाया जा सकता है और बाद में वहां आयात किया जा सकता है।


1
यदि आप वास्तव में निश्चित हैं कि आप अपने तीसरे पैराग्राफ में क्या कहते हैं, तो यह सही है, जो कि बीएसडी जेडएफएस कार्यान्वयन के साथ एक बग होगा। ZFS पूल रीड ओनली इंपोर्ट को वास्तव में केवल पढ़ने के लिए डिज़ाइन किया गया था, अर्थात यह पूल इतिहास सहित किसी भी डेटा या मेटाडेटा को लिखने या ठीक करने की कभी कोशिश नहीं करता है। देखें arc.stillopensolaris.org/txt/PSARC_2010_306.txt
jlliagre

1
@jlliagre मुझे काफी यकीन है, लेकिन यह कुछ अन्य ZFS कार्यान्वयन के संदर्भ में हो सकता है। मैं वास्तव में नहीं देखता कि वे इस तरह के मूलभूत पहलू में भिन्न क्यों होंगे, हालांकि; मेरा मानना ​​है कि सभी ओपन-सोर्स जेडएफएस कार्यान्वयन कोड की एक महत्वपूर्ण राशि को साझा करते हैं जो अपने वंश को सूर्य पर वापस लाते हैं। मैं अभी इसके लिए कुछ प्रकार का परीक्षण वातावरण स्थापित कर सकता हूं और एक छड़ी के साथ उस पर प्रहार कर सकता हूं, फिर देखें कि क्या होता है, लेकिन यह कुछ समय होगा जब मैं वास्तव में ऐसा करने के लिए समय समर्पित कर सकता हूं।
एक CVn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.