एक जेडएफएस या एलवीएम या एमडी निरर्थक विषम भंडारण प्रस्ताव


10

मेरे पास ज्यादातर लोगों की एक ही समस्या है: इस तथ्य के साथ एक विश्वसनीय व्यक्तिगत भंडारण समाधान कैसे बनाया जाए:

  1. नियमितता के साथ हार्ड ड्राइव विफल हो जाते हैं। फ़ाइलों को खोना अस्वीकार्य है।
  2. मैं समय-समय पर एक नया एचडीडी खरीदूंगा। अनिवार्य रूप से, सबसे अच्छी कीमत / जीबी पिछले एचडीडी खरीद की तुलना में एक अलग आकार है।
  3. 2 का मतलब है कि समय के साथ मेरे पास डिस्क का विषम संग्रह है। मैं उन सभी का उपयोग करना चाहता हूं, और असफल डिस्क को आम तौर पर बड़ी डिस्क द्वारा प्रतिस्थापित किया जाएगा।

  4. डेटा अखंडता और विश्वसनीयता मेरे लिए गति से अधिक महत्वपूर्ण है।

तो कुछ दिनों के लिए इस समस्या के खिलाफ मेरे सिर को पीटने के बाद (और वर्षों के लिए मेरे सिर के पीछे) मैं निम्नलिखित समाधान का प्रस्ताव करता हूं। मैं एक समाधान का वर्णन करूंगा, जिसे मैंने देशी लिनक्स ZFS के आधार पर परीक्षण किया है जो एक Ubuntu PPA में उपलब्ध है , लेकिन LVM, MD, और btrfs को इसे प्राप्त करने के लिए इस्तेमाल किया जा सकता है। इसके लिए मैं RAID1 (ZFS दर्पण vdevs) का उपयोग करूंगा।

  1. ड्राइव के आपके सेट को देखते हुए, उन्हें डिस्क के दो सेट में समूहित करें, जैसे कि प्रत्येक सेट की क्षमता संभव के रूप में दूसरे के पास है।
  2. विभाजन बड़े डिस्क जैसे कि एक विभाजन होता है, जो दूसरे समूह में छोटे डिस्क में से एक के समान होता है।
  3. मिरर vdevs ऐसे बनाएं कि प्रत्येक डिस्क का दर्पण किसी अन्य डिस्क पर हो।

उदाहरण के लिए, नए 2TB ड्राइव के डिस्क सेट पर विचार करें, पुराने 750GB ड्राइव, 2 पुराने 400GB ड्राइव और पुराने 500GB ड्राइव पर। इष्टतम प्रतिबिंबित विभाजन में 2TB प्रयोग करने योग्य स्थान होता है और इसे निम्नलिखित आरेख में वर्णित किया जाता है जहां ':' अलग-अलग स्थितियों और '' डिस्क को अलग करता है:

+------------------------------------------------------------------+
| 2TB (sda1)        : (sda2)       : (sda3)       : (sda4)         |
+------------------------------------------------------------------+--+
| 750 GB (sdb)      | 400 GB (sdc) | 400 GB (sdd) | 500 GB (sde1)  :XX|
+---------------------------------------------------------------------+

के रूप में अपने zpool बनाएँ

zpool create archive mirror /dev/sda1 /dev/sdb mirror /dev/sda2 /dev/sdc mirror /dev/sda3 /dev/sdd mirror /dev/sda4 /dev/sde1

यह 4 प्रतिबिंबित दर्पण बनाता है। यदि डिस्क में से कोई भी विफल हो गया, तो इसे (किसी भी आकार की डिस्क के साथ) बदला जा सकता है और लापता विभाजन को फिर से बनाने के लिए विभाजित किया जा सकता है। यह महत्वपूर्ण है कि ZFS vdevs को एक पूल में जोड़ा जा सकता है लेकिन हटाया नहीं गया । इसलिए यदि संभव हो, जब कोई नया ड्राइव खरीदता है, तो आप मौजूदा vdevs को पुनर्व्यवस्थित करना चाहते हैं। मान लीजिए कि अगली खरीद 3TB ड्राइव थी। आपका इष्टतम विन्यास 3.5TB प्रयोग करने योग्य है, जैसा कि निम्नलिखित चित्र में वर्णित है। यह अब 5 vdev जोड़े है। यह उचित विभाजन और क्रमिक रूप से विफल होने और ड्राइव को पुन: प्रारंभ करने के द्वारा प्राप्त किया जा सकता है।

+--------------------------------------------------------------+-------------+
| 3 TB (sdf1)       : (sdf2)      : (sdf3)      : (sdf4)       | 500GB (sde) |
+--------------------------------------------------------------+-------------+-+
| 2TB (sda1)        | 400GB (sdb) | 400GB (sdc) | 750GB (sdd1) : (sdd2)      :X| 
+------------------------------------------------------------------------------+

मिरर किए गए ड्राइव की इस जोड़ी को बनाए रखना LVM के साथ या MD RAID के साथ भी किया जा सकता है, यह सुनिश्चित करने के लिए कि प्रत्येक ड्राइव में हमेशा मिरर ड्राइव या पारेशन होता है। क्योंकि सब कुछ स्पष्ट है, हम ड्राइव को जोड़ने या हटाने पर ड्राइव को विफल करने और विभाजन को पुनर्व्यवस्थित करने के लिए स्वतंत्र हैं। LVM या MD के उपयोग से BTRFS की तुलना में ZFS में कम परिष्कृत रिकवरी टूल की कीमत पर ड्राइव को हटाना और सरणी को सिकोड़ना संभव होगा।

इस प्रक्रिया पर कोई टिप्पणी? एक अच्छी स्क्रिप्ट ड्राइव के दोषरहित आवंटन और पुनर्व्यवस्थापन को संभाल सकती है। LVM बनाम MD बनाम ZFS पर कोई टिप्पणी? परिणामी अजीब विभाजन सरणी के प्रदर्शन पर कोई टिप्पणी? क्या एक ही ड्राइव पर कई विभाजनों में डेटा की व्यवस्था के कारण अत्यधिक सिर की मांग और शुरुआती विफलता होगी?

BTRFS देव: हर कोई यह चाहता है और LVM या MD तकनीकी रूप से आवश्यक नहीं है (और मेरी राय में, उप-इष्टतम)। एक निरर्थक विषम सरणी को बनाए रखना आसान बनाने के लिए btrfs के लिए एक हत्यारा सुविधा होगी। यह LVM / MD / ZFS पर एक हैक है। रिस्लीवर / रेसक्यू को कम करना बड़े पैमाने पर वांछनीय है।

हाँ, यह स्पष्ट रूप से एक गरीब आदमी का ड्रोबो है। उस के लिए एक समर्पित हार्डवेयर की आवश्यकता नहीं होनी चाहिए ...

जवाबों:


4

मैंने जेडएफएस के साथ इसका परीक्षण किया है और लेखन प्रदर्शन लगभग आधा है जो इसे होना चाहिए, क्योंकि जेडएफएस सभी vdevs पर पढ़ता और लिखता है (इसलिए I / O को एक ही डिस्क पर कई स्थानों पर विभाजित करता है)। इस प्रकार, सबसे डिस्क के साथ डिस्क की गति से गति सीमित है। पढ़ें गति डिस्क बैंडविड्थ के बराबर लगती है। ध्यान दें कि दो डिस्क पर ZFS विभाजन की एक जोड़ी लगभग एकल डिस्क की रीड स्पीड को दोगुना कर देती है, क्योंकि यह डिस्क से समानांतर में पढ़ सकता है।

उपरोक्त LFS प्रस्ताव की तुलना में दो बार लिखने के प्रदर्शन में दो हिस्सों के परिणामों को बनाने के लिए MD LINEAR सरणियों या LVM का उपयोग करना, लेकिन नुकसान यह है कि LVM और MD को यह पता नहीं है कि डेटा कहाँ संग्रहीत है। डिस्क विफलता या अपग्रेड की स्थिति में, सरणी का एक किनारा पूरी तरह से नष्ट हो जाना चाहिए और दूसरी तरफ से रिसाइकल / रिसलीवर किया जाना चाहिए। (उदाहरण के लिए resync / रिस्लीवर को 2 * (सरणी का आकार) कॉपी करना होगा)

इसलिए ऐसा लगता है कि इष्टतम समाधान दो LVM या MD LINEAR उपकरणों में एकल ZFS दर्पण vdev बनाना है जो डिस्क को समान आकार के "हिस्सों" में संयोजित करता है। यह किसी भी एक डिस्क की रीड बैंडविड्थ को लगभग दुगना करता है, और लिखने वाला बैंडविड्थ अलग-अलग डिस्क बैंडविंड के बराबर होता है।

ZFS के बजाय BTRFS raid1 का उपयोग करना भी काम करता है, लेकिन आधी रीड बैंडविड्थ है क्योंकि ZFS बैंडविड्थ को दोगुना करने के लिए अपने रीड्स वितरित करता है, जबकि ऐसा लगता है कि BTRFS ऐसा नहीं करता है (मेरे परीक्षणों के अनुसार)। BTRFS का यह फायदा है कि विभाजन सिकुड़ सकते हैं, जबकि वे ZFS के साथ नहीं हो सकते हैं (इसलिए यदि विफलता के बाद आपके पास बहुत सारी खाली जगह है, BTRFS के साथ फाइल सिस्टम सिकुड़कर एक छोटे से अनावश्यक सरणी को फिर से बनाना संभव है, तो डिस्क को फिर से व्यवस्थित करना)।

यह हाथ से करने के लिए थकाऊ है लेकिन कुछ अच्छी स्क्रिप्ट के साथ आसान है।

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