एक पूल से दूसरे में ZFS फाइलसिस्टम को ले जाना


18

मैं रूट रैप के अतिरिक्त एक अतिरिक्त स्टोरेज पूल के साथ सोलारिस 10 यू 8 सर्वर का विस्तार कर रहा हूं।

इस नए स्टोरेज पूल के लिए विशेष ZFS फाइलसिस्टम (रों) को स्थानांतरित करने का सबसे प्रभावी / सरल / विश्वसनीय तरीका क्या है?

क्या इसे ऑनलाइन किया जा सकता है या मुझे पहले इन पूलों का उपयोग करके सेवाओं को बंद कर देना चाहिए?

जवाबों:


15

अनिवार्य रूप से सेवाओं को अक्षम करने के बारे में प्रश्न स्वयं सेवाओं पर निर्भर करता है:

  • क्या वे सक्रिय रूप से उस फ़ाइल सिस्टम पर लिख रहे हैं जिसे आप स्थानांतरित करने की योजना बना रहे हैं?
  • क्या वे लगातार डेटा संग्रहीत कर रहे हैं जिसे आप रखना चाहते हैं।

किसी भी स्थिति में, ZFS फाइल सिस्टम भेजने में एक लंबा समय लग सकता है। इस तरह से अधिकतर समय ऑनलाइन रखने से सेवा अनुपलब्धता को कम करना संभव है:

  • एक स्नैपशॉट बनाएं
  • उस स्नैपशॉट को पहले से सुझाए गए तरीके से भेजें, लेकिन सभी सेवाओं को सक्रिय रखते हुए
  • जब दूसरे पूल पर fs प्राप्त होता है, तो उस फाइल सिस्टम में महत्वपूर्ण सेवाओं की सीमाएँ अक्षम करें। सुनिश्चित करें कि गंतव्य पूल पर नई फ़ाइल प्रणाली को संशोधित नहीं किया गया है क्योंकि बाद में वैसे भी बदलावों को छोड़ दिया जाएगा।
  • दूसरा स्नैपशॉट बनाएं (जैसे स्नैपशॉट 2)
  • उस दूसरे स्नैपशॉट को वृद्धिशील रूप से भेजें, जो कि बहुत जल्दी होगा कि पिछले स्थानांतरण। उदाहरण के लिए:

    zfs भेजें -i rpool / filesystem @ स्नैपशॉट rpool / filesystem @ snapshot2 | zfs को -F गंतव्य स्थान / फाइल सिस्टम मिलता है

  • जब किया जाता है, तो फ़ाइल सिस्टम माउंट बिंदु को पुराने डेटासेट से नए में ले जाएं। उदाहरण के लिए:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs ने माउंटपॉइंट = / अनुप्रयोग / निर्देशिका गंतव्य / फाइल सिस्टम सेट किया

आपको यह सुनिश्चित करने की आवश्यकता है कि कोई भी प्रक्रिया इसे प्राप्त करने के लिए बाध्य नहीं है /application/filesystem(जैसे: फ़ाइलों तक पहुँच या इसे अपनी वर्तमान निर्देशिका के रूप में)।

  • सेवा को फिर से सक्षम करें और आप कर रहे हैं।

10

मुझे नहीं लगता कि इसे ऑनलाइन किया जा सकता है, लेकिन मेरी प्रक्रिया आवश्यक सेवाओं को बंद करने, स्नैपशॉट लेने और माइग्रेशन बनाने के लिए zfs सेंड / रिसीव करने के लिए होगी। कुछ इस तरह:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

संपादित करें:

यदि आप "पाइप दृश्य" कमांड (pv) स्थापित करते हैं, तो आप स्थानांतरण की स्थिति की निगरानी कर सकते हैं:

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem

10

मैं जोलिग्रे द्वारा कही गई बातों का बहुत दोहरा रहा हूं, लेकिन वंशज फ़ाइल सिस्टम के लिए परिवर्धन के साथ। (ज्यादातर तो जब मैं भूल जाता हूं तो मेरे पास एक संदर्भ होता है।)

आप उप फ़ाइल सिस्टम आप उपयोग करना चाहेंगे है, तो -rZFS स्नैपशॉट आदेश पर झंडा, और -rया -Rपर झंडा zfs sendआदेश। अपरकेस -Rसभी गुण , स्नैपशॉट और क्लोन को स्थानांतरित करता है ।

संपूर्ण पूल को स्थानांतरित करने के लिए:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

फिर एक छोटी माइग्रेशन अवधि के लिए परिवर्तनों को सिंक करने के लिए एप्लिकेशन, शटडाउन सांबा, nfs को बंद करें

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

यदि आप माइग्रेशन के लिए कई मध्यस्थ स्नैपशॉट बना रहे हैं, तो zfs send -Iस्विच के बारे में मैन पेज पढ़ें ।


3
मेरे प्रयोगों में, सटीक आदेश प्रतीत हो रहा था: zfs send -R Pool0 @ मूविंग | zfs -dF Pool1
टिंकरटैंक

4

आपको पाइपलाइन में "mbuffer" जैसे उपकरण का उपयोग करने में भी कुछ लाभ मिलेगा; जाहिरा तौर पर जेडएफएस भेजने / पुनरावृत्ति प्रदर्शन में नाटकीय रूप से सुधार होता है यदि दोनों छोर ज्यादातर डेटा को लगातार स्ट्रीम कर सकते हैं, और बिना मबफ़र (या कुछ समान) के बिना आपको एक पिंग-पोंग प्रभाव मिलता है जहां एक दूसरे पर लगातार ब्लॉक होता है।


कृपया ध्यान दें कि यह एक बहुत पुराना प्रश्न है (5 वर्ष से अधिक) और आपके उत्तर में पुराने प्रश्न पर कुछ भी जोड़ने की संभावना नहीं है।
कैथरीन मैकइन्स ने

1
यह बहुत अच्छी सलाह है और मैं इसे पूल चाल के लिए भी उपयोग करता हूं।
दान बुहलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.