SSD Nodes Learn 8GB RAM — $66/বছর
নির্দেশিকা Matt Connorদ্বারা Matt Connor

SSD VPS কী? Flash storage ও IOPS সহজভাবে ব্যাখ্যা

SSD VPS-এ spinning disk নয়, flash storage থাকে। এতে IOPS ও latency উন্নত হয়, তবে কেনার আগে storage array, IOPS এবং CPU ভাগাভাগি সম্পর্কে 3টি প্রশ্ন জানুন।

SSD VPS কী?

SSD VPS হলো এমন একটি virtual private server, যার disk spinning hard disk-এর পরিবর্তে flash memory-নির্ভর। SSD-এর পূর্ণরূপ solid state drive। এটি NAND flash chip দিয়ে তৈরি 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 core, memory, disk size এবং bandwidth উল্লেখ থাকে। এরপর disk সম্পর্কে এমন একটি শব্দ যোগ করা হয়, যা disk-এর আকার নয়। হোস্টরা এটি করে কারণ বহু বছর আগেই storage-এর ক্ষেত্রে capacity আর সবচেয়ে গুরুত্বপূর্ণ সংখ্যা থাকা বন্ধ হয়েছে। একটি server-এর কর্মক্ষমতার অনুভূতি নির্ধারণ করে IOPS (input/output operations per second) এবং latency (একটি operation-এর ফল ফিরে আসতে যত সময় লাগে)।

এর কারণ হলো যান্ত্রিক পার্থক্য। একটি hard disk ঘূর্ণায়মান platter-এ data সংরক্ষণ করে এবং চলমান arm-এর ওপর থাকা head দিয়ে তা পড়ে। Platter-এর অন্য কোথাও থাকা একটি block-এ পৌঁছাতে arm-কে seek করতে হয়। এরপর সঠিক sector-টি head-এর নিচে না আসা পর্যন্ত disk-কে ঘুরতে হয়। প্রতি মিনিটে 7200 বার ঘূর্ণনের ক্ষেত্রে অর্ধেক ঘুরতে গড়ে প্রায় 4 ms লাগে। এর সঙ্গে seek করতে আরও কয়েক ms যোগ হয়। Flash-এ কোনো arm বা platter নেই। তাই read একটি বৈদ্যুতিক lookup হিসেবে সম্পন্ন হয় এবং কয়েক দশ microsecond-এর মধ্যে ফল ফিরে আসে।

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 read-এর জন্য rated। এসব read-এর একটি ফিরে আসতে প্রায় 8 ms লাগে। একটি NVMe drive একই ধরনের read-এর জন্য প্রায় 600,000-এর কাছাকাছি rated, এবং প্রতিটির সময় প্রায় 0.08 ms। মাঝামাঝি অবস্থানের SATA SSD-টি প্রায় 90,000-এর কাছাকাছি rated। এগুলোকে orders of magnitude হিসেবে পড়ুন, শতাংশভিত্তিক উন্নতি হিসেবে নয়।

এই data সম্পর্কে দুটি সতর্কতা আছে। এগুলো প্রতিটি class-এর সম্পূর্ণ drive-এর প্রকাশিত specification। তাই এগুলো manufacturer-এর sheet figure, VPS-এ মাপা ফল নয়। আপনি কখনো সম্পূর্ণ একটি drive পান না। আপনার volume একটি device-এর অংশ, অথবা একটি array-এর অংশ। একই hardware-এ থাকা অন্য customer-দের volume-এর পাশে এটি অবস্থান করে।

এই দুটি column ভিন্ন প্রশ্নের উত্তর দেয়। তাই এগুলো একসঙ্গে পড়ুন। Latency হলো একটি operation-এর জন্য আপনাকে কতক্ষণ অপেক্ষা করতে হয়। IOPS হলো drive একই সময়ে কতগুলো operation প্রক্রিয়া করতে পারে। Flash parallelism-এর মাধ্যমে উচ্চ IOPS অর্জন করে। কারণ অনেক flash chip একসঙ্গে অনেক request-এর উত্তর দেয়, আর একটি deep queue তাদের ব্যস্ত রাখে। একটি single-threaded program যদি একটি read পাঠিয়ে তার ফলের জন্য অপেক্ষা করে, তারপর পরেরটি পাঠায়, তাহলে এটি কখনো chart-এর সর্বোচ্চ মান দেখতে পাবে না। এটি latency column-এর মানই দেখতে পায়।

SSD, NVMe, SATA এবং PCIe: চারটি ভিন্ন স্তরের চারটি শব্দ

ক্রেতারা এই শব্দগুলো গুলিয়ে ফেলেন, কারণ প্রতিটি শব্দ সিস্টেমের ভিন্ন একটি অংশ বর্ণনা করে।

  • SSD হলো স্টোরেজ মাধ্যম। এর অর্থ হলো, ডেটা চৌম্বকীয় প্ল্যাটারের পরিবর্তে NAND flash chip-এ সংরক্ষিত থাকে।
  • SATA হলো একটি interface, যা mechanical disk-এর যুগে নকশা করা হয়েছিল। এর সর্বোচ্চ গতি 6 Gbit/s, যা বাস্তবে প্রায় 550 MB/s throughput। এর command queue-তে একসঙ্গে 32টি outstanding command থাকতে পারে।
  • NVMe (non-volatile memory express) হলো flash-এর জন্য বিশেষভাবে তৈরি একটি protocol। এটি একাধিক queue সমর্থন করে, এবং প্রতিটি queue-তে হাজার হাজার command থাকতে পারে। ফলে একাধিক CPU core একই সরু queue ভাগ না করে একই সময়ে drive-এর সঙ্গে যোগাযোগ করতে পারে।
  • PCIe (peripheral component interconnect express) হলো সেই bus, যার ওপর NVMe চলে। Graphics card যে ধরনের lane-এ সংযুক্ত হয়, এটিও একই ধরনের lane।

অতএব, SATA SSD এবং NVMe SSD—উভয়ই flash-এ ডেটা সংরক্ষণ করে। পার্থক্য হলো, তারা যে interface ব্যবহার করে। SATA SSD যেকোনো hard disk-এর চেয়ে অনেক দ্রুত। তবে 32টি command-এর queue একসঙ্গে কতটা parallel কাজ প্রকাশ করতে পারে, তা সীমিত করে। আর flash-এর জন্য parallel কাজই বিশেষভাবে কার্যকর। কোনটি কিনতে অতিরিক্ত অর্থ দেওয়া যুক্তিযুক্ত, তা আপনার workload-এর ওপর নির্ভর করে। NVMe বনাম SATA SSD বেছে নেওয়ার সিদ্ধান্ত বিষয়টি বিস্তারিতভাবে ব্যাখ্যা করে।

স্থানীয় flash নাকি network attached storage?

একই শব্দের অধীনে দুটি সম্পূর্ণ ভিন্ন ব্যবস্থা বিক্রি করা হয়।

স্থানীয় storage বলতে বোঝায়, flash drive আপনার VPS-এর একই physical host-এর ভিতরে থাকে। একটি request একই machine-এর ভিতরে PCIe-এর মাধ্যমে যায় এবং সরাসরি ফিরে আসে। এভাবেই latency দশকের microsecond-এর মধ্যে থাকে।

Network attached storage বলতে বোঝায়, আপনার virtual disk একটি পৃথক storage cluster-এ থাকে। এটি প্রায়ই Ceph বা SAN (storage area network) ব্যবহার করে। প্রতিটি read এবং write সেই storage-এ পৌঁছাতে network অতিক্রম করে। Provider-রা সাধারণত এটিকে "cloud block storage" বা "elastic volumes" বলে। flash বাস্তব। Network trip-ও বাস্তব। এটি প্রতিটি operation-এর সঙ্গে যুক্ত হয়। তাই latency দশকের বদলে উচ্চ শতকের microsecond বা নিম্ন millisecond-এ পৌঁছায়।

কোনোটিই ভুল উত্তর নয়। Network storage কোনো host নষ্ট হলেও টিকে থাকে, কারণ data কখনো সেই host-এ ছিল না। Provider অন্য hardware-এ আপনার server চালু করতে পারে এবং disk-ও সেটির সঙ্গে থাকে। Local NVMe দ্রুততর এবং একটি physical machine-এর সঙ্গে যুক্ত। তাই সেখানে hardware failure হলে backup থেকে restore করতে হবে। একটি plan কোনটি ব্যবহার করে, তা জিজ্ঞেস করুন। প্রায় কেউই তা করে না।

একটি বাস্তব সার্ভারে পার্থক্যটি কেমন বোঝা যায়

সার্ভারের কাজ মূলত ছোট ছোট এলোমেলো read এবং write নিয়ে হয়, দীর্ঘ sequential transfer নিয়ে নয়। তাই marketing copy-তে দেওয়া MB/s মানটি পৃষ্ঠার সবচেয়ে কম উপযোগী সংখ্যা।

  • Database commit। Durability নিশ্চিত করার প্রতিশ্রুতি দেওয়া একটি database transaction commit হলে fsync কল করে, তারপর drive ডেটা সত্যিই সংরক্ষিত হয়েছে বলে নিশ্চিত না করা পর্যন্ত অপেক্ষা করে। Hard disk-এ এই অপেক্ষা milliseconds সময় নেয়, ফলে একটি ছোট database প্রতি সেকেন্ডে কয়েকশো commit-এর মধ্যে সীমাবদ্ধ থাকে। Flash-এ একই অপেক্ষা millisecond-এর একটি ভগ্নাংশ। PostgreSQL, MySQL অথবা production database হিসেবে SQLite ব্যবহার করুন না কেন, পার্থক্যটি এখানে সবচেয়ে বেশি।
  • Package install। apt install হাজার হাজার ছোট file unpack করে এবং কাজের সঙ্গে সঙ্গে সেগুলো disk-এ sync করে। এই কাজের প্রায় কিছুই sequential নয়, তাই এটি IOPS দ্বারা সীমাবদ্ধ।
  • Container image pull। docker pull network-এর মাধ্যমে compressed layer আনে, তারপর সেগুলো হাজার হাজার ছোট file-এ extract করে। Download network দ্বারা সীমাবদ্ধ। Extraction disk দ্বারা সীমাবদ্ধ, এবং ধীর volume-এ আপনাকে অপেক্ষা করিয়ে রাখে extraction-ই।
  • Boot এবং reboot। Startup একটি kernel এবং initramfs পড়ে, তারপর volume জুড়ে ছড়িয়ে থাকা শত শত ছোট unit file এবং shared library পড়ে।

এর কোনোটিই বড় sequential read নয়। কোনো volume 500 MB/s গতিতে data stream করলেও যদি সেটি মাত্র 3,000 IOPS সরবরাহ করে, docker compose pull চলার সময় সেটিকে ধীর মনে হবে, কারণ অপেক্ষার সময় প্রতি file অনুযায়ী গণনা হয়, প্রতি megabyte অনুযায়ী নয়।

কেন মূল্যতালিকায় “SSD cloud hosting” লেখা থাকলে প্রায় কিছুই জানা যায় না

এই শব্দটি শুধু স্টোরেজ মাধ্যমের ধরন বোঝায়। ড্রাইভটি কোন interface ব্যবহার করে, তা এটি জানায় না। ড্রাইভটি আপনার server-এর একই machine-এ আছে কি না, তাও জানায় না। আপনার plan সর্বোচ্চ কতদূর পৌঁছাতে পারবে, সে সম্পর্কেও এটি কিছু বলে না।

এই সর্বোচ্চ সীমাটিই সবচেয়ে গুরুত্বপূর্ণ। অথচ এটি সবচেয়ে কম প্রকাশ করা হয়। একটি host-এ অনেক customer-এর workload চলে। সীমাহীন ক্ষমতাসম্পন্ন কোনো প্রতিবেশী workload যাতে অন্যদের কর্মক্ষমতা কমিয়ে না দেয়, সে জন্য provider-রা প্রতি volume-এর IOPS এবং throughput সীমিত করে। শত-সহস্র IOPS সক্ষম hardware-এ প্রতি volume কয়েক হাজার IOPS-এর cap থাকা স্বাভাবিক এবং সৎ। কিন্তু plan-এর বিবরণে এটি দেখা যায় না। দুটি plan-এই “SSD” লেখা থাকতে পারে। একটিতে per volume cap ছাড়া local NVMe থাকতে পারে। অন্যটি হতে পারে shared cluster volume, যার সীমা 3,000 IOPS।

Cap সাধারণত দুই ধরনের হয়। Sustained cap হলো একটি স্থির সর্বোচ্চ সীমা, যা কখনও পরিবর্তিত হয় না। Burst cap-এ কম baseline-এর সঙ্গে credits থাকে। এগুলো ব্যবহার করে কিছু সময়ের জন্য baseline-এর চেয়ে বেশি performance পাওয়া যায়। Volume idle থাকলে credits আবার পূরণ হয়। পাঁচ মিনিটের test-এ burst cap খুব ভালো ফল দেখাতে পারে। এরপর database import বা বড় restore চলার মাঝখানে performance baseline-এ নেমে যেতে পারে। কোনো provider বড় সংখ্যা উল্লেখ করলে জিজ্ঞাসা করুন, কতক্ষণ আপনি সেই performance ধরে রাখতে পারবেন।

আপনার VPS আসলে কী দিয়েছে তা কীভাবে যাচাই করবেন

গেস্টের ভেতর থেকে আপনি শুধু হাইপারভাইজার যে তথ্য জানায়, সেটিই দেখতে পারেন।

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

vda-এর বদলে আপনার ডিস্কের জন্য lsblk যে ডিভাইসের নাম দেখিয়েছে, সেটি বসান। কার্নেলকে ডিভাইসটি নন-রোটেশনাল বলে জানানো হলে ROTA এবং rotational ফাইলটি 0 পড়ে। বিপরীত তথ্য জানানো হলে এটি 1 পড়ে। ভার্চুয়াল ডিস্ক এই ফ্ল্যাগের মান হাইপারভাইজার যে তথ্য প্রচার করে, তার ভিত্তিতে নির্ধারণ করে। তাই এটি ভৌত হার্ডওয়্যারের নয়, ভার্চুয়াল ডিভাইসের বৈশিষ্ট্য জানায়। vda-এর মতো virtio ডিস্কে MODEL সাধারণত খালি থাকে। emulated SATA controller-এ এটি QEMU HARDDISK-এর মতো সাধারণ একটি স্ট্রিং হতে পারে। গেস্ট সিস্টেমের host-এর array দেখার কথা নয়, এবং তারা তা দেখতেও পায় না।

তাই এই ফ্ল্যাগকে শুধু একটি ইঙ্গিত হিসেবে নিন এবং বাকি বিষয়গুলো মেপে দেখুন। ভলিউমের একটি ফাইলের ওপর fio ব্যবহার করে random 4k পরীক্ষা চালান। আপনার application বাস্তবে যে queue depth ব্যবহার করে, সেটি ব্যবহার করুন। burst credit শেষ হয়ে যাওয়ার মতো দীর্ঘ সময় পরীক্ষা চালান। VPS সঠিকভাবে benchmark করা-এ fio কমান্ড এবং বেশি ভালো ফল দেখায় এমন সাধারণ ভুলগুলো দেওয়া আছে।

কেনার আগে প্রদানকারীকে যে 3টি প্রশ্ন করবেন

  1. স্টোরেজ কি hypervisor-এর local storage, নাকি network attached? উত্তরটি আপনার latency-এর সর্বনিম্ন সীমা নির্ধারণ করে। কোনো physical host ব্যর্থ হলে আপনার data-এর কী হবে, সেটিও এটি নির্ধারণ করে। যে provider স্পষ্টভাবে উত্তর দেন, তিনি বিষয়টি বিবেচনা করেছেন।
  2. আমার volume-এর IOPS limit কত? একটি সংখ্যা চাইুন। "Unlimited" এবং "enterprise grade" কোনো সংখ্যাই নয়। সত্যিই যদি কোনো cap না থাকে, তাহলে জিজ্ঞাসা করুন: একই host-এর কোনো neighbour তাদের backup window-তে পুরো array-এর capacity ব্যবহার করা থেকে কীভাবে বাধাপ্রাপ্ত হবে?
  3. এই limit কি sustained, নাকি burst? burst হলে baseline এবং burst-এর স্থায়িত্ব কত, তা জিজ্ঞাসা করুন। আপনার nightly job baseline-এর performance-এর ওপর চলবে। তাই পরিকল্পনার জন্য এই সংখ্যাটিই গুরুত্বপূর্ণ।

Flash কি ক্ষয়প্রাপ্ত হয়, এবং সেটি কি আপনার সমস্যা?

Flash cell সীমিত সংখ্যক write cycle গ্রহণ করে। তাই drive-গুলো TBW (terabytes written) অথবা DWPD (drive writes per day)-এ endurance rating প্রকাশ করে। Drive তার cell-গুলোর মধ্যে write সমানভাবে বণ্টন করে। একে wear levelling বলা হয়। ব্যর্থ cell প্রতিস্থাপনের জন্য drive অতিরিক্ত block সংরক্ষণ করে রাখে। VPS-এ wear-এর বিষয়টি provider-এর দায়িত্ব। তারা নিজেদের drive-এর SMART counter monitor করে এবং rating শেষ হওয়ার আগে hardware প্রতিস্থাপন করে। আপনার সমস্যা flash-এর চেয়েও পুরোনো। Drive backup নয়। আপনার volume-এর নিচে redundancy থাকলেও সেটি backup নয়, কারণ এটি data কপি করার মতোই নির্ভুলভাবে deletion-ও কপি করে।

আপনি আসলে যে বিনিময়টি করছেন, তা হলো প্রতি gigabyte-এর দাম। Spinning disk-এর তুলনায় Flash-এর প্রতি gigabyte দাম বেশি। তাই একই দামে SSD plan-এ সাধারণত hard disk plan-এর চেয়ে কম capacity পাওয়া যায়। Media বা archive-এর জন্য বেশি storage প্রয়োজন হলে fast volume ছোট রাখুন এবং বেশি data সস্তা কোথাও রাখুন। এটিই server-এর বাইরে backup রাখার উপযুক্ত বিন্যাস। মোট bill-এর বাকি অংশে storage কীভাবে যুক্ত হয়, তা জানতে একটি VPS-এর প্রকৃত খরচ line item-গুলো বিশ্লেষণ করে।

FAQ

SSD VPS কি NVMe VPS-এর একই জিনিস?

প্রতিটি NVMe VPS-ই SSD VPS, কারণ NVMe drive flash storage ব্যবহার করে। তবে উল্টোটি সত্য নয়। "SSD" নামে প্রচারিত planটি SATA SSD হতে পারে। এতে mechanical disk-এর জন্য নকশা করা interface-এর মাধ্যমে flash storage ব্যবহৃত হয়, যেখানে 32টি command queue থাকে এবং গতি প্রায় 550 MB/s-এ সীমাবদ্ধ থাকে। দুটিই hard disk-এর তুলনায় অনেক দ্রুত। আপনার workload-এর জন্য পার্থক্যটি গুরুত্বপূর্ণ হলে, plan-এর নাম দেখে অনুমান না করে provider-কে জিজ্ঞাসা করুন planটি কোন storage ব্যবহার করে।

SSD VPS কি আমার website দ্রুত করে?

এটি disk-এর কাজ দ্রুত করে, শুধু disk-এর কাজ। প্রতি request-এ একাধিক database query চালানো page দ্রুত হয়, কারণ ওই query এবং commitগুলো ছোট random I/O। Memory বা cache থেকে পরিবেশিত page পাঠানোর সময় disk স্পর্শ করে না, তাই এতে খুব সামান্য পরিবর্তন হয়। Storage পরিবর্তন করে সমস্যা সমাধানের জন্য অর্থ খরচ করার আগে request-এর কোন অংশ ধীর তা পরিমাপ করুন।

আমার VPS সত্যিই SSD storage ব্যবহার করছে কি না কীভাবে পরীক্ষা করব?

Guest-এর ভেতর থেকে physical hardware যাচাই করা যায় না। lsblk -d -o NAME,ROTA virtual device কী ঘোষণা করছে তা দেখায়, এবং hypervisor ওই মান নির্ধারণ করে। তাই সেখানে 0 দেখা গেলে সেটি প্রমাণ নয়, কেবল একটি ইঙ্গিত। কার্যকর পরীক্ষা হলো measurement: কয়েক মিনিট random 4k read workload-সহ fio চালান এবং এটি যে latency দেখায় তা পরীক্ষা করুন। এক অঙ্কের millisecond random read সাধারণত spinning disk অথবা congested network volume নির্দেশ করে। কয়েক দশ microsecond latency local flash নির্দেশ করে।

Network attached SSD storage কি local NVMe-এর চেয়ে খারাপ?

প্রতি operation-এ এটি ধীর এবং এর failure behavior আলাদা। প্রতিটি read এবং write-এর সঙ্গে network round trip যুক্ত হয়। তাই দুটিই flash হলেও latency বেশি হয়। এর বিনিময়ে আপনার data একটি physical host-এ থাকে না। ফলে host failure হলে volume-ও তার সঙ্গে নষ্ট হয় না। Provider-এর জন্য snapshot এবং live migration করাও সহজ হয়। Latency-sensitive database-এর জন্য local flash বেছে নিন। Volume টিকে থাকা microsecond-এর তুলনায় বেশি গুরুত্বপূর্ণ হলে network storage বেছে নিন।

#vps#ssd#nvme#storage#hosting-basics