SSD Nodes Learn 8GB RAM — $66/साल
गाइड Matt Connorलेखक: Matt Connor

SSD VPS क्या है और flash storage से क्या लाभ हैं?

SSD VPS में spinning disk की जगह flash storage होता है। जानें IOPS और कम latency का लाभ, साथ ही खरीदने से पहले पूछे जाने वाले तीन जरूरी सवाल।

SSD VPS क्या है?

SSD VPS एक virtual private server है, जिसकी disk spinning hard disk के बजाय flash memory पर आधारित होती है। SSD का अर्थ solid state drive है। यह NAND flash chips से बना storage होता है और इसके अंदर कोई moving parts नहीं होते। VPS का अर्थ virtual private server है। यह किसी physical host machine का एक isolated हिस्सा होता है, जो अपना operating system चलाता है और आपको ऐसे बेचा जाता है जैसे यह पूरा server हो। दोनों को मिलाने पर इस नाम का एक ही दावा होता है। जब आपका server data का कोई block पढ़ता है, तो पहले किसी mechanical हिस्से को हिलना नहीं पड़ता।

यही इसकी पूरी परिभाषा है। नीचे दी गई सभी बातें उन विवरणों के बारे में हैं जिन्हें यह नाम नहीं बताता। Pricing page पर "SSD hosting" लिखा होने से उसके पीछे के storage array के बारे में बहुत कम जानकारी मिलती है।

यदि आप अभी यह समझ रहे हैं कि VPS, सामान्य virtual machine से कैसे अलग है, तो VPS, VM और VPC के बीच का अंतर पहले पढ़ना बेहतर होगा।

होस्ट storage size के बजाय storage speed का विज्ञापन क्यों करते हैं

किसी plan page पर CPU cores, memory, disk size और bandwidth सूचीबद्ध होते हैं। फिर disk के बारे में एक ऐसा शब्द जोड़ा जाता है, जो size बिल्कुल नहीं है। होस्ट ऐसा इसलिए करते हैं क्योंकि कई वर्ष पहले storage की capacity सबसे महत्वपूर्ण संख्या नहीं रही। दो संख्याएँ यह तय करती हैं कि server का प्रदर्शन कैसा लगेगा: IOPS (input/output operations per second) और latency (एक operation के वापस आने में लगने वाला समय)।

इसका कारण mechanical अंतर है। Hard disk data को घूमने वाली platters पर रखती है और moving arm पर लगे head से उसे पढ़ती है। Platter पर किसी दूसरी जगह मौजूद block तक पहुँचने के लिए arm को seek करना पड़ता है। इसके बाद disk को तब तक घूमना पड़ता है, जब तक सही sector head के नीचे न आ जाए। 7200 revolutions per minute पर आधे चक्कर में औसतन लगभग 4 ms लगते हैं। Seek में इसके अलावा कई ms लगते हैं। Flash में arm और platter नहीं होते। इसलिए read एक electrical lookup होता है, जो tens of microseconds में पूरा हो जाता है।

ChartRandom 4k read, published device class specifications rather than VPS measurements
The data behind this chart
[
  {
    "device": "7200 rpm hard disk",
    "random_read_iops": "125",
    "read_latency_ms": 8
  },
  {
    "device": "SATA SSD",
    "random_read_iops": "90,000",
    "read_latency_ms": 0.15
  },
  {
    "device": "NVMe SSD",
    "random_read_iops": "600,000",
    "read_latency_ms": 0.08
  }
]

7200 rpm hard disk को लगभग 125 random 4k reads per second के लिए rated किया जाता है। इनमें से एक read को वापस आने में लगभग 8 ms लगते हैं। NVMe drive को इसी प्रकार के लगभग 600,000 reads के लिए rated किया जाता है। प्रत्येक read में लगभग 0.08 ms लगते हैं। SATA SSD की rating इन दोनों के बीच, लगभग 90,000, होती है। इन संख्याओं को orders of magnitude के रूप में पढ़ें, percentage improvement के रूप में नहीं।

इस data के बारे में दो चेतावनियाँ हैं। ये प्रत्येक class की पूरी drives के लिए प्रकाशित specifications हैं। इसलिए ये manufacturer sheet figures हैं, VPS पर मापे गए आँकड़े नहीं। आपको कभी पूरी drive नहीं मिलती। आपका volume किसी एक device का हिस्सा या किसी array का हिस्सा होता है। उसी hardware पर अन्य customers के volumes भी होते हैं।

दोनों columns अलग-अलग प्रश्नों का उत्तर देते हैं। इसलिए उन्हें साथ पढ़ें। Latency यह बताती है कि एक operation के लिए आपको कितनी देर प्रतीक्षा करनी पड़ती है। IOPS यह बताता है कि drive एक ही समय में कितने operations पर काम कर सकती है। Flash parallelism के माध्यम से अपने high IOPS figures तक पहुँचती है। कई flash chips एक साथ कई requests का उत्तर देते हैं और deep queue उन्हें व्यस्त रखती है। जो single threaded program एक read भेजता है, उसके पूरा होने की प्रतीक्षा करता है और फिर अगला read भेजता है, उसे chart की सबसे ऊँची संख्या कभी नहीं मिलेगी। उसे latency column का मान दिखाई देगा।

SSD, NVMe, SATA और PCIe: चार शब्द, चार अलग-अलग स्तर

खरीदार इन शब्दों को अक्सर एक-दूसरे से भ्रमित करते हैं, क्योंकि प्रत्येक शब्द सिस्टम के अलग-अलग हिस्से का वर्णन करता है।

  • SSD माध्यम है। इसका अर्थ है कि डेटा चुंबकीय प्लेटर के बजाय NAND flash chips पर संग्रहीत होता है।
  • SATA एक interface है, जिसे mechanical disks के दौर में बनाया गया था। इसकी अधिकतम गति 6 Gbit/s है, जो वास्तविक throughput में लगभग 550 MB/s होती है। इसकी command queue में 32 लंबित commands रखी जा सकती हैं।
  • NVMe (non-volatile memory express) विशेष रूप से flash के लिए बनाया गया protocol है। यह कई queues का समर्थन करता है, जिनमें प्रत्येक में हजारों commands रखी जा सकती हैं। इसलिए कई CPU cores एक ही संकीर्ण queue साझा किए बिना drive से एक साथ संचार कर सकते हैं।
  • PCIe (peripheral component interconnect express) वह bus है जिस पर NVMe चलता है। यह उसी प्रकार की lanes है, जिनमें graphics card लगाया जाता है।

इसलिए SATA SSD और NVMe SSD दोनों डेटा को flash पर संग्रहीत करते हैं। अंतर उस interface का है, जिसे वे उपयोग करते हैं। SATA SSD किसी भी hard disk से अब भी बहुत तेज होता है। लेकिन उसकी 32 commands वाली queue उसके द्वारा व्यक्त किए जा सकने वाले parallel work को सीमित करती है। Flash के लिए parallel work ही सबसे उपयोगी होता है। इनमें से किसके लिए भुगतान करना उचित है, यह आपके workload पर निर्भर करता है। NVMe और SATA SSD का चयन इस विषय का उचित विश्लेषण करता है।

स्थानीय flash या network attached storage?

एक ही शब्द के अंतर्गत दो बहुत अलग व्यवस्थाएँ बेची जाती हैं।

स्थानीय storage का अर्थ है कि flash drives आपके VPS वाले उसी physical host के अंदर लगी हैं। अनुरोध एक ही मशीन के भीतर PCIe पर जाता है और तुरंत वापस आता है। इसी कारण latency दसियों microseconds में रहती है।

Network attached storage का अर्थ है कि आपकी virtual disk एक अलग storage cluster में रहती है, जो अक्सर Ceph या SAN (storage area network) होता है। प्रत्येक read और write उस तक पहुंचने के लिए network से होकर गुजरता है। Providers इसे आमतौर पर "cloud block storage" या "elastic volumes" कहते हैं। Flash वास्तविक है। Network से गुजरने में लगने वाला समय भी वास्तविक है और हर operation में जुड़ता है। इसलिए latency दसियों microseconds के बजाय कई सौ microseconds या कम milliseconds तक पहुंच जाती है।

इनमें से कोई भी गलत विकल्प नहीं है। Network storage किसी host के नष्ट होने पर भी सुरक्षित रहता है, क्योंकि data कभी उस host पर था ही नहीं। Provider आपके server को दूसरे hardware पर शुरू कर सकता है और disk उसके साथ चली जाती है। Local NVMe तेज़ होता है और एक physical machine से जुड़ा रहता है। इसलिए वहां hardware failure होने पर backup से restore करना पड़ता है। पूछें कि कोई plan किस विकल्प का उपयोग करता है। लगभग कोई ऐसा नहीं करता।

वास्तविक सर्वर पर अंतर कैसा महसूस होता है

सर्वर का काम मुख्यतः छोटे, अनियमित रीड और राइट पर आधारित होता है, न कि लंबे क्रमिक ट्रांसफ़र पर। इसलिए मार्केटिंग सामग्री में दिया गया MB/s आंकड़ा पृष्ठ पर सबसे कम उपयोगी संख्या होता है।

  • डेटाबेस कमिट। टिकाऊपन सुनिश्चित करने वाला डेटाबेस किसी ट्रांज़ैक्शन के कमिट होने पर fsync को कॉल करता है। इसके बाद वह ड्राइव से यह पुष्टि मिलने तक प्रतीक्षा करता है कि डेटा वास्तव में स्टोर हो गया है। हार्ड डिस्क पर इस प्रतीक्षा में मिलीसेकंड लगते हैं। इससे छोटा डेटाबेस प्रति सेकंड कुछ सौ कमिट तक सीमित रहता है। फ्लैश स्टोरेज पर यही प्रतीक्षा एक मिलीसेकंड के अंश जितनी होती है। PostgreSQL, MySQL या प्रोडक्शन डेटाबेस के रूप में SQLite चलाने पर अंतर सबसे अधिक यहीं दिखाई देता है।
  • पैकेज इंस्टॉल। apt install हजारों छोटी फ़ाइलों को अनपैक करता है और काम के दौरान उन्हें डिस्क के साथ सिंक करता है। इस काम का लगभग कोई भी हिस्सा क्रमिक नहीं होता। इसलिए इसकी गति IOPS से सीमित होती है।
  • कंटेनर इमेज पुल। docker pull नेटवर्क से कंप्रेस्ड लेयर प्राप्त करता है और फिर उन्हें हजारों छोटी फ़ाइलों में एक्सट्रैक्ट करता है। डाउनलोड नेटवर्क से सीमित होता है। एक्सट्रैक्शन डिस्क से सीमित होता है। धीमे वॉल्यूम पर प्रतीक्षा का मुख्य कारण एक्सट्रैक्शन ही होता है।
  • बूट और रीबूट। स्टार्टअप पहले एक kernel और initramfs पढ़ता है। इसके बाद वॉल्यूम पर अलग-अलग स्थानों में मौजूद सैकड़ों छोटी unit files और shared libraries पढ़ी जाती हैं।

इनमें से कोई भी बड़ा क्रमिक रीड नहीं है। यदि कोई वॉल्यूम केवल 3,000 IOPS प्रदान करते हुए 500 MB/s की गति से स्ट्रीम करता है, तो docker compose pull के दौरान भी वह धीमा महसूस होगा। ऐसा इसलिए है क्योंकि प्रतीक्षा प्रति मेगाबाइट नहीं, बल्कि प्रति फ़ाइल गिनी जाती है।

मूल्य निर्धारण पृष्ठ पर "SSD cloud hosting" लगभग कुछ नहीं बताता

यह शब्द केवल माध्यम का वर्णन करता है। यह नहीं बताता कि drive किस interface का उपयोग करती है। यह भी नहीं बताता कि drive आपके server वाली ही machine में है या नहीं। यह उस सीमा के बारे में भी कुछ नहीं बताता, जिसे आपकी plan तक पहुंचने की अनुमति है।

सबसे महत्वपूर्ण यही सीमा है, और इसका विज्ञापन सबसे कम किया जाता है। Providers प्रत्येक volume के लिए IOPS और throughput सीमित करते हैं, क्योंकि एक host कई customers को सेवा देता है और बिना सीमा वाला पड़ोसी अन्य customers के संसाधन समाप्त कर सकता है। सैकड़ों हजारों IOPS सक्षम hardware पर कुछ हजार IOPS की सीमा सामान्य और ईमानदार है, लेकिन plan description में यह दिखाई नहीं देती। दोनों plans में "SSD" लिखा हो सकता है, जबकि एक local NVMe हो और उस पर प्रति volume कोई सीमा न हो, और दूसरा shared cluster volume हो, जो 3,000 IOPS तक सीमित हो।

सीमाएं दो प्रकार की होती हैं। Sustained cap एक स्थिर अधिकतम सीमा होती है, जो कभी नहीं बदलती। Burst cap आपको कम baseline के साथ credits देती है। इन credits के कारण आप कुछ समय के लिए baseline से अधिक प्रदर्शन प्राप्त कर सकते हैं। Volume idle रहने पर ये credits फिर भरते हैं। Five minute test में burst cap बहुत अच्छी दिख सकती है, लेकिन database import या बड़े restore के बीच प्रदर्शन baseline तक गिर सकता है। यदि provider बड़ी संख्या बताता है, तो पूछें कि आपको उस गति को कितनी देर तक बनाए रखने की अनुमति है।

यह कैसे जाँचें कि आपके VPS ने वास्तव में आपको क्या दिया है

Guest के अंदर से आप केवल वही देख सकते हैं जो hypervisor आपको बताता है।

lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotational

vda को आपके disk के लिए प्रिंट किए गए device name lsblk से बदलें। जब kernel को device के non-rotational होने की जानकारी दी गई हो, तब ROTA और rotational file 0 पढ़ती है, और विपरीत जानकारी दिए जाने पर 1 पढ़ती है। Virtual disk यह flag hypervisor द्वारा घोषित जानकारी से सेट करती है। इसलिए यह नीचे मौजूद physical hardware का नहीं, बल्कि virtual device का वर्णन करता है। MODEL आमतौर पर vda जैसे virtio disk के लिए खाली होता है, या emulated SATA controller पर QEMU HARDDISK जैसी generic string होती है। Guest को host का array दिखाई देने के लिए नहीं होता, और वास्तव में दिखाई भी नहीं देता।

इसलिए इस flag को केवल संकेत मानें और बाकी चीजों को मापें। Volume पर मौजूद किसी file के विरुद्ध fio से random 4k test चलाएँ। Queue depth वही रखें जिसका उपयोग आपका application वास्तव में करता है। Test को इतना समय चलाएँ कि कोई भी burst credit समाप्त हो जाए। VPS का सही तरीके से Benchmark करना में fio commands और वे सामान्य गलतियाँ दी गई हैं जिनसे संख्याएँ वास्तविकता से बेहतर दिखाई देती हैं।

खरीदने से पहले प्रदाता से पूछे जाने वाले तीन प्रश्न

  1. क्या storage hypervisor के लिए local है, या network से attached है? इसका उत्तर आपकी latency की न्यूनतम सीमा निर्धारित करता है। यह भी तय करता है कि physical host विफल होने पर आपके data का क्या होगा। जो प्रदाता इसका स्पष्ट उत्तर देता है, उसने इस विषय पर विचार किया है।
  2. मेरे volume पर IOPS limit क्या है? एक संख्या पूछें। "Unlimited" और "enterprise grade" संख्याएँ नहीं हैं। यदि वास्तव में कोई cap नहीं है, तो पूछें कि उसी host पर मौजूद कोई neighbour अपने backup window के दौरान पूरे array को इस्तेमाल करने से क्या रोकता है।
  3. क्या यह limit sustained है या burst? यदि यह burst है, तो baseline और burst की अवधि पूछें। आपका nightly job baseline figure के अनुसार चलेगा, इसलिए planning इसी आधार पर करें।

क्या flash पुराना हो जाता है, और क्या यह आपकी समस्या है?

Flash cells सीमित संख्या में write cycles स्वीकार करती हैं। इसलिए drives endurance rating को TBW (terabytes written) या DWPD (drive writes per day) में प्रकाशित करती हैं। Drive writes को अपनी सभी cells में समान रूप से वितरित करती है। इसे wear levelling कहा जाता है। यह fail होने वाली cells को बदलने के लिए spare blocks भी reserve रखती है। VPS पर wear provider की समस्या है। Provider अपनी drives के SMART counters को monitor करता है और rating समाप्त होने से पहले hardware बदल देता है। आपकी समस्या flash से पुरानी है। Drive backup नहीं है। आपके volume के नीचे redundancy भी backup नहीं है, क्योंकि वह data की तरह deletion को भी उसी विश्वसनीयता से copy करती है।

वास्तविक समझौता प्रति gigabyte कीमत का है। Flash की प्रति gigabyte कीमत spinning disks से अधिक होती है। इसलिए समान कीमत पर SSD plan में आमतौर पर hard disk plan की तुलना में कम capacity मिलती है। यदि आपको media या archives के लिए bulk space चाहिए, तो fast volume को छोटा रखें और bulk data को किसी सस्ते स्थान पर रखें। यह server के बाहर backups रखने के लिए भी सही व्यवस्था है। Storage आपके कुल bill में कैसे शामिल होती है, इसके लिए VPS की वास्तविक लागत में प्रत्येक मद का विवरण दिया गया है।

FAQ

क्या SSD VPS और NVMe VPS एक ही चीज़ हैं?

हर NVMe VPS, SSD VPS होता है, क्योंकि NVMe drives flash होती हैं। इसका उलटा सही नहीं है। "SSD" के रूप में विज्ञापित plan, SATA SSD हो सकता है। इसमें mechanical disks के लिए डिज़ाइन किए गए interface के पीछे flash होती है, जिसमें 32 command queue और लगभग 550 MB/s की अधिकतम गति होती है। दोनों hard disk से काफी तेज़ होते हैं। यदि आपके workload के लिए इनके बीच का अंतर महत्वपूर्ण है, तो plan के नाम से अनुमान लगाने के बजाय provider से पूछें कि plan में कौन-सा storage इस्तेमाल होता है।

क्या SSD VPS मेरी website को तेज़ बनाता है?

यह disk work को तेज़ बनाता है, और केवल disk work को। प्रत्येक request पर कई database queries चलाने वाला page तेज़ हो जाता है, क्योंकि ये queries और उनके commits छोटे random I/O होते हैं। Memory या cache से serve किया गया page बाहर भेजते समय disk को छूता ही नहीं है, इसलिए उसकी गति में बहुत कम बदलाव होता है। Storage के माध्यम से समस्या ठीक करने के लिए भुगतान करने से पहले मापें कि request का कौन-सा भाग धीमा है।

मैं कैसे जाँच सकता हूँ कि मेरा VPS वास्तव में SSD storage इस्तेमाल करता है?

Guest के अंदर से आप physical hardware की पुष्टि नहीं कर सकते। lsblk -d -o NAME,ROTA यह दिखाता है कि virtual device क्या advertise करता है, और hypervisor यह value तय करता है। इसलिए वहाँ 0 संकेत है, प्रमाण नहीं। व्यावहारिक जाँच measurement है: कई मिनट तक random 4k read workload के साथ fio चलाएँ और उससे report की गई latency देखें। एकल अंक वाली millisecond random reads spinning disks या congested network volume की ओर संकेत करती हैं। Tens of microseconds वाली latency local flash की ओर संकेत करती है।

क्या network attached SSD storage, local NVMe से खराब होता है?

यह प्रत्येक operation में धीमा होता है और इसकी failure स्थिति अलग होती है। प्रत्येक read और write में network round trip जुड़ता है, इसलिए दोनों flash होने के बावजूद latency अधिक होती है। इसके बदले, आपका data किसी एक physical host पर नहीं रहता। इसलिए host failure होने पर volume भी उसके साथ unavailable नहीं होता, और provider के लिए snapshots तथा live migration आसान होते हैं। Latency sensitive database के लिए local flash चुनें। जब volume का सुरक्षित रहना microseconds से अधिक महत्वपूर्ण हो, तब network storage चुनें।