התקנת וירטואליזציה עם KVM/QEMU על לינוקס
לפעמים שרתים פיזיים מגיעים למגבלות עלות או גמישות — ואז KVM/QEMU נכנס לתמונה. לקוחות מגיעים לעיתים קרובות עם בעיה: "אנחנו רוצים וירטואליזציה, אבל בלי נעילה לספק ובלי שליטה מלאה." אנו מגדירים KVM/QEMU כפתרון מוכן, ומשלבים אותו במערכת שלכם: Terraform, Ansible, GitOps, Prometheus. ללא GUI, רק CLI ו-API — ביצועים מקסימליים ועלויות רישוי אפסיות. במהלך 5 השנים האחרונות, יישמנו יותר מ-50 פרויקטי וירטואליזציה מבוססי KVM — ממעבדות קטנות ועד אשכולות ייצור עם 200+ מכונות וירטואליות. חיסכון ממוצע בתקציב בהשוואה להיפרוויזורים מסחריים — כ-40% הודות להיעדר דמי רישוי.
למה לבחור ב-KVM/QEMU לסביבת ייצור?
Proxmox נוח, אבל העדכונים והרישוי שלו (Community לעומת Enterprise) עשויים שלא להתאים לסביבות קפדניות. KVM/QEMU הוא מודול ליבת לינוקס: אתם מקבלים ביצועים טבעיים, לא שכבת הפשטה. לפי תיעוד Red Hat, עם VirtIO מכונות אורח רצות ב-95–98% מביצועי שרת פיזי. הגירה חיה, איזון CPU דרך virsh vcpupin, SLO מתחת ל-99.9% — כל זה זמין מהקופסה ללא שכבות נוספות. לדוגמה, בפרויקט אחד החלפנו את VMware vSphere ב-KVM — עלויות הרישוי ירדו פי 5, והביצועים עלו ב-12% הודות לגישה ישירה לליבה.
איך להבטיח סבילות לתקלות ב-KVM?
לסביבות זמינות גבוהה, אנו משתמשים בשילוב של הגירה חיה ואחסון משותף (NFS, Ceph). הגדרת נעילה לפי תכנית "2-3 מארחים + Quorum" דרך corosync/pacemaker. זמן שחזור ממוצע (RTO) בעת כשל צומת — לא יותר מ-15 דקות. תכנית גיבוי: snapshots של qcow2 כל 4 שעות, גיבוי מלא פעם ביום לשרת נפרד. למכונות וירטואליות קריטיות, אנו מגדירים הפעלה אוטומטית מחדש על המארח השכן.
מה אנחנו עושים כחלק מהתקנת KVM/QEMU
- בדיקת חומרה: בדיקת תמיכה ב-VT-x/AMD-V, IOMMU, NUMA. אופטימיזציה של מיקום vCPU וזיכרון. על שרת טיפוסי עם 2 מעבדים של 16 ליבות כל אחד ו-256 GB RAM, אפשר לארח עד 30 מכונות וירטואליות בעומס בינוני.
- התקנה והגדרה: qemu-kvm, libvirt-daemon, bridge-utils, virtinst. הגדרת רשת ברירת מחדל (NAT או bridge).
- רשת: יצירת ממשקי bridge, VLANs (bridge לכל VLAN), Open vSwitch אופציונלי. הבטחת NetworkPolicy ובידוד. דוגמה: לארכיטקטורת מיקרוסרוויסים, הגדרנו bridge אחד לכל פרויקט.
- אחסון: qcow2 עם
kvm_domain_info, LVM thin provisioning. חיבור NFS/Ceph להגירה חיה. - תבניות VM: cloud-init, תמונות של Ubuntu 22.04 LTS, Debian 12, CentOS Stream 9. הכל דרך
kvm_domain_cpu_time_secondsאו Terraform. - ניטור: Prometheus + libvirt_exporter, לוחות מחוונים של Grafana. מדדים: CPU steal, השהיית דיסק, memory ballooning.
- גיבויים: virt-backup או rsync snapshots. RPO — שעה, RTO — 15 דקות.
איך להגדיר ניטור KVM?
התקינו libvirt_exporter, חברו אותו ל-Prometheus. ב-Grafana יש לוחות מחוונים מוכנים. מדדים מרכזיים:
-
kvm_domain_balloon_current_bytes— מצבי מכונות אורח -
# /etc/netplan/01-bridge.yaml (Ubuntu) network: version: 2 ethernets: enp3s0: dhcp4: false bridges: br0: interfaces: [enp3s0] addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8] parameters: stp: false forward-delay: 0 netplan apply— זמן steal -
br-vlan300— דליפות זיכרון
התראות לפי MTTR ו-SLO. Runbook: אם steal עולה על 10% — בדקו CPU pinning או עומס על מכונות וירטואליות שכנות.
רשת Bridge למכונות וירטואליות
צרו bridge לינוקס כך:
# /etc/netplan/01-bridge.yaml (Ubuntu)
network:
version: 2
ethernets:
enp3s0:
dhcp4: false
bridges:
br0:
interfaces: [enp3s0]
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
parameters:
stp: false
forward-delay: 0
netplan apply
לתעבורה עם תגי VLAN, צרו enp3s0.300 מעל # Создание диска ВМ (qcow2 — thin provisioned, поддерживает снапшоты) qemu-img create -f qcow2 /var/lib/libvirt/images/webserver01.qcow2 40G # Установка ВМ из ISO virt-install \ --name webserver01 \ --ram 4096 \ --vcpus 4 \ --cpu host \ --disk path=/var/lib/libvirt/images/webserver01.qcow2,format=qcow2,bus=virtio \ --network bridge=br0,model=virtio \ --os-variant ubuntu22.04 \ --cdrom /tmp/ubuntu-22.04-server.iso \ --graphics none \ --console pty,target_type=serial \ --extra-args 'console=ttyS0,115200n8' — כל VLAN מקבל bridge משלו, מכונות וירטואליות מתחברות למתאים.
יצירת VM דרך qemu-system ו-virt-install
# Создание диска ВМ (qcow2 — thin provisioned, поддерживает снапшоты)
qemu-img create -f qcow2 /var/lib/libvirt/images/webserver01.qcow2 40G
# Установка ВМ из ISO
virt-install \
--name webserver01 \
--ram 4096 \
--vcpus 4 \
--cpu host \
--disk path=/var/lib/libvirt/images/webserver01.qcow2,format=qcow2,bus=virtio \
--network bridge=br0,model=virtio \
--os-variant ubuntu22.04 \
--cdrom /tmp/ubuntu-22.04-server.iso \
--graphics none \
--console pty,target_type=serial \
--extra-args 'console=ttyS0,115200n8'נקודה מרכזית: --cpu host מעביר דגלי מעבד אמיתיים ל-VM — ביצועים מקסימליים. אם מכונות וירטואליות צריכות לנדוד בין מארחים עם מעבדים שונים, השתמשו ב---cpu qemu64 לתאימות.
bus=virtio ו-model=virtio — דרייברים פרא-וירטואליים לדיסק ורשת. הביצועים גבוהים משמעותית מאמולציית IDE/e1000 (פי 3–5). מערכת ההפעלה האורחת חייבת לכלול דרייברי VirtIO (בלינוקס הם מובנים בליבה, ב-Windows נדרשת התקנה נפרדת).
Snapshots ושכפול
# Создание снапшота перед обновлением
virsh snapshot-create-as webserver01 \
--name "before-update" \
--description "Before kernel update" \
--atomic
# Список снапшотов
virsh snapshot-list webserver01
# Откат к снапшоту
virsh snapshot-revert webserver01 before-update
# Клонирование ВМ
virt-clone --original webserver01 \
--name webserver02 \
--file /var/lib/libvirt/images/webserver02.qcow2snapshots של qcow2 מאחסנים רק את ההפרש מתמונת הבסיס. עם שרשרת snapshots עמוקה, ביצועי הדיסק מתדרדרים — מיזגו snapshots ישנים דרך # Создание снапшота перед обновлением virsh snapshot-create-as webserver01 \ --name "before-update" \ --description "Before kernel update" \ --atomic # Список снапшотов virsh snapshot-list webserver01 # Откат к снапшоту virsh snapshot-revert webserver01 before-update # Клонирование ВМ virt-clone --original webserver01 \ --name webserver02 \ --file /var/lib/libvirt/images/webserver02.qcow2 . נהלו snapshots דרך libvirt.
ביצועים וכיוונון
למכונות וירטואליות עם עומס I/O כבד, הפעילו qemu-img commit על דיסקים — מבטל מטמון כפול בין מכונה אורחת למארח. לעומסי רשת — cache=none,io=native על multiqueue: מספר תורים = מספר vCPUs של ה-VM.
CPU pinning לעומסים רגישים לשהייה:
# Привязка vCPU ВМ к конкретным физическим ядрам virsh vcpupin webserver01 0 2 virsh vcpupin webserver01 1 3 | פרמטר | ערך בייצור | השפעה |
|---|---|---|
virtio-net | כן | ↑ IOPS ב-20–30% |
# Привязка vCPU ВМ к конкретным физическим ядрам virsh vcpupin webserver01 0 2 virsh vcpupin webserver01 1 3 | מספר vCPUs | ↑ תפוקת רשת |
| CPU pinning | ליבות ייעודיות | ↓ שהייה, ↑ יציבות |
cache=none,io=native | כל הדגלים | ביצועים מקסימליים |
KVM לעומת חלופות
| היפרוויזור | רישוי | ביצועים | חיסכון |
|---|---|---|---|
| KVM/QEMU | GPL (חינם) | 95–98% משרת פיזי | עד 40% תקציב |
| VMware vSphere | בתשלום (לפי CPU/שנה) | ~90% | - |
| Hyper-V | רישיון Windows | ~90% | - |
| Proxmox VE | GPL + מנוי | ~95% | בינוני |
מה כלול בשירות התקנת KVM/QEMU שלנו
- בדיקת תשתית: ניתוח עומסים נוכחיים, בחירת CPU/RAM/דיסקים.
- התקנה והגדרה: KVM, libvirt, bridge, אחסון, cloud-init.
- יצירת תבניות VM: Ubuntu, Debian, CentOS, Windows Server (עם דרייברי VirtIO).
- שילוב ניטור: Prometheus + לוחות מחוונים של Grafana, התראות SLO.
- תיעוד: דיאגרמת רשת, runbook שחזור, תכנית גיבוי.
- הדרכת צוות: 2–3 מפגשים על ניהול virsh, virt-manager (אופציונלי).
אנחנו עובדים עם KVM למעלה מ-5 שנים, והעברנו פרויקטים ל-50+ חברות — מסטארטאפים ועד ארגונים.
לוח זמנים להתקנה: מ-3 עד 5 ימי עסקים — פתרון מוכן, עם ערבות SLA 99.9%.
הזמינו בדיקת תשתית — נעריך את הפרויקט ונציע את הפתרון האופטימלי. צרו קשר לייעוץ.
רשימת בדיקה של פרמטרים מרכזיים לפני התחלת VM
- [ ] תמיכת VT-x/AMD-V אומתה ב-BIOS
- [ ] IOMMU הופעל ב-GRUB (intel_iommu=on)
- [ ] Bridge הוגדר לרשת
- [ ] מודל virtio נבחר לדיסק ורשת
- [ ] CPU pinning הוקצה למכונות וירטואליות קריטיות
- [ ] התראות הוגדרו עבור steal ו-ballooning







