KVM (Kernel-based Virtual Machine) Linux कर्नेल में बनी वर्चुअलाइज़ेशन तकनीक है। VPS Linux Infrawire पर इसका मतलब है कि आपका सर्वर अपने कर्नेल वाली असली मशीन की तरह व्यवहार करता है, किसी और के सिस्टम में अलग किए गए साधारण फ़ोल्डर की तरह नहीं। यह गाइड कंटेनर तकनीकों से अंतर समझाती है और दिखाती है कि इसे खुद कैसे जाँचें।
📋 पूर्वापेक्षाएँ
- एक Linux VPS (Ubuntu 24.04, Debian 12, AlmaLinux 9 या Rocky Linux 9)
- root या
sudoवाले उपयोगकर्ता के रूप में SSH एक्सेस - कमांड लाइन की बुनियादी जानकारी
1. KVM कैसे काम करता है
KVM भौतिक होस्ट के Linux कर्नेल को हाइपरवाइज़र बना देता है। हर वर्चुअल मशीन QEMU द्वारा चलाई गई सामान्य प्रोसेस होती है, लेकिन उसे एमुलेटेड हार्डवेयर दिखता है: CPU, RAM, डिस्क और नेटवर्क कार्ड। CPU के वर्चुअलाइज़ेशन एक्सटेंशन (Intel VT-x, AMD-V) की बदौलत गेस्ट का कोड लगभग नेटिव गति से चलता है।
VM के अंदर आप अपने कर्नेल, अपने init सिस्टम और अपनी प्रोसेस के साथ पूरा ऑपरेटिंग सिस्टम इंस्टॉल करते हैं। आपकी नज़र में यह एक डेडिकेटेड सर्वर है।
2. KVM बनाम OpenVZ और LXC
कंटेनर तकनीकें अलग तरह से काम करती हैं:
- OpenVZ और LXC: सभी कंटेनर होस्ट का कर्नेल साझा करते हैं। आपको केवल अलग किया हुआ यूज़र स्पेस मिलता है। आप कर्नेल बदल नहीं सकते, मॉड्यूल लोड नहीं कर सकते और कर्नेल संस्करण नहीं चुन सकते।
- KVM: पूर्ण वर्चुअलाइज़ेशन। हर VPS अपना कर्नेल बूट करता है और उसकी अपनी मेमोरी व डिस्क आवंटन होती है।
कंटेनर हल्का होता है, पर होस्ट कर्नेल जितनी अनुमति दे उतने तक सीमित रहता है। KVM VPS थोड़ी अधिक मेमोरी खपत के बदले आपको आज़ादी देता है।
3. VPS पर यह क्यों मायने रखता है
अपने कर्नेल के साथ आप:
- WireGuard,
br_netfilterयाnf_conntrackजैसे कर्नेल मॉड्यूल लोड कर सकते हैं - Docker और अन्य कंटेनर इंजन बिना पाबंदी चला सकते हैं (cgroups, overlay फ़ाइल सिस्टम, iptables)
sysctlसे सिस्टम ट्यून कर सकते हैं (नेटवर्क बफ़र, IP फ़ॉरवर्डिंग, BBR कंजेशन कंट्रोल)- अपना फ़ायरवॉल, स्वैप फ़ाइल और कोई भी फ़ाइल सिस्टम इस्तेमाल कर सकते हैं
- अपनी डिस्ट्रीब्यूशन से कोई दूसरा कर्नेल संस्करण इंस्टॉल कर सकते हैं
Bash# चल रहा कर्नेल दिखाएँ uname -r # बदले जा सकने वाले कर्नेल पैरामीटर दिखाएँ sudo sysctl net.ipv4.ip_forward net.ipv4.tcp_congestion_control
4. जाँचें कि आप KVM पर हैं
सबसे आसान तरीका systemd-detect-virt है:
Bashsystemd-detect-virt # अपेक्षित आउटपुट: kvm
अगर कमांड openvz, lxc या docker दिखाए, तो आप कंटेनर में हैं। none का मतलब भौतिक मशीन है।
lscpu से पुष्टि कर सकते हैं:
Bashlscpu | grep -iE 'hypervisor|virtualization type' # Hypervisor vendor: KVM # Virtualization type: full
और कर्नेल के बूट संदेशों से:
Bashsudo dmesg | grep -i -E 'kvm|hypervisor' # Hypervisor detected: KVM
अंत में, hostnamectl में Virtualization: kvm पंक्ति दिखती है।
5. KVM से मिलने वाली सुविधाएँ परखें
जाँचें कि आप मॉड्यूल लोड कर सकते हैं और कंटेनर चला सकते हैं:
Bash# Ubuntu 24.04 / Debian 12: WireGuard मॉड्यूल sudo modprobe wireguard lsmod | grep wireguard # डिस्ट्रीब्यूशन रिपॉज़िटरी से Docker इंस्टॉल करें और टेस्ट कंटेनर चलाएँ sudo apt update && sudo apt install -y docker.io sudo docker run --rm hello-world
AlmaLinux 9 या Rocky 9 पर टूल के लिए sudo dnf install -y wireguard-tools चलाएँ और इंजन इंस्टॉल करने के लिए Docker के आधिकारिक दस्तावेज़ (docs.docker.com) का पालन करें।
🔧 समस्या निवारण
dmesg: read kernel buffer failed: Operation not permitted
कर्नेल dmesg को root तक सीमित रखता है। इसे sudo से चलाएँ या sudo journalctl -k इस्तेमाल करें।
modprobe: FATAL: Module wireguard not found
कुछ न्यूनतम इमेज में अतिरिक्त मॉड्यूल नहीं होते। Ubuntu पर linux-modules-extra-$(uname -r) इंस्टॉल करें। अगर अभी कर्नेल अपडेट किया है, तो पहले रीबूट करें ताकि uname -r इंस्टॉल किए मॉड्यूल से मेल खाए।
systemd-detect-virt: command not found
इमेज में systemd नहीं है या वह बहुत न्यूनतम है। इसके बजाय lscpu या dmesg इस्तेमाल करें, या systemd पैकेज इंस्टॉल करें।
Docker cgroups या iptables की शिकायत करता है
systemctl status docker से जाँचें कि सेवा चल रही है, और कि आपने कस्टम फ़ायरवॉल कॉन्फ़िगरेशन में nf_tables या iptables बंद नहीं किए।
🚀 अब आप जानते हैं कि KVM आपके VPS को क्या देता है: असली कर्नेल, पूरा नियंत्रण और होस्ट की ओर से कोई छिपी सीमा नहीं।