क्या मुझे अपने डेटाबेस को RAID 5 विन्यास से चलाना चाहिए?


13

मैंने सुना है कि RAID 5 का लेखन प्रदर्शन कई बार भयावह हो सकता है। जबकि मैं अतिरेक चाहता हूं कि यह प्रदान करता है कि मैं अपने डेटाबेस इन्सर्ट / अपडेट समय का त्याग नहीं करना चाहता।

क्या यह कुछ ऐसा है जिसके बारे में मुझे चिंतित होना चाहिए और यदि ऐसा है, तो अच्छे लेखन प्रदर्शन के साथ अतिरेक पाने के लिए क्या सिफारिश की जाएगी ?


1
कौन सा DB? ओरेकल + RAID 5 एक नो-नो हुआ करता था। यकीन नहीं होता अगर यह अभी भी मामला है।
cagcowboy

इस विशेष उदाहरण में डेटाबेस MySql और MSSQL पर चलता है।
स्कॉट साद

आवेदन के संबंध में प्रश्न में थोड़ी अधिक विशिष्टता (डीबी रीड / राइट मिक्स, अप टाइम और रिकवरी टाइम रिक्वायरमेंट्स) के बारे में अधिक जवाब मिल सकता है; इन बातों से सबसे अच्छा समाधान हो सकता है।
जे स्टीवंस

जवाबों:


23

RAID 10 की आमतौर पर सिफारिश की जाती है क्योंकि I / O इतना यादृच्छिक है। यहाँ एक उदाहरण है। गणना थोड़ा सरल है, लेकिन सुंदर प्रतिनिधि हैं।

मान लीजिए कि आपके पास 6 ड्राइव ऐरे हैं और आपके ड्राइव 100 I / Os प्रति सेकंड (IOPS) कर सकते हैं। यदि आपके पास 100% रीड हैं, तो सभी छह ड्राइव का उपयोग किया जाएगा और आपके पास RAID 10 और RAID 5 दोनों के लिए लगभग 600 IOPS होंगे।

सबसे खराब स्थिति 100% लिखती है। उस परिदृश्य में, RAID 10 का प्रदर्शन आधे में कट जाएगा (क्योंकि प्रत्येक लेखन दो ड्राइव पर जाता है), इसलिए इसे 300 IOPS मिलेगा। RAID-5 प्रत्येक लिखने को दो रीड्स में बदल देगा जिसके बाद दो राइट्स होंगे, इसलिए इसे 1/4 प्रदर्शन या लगभग 150 IOPS मिलेंगे। वह बहुत बड़ी हिट है।

आपका वास्तविक पढ़ा / लिखा पैटर्न इन दोनों चरम सीमाओं के बीच में कहीं होगा, लेकिन यही कारण है कि RAID 10 आमतौर पर डेटाबेस के लिए अनुशंसित है।

हालाँकि, यदि आपके पास एक व्यस्त डेटाबेस सर्वर नहीं है, तो आप RAID-6 भी कर सकते हैं। मैं अक्सर ऐसा करता हूं कि अगर मुझे पता है कि डेटाबेस अड़चन नहीं होने वाला है क्योंकि यह आपको RAID 10 या RAID 5 की तुलना में बहुत अधिक सुरक्षा देता है।


22

लेन-देन डेटाबेस

RAID-5 अपेक्षाकृत धीमी गति से लिखने के लिए है क्योंकि नियंत्रक को लिखने पर समता को पुनः प्राप्त करने के लिए पर्याप्त डेटा में लोड करने की आवश्यकता होती है। लिखने के संचालन में कम से कम चार डिस्क संचालन होंगे:

  • समता ब्लॉक में पढ़ना

  • समता ब्लॉक के साथ मान को पुराने ब्लॉक में पढ़ना (यह पहले से ही कैश में नहीं है) मान लेना।

  • नया समता ब्लॉक लिखना (पुराना समता खंड XOR पुराना डेटा ब्लॉक XOR नया डेटा ब्लॉक)

  • नया डेटा ब्लॉक लिखना।

यदि सिस्टम राइट-बैक कैशिंग का उपयोग नहीं करता है तो इसका मतलब है कि ये सभी ऑप्रेशन I / O पूर्ण होने के लिए महत्वपूर्ण पथ पर हैं। अक्सर, डेटाबेस के साथ ऐसा ही होता है - वास्तव में, Microsoft (उदाहरण के लिए) के पास SQL ​​सर्वर के साथ उपयोग के लिए SAN उपकरण के लिए एक प्रमाणन कार्यक्रम है जो विक्रेताओं को इस व्यवहार की गारंटी देने की आवश्यकता है। कभी-कभी पुराने RAID-5 उपकरणों ने इस अनुकूलन का उपयोग नहीं किया और संपूर्ण पट्टी से समता को पुन: प्राप्त करना था।

RAID-10 में प्रत्येक एकल ड्राइव के लिए एक दर्पण है और समता की गणना के लिए अतिरिक्त डेटा पढ़ने की आवश्यकता नहीं है। इसका मतलब है कि लिखने के लिए बहुत कम शारीरिक I / O की आवश्यकता है।

RAID-50 बीच में कहीं नहीं बैठता है, वॉल्यूम के साथ कई RAID -5 वॉल्यूम में विभाजित होते हैं, जो बारी से धारीदार होते हैं। 3 + 1 स्कीम में धारी वाले समूहों से बने RAID -50 पर एक लेखन सबसे अधिक तीन अतिरिक्त डिस्क I / O अनुरोधों पर उत्पन्न होता है। अगर आपको ऐसा लगता है कि आप RAID-5 और RAID-10 को RAID-50 के विशेष मामलों के रूप में देख सकते हैं। RAID-50 का उपयोग मुख्य रूप से कई भौतिक डिस्क में बड़े वॉल्यूम प्रदान करने के लिए किया जाता है

RAID-6 जैसी अन्य समता योजनाएं (प्रति सेट दो निरर्थक डिस्क के साथ एक समता योजना) भी मौजूद हैं, आधुनिक डिस्क काफी बड़ी हैं कि किसी सरणी को बगावत करने में काफी लंबा समय लग सकता है - इतना लंबा कि दूसरी डिस्क विफलता का जोखिम पुनर्निर्माण काफी महत्वपूर्ण है। RAID-6 एक दूसरी समता डिस्क होने से इस जोखिम को कम करता है, जिससे डेटा की हानि के लिए तीन डिस्क विफलताओं की आवश्यकता होती है। RAID-50 योजनाओं के लिए एक समान चाल का उपयोग RAID-60 सरणियों को बनाने के लिए किया जा सकता है।

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

यदि आपके पास लेखन-भारी कार्यभार है, तो आपको संभवतः RAID-10 वॉल्यूम से प्रदर्शन लाभ मिलेगा। यह एक जीत हो सकती है क्योंकि आप अपने आवश्यक थ्रूपुट को भौतिक डिस्क की एक छोटी संख्या से प्राप्त कर सकते हैं, यह मानते हुए कि डिस्क में पर्याप्त जगह है)। डेटाबेस सर्वर पर लॉग या टेम्परेरी एरिया जैसे कुछ आइटम RAID-1 या RAID-10 वॉल्यूम पर होने चाहिए, क्योंकि इनमें बहुत सारा ट्रैफिक मिलता है।

लॉग्स

लॉग वॉल्यूम को ज्यादातर अनुक्रमिक डेटा एक्सेस पैटर्न द्वारा विशेषता दी जाती है, और अनिवार्य रूप से एक रिंग बफर होता है जिसमें कमांड्स होते हैं, जो 'इस ब्लॉक पर डेटा लिखें' की तर्ज पर उन्हें कोर DBMS इंजन द्वारा एक निर्माता के रूप में लिखा जाता है और एक conumer के रूप में संसाधित किया जाता है। लॉग रीडर फ़ंक्शन द्वारा। एक एकल मिरर की गई जोड़ी वास्तव में लॉग ट्रैफिक के काफी संभाल लेगी।

रीड-हैवी सिस्टम और फाइल सर्वर

एक रीड-हेवी सिस्टम जैसे डेटा वेयरहाउस पर आप एक या अधिक RAID-5 वॉल्यूम का उपयोग करना चाह सकते हैं। एक फ़ाइल सर्वर पर, डिस्क एक्सेस बड़े पैमाने पर एक पूरी फ़ाइल के आधार पर किया जाएगा, इसलिए शायद ज्यादातर ब्लॉक को समाप् त कर देगा। इस स्थिति में RAID -5 के लिए प्रदर्शन दंड हल्का होगा।

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

राइट-बैक कैशिंग और RAID -5

बैटरी-समर्थित कैश के साथ SAN या आंतरिक RAID नियंत्रक पर आप 'राइट-बैक' कैशिंग सक्षम कर सकते हैं। यह कैश लिखता है और एप्लिकेशन पर नियंत्रण लौटाता है। नियंत्रक द्वारा I / O की सूचना दी गई है। हालाँकि, यह जरूरी नहीं कि डेटा को तुरंत डिस्क से लिखें। यह सुविधा RAID-5 समता को पढ़ने / लिखने के संचालन को काफी हद तक अनुकूलित करने की अनुमति देता है और RAID-5x संस्करणों के लिए लिखने के प्रदर्शन के दंड को नरम कर सकता है।

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

सारांश

डिस्क स्थान आजकल इतना सस्ता है कि ट्रांजेक्शनल सिस्टम को लॉग वॉल्यूम के लिए शायद RAID-1 या RAID-10 और डेटा वॉल्यूम के लिए RAID-10 का उपयोग करना चाहिए। भौतिक डिस्क का आकार डेटाबेस से बहुत बड़ा होने की संभावना है और RAID-10 समान संख्या में डिस्क के लिए अधिक थ्रूपुट लिखने की अनुमति देगा, संभवतः सिस्टम का समर्थन करने के लिए आवश्यक डिस्क वॉल्यूम की संख्या को कम करता है।

डेटा वेयरहाउस जैसी किसी चीज़ पर आप अभी भी बड़े, भारी अनुक्रमित तथ्य तालिकाओं के साथ स्थान चबा सकते हैं ताकि आपको RAID-5 या RAID-50 डेटा संस्करणों के साथ छोटी कीमत की जीत मिल सके। हालांकि लॉग और टेम्पर्डब को अभी भी RAID-10 वॉल्यूम पर रखा जाना चाहिए, क्योंकि वे ETL प्रसंस्करण के दौरान बहुत काम करेंगे। हालांकि, डिस्क पर लागत बचत काफी कम होने की संभावना है।


राइट-बैक कैश: यदि आप "बैटरी-समर्थित" राइट-बैक कैश नोट के साथ एक RAID नियंत्रक खरीद रहे हैं तो बैटरी शामिल नहीं लगती है। सुनिश्चित करें कि आप अपने आपूर्तिकर्ता को एक शामिल करने के लिए प्राप्त करें।
डेविड हिक्स

कुछ करते हैं, कुछ नहीं करते। मुझे काफी कुछ एडेप्टेक 2200 का मिला है जो बैटरी के साथ नहीं आया है। कुछ उनके साथ मानक के रूप में आते हैं।
कंसर्नडऑफटुनब्रिज

1
आपकी प्रतिक्रिया में कोई त्रुटि है। आप करते नहीं पुनर्गणना समता के लिए हर ड्राइव पढ़ने की जरूरत है। एक राइट 2 रीड हो जाता है और 2 लिखता है। आपके उदाहरण में अन्य 12 ड्राइव 14-ड्राइव सरणी RAID5 द्वारा छुआ नहीं जाएगा।
TorgoGuy

असल में, मुझे विश्वास है कि आदमी सही है। आप ब्लॉक के पुराने मूल्य के साथ और फिर से ब्लॉक के नए मूल्य के साथ समानता को पढ़ सकते हैं और XOR कर सकते हैं। ऐसा पहले कभी नहीं देखा गया है लेकिन यह काम करेगा।
कंसर्नडऑफटुनब्रिजवल्स

3

खैर, यह आपकी गलती / जोखिम सहिष्णुता पर बहुत अधिक निर्भर करता है। RAID5 में बहुत सारे मुद्दे हैं । मेरे DB सर्वर में वर्तमान में दो मिरर ड्राइव हैं, और अगर मैं उस पैमाने पर था, तो मैं अधिक समानता के साथ कुछ के लिए जाऊंगा, शायद RAID6 या RAID10

इसके अलावा, यदि आपका आवेदन अपटाइम-क्रिटिकल है, तो मैं संभवतः दो डेटाबेस सर्वरों के बदले प्रतिकृति, मास्टर-मास्टर या हॉट स्पेयर या जो भी हो, की सिफारिश करूंगा। RAID केवल डिस्क विफलताओं के खिलाफ मदद करता है, लेकिन बहुत अधिक है जो एक सर्वर पर गलत हो सकता है :)


3

निर्भर करता है कि आप कितना लेखन कर रहे हैं।

यदि यह काफी हल्का "वेब ऐप" है, तो आपको RAID5 पर कोई भी प्रदर्शन हिट होने की संभावना नहीं है।

यदि आप बड़ी ईटीएल के साथ एक मल्टी-जीबी डेटा वेयरहाउस का निर्माण कर रहे हैं, तो RAID 5 पर लिखी बफर जल्दी से निकल जाएगी और आपके सीधे RAID 5 के "खराब लेखन प्रदर्शन" में।

प्रत्येक RAID5 लेखन में कम से कम 3 राइट्स (प्लस सीआरसी गणना) का कारण होगा। जब बफ़र किया जाता है, तो यह ठीक है और तेज़ (गतिविधि की छोटी छोटी फट - एकल रिकॉर्ड अपडेट और आवेषण)। यदि यह निरंतर लिखता है (बड़े थोक सम्मिलित / अद्यतन) तो इस पर ध्यान दिया जाएगा।

यह प्रदर्शन और अंतरिक्ष के बीच एक संतुलन है। RAID 10 (धारीदार ड्राइव का दर्पण) प्रदर्शन और लचीलापन दोनों देता है, लेकिन क्षमता में 50% की कमी।

RAID5 उच्च क्षमता देता है, अच्छा पठन प्रदर्शन लेकिन खराब (बड़ा) लेखन प्रदर्शन।


2

RAID 1, यह मेरा अंतिम उत्तर है

कारण:

प्रतिबिंबित जोड़ी विफल डिस्क के लिए पर्याप्त अतिरेक देती है और RAID अंतिम डिस्क पर कार्य करना जारी रखता है।

यदि आप अपने डेटा और इंडेक्स को सावधानी से रखते हैं तो दर्पण जोड़ी की पैदावार अधिक से अधिक I / O प्रदर्शन करती है ... [संकेत: डेटा और इसके सूचकांक (ओं) के लिए अलग मात्रा का उपयोग करें। आप अपने नियंत्रकों को डुबो कर और भी अधिक प्रदर्शन प्राप्त कर सकते हैं।


RAID 1 + 0 क्यों नहीं?
ब्रायन नॉबलुच


2

संक्षिप्त उत्तर: नहीं।

लंबे उत्तर: जब तक आपके पास बहुत छोटा डेटाबेस या बहुत कम आवश्यकताएं हों, नहीं। डेटा पुनर्प्राप्ति प्रति सेकंड डिस्क I / O संचालन पर बहुत अधिक निर्भर है, और स्ट्रिपिंग का ओवरहेड समय के साथ आपके डिस्क एक्सेस को खाएगा, विशेष रूप से लंबे क्वेरी रन के साथ। अधिकांश डेटाबेस एक RAID 10 शैली सेटअप पर या डेटा के विभाजन वाले विशिष्ट संस्करणों के साथ चलाए जाते हैं। हाँ, RAID 10 आपको लिखने में खर्च होगा, लेकिन आपका पढ़ा हुआ प्रदर्शन (सही सेटअप के साथ) ऊपर जाएगा


1

क्या अच्छा लेखन प्रदर्शन के साथ अतिरेक प्राप्त करने के लिए सिफारिश की जाएगी?

एक बड़ा राइट-बैक कैश। अपने हार्डवेयर RAID नियंत्रक पर RAM बढ़ाएँ या आपके सॉफ़्टवेयर RAID समाधान के लिए उपलब्ध RAM (लिनक्स के MDADM के लिए सिस्टम RAM बढ़ाएँ, MDADM गुब्बारे का उपयोग करें अन्यथा अप्रयुक्त सिस्टम RAM को कैश के रूप में उपयोग करें)। यह सलाह "बड़े" के दिए गए मानों के लिए है - यदि आप अक्सर (समय का 5%?) तेज़ी से एक दर पर डेटा लिख ​​रहे हैं, तो कैश को भरने के लिए कोई फर्क नहीं पड़ता कि यह कितना बड़ा है, इससे बहुत कम फर्क पड़ेगा।


1

वास्तव में अपनी ओएस फाइलों से अपनी डेटा फ़ाइलों, लॉग फ़ाइलों को अलग करने के बारे में। लॉग क्रमिक रूप से डेटा लिखता है बहुत सारे यादृच्छिक पढ़ता है और कुछ यादृच्छिक लिखता है

RAID कॉन्फ़िगरेशन का निर्माण करके जो इन लक्षणों का समर्थन करते हैं आप प्रदर्शन को बढ़ाते हैं

RAID 1 - मिररिंग लॉग फ़ाइलों के लिए बहुत अच्छा है RAID 10 आपके डेटा फ़ाइलों के लिए अच्छा है। इसके अलावा TempbDB और बैकअप को अलग-अलग ड्राइव में देखने के लायक है। फ़ाइलग्रुप को जोड़ना प्रदर्शन को बढ़ाने का एक और तरीका है। जब यह SAN की बात आती है तो यह इतना स्पष्ट नहीं है। यह निर्भर करता है कि क्या आप प्रत्येक LUN के लिए विशिष्ट RAID कॉन्फ़िगरेशन बना रहे हैं या स्पिंडल की संख्या पर निर्भर हैं।


0

हाल ही में StackOverflow ब्लॉग लेख की भावना में यह कहते हुए कि हमें इंटरनेट पर पहले से मौजूद उत्तर फिर से पेश नहीं करने चाहिए, मैं आपको इस ओर इशारा करता हूं।

RAID-5 अतिरेक में अद्वितीय नहीं है जो यह प्रदान करता है, यह सिर्फ कुछ विकल्पों की तुलना में कम अतिरिक्त डिस्क का उपभोग करते समय करता है। आप समान या बेहतर अतिरेक और बेहतर लेखन प्रदर्शन के साथ कुछ और चुन सकते हैं


0

RAID5 से डेटाबेस चलाना आमतौर पर एक गलती है। मैंने केवल इसे दो मामलों में देखा है - अच्छी तरह से इंजीनियर डेटाबेस जो कुछ लिखने के साथ पढ़ने में गहन थे, और डेटाबेस जहां RAID5 के कारण "अंतरिक्ष को बर्बाद करना" राजनीतिक रूप से व्यवहार्य नहीं था।

RAID5 लेनदेन के प्रदर्शन को नष्ट कर देगा।

इसके अलावा, यदि आप RAID5 पर विचार कर रहे हैं, तो देखें कि क्या आपको काम करने के लिए RAID6 मिल सकता है। सैद्धांतिक विश्वसनीयता इतनी बेहतर है, हालांकि अपरिपक्व कार्यान्वयन के कारण वास्तविक दुनिया की विश्वसनीयता अक्सर खराब होती है।

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