क्या एक पूर्ण रेजिलर की आवश्यकता के बिना एक ZFS डिस्क को अलग और अलग करना संभव है?


10

मेरे पास चार कुल ड्राइव के साथ एक ZFS मिरर पूल है। दो ड्राइव का उपयोग ऑफसाइट बैकअप को घुमाने के लिए किया जाना है। मेरी अपेक्षा यह थी कि प्रारंभिक रेज़िवरिंग के detachबाद मैं attachएक डिस्क और बाद में एक डिस्क ले सकता हूँ और यह केवल एक वृद्धिशील रेज़लवर करता है - हालाँकि परीक्षण में यह प्रतीत होता है कि डिस्क के संलग्न होने या न होने के बावजूद एक पूर्ण रेज़लवर प्रदर्शन करता है, जिसमें लगभग सभी पूल शामिल हैं। सामग्री।

offline/ onlineएप्रोच का उपयोग करने से मुझे डिस्क को अपडेट करने का वांछित परिणाम मिलेगा - बजाय इसे पूरी तरह से पुनर्निर्माण करने के? या इस काम को उम्मीद के sendमुताबिक करने के लिए मुझे पूरी तरह से कुछ अलग करने की आवश्यकता होगी - जैसे कि 1-डिस्क पूल के रूप में प्रत्येक बैकअप डिस्क का उपयोग करना और जब भी इसे अद्यतित करने की आवश्यकता होती है, तब तक इसमें सबसे नया स्नैपशॉट लेना होगा?


5
-1 बैकअप के लिए ड्राइव को अलग / संलग्न न करें, भेजें / प्राप्त कमांड का उपयोग करें जैसा कि ZFS डिज़ाइनर ने किया है।
क्रिस एस

2
@ ChrisS -1 के बजाय कुछ उद्धरणों के साथ उत्तर लिखने के बारे में कैसे। ऐसा लगता है कि आपके कहने के लिए बैकअप के लिए एकमात्र विकल्प कहीं और एक ऑनलाइन पूल है - जो यह जानना बहुत अच्छा होगा कि क्या यह सच है, लेकिन मुझे संदेह है कि मामला नहीं है।
एसटीडब्ल्यू

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

मुझे लगता है कि आपके बिंदु मान्य हैं, मैं इसे एक उत्तर के रूप में बढ़ाऊंगा। मैं अपने विशिष्ट परिदृश्य पर कम ध्यान केंद्रित करने के लिए अपने प्रश्न को फिर से लिखने पर विचार कर रहा हूं (जो कि एक गैर-महत्वपूर्ण, अभी तक महत्वपूर्ण, इन-हाउस सर्वर के लिए शॉस्ट्रिंग बजट से उत्पन्न होता है) और कोर पर अधिक "क्या मैं एक पूर्ण आवश्यकता के बिना ड्राइव को पुन: कनेक्ट कर सकता हूं? resilvering? "
STW

जवाबों:


14

ZFS सरणी को "ऑफसाइट" डिस्क ऑफसाइट तक तोड़ने की सड़क पर मत जाओ। जैसा कि आपने देखा है, पुनर्निर्माण का समय बहुत अधिक है और रीसीलवरिंग प्रक्रिया डेटासेट के उपयोग किए गए आकार को पढ़ / सत्यापित कर देगी ।

यदि आपके पास क्षमता है, तो स्नैपशॉट और डेटा को रिमोट सिस्टम पर भेजना एक साफ, गैर-घुसपैठ दृष्टिकोण है। मुझे लगता है कि आप एक समर्पित सिंगल-डिस्क पूल होने की प्रक्रिया से गुजर सकते हैं, इसकी प्रतिलिपि बना सकते हैं और निर्यात / आयात कर सकते हैं ... लेकिन यह बहुत सुरुचिपूर्ण नहीं है।


दुर्भाग्य से मैं एक स्नैपशॉट का उपयोग नहीं कर सकता-> दृष्टिकोण भेजें क्योंकि मेरे पास दूसरा ZFS सर्वर ऑफसाइट चलाने के लिए हार्डवेयर या बैंडविड्थ नहीं है। हालाँकि ऐसा प्रतीत होता है कि ऑफ़लाइन / ऑनलाइन का उपयोग करने से ट्रेडऑफ़ के साथ स्थिति खराब हो जाएगी। मैं देखूंगा कि यह अगले हफ्ते तक कैसे चलेगा।
एसटीडब्ल्यू

1
समझ लिया। लेकिन बैकअप के रूप में एक सिस्टम से बाहर चल रहे डिस्क को खींचना एक ठोस समाधान नहीं है। ऐसा करने पर आपका जोखिम काफी बढ़ जाता है।
ewwhite

अच्छी बात है, मेरी योजना उन्हें ऑफ़लाइन करने, उन्हें निलंबित करने, उनकी हॉट-स्वैप ट्रे को अनसुना करने और फिर पूरी तरह से खींचने से पहले पूर्ण विराम सुनिश्चित करने के लिए एक मिनट देना है
STW

1
क्या आप एक दूसरे सर्वर ऑनसाइट (या एक ही सर्वर में एक दूसरा ZFS सरणी) संचालित कर सकते हैं? अपने हॉटस्पैप बे को इसमें डालें, इसके और मुख्य एक के बीच सिंक करें, और फिर पूरे बैकअप जेडएफएस सरणी को एक इकाई के रूप में सर्वर से बाहर / बाहर घुमाएं।
दान

11

आगे के प्रयोग के बाद मुझे एक उचित समाधान मिला है, हालांकि यह एक महत्वपूर्ण व्यापार बंद है। डिस्क जो offline'डी' है, लेकिन अलग नहीं किया गया है, बाद में केवल एक वृद्धिशील पुनर्जीवन संचालन के साथ ऑनलाइन वापस लाया जा सकता है (" जब एक उपकरण ऑनलाइन लाया जाता है, तो पूल में लिखा गया कोई भी डेटा नए उपलब्ध डिवाइस के साथ पुन: सिंक्रनाइज़ किया जाता है। ")। मेरे परीक्षणों में यह ३-डिस्क मिरर के लिए २ver घंटे से लेकर ३० मिनट से लेकर ३० मिनट तक डेटा-डेल्टा के साथ-साथ थोड़ा-सा समय देता है।

व्यापार बंद यह है कि ऑफ़लाइन डिस्क के साथ किसी भी पूल को नीचा दिखाया जाएगा। बशर्ते अभी भी कम से कम दो ऑनलाइन डिस्क (एक प्रतिबिंबित पूल में) यह प्रभावी रूप से एक चेतावनी है - अखंडता और अतिरेक बरकरार है।

जैसा कि दूसरों ने उल्लेख किया है कि यह समग्र दृष्टिकोण आदर्श से बहुत दूर है - एक दूरस्थ पूल में स्नैपशॉट भेजना कहीं अधिक उपयुक्त होगा, लेकिन मेरे मामले में संभव नहीं है।

संक्षेप में कहें, अगर आपको एक पूल से एक डिस्क को हटाने की आवश्यकता है और बाद में इसे पूरी तरह से फिर से भरने की आवश्यकता के बिना वापस जोड़ना है तो मैं जो दृष्टिकोण सुझाऊंगा वह है:

  • पूल में ऑफ़लाइन डिस्क: zpool offline pool disk
  • ड्राइव को स्पिन करें (यदि इसे शारीरिक रूप से खींचना है): hdparm -Y /dev/thedisk
  • अपमानित अवस्था में पूल को ड्राइव के साथ छोड़ दें
  • पूल में डिस्क को जोड़ने के लिए: zpool online pool disk

और, चूंकि यह अभी तक अप्रयुक्त है, इसलिए जोखिम है कि डेल्टा रेजिलवरिंग ऑपरेशन सटीक नहीं है। "लाइव" पूल और / या ऑफ़लाइन डिस्क में समस्याओं का अनुभव हो सकता है। अगर मेरे साथ ऐसा होता है, तो मैं अपडेट करूंगा, लेकिन अभी इस दृष्टिकोण के साथ प्रयोग करूंगा।


1
यदि रेज़लवर डेटा त्रुटियों को शुरू करने जा रहा है, तो ये समय के साथ या ज़ूल स्क्रब पर स्वचालित रूप से ठीक होने जा रहे हैं।
wabbit

मुझे एक रंडी के मूल्य का एहसास हुआ है; मैं एक सफल स्क्रब के ऑफ़लाइन होने और बैकअप डिस्क को निकालने के बाद इंतज़ार करता हूं
STW

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

मैं सरणी में सभी ड्राइव को घुमाने के खिलाफ तर्क दूंगा क्योंकि परिवहन धीरे-धीरे उन सभी को नुकसान पहुंचा सकता है। अगर ड्राइव ऑन-साइट रहेगी तो भी मैं रोटेशन नहीं करूंगा।
कोस्टीन गुआना

2

2015 अक्टूबर 15 को अपडेट करें : आज मैंने zpool splitकमांड की खोज की , जो एक मौजूदा पूल से एक नया पूल (नया नाम के साथ) विभाजित करता है। splitसे अधिक क्लीनर है offlineऔर detachदोनों पूल एक ही सिस्टम पर मौजूद हो सकते हैं (और अलग से साफ़ किए जा सकते हैं)। नए पूल export[ed]को सिस्टम से अनप्लग होने से पहले साफ (और ठीक से) भी किया जा सकता है।

(मेरी मूल पोस्ट नीचे दी गई है।)

चेतावनी! इस पृष्ठ पर विभिन्न टिप्पणियां यह कहती हैं कि यह zpool detachड्राइव के लिए संभव है (या हो सकता है) , और फिर किसी तरह ड्राइव को फिर से जोड़ें और इसमें मौजूद डेटा तक पहुंचें।

हालाँकि, इस थ्रेड (और मेरे अपने प्रयोग) के zpool detachअनुसार अलग किए गए ड्राइव से "पूल सूचना" को हटा दिया जाता है। दूसरे शब्दों में, यह ड्राइव के त्वरित सुधारdetach जैसा है । बहुत सारे डेटा के बाद भी ड्राइव पर हो सकता है, लेकिन ड्राइव को रिमूव करना और डेटा को एक उपयोगी फाइल सिस्टम के रूप में देखना व्यावहारिक रूप से असंभव होगा ।detach

नतीजतन, मुझे यह प्रतीत होता है कि इससे detachअधिक विनाशकारी है destroy, जैसा कि मेरा मानना ​​है कि zpool importनष्ट किए गए पूल को पुनर्प्राप्त कर सकते हैं!

एक detachहै नहीं एक umount, और न ही एक zpool export, और न ही एक zpool offline

मेरे प्रयोग में, अगर मैं पहली बार zpool offlineएक उपकरण और फिर zpool detachएक ही उपकरण रखता हूं, तो बाकी पूल कभी भी मौजूद डिवाइस को भूल जाते हैं। हालाँकि, क्योंकि डिवाइस स्वयं था offline[d]इससे पहले detach[ed], डिवाइस स्वयं कभी भी अधिसूचित नहीं होता है detach। इसलिए, डिवाइस में अभी भी इसकी पूल जानकारी है, और इसे किसी अन्य सिस्टम में ले जाया जा सकता है और फिर import[ed](एक अपमानित अवस्था में)।

detachआपके विरुद्ध अतिरिक्त सुरक्षा के लिए आप offlineकमांड जारी करने से पहले भी डिवाइस को भौतिक रूप से अनप्लग कर सकते हैं, फिर भी कमांड जारी करने से पहले detach

मैं इस का उपयोग करने की उम्मीद करता हूं offline, फिर detach, importअपने पूल का बैकअप लेने के लिए प्रक्रिया करता हूं। मूल पोस्टर की तरह, मैं चार ड्राइव, एक स्थिर दर्पण में दो और मासिक, घूर्णन, ऑफ-साइट (और ऑफ-लाइन) बैकअप के लिए दो का उपयोग करने की योजना बना रहा हूं। मैं प्रत्येक बैकअप को आयात करके और अलग-अलग सिस्टम पर स्क्रब करके, उसे ऑफ-साइट ट्रांसपोर्ट करने से पहले सत्यापित करूंगा। मूल पोस्टर के विपरीत, मुझे हर महीने संपूर्ण बैकअप ड्राइव को फिर से लिखने में कोई आपत्ति नहीं है। वास्तव में, मैं पूरी तरह से नए सिरे से लिखना पसंद करता हूं।


0

उसी मशीन में, क्या आपने दर्पण में 2 ड्राइव के साथ एक नया पूल बनाने की कोशिश की है? इसके बाद, अपने वर्किंग पूल पर एक स्नैपशॉट बनाएं, फिर उस स्नैपशॉट को नए पूल में भेजें, फिर से भेजें, फिर अगला स्नैपशॉट इंक्रीमेंटल होगा। यह "रिमोट सिस्टम पर डेटा भेजने" के साथ समान नहीं है क्योंकि यह उसी सिस्टम / सर्वर / मशीन के भीतर एक पूल है। इस सेटअप के साथ, आप अभी भी जूल स्प्लिट / ऑफलाइन / डिटैच / अटैच कर सकते हैं लेकिन आप इसे केवल दूसरे (कॉपी) पूल में करें न कि सोर्स पूल पर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.