SSD VPS म्हणजे काय? Flash storage आणि वेग समजून घ्या
SSD VPS मध्ये spinning disk ऐवजी flash storage असते. IOPS आणि कमी latency याचा नेमका फायदा काय, तसेच खरेदीपूर्वी कोणते तीन प्रश्न विचारावेत ते जाणून घ्या.
SSD VPS म्हणजे काय?
SSD VPS हा असा virtual private server आहे ज्याची डिस्क फिरणाऱ्या hard disk ऐवजी flash memory वर आधारित असते. SSD म्हणजे solid state drive: NAND flash chips पासून तयार केलेली storage, ज्यामध्ये कोणतेही हलणारे भाग नसतात. VPS म्हणजे virtual private server: physical host machine वरील एक स्वतंत्र भाग, जो स्वतःची operating system चालवतो आणि तुम्हाला संपूर्ण server प्रमाणे विकला जातो. या दोन्ही संकल्पना एकत्र केल्यावर या नावाचा एकच अर्थ होतो. तुमचा server data चा block वाचतो तेव्हा आधी कोणत्याही यांत्रिक भागाला हलावे लागत नाही.
हीच संपूर्ण व्याख्या आहे. पुढील सर्व मजकूर त्या नावात नसलेल्या बाबींविषयी आहे, कारण pricing page वरील "SSD hosting" हे शब्द त्यामागील storage array विषयी फारच कमी माहिती देतात.
VPS हा साध्या virtual machine पेक्षा कसा वेगळा आहे हे अजून स्पष्ट होत असल्यास, VPS, VM आणि VPC मधील फरक हे पृष्ठ आधी वाचणे अधिक उपयुक्त ठरेल.
होस्ट स्टोरेजच्या आकाराऐवजी त्याचा वेग का जाहीर करतात
एखाद्या प्लॅनच्या पृष्ठावर CPU cores, memory, disk size आणि bandwidth दिलेले असतात. त्यानंतर disk विषयी आकार दर्शवत नसलेला एक शब्द दिला जातो. होस्ट असे करतात, कारण अनेक वर्षांपूर्वीच storage संदर्भातील capacity हा महत्त्वाचा आकडा राहिलेला नाही. सर्व्हरचा प्रत्यक्ष अनुभव ठरवणारे दोन आकडे म्हणजे IOPS (input/output operations per second) आणि latency (एक ऑपरेशन पूर्ण होऊन परत येण्यासाठी लागणारा कालावधी).
यामागे यांत्रिक फरक कारणीभूत आहे. Hard disk फिरणाऱ्या platters वर data ठेवतो आणि moving arm वरील head ने तो वाचतो. Platter वरील दुसऱ्या ठिकाणी असलेल्या block पर्यंत पोहोचण्यासाठी arm ला seek करावे लागते. त्यानंतर योग्य sector head खाली येईपर्यंत disk फिरावा लागतो. 7200 revolutions per minute वेगाने फिरणाऱ्या disk मध्ये अर्धी फेरी पूर्ण होण्यासाठी सरासरी सुमारे 4 ms लागतात. त्यात seek साठी आणखी काही ms लागतात. Flash मध्ये arm किंवा platter नसतो. त्यामुळे read ही electrical lookup असते आणि ती tens of microseconds मध्ये पूर्ण होते.
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 करण्यासाठी rated असतो. यापैकी एक read परत येण्यासाठी सुमारे 8 ms लागतात. NVMe drive त्याच प्रकारचे reads सुमारे 600,000 करण्यासाठी rated असतो. प्रत्येक read सुमारे 0.08 ms मध्ये पूर्ण होतो. या दोन्हींच्या मधील SATA SSD सुमारे 90,000 साठी rated असतो. हे आकडे टक्केवारीतील सुधारणा म्हणून नव्हे, तर orders of magnitude म्हणून वाचा.
या आकडेवारीबाबत दोन सूचना लक्षात ठेवा. हे प्रत्येक वर्गातील पूर्ण drives साठी प्रकाशित केलेले specifications आहेत. त्यामुळे ते manufacturer sheet वरील आकडे आहेत; VPS वर मोजलेली मूल्ये नाहीत. तसेच तुम्हाला पूर्ण drive कधीच मिळत नाही. तुमचा volume एखाद्या device चा किंवा array चा एक भाग असतो. त्याच hardware वर इतर customers चे volumes देखील असतात.
हे दोन columns वेगवेगळ्या प्रश्नांची उत्तरे देतात. त्यामुळे ते एकत्र वाचा. Latency म्हणजे एका operation साठी तुम्हाला किती वेळ प्रतीक्षा करावी लागते. IOPS म्हणजे drive एकाच वेळी किती operations वर काम करू शकतो. Flash उच्च IOPS आकडे parallelism मुळे गाठतो. अनेक flash chips एकाच वेळी अनेक requests ची उत्तरे देतात आणि deep queue त्यांना व्यस्त ठेवते. एकावेळी एक read जारी करून त्याची वाट पाहणारा आणि त्यानंतर पुढचा read जारी करणारा single threaded program chart मधील सर्वोच्च आकडा कधीच पाहणार नाही. त्याला latency column मधील मूल्यच जाणवेल.
SSD, NVMe, SATA आणि PCIe: चार वेगवेगळ्या स्तरांवरील चार संज्ञा
प्रत्येक संज्ञा प्रणालीच्या वेगवेगळ्या भागाचे वर्णन करत असल्यामुळे खरेदीदार या संज्ञांमध्ये गोंधळ करतात.
- SSD हे संचयन माध्यम आहे. याचा अर्थ डेटा चुंबकीय प्लेटरवर नसून NAND flash चिप्सवर साठवला जातो.
- SATA हा यांत्रिक डिस्कच्या काळात तयार केलेला इंटरफेस आहे. त्याची कमाल गती 6 Gbit/s आहे. प्रत्यक्ष throughput सुमारे 550 MB/s असतो. त्याच्या command queue मध्ये एकावेळी 32 प्रलंबित commands ठेवता येतात.
- NVMe (non-volatile memory express) हा flash साठी विशेषतः तयार केलेला protocol आहे. यामध्ये प्रत्येकी हजारो commands ठेवणाऱ्या अनेक queues असतात. त्यामुळे अनेक CPU cores एकाच अरुंद queue ची वाट न पाहता एकाच वेळी drive शी संवाद साधू शकतात.
- PCIe (peripheral component interconnect express) हा NVMe ज्या bus वर चालतो तो bus आहे. Graphics card ज्या प्रकारच्या lanes मध्ये जोडले जाते, त्याच प्रकारच्या lanes येथे वापरल्या जातात.
म्हणून SATA SSD आणि NVMe SSD दोन्ही डेटा flash वर साठवतात. त्यांच्यातील फरक त्यांनी वापरलेल्या interface मध्ये आहे. SATA SSD कोणत्याही hard disk पेक्षा अजूनही खूप वेगवान असतो. परंतु 32 commands ची queue तो किती parallel काम व्यक्त करू शकतो यावर मर्यादा आणते. Flash साठी parallel काम विशेषतः उपयुक्त असते. कोणता पर्याय घेण्यासाठी अधिक पैसे देणे योग्य आहे हे तुमच्या workload वर अवलंबून असते. NVMe विरुद्ध SATA SSD चा निर्णय हा विषय सविस्तर स्पष्ट करतो.
स्थानिक flash की नेटवर्क-संलग्न संचयन?
एकाच शब्दाखाली दोन पूर्णपणे वेगवेगळ्या व्यवस्था विकल्या जातात.
स्थानिक संचयन म्हणजे flash drives तुमच्या VPS च्या त्याच भौतिक host मध्ये बसवलेल्या असतात. विनंती एका मशीनच्या आत PCIe वरून प्रवास करून थेट परत येते. त्यामुळे latency दहापट microseconds च्या पातळीत राहते.
नेटवर्क-संलग्न संचयन म्हणजे तुमची virtual disk स्वतंत्र storage cluster वर असते. हा cluster अनेकदा Ceph किंवा SAN (storage area network) असतो. प्रत्येक read आणि write त्यापर्यंत पोहोचण्यासाठी network ओलांडते. Providers याला सहसा "cloud block storage" किंवा "elastic volumes" म्हणतात. flash प्रत्यक्ष असते. मात्र network trip देखील प्रत्यक्ष असतो. तो प्रत्येक operation मध्ये जोडला जातो. त्यामुळे latency दहापट microseconds ऐवजी शेकडो microseconds च्या उच्च पातळीत किंवा कमी milliseconds मध्ये पोहोचते.
यापैकी कोणताही पर्याय चुकीचा नाही. Network storage host निकामी झाल्यानंतरही उपलब्ध राहते, कारण data त्या host वर कधीच साठवलेले नसते. Provider तुमचा server इतर hardware वर सुरू करू शकतो आणि disk त्याच्यासोबत हलते. Local NVMe अधिक वेगवान असते आणि एका भौतिक मशीनशी जोडलेले असते. त्यामुळे तेथील hardware failure झाल्यास backup मधून restore करावे लागते. Plan मध्ये कोणता पर्याय वापरला आहे, हे विचारा. जवळजवळ कोणीही असे करत नाही.
प्रत्यक्ष server वर फरक कसा जाणवतो
Server वरील कामात लांब अनुक्रमिक transfers पेक्षा लहान, यादृच्छिक reads आणि writes अधिक असतात. त्यामुळे marketing मजकुरातील MB/s हा या पृष्ठावरील सर्वात कमी उपयुक्त आकडा आहे.
- Database commits. टिकाऊपणाची हमी देणारा database transaction commit झाल्यावर
fsyncकॉल करतो आणि data प्रत्यक्षात साठवला गेल्याची drive कडून पुष्टी मिळेपर्यंत थांबतो. Hard disk वर हा विलंब milliseconds इतका असतो. त्यामुळे लहान database प्रति सेकंदातील commits ची संख्या काहीशेपर्यंत मर्यादित राहते. Flash वर हाच विलंब millisecond च्या अंशाइतका असतो. PostgreSQL, MySQL किंवा production database म्हणून SQLite वापरला तरी फरक येथे सर्वाधिक दिसतो. - Package installs.
apt installहजारो लहान files unpack करतो आणि काम सुरू असतानाच त्या disk वर sync करतो. या कामातील जवळजवळ काहीही sequential नसते. त्यामुळे ते IOPS मुळे मर्यादित होते. - Container image pulls.
docker pullcompressed layers network वरून fetch करतो आणि नंतर त्या हजारो लहान files मध्ये extract करतो. Download network मुळे मर्यादित असतो. Extraction disk मुळे मर्यादित असते. Slow volume वर extraction पूर्ण होईपर्यंत थांबावे लागते. - Boot आणि reboot. Startup मध्ये kernel आणि initramfs वाचले जातात. त्यानंतर volume वर विखुरलेल्या शेकडो लहान unit files आणि shared libraries वाचल्या जातात.
यापैकी काहीही मोठे sequential read नाही. एखादा volume 500 MB/s वेगाने data stream करत असला, पण केवळ 3,000 IOPS देत असला, तरी docker compose pull दरम्यान तो slow वाटेल. कारण विलंब megabyte नुसार नव्हे, तर प्रत्येक file नुसार मोजला जातो.
किंमत पृष्ठावरील "SSD cloud hosting" हा उल्लेख जवळजवळ काहीही सांगत नाही
हा शब्द फक्त माध्यमाचे वर्णन करतो. ड्राइव्ह कोणत्या interface द्वारे संवाद साधते, हे तो सांगत नाही. तसेच, ती ड्राइव्ह तुमच्या server असलेल्या machine मध्येच आहे की नाही, हेही तो सांगत नाही. तुमच्या plan ला किती कमाल कार्यक्षमता मिळू शकते, हेही त्यातून स्पष्ट होत नाही.
ही कमाल मर्यादा सर्वात महत्त्वाची असते आणि तिची माहिती सर्वात कमी दिली जाते. एकाच host वर अनेक ग्राहकांची सेवा दिली जाते. अमर्यादित शेजारील ग्राहक इतर ग्राहकांची कार्यक्षमता कमी करू नये म्हणून providers प्रत्येक volume साठी IOPS आणि throughput वर मर्यादा घालतात. शेकडो हजार IOPS क्षमतेच्या hardware वर काही हजार IOPS ची मर्यादा असणे सामान्य आणि प्रामाणिक आहे. मात्र, plan description मध्ये ती दिसत नाही. दोन्ही plans मध्ये "SSD" असे लिहिलेले असू शकते. त्यापैकी एक per volume cap नसलेली local NVMe असू शकते. दुसरी shared cluster volume असून तिची मर्यादा 3,000 IOPS असू शकते.
मर्यादा दोन प्रकारच्या असतात. Sustained cap ही स्थिर कमाल मर्यादा असते. ती कधीही बदलत नाही. Burst cap मध्ये कमी baseline असतो. त्यासोबत credits दिले जातात. त्यामुळे काही काळ baseline पेक्षा जास्त कार्यक्षमता वापरता येते. Volume निष्क्रिय असताना हे credits पुन्हा जमा होतात. पाच मिनिटांच्या चाचणीत burst cap उत्कृष्ट दिसू शकतो. मात्र database import किंवा मोठा restore सुरू असताना तो baseline पर्यंत घसरू शकतो. Provider मोठी संख्या सांगत असल्यास, ती कार्यक्षमता किती वेळ टिकवता येते, हे विचारा.
तुमच्या VPS ने प्रत्यक्षात काय दिले आहे हे कसे तपासावे
Guest मधून तुम्हाला hypervisor जे सांगतो तेवढेच दिसू शकते.
lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotationalvda च्या जागी तुमच्या डिस्कसाठी lsblk ने दाखवलेले device name वापरा. Kernel ला device non-rotational असल्याचे सांगितले असल्यास ROTA आणि rotational फाइल 0 वाचते; उलट सांगितले असल्यास 1 वाचते. Virtual disk हा flag hypervisor ज्या माहितीची जाहिरात करतो त्यावरून सेट करतो. त्यामुळे हा flag त्याखालील physical hardware चे नव्हे, तर virtual device चे वर्णन करतो. vda सारख्या virtio disk साठी MODEL सहसा रिकामे असते. Emulated SATA controller साठी ते QEMU HARDDISK सारखी generic string असू शकते. Guest ला host चा array दिसणे अपेक्षित नाही, आणि तो दिसतही नाही.
म्हणून या flag कडे केवळ संकेत म्हणून पाहा आणि उर्वरित बाबींचे मोजमाप करा. Volume वरील एखाद्या file विरुद्ध fio वापरून random 4k test चालवा. तुमचे application प्रत्यक्षात वापरत असलेल्या queue depth वर तो चालवा. Burst credit पूर्णपणे वापरला जाईल इतका वेळ test चालू ठेवा. VPS चे योग्य प्रकारे benchmarking येथे fio commands आणि दिशाभूल करणारे चांगले आकडे मिळण्यास कारणीभूत ठरणाऱ्या सामान्य चुका दिल्या आहेत.
खरेदी करण्यापूर्वी प्रदात्याला विचारायचे तीन प्रश्न
- संग्रहण hypervisor वर स्थानिक आहे की network attached आहे? या उत्तरावर तुमच्या latency ची किमान मर्यादा ठरते. तसेच physical host अयशस्वी झाल्यावर तुमच्या डेटाचे काय होईल, हेही यावर ठरते. जो प्रदाता याचे स्पष्ट उत्तर देतो, त्याने या विषयाचा विचार केलेला असतो.
- माझ्या volume वरील IOPS मर्यादा किती आहे? एक संख्या मागा. "Unlimited" आणि "enterprise grade" ही संख्या नाहीत. खरोखर कोणतीही कमाल मर्यादा नसेल, तर त्याच host वरील दुसरा ग्राहक त्यांच्या backup window दरम्यान संपूर्ण array वापरून घेऊ नये, यासाठी कोणती यंत्रणा आहे, हे विचारा.
- ही मर्यादा sustained आहे की burst? burst असल्यास baseline आणि burst ची कालमर्यादा विचारा. तुमचे nightly job ज्या आकड्यासह चालेल तो baseline आहे. त्यामुळे नियोजनासाठी तोच आकडा वापरा.
फ्लॅश झिजतो का, आणि ही तुमची समस्या आहे का?
फ्लॅश सेल मर्यादित संख्येने लेखन चक्र स्वीकारतात. त्यामुळे ड्राइव्ह TBW (terabytes written) किंवा DWPD (drive writes per day) मध्ये टिकाऊपणाचे रेटिंग प्रकाशित करतात. ड्राइव्ह आपल्या सेलमध्ये लेखन समान रीतीने वितरित करते. याला wear levelling म्हणतात. अयशस्वी होणाऱ्या सेल्सच्या जागी वापरण्यासाठी ड्राइव्ह अतिरिक्त ब्लॉक्स राखून ठेवते. VPS वर झीज ही provider ची समस्या असते. ते त्यांच्या स्वतःच्या ड्राइव्हवरील SMART काउंटरचे निरीक्षण करतात आणि रेटिंगची मर्यादा संपण्यापूर्वी hardware बदलतात. तुमची समस्या फ्लॅशपेक्षा जुनी आहे. ड्राइव्ह हा backup नाही. तुमच्या volume खालील redundancy सुद्धा backup नाही. कारण ती data ची प्रत जशी बनवते, तशीच deletion चीही प्रत बनवते.
तुम्ही प्रत्यक्षात करत असलेली तडजोड म्हणजे gigabyte मागील किंमत. Spinning disks पेक्षा फ्लॅशची gigabyte मागील किंमत जास्त असते. त्यामुळे समान किंमतीत SSD plan मध्ये hard disk plan पेक्षा सहसा कमी capacity मिळते. तुम्हाला media किंवा archives साठी मोठी जागा हवी असल्यास, fast volume लहान ठेवा आणि मोठ्या प्रमाणातील data स्वस्त ठिकाणी ठेवा. हेच server बाहेर backups ठेवण्यासाठी योग्य पद्धत आहे. Storage एकूण bill मध्ये कसे बसते, यासाठी VPS ची वास्तविक किंमत प्रत्येक line item चे विभाजन दाखवते.
FAQ
SSD VPS आणि NVMe VPS एकच असतात का?
प्रत्येक NVMe VPS हा SSD VPS असतो, कारण NVMe drives या flash असतात. मात्र उलट विधान लागू होत नाही. "SSD" म्हणून जाहिरात केलेला plan SATA SSD असू शकतो. त्यात mechanical disks साठी तयार केलेल्या interface मागे flash असते, त्याची 32 commands ची queue असते आणि कमाल वेग सुमारे 550 MB/s असतो. दोन्ही hard disk पेक्षा खूप वेगवान असतात. या दोन्हींमधील फरक तुमच्या workload साठी महत्त्वाचा असल्यास, plan च्या नावावरून अंदाज न लावता provider ला plan मध्ये कोणता प्रकार वापरला आहे ते विचारा.
SSD VPS मुळे माझी website अधिक वेगवान होते का?
यामुळे disk work वेगवान होते. फक्त disk work. प्रत्येक request साठी अनेक database queries चालणारे page अधिक वेगवान होते, कारण या queries आणि त्यांचे commits small random I/O असतात. Memory किंवा cache मधून दिले जाणारे page बाहेर पाठवताना disk ला स्पर्श करत नाही. त्यामुळे त्याच्या वेगात फारसा बदल होत नाही. Storage बदलून समस्या सोडवण्यासाठी पैसे खर्च करण्यापूर्वी request चा कोणता भाग slow आहे ते measure करा.
माझा VPS खरोखर SSD storage वापरतो की नाही हे कसे तपासावे?
Guest च्या आतून physical hardware ची पडताळणी करता येत नाही. lsblk -d -o NAME,ROTA virtual device कोणती माहिती जाहीर करते ते दाखवते. Hypervisor ही value ठरवतो. त्यामुळे तेथे दिसणारे 0 हा पुरावा नसून केवळ संकेत आहे. प्रत्यक्ष तपासणीसाठी measurement करा: random 4k read workload सह fio कित्येक मिनिटे चालवा आणि त्याने दाखवलेली latency तपासा. Single digit millisecond random reads हे spinning disks किंवा congested network volume दर्शवतात. Tens of microseconds हे local flash दर्शवतात.
Network attached SSD storage हे local NVMe पेक्षा खराब असते का?
प्रत्येक operation साठी ते slow असते आणि त्यातील failure वेगळ्या प्रकारे होतो. प्रत्येक read आणि प्रत्येक write साठी network round trip जोडला जातो. त्यामुळे दोन्ही flash असले तरी latency जास्त असते. त्याऐवजी तुमचा data एका physical host वरच राहत नाही. त्यामुळे host failure झाल्यास volume त्याच्यासोबत बंद पडत नाही. Provider साठी snapshots आणि live migration करणेही सोपे असते. Latency sensitive database साठी local flash निवडा. Microseconds पेक्षा volume टिकून राहणे अधिक महत्त्वाचे असल्यास network storage निवडा.