VPS কী? সহজ ভাষায় ভার্চুয়াল প্রাইভেট সার্ভারের ব্যাখ্যা
VPS হলো শেয়ারড হার্ডওয়্যারে তৈরি একটি ভার্চুয়াল প্রাইভেট সার্ভার। এই আর্টিকেলে জানুন রুট অ্যাক্সেস কী, এটি কীভাবে কাজ করে এবং আপনার প্রজেক্টের জন্য এর সীমাবদ্ধতাগুলো কী কী।
VPS কী?
একটি VPS (virtual private server) হলো ডেটা সেন্টারে থাকা একটি প্রকৃত কম্পিউটারের একটি অংশ, যা আপনাকে এমনভাবে ভাড়া দেওয়া হয় যেন সেটি আপনার নিজস্ব একটি সম্পূর্ণ মেশিন। ওই কম্পিউটারে থাকা সফটওয়্যার সেটিকে কয়েকটি স্বাধীন সার্ভারে বিভক্ত করে এবং আপনি তার একটির মালিকানা পান: আপনার নিজস্ব মেমোরি অ্যালোকেশন, ডিস্ক স্পেস, একটি IP address এবং প্ল্যানের সীমাবদ্ধতার মধ্যে সফটওয়্যার ইনস্টল করার জন্য অ্যাডমিনিস্ট্রেটর অ্যাক্সেস। এটি সবসময় চালু থাকে এবং পাবলিক-ফেসিং প্ল্যানগুলো ইন্টারনেটের একটি ঠিকানায় আসা অনুরোধের উত্তর দেয়।
এই তিনটি শব্দ আলাদা করলে পণ্যটির অর্থ পরিষ্কার হয়ে যায়। Server হলো এমন একটি কম্পিউটার যা সবসময় চালু থাকে এবং নেটওয়ার্কের মাধ্যমে আসা অনুরোধের উত্তর দেয়। Virtual মানে হলো এটি সফটওয়্যারের মাধ্যমে তৈরি। আপনার সার্ভারটি একটি বড় ফিজিক্যাল মেশিনের একটি অংশ মাত্র। Private মানে হলো সেই অংশটি শুধুমাত্র আপনার। আপনার ফাইল এবং চলমান প্রোগ্রামগুলো আপনার পাশের অংশটি যিনি ভাড়া নিয়েছেন, তার কাছে অদৃশ্য।
আপনি যদি আগে কখনো root অ্যাক্সেস না পেয়ে থাকেন, তবে শেষ অংশটিই সবচেয়ে গুরুত্বপূর্ণ। একটি VPS আপনাকে আপনার সার্ভার এনভায়রনমেন্টের অ্যাডমিনিস্ট্রেটর অ্যাক্সেস দেয়। কী কী আগে থেকে সেটআপ করা আছে এবং আপনি কী পরিবর্তন করতে পারবেন, তা নির্ভর করে ইমেজ, ভার্চুয়ালাইজেশন প্রযুক্তি এবং আপনার প্ল্যানের ওপর।
হাইপারভাইজার যা বিভক্ত করে এবং যা শেয়ার করে
একটি ভার্চুয়াল-মেশিন VPS-এ, যে প্রোগ্রামটি এই বিভাজনের কাজটি করে তাকে হাইপারভাইজার বলা হয়। এটি ফিজিক্যাল মেশিনে চলে, যাকে হোস্ট বলা হয়। এটি প্রতিটি গ্রাহককে এক সেট কাল্পনিক হার্ডওয়্যার প্রদান করে: একটি প্রসেসর, কিছু মেমরি, একটি ডিস্ক এবং একটি নেটওয়ার্ক কার্ড। সেই কাল্পনিক হার্ডওয়্যারে একটি অপারেটিং সিস্টেম ইনস্টল করা হয় এবং এটি এমনভাবে বুট হয় যেন এটি একটি আসল কম্পিউটারের মালিক। সেই গেস্ট সিস্টেমটিই হলো আপনার VPS। KVM (kernel-based virtual machine), Xen, VMware ESXi এবং Microsoft Hyper-V এই কাজটি করে। OpenVZ-এর মতো কন্টেইনার VPS-গুলো হোস্টের অপারেটিং সিস্টেম কার্নেলের মধ্যে একটি ভার্চুয়ালাইজেশন লেয়ার ব্যবহার করে, যেখানে আলাদা কোনো গেস্ট কার্নেল থাকে না।
মেমরি এবং ডিস্ক জায়গার ভিত্তিতে বিভক্ত হয়। প্রসেসর বিভক্ত হয় সময়ের ভিত্তিতে। এই একটি পার্থক্যই পরবর্তী সময়ে মানুষের অবাক হওয়ার বেশিরভাগ কারণ ব্যাখ্যা করে। বরাদ্দকৃত মেমরি মানেই ফিজিক্যাল RAM-এর স্বয়ংক্রিয় রিজার্ভেশন নয়: KVM মেমরি ওভারকমিট সাপোর্ট করে এবং হোস্ট গেস্ট মেমরি সোয়াপ (swap) করতে পারে। আপনার ডিস্ক হলো হোস্টের স্টোরেজে থাকা একটি ফাইল বা লজিক্যাল ভলিউম, এবং আপনি ডিলিট না করা পর্যন্ত এটি আপনারই থাকে। আপনার ভার্চুয়াল কোরগুলো হলো হোস্টের আসল কোরের সারিবদ্ধ সারি (queues), এবং হাইপারভাইজার নির্ধারণ করে কোন গেস্টটি পরবর্তী সময়ে চলবে।
একটি কমান্ড ভার্চুয়ালাইজেশন শনাক্ত করতে পারে যা এটি ডিটেক্ট করতে সক্ষম।
systemd-detect-virt
uname -rsystemd-detect-virt কমান্ডটি KVM VPS-এ kvm প্রিন্ট করে, যার অর্থ একটি পূর্ণাঙ্গ হাইপারভাইজার এমন একটি কার্নেল বুট করেছে যা শুধুমাত্র আপনার। এটি সেইসব কন্টেইনার প্রযুক্তির জন্য lxc বা openvz প্রিন্ট করে, যেখানে আপনার সার্ভারটি হোস্টের নিজস্ব অপারেটিং সিস্টেমের ভেতরে একটি সীমাবদ্ধ এলাকা এবং কার্নেলটি বক্সের অন্যান্য কন্টেইনারের সাথে শেয়ার করা হয়; container-other মানে এটি অন্য কোনো কন্টেইনার এনভায়রনমেন্ট শনাক্ত করেছে। কোনো ভার্চুয়ালাইজেশন শনাক্ত না হলে এটি none প্রিন্ট করে। এই পার্থক্যের বাস্তব প্রভাব রয়েছে, কারণ একটি শেয়ার করা কার্নেল এমন একটি কার্নেল যা আপনি পরিবর্তন করতে পারবেন না। একটি শেয়ার করা কার্নেল কন্টেইনারে, মডিউল লোড করা হোস্ট দ্বারা নিয়ন্ত্রিত হয়, তাই WireGuard VPN module-এর মতো ইন-কার্নেল ফিচারের জন্য হোস্টের সাপোর্ট প্রয়োজন। একটি শেয়ার করা কার্নেল কন্টেইনারে, uname -r সাধারণত হোস্টের কার্নেল রিলিজ রিপোর্ট করে, কিন্তু কন্টেইনার রানটাইমগুলো ভিন্ন হয়: gVisor হোস্ট কার্নেল শেয়ার না করেই কন্টেইনার চালায় এবং এর অফিসিয়াল উদাহরণ 5.15.0-gvisor রিপোর্ট করে। একটি KVM সার্ভারে একই কমান্ড আপনার নিজস্ব গেস্টের ভেতরে ইনস্টল করা কার্নেল দেখায়, এবং আপনি অন্য যেকোনো মেশিনের মতোই এটি আপগ্রেড বা প্রতিস্থাপন করতে পারেন।
এখানে ভার্চুয়াল বলতে কী বোঝায়?
সার্ভারটি সফটওয়্যার দিয়ে তৈরি হওয়ায়, এটি প্রভিশন করার জন্য কাউকে আপনার জন্য নতুন ফিজিক্যাল মেশিন র্যাকে বসাতে হয় না। কেউ আপনার জন্য হার্ডওয়্যার র্যাক করে না। এটি একটি টেমপ্লেট ইমেজ থেকে তৈরি করা হয়, তাই রিবিল্ড করলে একটি পরিষ্কার Ubuntu ফিরে আসে, তবে এটি ডিস্কের বিদ্যমান সমস্ত তথ্য মুছে ফেলে। বেশিরভাগ প্রোভাইডার প্যানেল ঝুঁকিপূর্ণ কিছু করার আগে ডিস্কের স্ন্যাপশট নিতে, রিবুট করে প্ল্যানের আকার পরিবর্তন করতে এবং নিচের হোস্টের রক্ষণাবেক্ষণের প্রয়োজন হলে আপনার গেস্ট মেশিনটিকে অন্য হার্ডওয়্যারে সরিয়ে নিতে পারে।
মূল্য নির্ধারণের বিষয়টি একই তথ্যের ওপর ভিত্তি করে: একটি ফিজিক্যাল মেশিনের খরচ অনেক গ্রাহক মিলে বহন করেন, আর এই কারণেই একটি VPS-এর খরচ যেমন হয় তা একটি পুরো সার্ভার ভাড়ার সাথে তুলনীয়।
খরচের পাশাপাশি সুবিধাও রয়েছে। নিচের হার্ডওয়্যারটি শেয়ার করা থাকে, তাই পাশের কোনো গ্রাহকের সার্ভারে অতিরিক্ত চাপ থাকলে সেটি আপনার জন্যও সমস্যা তৈরি করতে পারে। নিচের লিমিট সংক্রান্ত সেকশনে এমন কমান্ড রয়েছে যা এটি পরিমাপ করে।
এখানে private বলতে কী বোঝায়?
Private বা ব্যক্তিগত বলতে এখানে আইসোলেশন বা বিচ্ছিন্নতাকে বোঝায়, এবং এটি কতটা কার্যকর তা স্পষ্টভাবে বোঝা জরুরি। আপনি আপনার নিজস্ব root filesystem, নিজস্ব user account এবং নিজস্ব process list পান; একটি virtual-machine VPS-এর নিজস্ব kernel থাকে, যেখানে একটি OpenVZ container হোস্টের kernel শেয়ার করে। একই হোস্টের অন্য কোনো গ্রাহক আপনার process তালিকা দেখতে বা আপনার ফাইল পড়তে পারে না, কারণ তাদের guest সিস্টেমের আপনার মেমোরি বা virtual disk-এ প্রবেশের কোনো পথ নেই। Virtual machine আলাদা operating system চালায়, অন্যদিকে shared-kernel container তাদের ব্যবহারকারী এবং প্রোগ্রামগুলোকে একটিমাত্র operating system-এর ভেতরে বিচ্ছিন্ন রাখে। তবে এই গোপনীয়তা হোস্ট পর্যন্তই সীমাবদ্ধ: যে কেউ hypervisor পরিচালনা করে সে চাইলে আপনার guest-এর মেমোরি পড়তে পারে, এবং এই শেষ ফাঁকটুকু বন্ধ করতে confidential computing on a VPS-এ বর্ণিত encrypted-memory হার্ডওয়্যার প্রয়োজন।
Shared hosting সম্পূর্ণ ভিন্নভাবে কাজ করে। আপনি এমন একটি মেশিনে একটি ডিরেক্টরি পান যা শত শত অন্যান্য ওয়েবসাইট সার্ভ করে, সাথে থাকে একটি control panel এবং প্রোভাইডারের ইনস্টল করা সফটওয়্যার। সেখানে কোনো apt install নেই, কারণ কোনো প্যাকেজ ইনস্টল করলে তা পুরো মেশিনকে প্রভাবিত করে, আর সেই মেশিনটি পরিবর্তনের অধিকার আপনার নেই। Shared hosting against a VPS বিষয়টি বিস্তারিতভাবে আলোচনা করে। এক কথায়: shared hosting আপনাকে একটি account ভাড়া দেয়, আর VPS আপনাকে একটি কম্পিউটার ভাড়া দেয়।
একটি VPS স্পেক শিট, লাইন বাই লাইন
প্রতিটি VPS-কে অল্প কিছু সংখ্যার একটি তালিকা হিসেবে বিক্রি করা হয়। নিচে একটি মাঝারি মানের প্ল্যানের উদাহরণ দেওয়া হলো, যা আমরা আলোচনার সুবিধার্থে ব্যবহার করব। এই সংখ্যাগুলো কেবল একটি উদাহরণ, কোনো অফার বা বর্তমান বাজারদরের তালিকা নয়।
এই চার্টের পেছনের ডেটা
[
{
"plan": "Example mid-range VPS",
"vcpu_cores": 4,
"ram_gb": 16,
"nvme_gb": 160,
"bandwidth_tb": 8,
"ipv4_addresses": 1
}
]এই একটি লাইনই পুরো পণ্যটি। এটি বাম থেকে ডানে পড়ুন।
4 vCPU. একটি vCPU (virtual central processing unit) হলো ভার্চুয়াল প্রসেসর, যা হাইপারভাইজার হোস্টের প্রসেসরে শিডিউল করে। যদি প্ল্যানে 'dedicated' উল্লেখ না থাকে, তবে এটি একটি থ্রেডের অংশবিশেষ, সম্পূর্ণ রিজার্ভেশন নয়। সার্ভারের ভেতরে, nproc সাধারণত 4 প্রিন্ট করে। এটি বর্তমান প্রসেসের জন্য উপলব্ধ প্রসেসরের সংখ্যা গণনা করে; CPU affinity এবং সমর্থিত cgroup CPU কোটা এই সংখ্যা কমিয়ে দিতে পারে, অন্যদিকে OMP_NUM_THREADS এবং OMP_THREAD_LIMIT যথাক্রমে এর সর্বনিম্ন ও সর্বোচ্চ মান নির্ধারণ করে এবং nproc --all প্রতিটি ইনস্টল করা প্রসেসর গণনা করে। lscpu একটি মডেলের নাম দেখায়, যা হোস্টের আসল CPU হতে পারে অথবা একটি জেনেরিক QEMU মডেল হতে পারে, যা হোস্টের কনফিগারেশনের ওপর নির্ভর করে।
16 GB RAM. প্ল্যানে একটি মেমোরি অ্যালোকেশন বা লিমিট উল্লেখ থাকে, কিন্তু এটি হোস্টের ফিজিক্যাল RAM রিজার্ভ থাকার নিশ্চয়তা দেয় না। free -h বাইনারি ইউনিটে ব্যবহারযোগ্য মেমোরি রিপোর্ট করে, যেখানে কার্নেল এবং রিজার্ভড মেমোরি অংশগুলো বাদ থাকে। তাই পার্থক্য বোঝার আগে প্রোভাইডারের GB বা GiB ইউনিট যাচাই করে নিন। আপনার অ্যালোকেশনের অতিরিক্ত মেমোরি পাওয়া যাবে কি না, তা প্ল্যান এবং ভার্চুয়ালাইজেশন কনফিগারেশনের ওপর নির্ভর করে।
160 GB NVMe. NVMe (non-volatile memory express) হলো হোস্টের ভেতরে ড্রাইভ সংযুক্ত থাকার পদ্ধতি, যা পুরনো প্ল্যানের SATA SSD-এর চেয়ে অনেক দ্রুত। আপনার অংশটি একটি ভার্চুয়াল ডিস্ক হিসেবে প্রদর্শিত হয়, যা সাধারণত KVM-এর অধীনে /dev/vda হিসেবে থাকে। df -h / রুট ফাইলসিস্টেমকে বাইনারি ইউনিটে রিপোর্ট করে, তাই এর প্রদর্শিত আকার ডেসিমাল GB-তে বিজ্ঞাপিত ডিস্কের চেয়ে আলাদা হয়। এছাড়া এতে অন্যান্য পার্টিশন এবং ফাইলসিস্টেম মেটাডেটার জায়গা বাদ থাকে; উপলব্ধ জায়গা আরও কম হয়, কারণ ext4 ডিফল্টভাবে রুট ইউজারদের জন্য ফাইলসিস্টেমের 5 শতাংশ জায়গা আলাদা করে রাখে। SSD VPS-এ SSD বলতে আসলে কী বোঝায় এবং আপনাকে যে ডিস্ক দেওয়া হয়েছে তা কীভাবে যাচাই করবেন—এই দুটি লিঙ্কে বিস্তারিত আলোচনা করা হয়েছে।
8 TB ট্রান্সফার. এটি প্রতি মাসে স্থানান্তরিত ডেটার পরিমাণ, যা সাধারণত শুধু আউটবাউন্ড ট্রাফিক হিসেবে গণনা করা হয়। এটি একটি ভলিউম, আর পোর্ট স্পিড হলো প্ল্যানে উল্লেখ করা আলাদা একটি সংখ্যা। নির্ধারিত সীমা অতিক্রম করলে প্রোভাইডারের নীতি অনুযায়ী অতিরিক্ত চার্জ কাটা হতে পারে অথবা গতি কমিয়ে দেওয়া হতে পারে, তাই ভিডিও হোস্ট করার আগে এই শর্তগুলো পড়ে নিন। sudo apt install vnstat এবং vnstat -m ব্যবহার করে আপনি ইনস্টলেশনের দিন থেকে আপনার ডেটা ব্যবহারের হিসাব দেখতে পারেন।
1 IPv4 অ্যাড্রেস. যতক্ষণ আপনি সার্ভারটি ভাড়া নেবেন, ততক্ষণ এই অ্যাড্রেসটি আপনার। আপনি এতে ডোমেইন পয়েন্ট করতে পারেন এবং আপনার ফায়ারওয়াল ও প্রোভাইডারের নেটওয়ার্ক পলিসি অনুযায়ী পোর্টগুলোতে ট্রাফিক গ্রহণ করতে পারেন; রিভার্স DNS সেটিংসও প্রোভাইডারের ওপর নির্ভর করে। খুব সস্তা প্ল্যানে অনেক সময় অনেক গ্রাহককে একটি শেয়ারড অ্যাড্রেসের পেছনে রাখা হয়, যাকে NAT VPS বলা হয়। সেক্ষেত্রে ip -4 addr show একটি প্রাইভেট অ্যাড্রেস যেমন 10.0.0.5 রিপোর্ট করে এবং ইনবাউন্ড পোর্টগুলো সীমিত থাকে।
আপনাকে কী দেওয়া হয়েছে তা নিশ্চিত করতে চারটি কমান্ড ব্যবহার করুন।
nproc
free -h
df -h /
ip -4 addr showযদি এর কোনোটি স্পেক শিটের সাথে উপরে বর্ণিত রাউন্ডিংয়ের চেয়ে বেশি অমিল দেখায়, তবে মেশিনে কিছু তৈরি করার আগেই একটি সাপোর্ট টিকিট খোলা উচিত।
বাস্তবে root access বলতে কী বোঝায়
Linux-এ root হলো অ্যাডমিনিস্ট্রেটর অ্যাকাউন্ট এবং এর user ID হলো 0। আপনি যখন root হিসেবে থাকেন, তখন id -u চালালে 0 দেখতে পাবেন। root পুরো সিস্টেমের জন্য প্যাকেজ ইনস্টল করতে পারে, 1024-এর নিচের পোর্টগুলো খুলতে পারে (ডিফল্টভাবে কার্নেল এগুলো root বা CAP_NET_BIND_SERVICE সক্ষমতা থাকা প্রসেসের জন্য সংরক্ষিত রাখে, তাই এই সক্ষমতা থাকলে root নয় এমন প্রসেসও net.ipv4.ip_unprivileged_port_start না কমিয়েই port 80-তে bind করতে পারে), সিস্টেম ফাইল পড়তে ও পরিবর্তন করতে পারে এবং একটি অসতর্ক কমান্ডের মাধ্যমে পুরো সিস্টেম ধ্বংস করে দিতে পারে; মডিউল লোড করা এবং কার্নেল প্রতিস্থাপনের জন্য কার্নেলের নিয়ন্ত্রণ প্রয়োজন, যা shared-kernel কন্টেইনারে থাকে না। কেউ আপনার জন্য এই ক্ষতি পুনরুদ্ধার করে দেবে না।
ব্যবহারিক পার্থক্যটি খুব সামান্য। shared hosting-এ কোনো সফটওয়্যার ইনস্টল করতে হলে আপনাকে সাপোর্ট টিকেট খুলতে হয়। একটি VPS-এ আপনি কেবল এই কমান্ডটি টাইপ করবেন।
sudo apt update
sudo apt install -y nginx
systemctl status nginxsystemd ব্যবহারকারী একটি Ubuntu ইমেজে, ইনস্টলেশনের পর systemctl status nginx চালালে active (running) আউটপুট আসা উচিত এবং port 80 উন্মুক্ত থাকলে ব্রাউজারে সার্ভারের IP ঠিকানা দিলে ডিফল্ট nginx পেজটি দেখা যাবে। যদি স্ট্যাটাস failed দেখায়, তবে journalctl -u nginx -n 50 চালিয়ে শেষ লাইনগুলো পড়ুন, কারণ সার্ভিসটি কেন চালু হতে ব্যর্থ হয়েছে তার রেকর্ড সেখানে থাকে। সাধারণত কনফিগারেশন ফাইলে টাইপো থাকা অথবা অন্য কোনো প্রোগ্রাম আগে থেকেই port 80 ব্যবহার করার কারণে এমনটি হয়।
root আপনার সম্পূর্ণ নিরাপত্তা সীমানা, এবং সার্ভারে কনফিগার করা লগইন পদ্ধতির মাধ্যমে (যেমন SSH key বা পাসওয়ার্ড) এই অ্যাক্সেস পাওয়া যায়। নতুন সার্ভারে প্রথম সেশনে অ্যাপ্লিকেশন ইনস্টল করা উচিত নয়। একটি সাধারণ ইউজার তৈরি করুন, আপনার লগইন পদ্ধতিকে SSH key-তে স্থানান্তর করুন এবং পোর্টগুলোর সামনে একটি ফায়ারওয়াল বসান। নতুন VPS-এ প্রথম দশ মিনিট হলো সেই চেকলিস্ট, SSH key-এর মৌলিক বিষয়াবলী লগইন প্রক্রিয়াটি কভার করে, ufw ফায়ারওয়ালের মৌলিক বিষয়াবলী পোর্টগুলো নিয়ে আলোচনা করে এবং least privilege ইউজার ব্যাখ্যা করে যে পরবর্তীতে আপনার সার্ভিসগুলো কোন ইউজার হিসেবে চালানো উচিত। লগইন প্রচেষ্টার ওপর নজর রাখতে journalctl -u ssh -f দিয়ে SSH সার্ভিসের লগ পর্যবেক্ষণ করুন।
একটি VPS-এর সীমাবদ্ধতাগুলো কী কী?
প্রসেসর শেয়ার করা থাকে এবং আপনি এই শেয়ারিং পরিমাপ করতে পারেন। Steal time হলো সেই সময়ের পরিমাণ যখন আপনার ভার্চুয়াল CPU কাজ করার জন্য প্রস্তুত ছিল কিন্তু কোনো কাজ পায়নি, কারণ হাইপারভাইজার তখন ফিজিক্যাল কোরটি অন্য কোনো গেস্টকে ব্যবহার করতে দিয়েছিল।
vmstat 1 5st কলামটি হলো steal time। শেয়ারড হোস্টে মাঝে মাঝে সামান্য steal-time স্পাইক হওয়া স্বাভাবিক। আপনার নিজস্ব প্রসেসগুলো যখন অলস (idle) থাকে, তখনও যদি এই মানটি ধারাবাহিকভাবে দুই অঙ্কের ঘরে থাকে, তবে সাধারণত এর অর্থ হলো হোস্টটি অতিরিক্ত সাবস্ক্রাইবড (oversubscribed)। আপনার সার্ভারের ভেতরে কোনো টিউনিং করেই এটি ঠিক করা সম্ভব নয়, কারণ এই অপেক্ষার বিষয়টি আপনার সার্ভারের বাইরে ঘটে। Hostinger তাদের CPU credit সিস্টেম থেকে CPU steal-কে আলাদা করে দেখে; তাদের CPU credit পলিসিতে ব্যবহারের পরিমাণ কমে গেলে এবং ক্রেডিট রিকভারি থ্রেশহোল্ডে ফিরে এলে পূর্ণ সক্ষমতা পুনরুদ্ধার হয়। প্রতিবেশীদের দোষারোপ করার আগে আপনার প্ল্যানের CPU পলিসি পড়ে দেখুন। সঠিকভাবে VPS বেঞ্চমার্ক করা নিবন্ধটি দেখালে আপনি প্রোভাইডারের কাছে অভিযোগ করার আগে এটি প্রমাণ করতে পারবেন। KVM এবং Xen গেস্টের ক্ষেত্রে steal রিপোর্ট করা হয়। কন্টেইনারের ক্ষেত্রে, রিপোর্ট করা মানটি নির্ভর করে CPU পরিসংখ্যান কীভাবে এক্সপোজ করা হয়েছে তার ওপর এবং এটি কন্টেইনারের CPU থ্রটলিং পরিমাপের নির্ভরযোগ্য উপায় নয়।
মেমোরি নির্দিষ্ট এবং এর সীমা অত্যন্ত কঠোর। যখন মেমোরি শেষ হয়ে যায় এবং রিক্লেইম করেও পর্যাপ্ত জায়গা খালি করা যায় না, তখন কার্নেলের OOM (out of memory) কিলার একটি প্রসেস বেছে নেয় এবং SIGKILL পাঠিয়ে সেটিকে বন্ধ করে দেয়।
sudo dmesg -T | grep -i "out of memory"একটি লাইন এমন একটি আউটেজ ব্যাখ্যা করে যা অন্যথায় রহস্যময় মনে হতে পারে:
Out of memory: Killed process 2412 (mysqld) total-vm:2183104kB, anon-rss:1897224kB, file-rss:0kBঅ্যাপ্লিকেশনের নিজস্ব লগে সাধারণত কিছুই লেখা থাকে না, কারণ SIGKILL প্রসেসটিকে কিছু লেখার সুযোগই দেয় না। কার্নেল লগে কারণটি খুঁজুন; একটি কন্টেইনারের সেই লগ দেখার সুযোগ হোস্টের কনফিগারেশনের ওপর নির্ভর করে। swap ফাইল যোগ করার আগে দেখুন swap কনফিগার করা আছে কি না এবং কন্টেইনার VPS-এর ক্ষেত্রে হোস্টের নিয়মগুলো যাচাই করুন।
ডিস্ক দ্রুতগতির কিন্তু শেয়ার করা। হোস্টের NVMe দ্রুতগতির, কিন্তু আপনার অংশটি ইনপুট এবং আউটপুট অপারেশনের জন্য অন্য সব গেস্টের সাথে প্রতিযোগিতা করে। শান্ত সময়ে নেওয়া বেঞ্চমার্ক পিক আওয়ারে একই পারফরম্যান্সের নিশ্চয়তা দেয় না।
হার্ডওয়্যার আপনার নিয়ন্ত্রণের বাইরে। আপনি কোনো কিছু প্লাগ-ইন করতে পারবেন না। কোনো USB ডিভাইস, ক্যাপচার কার্ড বা গ্রাফিক্স কার্ড ব্যবহার করা সম্ভব নয়, যদি না আপনার প্ল্যানে বিশেষভাবে সেটি দেওয়া থাকে, যা একটি আলাদা পণ্য: GPU সহ একটি VPS।
এটি একটি একক ইউনিট। একটি VPS একটি একক মেশিন। হোস্টের কোনো ত্রুটির কারণে আপনার সার্ভার ডাউন হয়ে যেতে পারে; প্রোভাইডার সেটিকে মাইগ্রেট করবে নাকি অন্য কোথাও রিস্টার্ট করবে তা সার্ভিসের ওপর নির্ভর করে, এবং অ্যাপ্লিকেশন ফেইলওভার আপনাকে নিজেই সাজাতে হবে। ব্যাকআপ নেওয়ার দায়িত্ব আপনার, তাই VPS থেকে restic ব্যাকআপ সেটআপ তালিকার অন্তর্ভুক্ত হওয়া উচিত। প্রোভাইডারের স্ন্যাপশট সুবিধাজনক, কিন্তু এর সুরক্ষা নির্ভর করে সেটি কোথায় সংরক্ষিত এবং কীভাবে রাখা হয়েছে তার ওপর; তাই একটি স্বাধীন ব্যাকআপও রাখুন।
সাপোর্ট হাইপারভাইজার পর্যন্ত সীমাবদ্ধ। একটি আনম্যানেজড প্ল্যানে প্রোভাইডার হার্ডওয়্যার, নেটওয়ার্ক এবং ভার্চুয়ালাইজেশন লেয়ার সচল রাখে। অপারেটিং সিস্টেম থেকে শুরু করে ওপরের সবকিছু আপনার দায়িত্ব, যার মধ্যে সিকিউরিটি আপডেটও অন্তর্ভুক্ত। ম্যানেজড বনাম আনম্যানেজড হোস্টিং নিবন্ধটি এই সীমানা নির্ধারণ করে, এবং Ubuntu-তে আনঅ্যাটেন্ডেড আপগ্রেড হলো সবচেয়ে ছোট কিন্তু প্রয়োজনীয় কাজ যা আপনার চালু রাখা উচিত।
VPS এবং অন্যান্য বিভ্রান্তিকর ধারণার মধ্যে পার্থক্য
একটি virtual machine হলো এমন একটি গেস্ট সিস্টেম যার নিজস্ব ভার্চুয়াল হার্ডওয়্যার এবং অপারেটিং সিস্টেম কার্নেল থাকে; অন্যদিকে VPS হলো একটি ভাড়ায় নেওয়া সার্ভার পণ্য যা virtual machine বা container হিসেবে তৈরি করা হয়, যার সাথে সাধারণত একটি public address এবং নেটওয়ার্ক সংযুক্ত থাকে। একটি VPC (virtual private cloud) হলো একটি বৃহত্তর ক্লাউডের ভেতরে থাকা একটি private network, যেখানে সার্ভারগুলো অবস্থান করে, তাই এটি সম্পূর্ণ ভিন্ন একটি ধারণার উত্তর দেয়। VPS বনাম VM বনাম VPC এই তিনটি পরিভাষাকে সঠিকভাবে আলাদা করে।
একটি dedicated server হলো সম্পূর্ণ একটি ফিজিক্যাল মেশিন যা আপনার জন্য সংরক্ষিত থাকে, যেখানে অন্য কোনো গ্রাহকের গেস্ট সিস্টেম থাকে না; আপনি চাইলে নিজেই এতে hypervisor ইনস্টল করতে পারেন। যখন steal time বা disk contention আপনার কাজের মূল বাধা হয়ে দাঁড়ায়, তখন এটি একটি কার্যকর বিকল্প। VPS বনাম dedicated server এই সিদ্ধান্তের মূল দিকগুলো তুলে ধরে।
একটি VPN (virtual private network)-এর সাথে VPS-এর নামের শুরুতে দুটি অক্ষরের মিল থাকলেও এদের মধ্যে আর কোনো মিল নেই। VPN হলো মেশিনগুলোর মধ্যে একটি encrypted tunnel। আর VPS হলো একটি মেশিন, এবং এর একটি জনপ্রিয় ব্যবহার হলো নিজের VPN চালানো, যেখান থেকেই বিভ্রান্তির শুরু। VPS বনাম VPN এই দুটি শব্দের পার্থক্য স্পষ্ট করে।
আপনার নিজস্ব হার্ডওয়্যার, অথবা বাড়িতে থাকা কোনো মেশিনে Proxmox-এর মতো hypervisor ব্যবহার করলে আপনি হার্ডওয়্যারের পূর্ণ নিয়ন্ত্রণ পান, তবে এতে এমন একটি residential connection থাকে যাকে অনেক সার্ভিস সন্দেহের চোখে দেখে। এটি আপনাকে হোস্টের নিয়ন্ত্রণও দেয়, তাই আপনি যদি Proxmox-এ nested virtualization সক্রিয় করেন, তবে একটি গেস্ট সিস্টেম নিজেই আরেকটি hypervisor চালাতে পারে; ভাড়ায় নেওয়া VPS-এর ক্ষেত্রেও এই সুবিধাটি স্পষ্টভাবে থাকতে হয়। Proxmox বনাম VPS মাসিক খরচের বিপরীতে শক্তি, নয়েজ এবং আপটাইমের তুলনা করে।
VPS-এ মানুষ কী ধরনের সফটওয়্যার চালায়?
সঠিক উত্তর হলো, এমন সফটওয়্যার যা VPS-এর অপারেটিং সিস্টেম, আর্কিটেকচার, রিসোর্স এবং প্রোভাইডারের নীতিমালার সাথে সামঞ্জস্যপূর্ণ। সাধারণ পছন্দের মধ্যে রয়েছে ডেটাবেসসহ ওয়েবসাইট, ব্যক্তিগত VPN, গেম সার্ভার, স্ট্যাটাস মনিটর, মেইল সার্ভার, মিডিয়া লাইব্রেরি অথবা এমন কোনো কোডিং এজেন্ট যা আপনার ল্যাপটপ বন্ধ থাকলেও কাজ চালিয়ে যায়। মেইল সার্ভারের ক্ষেত্রে আগে পলিসি চেক করা প্রয়োজন: উদাহরণস্বরূপ, DigitalOcean ডিফল্টভাবে তাদের Droplet-এ SMTP পোর্ট 25, 465 এবং 587 ব্লক করে রাখে। নেটওয়ার্ক সার্ভিসগুলো পোর্টে লিসেন করে, তাই Linux-এ পোর্ট কী তা শেখা পরবর্তী গুরুত্বপূর্ণ ধাপ, এবং VPS দিয়ে আপনি যা করতে পারেন লিঙ্কে প্রতিটি কাজের রিসোর্স খরচসহ একটি দীর্ঘ তালিকা দেওয়া আছে।
FAQ
VPS কি ভার্চুয়াল মেশিনের মতোই?
VPS হলো এমন একটি সার্ভার যা কোনো কোম্পানি আপনাকে অপারেটিং সিস্টেম, সাধারণত একটি পাবলিক IP অ্যাড্রেস এবং নির্দিষ্ট মূল্যের বিনিময়ে ভাড়া দেয়। এটি নিজস্ব কার্নেলসহ একটি ভার্চুয়াল মেশিন হতে পারে, অথবা OpenVZ VPS-এর মতো একটি কন্টেইনার হতে পারে যা হোস্টের কার্নেল শেয়ার করে। শব্দ দুটি ভিন্ন বিষয় নির্দেশ করে: "ভার্চুয়াল মেশিন" বলতে হাইপারভাইজারে চলমান যেকোনো গেস্ট সিস্টেমকে বোঝায়, এমনকি আপনার নিজের ল্যাপটপে থাকা সিস্টেমটিও এর অন্তর্ভুক্ত। অন্যদিকে, "VPS" বলতে আপনি যে পণ্যটি কিনছেন তাকে বোঝায়। VPC সম্পূর্ণ ভিন্ন একটি বিষয়; এটি কোনো সার্ভার নয়, বরং ক্লাউড প্রোভাইডারের ভেতরে থাকা একটি প্রাইভেট নেটওয়ার্ক।
VPS ব্যবহার করতে কি আমার Linux জানতে হবে?
আপনার সামান্য জ্ঞান থাকলেই চলবে, বাকিটা আপনি কাজ করতে করতে শিখে নিতে পারবেন। প্রাথমিক দক্ষতার মধ্যে রয়েছে ssh দিয়ে কানেক্ট করা, cd এবং ls দিয়ে ফাইল সিস্টেমে ঘোরাফেরা করা, nano দিয়ে ফাইল এডিট করা, apt দিয়ে সফটওয়্যার ইনস্টল করা এবং journalctl দিয়ে লগ পড়া। একটি আনম্যানেজড (unmanaged) VPS-এ ধরে নেওয়া হয় যে আপডেট এবং ফায়ারওয়াল আপনি নিজেই সামলাবেন। যদি এটি আপনার জন্য বেশি জটিল মনে হয়, তবে ম্যানেজড প্ল্যান বা কন্ট্রোল প্যানেলের মূল্য এবং দায়িত্বগুলো তুলনা করে দেখুন।
আমার VPS-এ কেন প্ল্যানে প্রতিশ্রুত RAM-এর চেয়ে কম দেখাচ্ছে?
Linux ব্যবহারযোগ্য মেমরির হিসাব দেখায়, আর প্ল্যানে বরাদ্দকৃত মেমরির বিজ্ঞাপন দেওয়া হয়। free -h-এ মোট মেমরি দেখানোর আগে কার্নেল ইমেজ এবং কিছু সংরক্ষিত মেমরি অঞ্চল বাদ দেওয়া হয়; এছাড়া এর বাইনারি ইউনিট দশমিক GB থেকে ভিন্ন হতে পারে, তাই প্রোভাইডার কোন ইউনিট ব্যবহার করছে তা যাচাই করুন। পার্থক্য বিচার করার আগে বরাদ্দ, ইউনিট এবং সংরক্ষিত মেমরি তুলনা করে দেখুন। যদি কোনো ব্যাখ্যাতীত ঘাটতি থাকে, তবে সাপোর্ট টিকিট খোলা উচিত।
স্টিল টাইম (steal time) কী এবং এটি নিয়ে কি চিন্তিত হওয়া উচিত?
স্টিল টাইম হলো সেই শতাংশ সময়, যখন আপনার ভার্চুয়াল CPU কাজ করার জন্য প্রস্তুত ছিল কিন্তু অপেক্ষা করতে হয়েছে, কারণ হাইপারভাইজার সেই ফিজিক্যাল কোরটি অন্য কোনো গেস্টকে দিয়েছিল। vmstat 1-এর st কলামে এটি দেখা যায়। শেয়ারড হার্ডওয়্যারে মাঝে মাঝে স্টিল টাইমের স্পাইক হতে পারে। যদি আপনার নিজের লোড কম থাকা সত্ত্বেও দীর্ঘ সময় ধরে দুই অঙ্কের স্টিল টাইম দেখা যায়, তবে সাধারণত এর অর্থ হলো ফিজিক্যাল হোস্টটি অতিরিক্ত সাবস্ক্রাইবড। এর সমাধান হলো অন্য হোস্ট বা অন্য প্ল্যানে যাওয়া, কারণ আপনার সার্ভারের ভেতরে থাকা কোনো কিছুই হোস্টের শিডিউলারকে নিয়ন্ত্রণ করতে পারে না। CPU ব্যবহারের সীমাও পারফরম্যান্সকে সীমাবদ্ধ করে, এবং এর পুনরুদ্ধার প্রোভাইডারের পলিসির ওপর নির্ভর করে, যার মধ্যে প্রয়োজনে CPU ক্রেডিট রিবিল্ড করাও অন্তর্ভুক্ত।
আমি কি একটি VPS-এ একাধিক সার্ভিস চালাতে পারি?
হ্যাঁ। root অ্যাক্সেস থাকার মূল উদ্দেশ্যই এটি: মেশিনটি সাধারণ কাজের জন্য তৈরি, এবং সার্ভিসগুলো একে অপরের সাথে থাকতে পারে যতক্ষণ না সেগুলো মেমরির মধ্যে ধরে এবং প্রতিটি সার্ভিস নিজস্ব পোর্টে লিসেন করে। সাধারণত মেমরিই প্রথম সীমাবদ্ধতা হিসেবে সামনে আসে, এবং ডিস্কের গতি দ্বিতীয়। ইমেইল এক্ষেত্রে একটি ব্যতিক্রম, কারণ ডেলিভারি নির্ভর করে আপনার IP অ্যাড্রেসের রেপুটেশন, প্রোভাইডারের SMTP পলিসি এবং মেইল সার্ভারটির ওপর।