RAID 10 और RAID 01 की तुलना
ये दो RAID स्तर अक्सर बहुत भ्रम पैदा करते हैं, आंशिक रूप से इसलिए क्योंकि इन्हें गलत तरीके से एक-दूसरे के स्थान पर उपयोग किया जाता है और अक्सर बस इसलिए क्योंकि इन्हें ठीक से समझा नहीं गया है।
पहली बात, यह बताना जरूरी है कि दोनों को plus sign के साथ या बिना लिखा जा सकता है: RAID 10 को RAID 1+0 और RAID 01 को RAID 0+1 भी लिखा जाता है। अजीब बात यह है कि RAID 10 को लगभग कभी plus sign के साथ नहीं लिखा जाता और RAID 01 को लगभग कभी बिना plus sign के नहीं लिखा जाता। Storage engineers आम तौर पर सहमत हैं कि plus sign का उपयोग नहीं किया जाता क्योंकि यह अनावश्यक है।
ये दोनों RAID स्तर "compound" स्तर हैं जो दो अलग-अलग, सरल RAID प्रकारों को मिलाकर बनाए जाते हैं। दोनों mirror-आधारित, non-parity compound या nested RAID हैं। दोनों में मूल रूप से समान performance विशेषताएं हैं – न्यूनतम overhead और latency के साथ NX read speed और (NX)/2 write speed जहाँ N array में drives की संख्या है और X array में एक individual drive की performance है।
जो चीज़ इन दोनों RAID स्तरों को अलग करती है वह है कि वे disk failure को कैसे संभालते हैं। संक्षिप्त विवरण यह है कि RAID 10 लगभग सभी उचित परिस्थितियों में अत्यंत सुरक्षित है। RAID 01, हालांकि, जैसे-जैसे array का आकार बढ़ता है, तेजी से काफी जोखिम भरा हो जाता है।
RAID 10 में, किसी एक drive के खोने से RAID 0 stripe के अंदर केवल एक RAID 1 set का degradation होता है। Stripe स्तर में कोई degradation नहीं होता, केवल एक singular RAID 1 mirror में होता है। अन्य सभी mirrors अप्रभावित रहते हैं। इसका मतलब यह है कि हमारा एकमात्र बढ़ा हुआ जोखिम यह है कि वह एक drive अब बिना redundancy के चल रही है और उसकी कोई सुरक्षा नहीं है। अन्य सभी mirrored sets अभी भी पूरी सुरक्षा बनाए रखते हैं। तो हमारा exposure एक single, असुरक्षित drive है – बिल्कुल वैसे ही जैसे आप एक desktop machine में उम्मीद करेंगे।
Degraded RAID 10 में array repair सबसे तेज़ संभव repair scenario है। एक failed drive को replace करने पर, बस वही single mirror rebuild होता है – जो कि एक simple copy operation है जो RAID 0 stripe के नीचे RAID 1 स्तर पर होता है। इसका मतलब यह है कि यदि overall array idle है तो mirroring process पूरी speed से आगे बढ़ सकती है और overall array को यह भी पता नहीं चलता कि यह हो रहा है। Disk to disk mirror बेहद तेज़, कुशल और विश्वसनीय है। यह एक आदर्श recovery scenario है। यहाँ तक कि अगर एक साथ कई mirrors में degradation हो और वे एक साथ repair हो रहे हों तो कोई अतिरिक्त प्रभाव नहीं पड़ता क्योंकि एक का rebuild दूसरों को प्रभावित नहीं करता। RAID 10 का जोखिम और repair प्रभाव दोनों बेहद अच्छी तरह से scale होते हैं।
RAID 01, दूसरी ओर, जब यह एक single drive खोता है तो तुरंत एक पूरा RAID 0 stripe खो देता है। एक सामान्य RAID 01 mirror में दो RAID 0 stripes होते हैं। इसका मतलब है कि पूरे array का आधा हिस्सा fail हो गया है। अगर हम आठ drive वाले RAID 01 array की बात करें, तो एक single drive की failure से चार drives तुरंत inoperable और effectively failed हो जाती हैं (hardware को replace करने की ज़रूरत नहीं है लेकिन drives पर data outdated है और useful होने के लिए उसे rebuild करना होगा।) इसलिए जोखिम के दृष्टिकोण से, हम इसे पूरे stripe की failure के रूप में देख सकते हैं।
एक single disk के fail होने के बाद जो बचता है वह केवल एक single, असुरक्षित RAID 0 stripe है। यह समकक्ष RAID 10 failure की तुलना में कहीं अधिक खतरनाक है क्योंकि जोखिम में केवल एक single, isolated hard drive नहीं है बल्कि अब न्यूनतम दो disks और संभावित रूप से कई और जोखिम में हैं और प्रत्येक drive इस जोखिम के संपर्क में आने पर जोखिम को काफी बढ़ा देती है।
उदाहरण के तौर पर, सबसे छोटे संभव RAID 10 या 01 array में हमारे पास चार drives हैं। RAID 10 में अगर एक drive fail होती है, तो हमारा जोखिम यह है कि उसका matching partner भी fail हो जाए इससे पहले कि हम array rebuild करें। हम केवल उस एक drive की चिंता करते हैं, RAID 10 set की बाकी सभी drives अभी भी सुरक्षित हैं। RAID 01 में, जब पहली drive fail होती है तो उसके RAID 0 set का partner तुरंत बेकार हो जाता है क्योंकि वह array में अब operable नहीं है। जो बचता है वह दो drives हैं जिनकी कोई सुरक्षा नहीं है और वे केवल RAID 0 चला रही हैं, इसलिए हमारे पास वही जोखिम है जो RAID 10 में था, दोगुना। यह हमारे जोखिम को, best case scenario में भी, बहुत अधिक बना देता है।
लेकिन एक अधिक नाटकीय उदाहरण के लिए आइए twenty-four drive वाले RAID 10 और RAID 01 array को देखें। RAID 10 के साथ फिर से, अगर एक drive fail होती है तो बाकी सभी, उसके एक partner को छोड़कर, अभी भी सुरक्षित हैं। Array के अतिरिक्त आकार ने लगभग शून्य अतिरिक्त जोखिम जोड़ा। हम अभी भी केवल उस एक अकेली drive की failure से डरते हैं। इसकी तुलना RAID 01 से करें जिसमें एक drive fail होने पर उसके RAID 0 arrays में से एक fail हो जाएगा, जो एक साथ बारह disks को बाहर कर देगा, और बाकी बारह disks किसी भी सुरक्षा के बिना RAID 0 में रह जाएंगी। बारह drives में से एक के fail होने की संभावना clearly एक single drive के fail होने की संभावना से काफी अधिक है।
यह पूरी तस्वीर नहीं है। Single RAID 10 disk की recovery तेज़ है, यह एक drive से दूसरी drive में सीधी copy operation है। यह न्यूनतम resources उपयोग करती है और केवल उतना ही समय लेती है जितना एक single drive को अपनी पूरी सामग्री read और write करने में लगता है। RAID 01 इतना भाग्यशाली नहीं है। RAID 10 के विपरीत जो पूरे array के केवल एक छोटे subset को rebuild करता है, और एक ऐसा subset जो array के बढ़ने के साथ नहीं बढ़ता – failure के बाद चार drive RAID 10 या चालीस drive RAID 10 को recover करने का समय समान है, RAID 01 को पूरे parent array के आधे हिस्से को rebuild करना होता है। चार drive array के मामले में, यह RAID 10 के rebuild work का दोगुना है लेकिन twenty-four drive array के मामले में यह किए जाने वाले rebuild work का बारह गुना है। इसलिए RAID 01 rebuilds में अधिक समय लगता है और उस दौरान जोखिम भी काफी अधिक होता है।
एक काफी persistent myth है कि RAID 01 और RAID 10 में अलग-अलग performance विशेषताएं हैं, लेकिन ऐसा नहीं है। दोनों plain striping और mirroring का उपयोग करते हैं जो effectively zero overhead operations हैं जिनके लिए लगभग कोई processing overhead नहीं चाहिए। दोनों को उनसे जुड़े हर disk device से full read performance मिलती है और प्रत्येक अपनी mirroring operation के लिए अपनी आधी write performance खो देते हैं (यह मानते हुए कि two way mirrors हैं जो किसी भी array type के एकमात्र सामान्य उपयोग हैं।) RAID 01 या RAID 10 को दूसरे की तुलना में तेज़ या धीमा बनाने के लिए कुछ भी नहीं है। दोनों अत्यंत तेज़ हैं।
दोनों array types की विशेषताओं के कारण, यह स्पष्ट है कि RAID 10 ही एकमात्र प्रकार है, इन दोनों में से, जो किसी single array controller के भीतर मौजूद होना चाहिए। RAID 01 अनावश्यक रूप से खतरनाक है और इसके कोई फायदे नहीं हैं। वे समान capacity overhead उपयोग करते हैं, उनकी performance समान है, उन्हें implement करने की लागत समान है, लेकिन RAID 10 काफी अधिक विश्वसनीय है।
तो RAID 01 का अस्तित्व क्यों है? आंशिक रूप से यह अज्ञानता या भ्रम से अस्तित्व में है। कई लोग, अपने स्वयं के compound RAID arrays implement करते समय, RAID 01 चुनते हैं क्योंकि उन्होंने myth सुनी है कि यह तेज़ है और, जैसा कि RAID के साथ आम तौर पर होता है, यह जांच नहीं करते कि यह तेज़ क्यों होगा और इसकी reliability और अन्य कारकों को देखना भूल जाते हैं। RAID 01 वास्तव में local arrays पर केवल गलती से implement किया जाता है।
हालाँकि, जब हम RAID को network layer पर ले जाते हैं, तो विचार करने के लिए नए कारक हैं और RAID 01 महत्वपूर्ण हो सकता है, जैसा कि इसका दुर्लभ cousin RAID 61 हो सकता है। हम Network RAID Notation के माध्यम से यह denote करते हैं कि RAID के local और network layers कहाँ मौजूद हैं। तो इस मामले में हमारा मतलब RAID 0(1) या RAID 6(1) है। Parentheses यह denote करते हैं कि RAID 1 mirror, RAID stack का "highest" portion, एक network connection पर है न कि local RAID controller पर।
RAID 0(1) में यह कैसा दिखेगा? यदि आपके पास दो servers हैं, प्रत्येक में एक standard RAID 0 array है और आप चाहते हैं कि वे एक single, reliable array के रूप में कार्य करने के लिए synchronized हों, तो आप प्रत्येक server पर local storage से network RAID 1 array बनाने के लिए DRBD (Linux पर) या HAST (FreeBSD पर) जैसी technology का उपयोग कर सकते हैं। जाहिर है इसमें बहुत सारी performance overhead है क्योंकि RAID 1 array को high latency, low bandwidth LAN connection पर sync में रखना होता है। RAID 0(1) इस setup के लिए notation है। यदि प्रत्येक local RAID 0 array को अधिक reliable RAID 6 से replace किया जाए तो हम पूरे setup को RAID 6(1) लिखेंगे।
हम network पर RAID 01 के जोखिम को क्यों स्वीकार करते हैं जबकि local पर नहीं करते? यह network link की प्रकृति के कारण है। RAID 10 के मामले में, हम सुरक्षा के लिए RAID stack के low level RAID 1 portion पर निर्भर करते हैं और RAID 0 ऊपर बैठता है। यदि हम इसे network level पर replicate करें जैसे RAID 1(0) तो जो होता है वह यह है कि प्रत्येक host के पास एक single mirror है जो array के data का केवल एक portion represent करता है। यदि array के किसी node में कुछ भी होता है या यदि network connection fail होता है तो array तुरंत नष्ट हो जाएगा और प्रत्येक node के पास useless, incomplete data होगा। Node failure का high risk और network connection level पर risk की यही प्रकृति है जो network setting में RAID decisions को extremely different बना देती है। यह अपने आप में एक complex subject बन जाता है।
संक्षेप में कहें, normal RAID array controllers या local storage और software RAID के साथ काम करते समय, exclusively RAID 10 का उपयोग करें और कभी भी RAID 01 का नहीं।
