تقنية KVM (Kernel-based Virtual Machine) هي تقنية المحاكاة الافتراضية المدمجة في نواة لينكس. على VPS Linux Infrawire يعني ذلك أن خادمك يتصرف كجهاز حقيقي له نواته الخاصة، لا كمجلد بسيط معزول داخل نظام شخص آخر. يشرح هذا الدليل الفرق بينها وبين تقنيات الحاويات، ويوضح كيف تتحقق من ذلك بنفسك.
📋 المتطلبات المسبقة
- خادم VPS لينكس (Ubuntu 24.04 أو Debian 12 أو AlmaLinux 9 أو Rocky Linux 9)
- وصول SSH بصلاحية root أو بمستخدم يملك
sudo - معرفة أساسية بسطر الأوامر
1. كيف تعمل KVM
تحوّل KVM نواة لينكس في الخادم الفعلي إلى مراقب افتراضي (hypervisor). كل آلة افتراضية هي عملية عادية يديرها QEMU، لكنها ترى عتاداً مُحاكى: معالجاً وذاكرة وقرصاً وبطاقة شبكة. وبفضل امتدادات المحاكاة الافتراضية في المعالج (Intel VT-x وAMD-V) يعمل كود الضيف بسرعة تقارب السرعة الأصلية.
داخل الآلة الافتراضية تثبّت نظام تشغيل كاملاً بنواته ونظام الإقلاع (init) وعملياته الخاصة. من وجهة نظرك هو خادم مخصص.
2. KVM مقابل OpenVZ وLXC
تعمل تقنيات الحاويات بشكل مختلف:
- OpenVZ وLXC: تتشارك كل الحاويات نواة المضيف. تحصل فقط على مساحة مستخدم معزولة. لا يمكنك تغيير النواة أو تحميل الوحدات أو اختيار إصدار النواة.
- KVM: محاكاة افتراضية كاملة. يقلع كل VPS نواته الخاصة ويملك حصته الخاصة من الذاكرة والقرص.
الحاوية أخف، لكنها مقيّدة بما تسمح به نواة المضيف. أما VPS على KVM فيمنحك الحرية مقابل استهلاك أكبر قليلاً للذاكرة.
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 إلى خادمك: نواة حقيقية وتحكم كامل ولا حدود خفية من المضيف.