SAN और NAS की तुलना
हाल के वर्षों में मैंने जो सबसे बड़ी भ्रांति देखी है वह NAS और SAN के बीच की है। प्रत्येक क्या है यह समझने से यह समझने में काफी मदद मिलेगी कि वे कहाँ उपयोगी और उचित हैं।
हमारा पहला कार्य marketing terms को हटाकर technical terms पर जाना है। NAS का अर्थ है Network Attached Storage लेकिन इसका ठीक वैसा मतलब नहीं है और SAN का अर्थ है Storage Area Network लेकिन आम तौर पर इसका उपयोग network के बजाय एक SAN device को refer करने के लिए किया जाता है। अपने सबसे उचित रूप में, एक SAN कोई भी network है जो storage traffic के लिए समर्पित है, लेकिन वास्तविक दुनिया में, इसका उपयोग आम तौर पर इस प्रकार नहीं किया जाता। इस मामले में हम NAS और SAN devices के बारे में बात करने के लिए यहाँ हैं और वे कैसे तुलना करते हैं। वास्तव में, दोनों NAS और SAN marketing terms हैं और इस वजह से थोड़े अस्पष्ट हैं। दोनों terms, device context में उपयोग किए जाने पर, एक certain technology को “appliancized” किया गया है यह imply करने के लिए उपयोग किए जाते हैं।
तो हमारा पहला कार्य यह define करना है कि ये दो नाम device context में क्या मतलब रखते हैं। दोनों devices storage servers हैं, सीधे और सरल, बस storage को बाहरी दुनिया के सामने expose करने के दो अलग तरीके।
दोनों में से सरल SAN है जो उचित रूप से एक block storage device है। कोई भी device जो अपनी storage को बाहरी रूप से एक block device के रूप में expose करती है इस category में आती है। Block storage devices में external hard drives, DAS (Direct Attach Storage) और SAN शामिल हैं। ये सभी वास्तव में एक ही चीज़ हैं। हम इसे external hard drive कहते हैं जब हम इसे desktop से जोड़ते हैं। हम इसे DAS कहते हैं जब हम इसे server से जोड़ते हैं। हम इसे SAN कहते हैं जब हम device और final device के बीच networking, आम तौर पर एक switch, जोड़ते हैं। इन devices के बीच कोई technological अंतर नहीं है। Block storage के लिए common protocols में iSCSI, Fibre Channel, SAS, eSATA, USB, Thunderbolt, IEEE1394 (aka Firewire), Fibre Channel over Ethernet (FCoE) और ATA over Ethernet (AoE) शामिल हैं। एक block storage device से जुड़ने वाला device हमेशा storage को एक disk drive के रूप में देखेगा, और कुछ नहीं।
एक NAS, जिसे “filer” भी कहा जाता है, एक file storage device है। इसका अर्थ है कि यह अपनी storage को एक network filesystem के रूप में expose करता है। तो इस storage से जुड़ने वाला कोई भी device एक disk drive नहीं देखता बल्कि एक mountable filesystem देखता है। जब एक NAS को appliance के रूप में package नहीं किया जाता, तो हम इसे सीधे file server कहते हैं। File storage devices के लिए common protocols में NFS, SMB / CIFS और AFP शामिल हैं। एक traditional web server file storage device का एक बहुत specialized form है।
Block storage और file storage devices को अलग करने वाली चीज़ वह प्रकार का interface है जो वे बाहरी दुनिया के सामने प्रस्तुत करते हैं, या इसे दूसरे तरीके से सोचें तो, storage stack के भीतर server device और client device के बीच विभाजन कहाँ होता है।
आज यह बेहद सामान्य हो गया है कि storage devices में एक ही device से block storage और file storage दोनों शामिल हों। ऐसा करने वाली systems को unified storage कहा जाता है। Unified storage के साथ, आप यह कह सकते हैं कि यह block storage या file storage device (common parlance में SAN या NAS) या दोनों के रूप में व्यवहार कर रहा है, यह इस बात पर आधारित है कि आप device के लिए कौन सा behavior configure करते हैं।
दोनों प्रकार के devices के पास उस “demarcation point” के नीचे extended features प्रदान करने का option है जिस पर वे storage को बाहर hand off करते हैं। दोनों RAID, logical volume management, monitoring आदि प्रदान कर सकते हैं या नहीं भी कर सकते। File storage (NAS) Windows NTFS ACLs जैसी file system features भी प्रदान कर सकती है।
Block storage का मुख्य advantage यह है कि इससे जुड़ने वाली systems को storage system को traditional disk drive की तरह manipulate करने का अवसर मिलता है। इसका अर्थ है कि RAID और logical volume management, जो storage device के “black box” में पहले से किया जा सकता था, अब यदि वांछित हो तो एक उच्च स्तर पर फिर से किया जा सकता है।
आमतौर पर, Linux LVM, Solaris ZFS या Windows Dynamic Disks जैसे logical volume management को device के exposed block storage के ऊपर लागू किया जाता है और फिर उस पर एक filesystem employ किया जाएगा। Block storage devices के साथ filesystem को client device द्वारा create और manage किया जाता है, storage device द्वारा नहीं। Block storage devices को स्तरीय किया जा सकता है, कमोबेश, अनिश्चित काल तक।
वैकल्पिक रूप से, एक file storage device में storage का पूरा block portion होता है इसलिए RAID, logical volume management और monitoring के लिए कोई भी अवसर file storage device द्वारा संभाला जाना चाहिए। फिर, block storage के ऊपर, एक filesystem लागू किया जाता है। आमतौर पर यह Linux का EXT4, FreeBSD और Solaris का ZFS, Windows NTFS हो सकता है। इस filesystem पर data store किया जाएगा। इस data को बाहरी दुनिया के साथ share करने के लिए एक network file system (distributed file system भी कहा जाता है) उपयोग किया जाता है – NFS, SMB और AFP सबसे common हैं।
File storage device पर storage use करना चाहने वाला एक remote device network पर इसे उसी तरह देखेगा जैसे वह एक local filesystem देखता है। यह file storage को end consumers के लिए विशेष रूप से आसान और स्पष्ट बनाता है। Windows में “drive map” करते समय, उदाहरण के लिए, हम एक network file system उपयोग कर रहे हैं।
Block storage और file storage के बीच एक critical differentiation जो अवश्य की जानी चाहिए वह यह है कि जबकि दोनों potentially एक network पर हो सकते हैं और multiple client machines को उनसे attach होने दे सकते हैं, केवल file storage devices में उस access को arbitrate करने की क्षमता है। यह बहुत महत्वपूर्ण है।
Block storage एक disk drive के रूप में प्रकट होती है। यदि आप बस एक disk drive को दो या अधिक computers से एक साथ attach करते हैं, तो आप कल्पना कर सकते हैं क्या होगा – प्रत्येक दूसरे के बारे में कुछ नहीं जानेगा और systems जल्दी एक दूसरे को overwrite करना शुरू कर देंगे। यह आम तौर पर बहुत जल्दी, आमतौर पर minutes के भीतर, data corruption में परिणत होता है।
दूसरी ओर, एक file storage device में natural arbitration है क्योंकि network file system real file system तक access के लिए communications handle करता है। तो यदि file storage device से जुड़ी एक system कोई change करती है, तो सभी systems तुरंत उस change से aware हो जाती हैं और “एक दूसरे के पैरों पर नहीं कदमेंगी।” यह data sharing को end users के लिए आसान और transparent बनाता है।
इसका यह मतलब नहीं है कि block device से storage share करने का कोई साधन नहीं है, लेकिन इसकी arbitration block storage device द्वारा handle नहीं की जा सकती। Block storage devices को clustered file system का उपयोग करके “shareable” बनाया जा सकता है। ये file systems तब originated हुई जब server clusters ने SCSI cable के किसी end पर दोनों servers पर SCSI controller रखकर storage resources share किए। Red Hat का GFS और Oracle का OCFS traditional server world में कुछ बेहतरीन known हैं और VMware का VMFS virtualization storage के लिए अपने उपयोग के माध्यम से अत्यंत प्रसिद्ध हो गया है।
यहाँ expose होने वाली underlying concept यह है कि block storage devices dumb devices हैं (एक glorified disk drive के रूप में सोचें) और file storage devices smart devices हैं (traditional server के रूप में सोचें)। File storage devices में CPU, memory, storage, filesystem और networking के साथ एक full working “computer” होना चाहिए। Block storage devices में ये चीजें हो सकती हैं लेकिन होना जरूरी नहीं।
दोनों cases में, block storage device और file storage devices, हम trivially simple devices तक scale down कर सकते हैं या massive “mainframe class” ultra-high-availability systems तक scale up कर सकते हैं। दोनों fast या slow हो सकते हैं। एक दूसरे से बेहतर या बुरा नहीं है, एक higher या lower नहीं है, एक more या less enterprise नहीं है – वे अलग हैं और generally अलग उद्देश्यों की सेवा करते हैं। Challenge यह जानने में आती है कि किस काम के लिए कौन सा सही है।
मुझे block storage protocols को एक “standard out” stream के रूप में सोचना पसंद है, command line पर बिल्कुल वैसे ही। तो किसी भी storage “pipeline” का base level हमेशा एक block device है और जब तक output एक block storage protocol बनी रहती है तब तक कई block devices या transformations exist कर सकते हैं। Block storage न केवल data के blocks हैं बल्कि storage systems के building blocks हैं।
एक interesting point यह है कि चूंकि block storage devices को chain किया जा सकता है और चूंकि network storage devices को अपने “input” के रूप में block storage accept करनी होती है, इसलिए यह वास्तव में काफी common है कि एक block storage device (SAN) को एक file storage device (NAS) के लिए backing storage के रूप में उपयोग किया जाता है, विशेष रूप से high end systems में। वे एक single chassis के भीतर coexist कर सकते हैं या वे network पर cooperatively काम कर सकते हैं।
