RAID1 या 5 के बजाय RAID0, क्या यह पागल है?


14

मैं हमारे SQL सर्वर क्लस्टर में से एक के लिए एक RAID0 सेटअप का उपयोग करने पर विचार कर रहा हूं। मैं स्थिति को रेखांकित करूंगा और यह देखूंगा कि यह एक बुरा विचार क्यों हो सकता है। इसके अलावा, यदि आपके पास कोई केस, श्वेत पत्र या अन्य दस्तावेज हैं, तो आप मुझे इस विषय पर बता सकते हैं, यह बहुत अच्छा होगा।

हमारे पास 2 सर्वर में 3 सर्वर हैं जो एक SQL क्लस्टर का हिस्सा हैं। वे सभी एक उपलब्धता समूह में SQL सर्वर चला रहे हैं। प्राइमरी में उसके ठीक बगल में एक प्रतिकृति है और दूसरे डेटासेंटर में दूसरी है। वे स्वचालित विफलता के साथ तुल्यकालिक प्रतिकृति चला रहे हैं। सभी ड्राइव एंटरप्राइज क्लास एसएसडी हैं। वे SQL सर्वर 2017 या 2019 चला रहे होंगे।

मैं सोच रहा हूं कि RAID0 सरणियों पर उन्हें चलाने के लिए कुछ अन्य तरीकों से कई लाभ होंगे, यदि कोई हो, तो वास्तविक कमियां। वर्तमान में जो एकमात्र नकारात्मक मैं देख रहा हूं, वह प्राथमिक सर्वर पर अतिरेक की कमी है, इसलिए यह विफल हो जाता है। पेशेवरों के रूप में:

  1. यदि कोई ड्राइव धीमी, अपमानित स्थिति में चलने के बजाय विफल हो जाती है, जब तक कि किसी को इस पर मैन्युअल रूप से कोई नोटिस प्राप्त नहीं होता है, सर्वर तुरंत पूर्ण परिचालन क्षमता बनाए रखने वाले द्वितीयक में विफल हो जाएगा। इससे हमें एक विफलता के बारे में सूचित करने का अतिरिक्त लाभ होगा, इसलिए हम जल्द ही कारण की जांच कर सकते हैं।

  2. यह प्रति टीबी क्षमता के अनुसार विफलता की संभावना को कम करता है। चूँकि हमें समता या दर्पण ड्राइव की आवश्यकता नहीं है, हम ड्राइव की संख्या प्रति सरणी कम करते हैं। कम ड्राइव के साथ ड्राइव विफलता का कुल मौका कम होता है।

  3. यह सस्ता है। हमारी आवश्यक क्षमता के लिए कम ड्राइव की आवश्यकता स्पष्ट रूप से कम खर्च होती है।

मुझे पता है कि यह पारंपरिक व्यवसाय सोच नहीं है, लेकिन क्या ऐसा कुछ है जिस पर मैं विचार नहीं कर रहा हूं? मैं किसी भी इनपुट या तो समर्थक या चोर प्यार करता हूँ।

मैं क्वेरी प्रदर्शन लाभ के लिए ऐसा करने की कोशिश नहीं कर रहा हूं, हालांकि अगर सार्थक हैं तो उन्हें बेझिझक इंगित करें। मेरी प्राथमिक चिंता एक विश्वसनीयता या अतिरेक मुद्दे पर विचार करने या संबोधित करने में विफल है, जिसके बारे में मैंने नहीं सोचा है।

ओएस एक अलग मिरर ड्राइव पर है, इसलिए सर्वर को खुद ऊपर रहना चाहिए। उन ड्राइवों में से एक को बदला जा सकता है और फिर से मिरर किया जा सकता है। यह छोटा है और इस पर सिस्टम DB के अलावा कोई भी डेटाबेस फाइल नहीं है। मैं इसे मिनट से अधिक समय लेने की कल्पना नहीं कर सकता। यदि डेटा सरणियों में से एक विफल रहता है, तो हम ड्राइव को बदलते हैं, सरणी को फिर से बनाते हैं, एजी के साथ पुनर्स्थापित करते हैं और फिर से सिंक करते हैं। मेरे व्यक्तिगत अनुभव में, पुनर्स्थापना एक RAID5 ड्राइव पुनर्निर्माण की तुलना में बहुत तेजी से किया गया है। मुझे कभी भी RAID1 की विफलता नहीं हुई है, इसलिए मुझे नहीं पता कि यह पुनर्निर्माण तेजी से होगा या नहीं। पुनर्स्थापना एक बैकअप से आ रही होगी और प्राथमिक से मेल खाने के लिए आगे बढ़ेगी, इसलिए प्राथमिक सर्वर पर लोड में वृद्धि केवल न्यूनतम होनी चाहिए जो कि पुनर्प्राप्त प्रतिकृति के साथ पिछले कुछ मिनटों के लॉग को सिंक्रनाइज़ कर रही हो।


1
इस प्रश्न पर चर्चा को चैट में स्थानांतरित कर दिया गया है ।
पॉल व्हाइट 9

जवाबों:


19

एक बहुत महत्वपूर्ण पहलू है जो मुझे लगता है कि आप अपने मूल्यांकन में गायब हैं:

आप कैसे ठीक होने की योजना बनाते हैं?

जब raid5 एक ड्राइव खो देता है, तो यह एक अपमानित स्थिति में चलेगा जब तक कि यह स्वचालित रूप से पुनर्प्राप्त नहीं हो जाता। (कम से कम यदि आपके पास हाथ पर एक गर्म स्पेयर है।)

जब एक RAID0 ड्राइव खो देता है, तो यह कभी भी ठीक नहीं हो सकता है। इसका मतलब है कि आपने अतिरेक खो दिया है, और इसे पुनर्प्राप्त करने के लिए, आपको अपने छापे को फिर से बनाने की आवश्यकता है, और सभी डेटा (न केवल टूटी हुई ड्राइव पर डेटा) को उस माध्यमिक से वापस कॉपी करें जो अब उत्पादन भार के अधीन है। यह है कि एकल अपमानित raid5 सरणी के बजाय, यह अब आपका संपूर्ण उत्पादन सेटअप है जो प्रदर्शन हिट हो जाता है।

अगर raid5 (या raid6) अपमानित राज्य के प्रदर्शन का दंड कुछ ऐसा नहीं है जिसके साथ आप सामना कर सकते हैं, तो आपको संभवतः इसके बजाय 1 + 0 छापे करना चाहिए । हां, इसकी लागत अधिक है, लेकिन डिस्क की कीमतें वे क्या हैं, यह अच्छी तरह से खर्च होने वाला पैसा है।

हो सकता है "सक्रिय रूप से RAID 5 स्थिति की निगरानी करें, और एक ड्राइव के विफल होने पर प्राथमिक बंद लोड को स्थानांतरित करें" वह समाधान है जो आपको बिना किसी कमियां के अधिकांश लाभ देता है? (निश्चित रूप से किसी भी स्थानीय अतिरेक के बिना चलने के शीतलन कारक को खोने के अलावा।) यदि आपका raid5 ड्राइव रिकवरी पूरी तरह से डेटाबेस डेटा सिंक की तुलना में बहुत अधिक समय ले रहा है, या तो आपका छापा सॉफ्टवेयर अजीब तरह से काम कर रहा है, या आपने गंभीरता से निरीक्षण किया है। मुझे लगता है।


16

ड्राइव विफलता को यहां ध्यान में रखा जाना चाहिए।

एक दूसरे के लिए कल्पना करें कि किसी विशेष दिन पर हमारी ड्राइव में 1/1000 विफलता दर है। तब कल्पना करें कि हमारे प्रत्येक 3 सरणियों में 20 ड्राइव हैं।

किसी सरणी में एकल ड्राइव विफल होने की संभावना इसलिए 20/1000 = 1/50 है। एक ही सरणी में दो ड्राइव विफल होने का मौका 20/1000 * 20/1000 / 2 = 200/1000000 = 1/5000 के करीब है। इसलिए RAID 0 से RAID 5 पर स्विच करने से हम पहले से ही हमारे सरणियों को मारने के लिए काफी कम हैं।

तो हम इसे और आगे ले जा सकते हैं - यदि किसी दिन एक सरणी के विफल होने की संभावना 1/50 है, तो एक दिन में दो सरणियों के विफल होने की संभावना 1 / (50 * 50) = 1/2500 है। दो समान RAID 0 सरणियों के असफल होने की संभावना एक RAID 5 सरणी के दो बार असफल होने की है, एक ही डिस्क सेट को संभालने की। विफलता की संभावना में यह तेजी से वृद्धि आपको चिंतित कर सकती है, क्योंकि यह बड़े पैमाने पर संभावना को बढ़ाता है कि एक बार में एक से अधिक सरणी विफल हो जाती हैं।

चूंकि इन डिस्क में लंबे जीवन काल होने की संभावना है, इसलिए आप संख्याओं को ऊपर के रूप में चला सकते हैं और सीधे देख सकते हैं कि इससे विश्वसनीयता पर क्या प्रभाव पड़ेगा - यदि आप ड्राइव विनिर्देशों को पोस्ट कर सकते हैं तो मैं उस गणना को इस पोस्ट में जोड़ सकता हूं। क्या जोखिम तब स्वीकार्य है या नहीं यह आपके संगठन को तय करना है।

नोट करने के लिए एक और आइटम यह है कि एसएसडी के एक ही बैच (एक ही कारखाने, एक ही समय) के भीतर निर्मित का उपयोग करके ड्राइव की विफलता की संभावना बढ़ सकती है। यदि आप सावधान नहीं हैं, तो आप इस समस्या के कारण सभी 3 नोड समाप्त हो सकते हैं।

अस्वीकरण: उपरोक्त गणना को सरल बनाया गया है - वे अभी भी अपेक्षाकृत सटीक हैं।


इस उत्तर पर बातचीत को चैट में स्थानांतरित कर दिया गया है ।
पॉल व्हाइट 9

13

मैं सोच रहा हूं कि RAID0 सरणियों पर उन्हें चलाने के लिए कुछ अन्य तरीकों से कई लाभ होंगे, यदि कोई हो, तो वास्तविक कमियां।

यह आंतरिक / प्रत्यक्ष-संलग्न भंडारण ड्राइव के साथ एजी को चलाते समय एक बहुत ही सामान्य कॉन्फ़िगरेशन है। विशेष रूप से NVMe या अन्य पीसीआई-आधारित फ्लैश स्टोरेज उपकरणों के साथ।

यह बस एक सर्वर विफलता की तरह एक ड्राइव विफलता के इलाज के लिए मात्रा है। सर्वर की अन्य ठोस अवस्था वाले घटकों की तुलना में छोटी संख्या में ठोस अवस्था में आपके पास ड्राइव के लिए वास्तव में कम MTBF नहीं होता है, और इसलिए आप बस प्रत्येक ड्राइव को पॉइंट-ऑफ-फेल्योर मानते हैं। सर्वर, और ड्राइव विफलता के मामले में सर्वर को प्रतिस्थापित / पुन: बनाता है।


2

मुझे लगता है कि आप क्या हासिल करने की कोशिश कर रहे हैं? आप अपने आप का उल्लेख करते हैं कि आप इस सेटअप से प्रदर्शन लाभ प्राप्त करने की कोशिश नहीं कर रहे हैं, तो आप क्या लाभ प्राप्त करने की कोशिश कर रहे हैं?

प्रदर्शन के मुद्दे पर ध्यान दें: यदि आप एंटरप्राइज क्लास SSDs चला रहे हैं, तो क्या आपकी RAID गणना वास्तव में एक अड़चन है कि आपको इसे सुधारने की आवश्यकता है?

अपने 3 पेशेवरों को लेते हुए, मुझे नहीं लगता कि आपने इसे पर्याप्त रूप से सोचा है:

  1. क्या SQL फेलओवर सीधे होगा? स्वचालित रूप से ट्रिगर करने में विफलता का कारण क्या है? जैसे ही कोई इसे हिट करेगा, क्या सर्वर ड्राइव को ऑफ़लाइन ले जाएगा? क्या होगा अगर यह सिर्फ एक डिस्क पर एक खराब सेक्टर है? यदि SQL खराब सेक्टर से नहीं टकराता है, तो क्या यह विफल हो जाएगा? मैं उस पर 100% निश्चित नहीं हूं।

  2. क्या यह प्रति टीबी क्षमता के अनुसार विफलता की संभावना को कम करता है। आपकी सोच को लगता है कि कम डिस्क विफलता के कम अंक का मतलब है, लेकिन मुझे नहीं लगता कि यह सही है। यदि आप 1 डिस्क या 10 डिस्क (या 100 डिस्क) रखते हैं, तो 1 डिस्क विफल होने की संभावना समान रहती है, लेकिन RAID 0 के साथ इसका मतलब यह भी है कि यह एक भयावह विफलता है।

  3. क्या एक अतिरिक्त SSD आपके लिए RAID5 प्राप्त करने के लिए बहुत अधिक खर्च करने वाला है? मुझे लगता है कि कैसे RAID1 या 1 + 0 बजट को उड़ा सकता है, लेकिन 1 अतिरिक्त डिस्क?

कोई अतिरेक के साथ, यदि कोई डिस्क विफल हो जाती है और RAID ऑफ़लाइन हो जाता है, तो वह नोड ऑफ़लाइन हो जाएगा जब तक आप RAID को फिर से बनाते हैं और अपने सभी डेटाबेस को खरोंच से पुनर्स्थापित करते हैं। ऐसा करने के लिए आप क्या प्रक्रिया करने जा रहे हैं? आप उपलब्धता समूह से डेटाबेस को हटा नहीं सकते हैं क्योंकि यह डीआर के लिए प्रतिकृति को रोक देगा, लेकिन यदि आप कुछ कार्रवाई नहीं करते हैं, तो अन्य दो सर्वर उनकी लॉग फ़ाइलों को काट नहीं पाएंगे। क्या वह ठीक है? लंबे सप्ताहांत के शुक्रवार की रात को विफल होने पर क्या होता है? क्या यह अब भी ठीक है? क्या आपकी दूसरी कंपनियां डेटा की मात्रा का सामना कर सकती हैं?

मेरे अंतिम प्रश्न पुनर्निर्माण के समय के आसपास होंगे, जिनका उल्लेख आप जल्दी करेंगे। क्या आप 100% सुनिश्चित हैं कि यह जल्दी हो जाएगा? कितना जल्दी?

ब्रेंट ओजर सर्वर सेटअप अभी भी नए एसक्यूएल इंस्टैंस को स्थापित करने के लिए मेरा मार्गदर्शन है। गाइड में बहुत पहले बिंदु मान्य है कि आप किसी भी ड्राइव के लिए RAID0 का उपयोग नहीं कर रहे हैं।

==== अद्यतन ====

एक अतिरिक्त विचार, क्या होता है जब आपके माध्यमिक सर्वर आपके प्राथमिक के साथ सिंक से बाहर हो जाते हैं? यहां तक ​​कि सिंक्रोनस प्रतिकृति के साथ, आपकी सेकंडरी अभी भी स्वचालित रूप से async पर वापस आ सकती है, और एक बार जब आप ऑटो-फ़ेलओवर की क्षमता खो देते हैं, तो किसी भी विफलता के परिणामस्वरूप डेटा हानि होगी। उदाहरण के एक जोड़े जब यह हो सकता है:

  1. एक बहुत बड़े सूचकांक का पुनर्निर्माण - प्रतिकृति एक या दोनों दूसरे के पीछे गिर सकती है
  2. RAID0 पर डिस्क विफलता माध्यमिक पैचिंग करते समय। जिस सर्वर को आप पैच कर रहे हैं वह प्राथमिक ऑफ़लाइन होने के कारण ऑनलाइन वापस नहीं आ सकता है।

वे किनारे के मामले हैं, लेकिन उन समय के दौरान खो जाने के आधार पर भयावह हो सकते हैं।


# 3 पर अपनी बात को जोड़ते हुए, यदि अतिरिक्त डिस्क (या तीन) की लागत बजट को बनाती या तोड़ती है, तो एक डिस्क के विफल होने पर उसे बदलने के लिए धन कहाँ से आएगा?
बजे एक CVn

@Greg तथ्य यह है कि मैं सब कुछ के माध्यम से नहीं सोचा है हो सकता है क्यों मैं यह सवाल पूछ रहा हूँ। मुझे लगता है कि मैं कहूंगा कि मैं देख रहा हूं कि मैं समग्र रूप से दक्षता में कहां सुधार कर सकता हूं। अपने सवालों के जवाब देने के लिए: 1. हाँ। सरणी की विफलता तुरंत एजी को एक अलग नोड में विफल हो जाएगी। एक बुरा क्षेत्र इस बात पर निर्भर करता है कि यह एक पुनर्प्राप्त करने योग्य बिट त्रुटि थी या नहीं, लेकिन यह एक विफलता का कारण होगा कि डिस्क किसी भी तरह की RAID में थी या नहीं। 2. कम डिस्क सरणी में विफलता की संभावना को कम करेगा। RAID0 सरणी की विफलता की संभावना को बढ़ाएगा। 3. नहीं, धन की बचत प्रति है।
zsqlman

@ अच्छी तरह से प्रश्नों का पालन करें और कुछ मैंने पूरी तरह से समाप्त नहीं किया था। सर्वर के ट्रिपल होने के साथ अतिरेक की कई परतें हैं। सभी डेटाबेस को पुनर्स्थापित करना आसानी से स्क्रिप्ट किया जा सकता है। यदि कोई नोड विफल होता है, तो हम Tlog बैकलॉग समस्या को दूर करने वाले एजी से उस प्रतिकृति को किक करेंगे और भले ही हम नोड को न हटाएं, हमारे पास लॉग ग्रोथ के कुछ दिनों के लायक बहुत जगह है। पुनर्प्राप्ति समय के बारे में, मेरे पास केवल एक डेटा बिंदु है और परीक्षण करने के लिए अधिक खाली हार्डवेयर नहीं है। हमारे पास केवल 1 RAID विफलता है और इसे पुनर्प्राप्त करने में 2+ दिन लगे और हम 8ish घंटे में पुनर्स्थापित कर सकते हैं।
zsqlman

@zsqlman - जब आपके पास RAID नहीं है, तो आपने डेटा खो जाने पर अतिरिक्त समय जोड़ा है। इसके अलावा, आपके द्वारा कम की गई असफलता पर लागू तर्क मुझे लगता है कि अभी भी त्रुटिपूर्ण है। RAID में कम डिस्क के साथ एक डिस्क के विफल होने की संभावना है, RAID में अतिरेक के साथ 1 डिस्क के विफल होने के समान है। डिस्क की संख्या कम करने से किसी एक डिस्क के विफल होने का जोखिम कम नहीं होता है - प्रत्येक डिस्क किसी अन्य डिस्क की तरह विफल होने की संभावना है।
ग्रेग

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