مجازیسازی یکی از مهمترین فناوریهای زیرساختی در دیتاسنتر و محیطهای سازمانی است. با استفاده از مجازیسازی میتوان چندین سیستمعامل مستقل را روی یک سرور اجرا کرد و از منابع سختافزاری به شکل بهینهتری بهره برد. در میان راهکارهای متنباز، KVM یکی از قدرتمندترین هایپروایزرهای موجود برای لینوکس محسوب میشود که عملکرد، پایداری و امنیت بالایی را در اختیار مدیران سیستم قرار میدهد.
KVM یا Kernel-based Virtual Machine از کرنل لینوکس برای تبدیل یک سرور معمولی به یک Hypervisor استفاده میکند. به همین دلیل، برخلاف بسیاری از نرمافزارهای مجازیسازی، نیازی به نصب یک سیستمعامل اختصاصی ندارد و مستقیم روی توزیع لینوکس اجرا میشود.
در این آموزش، مراحل نصب و راهاندازی KVM روی یک سرور سرور فیزیکی (Bare Metal) را به صورت گامبهگام بررسی میکنیم. همچنین با ابزارهای مدیریتی، پیشنیازها و تنظیمات اولیه موردنیاز برای ایجاد ماشینهای مجازی آشنا خواهید شد.
KVM چیست؟
KVM مخفف Kernel-based Virtual Machine است و یکی از قابلیتهای کرنل لینوکس محسوب میشود که امکان تبدیل سیستمعامل لینوکس به یک Hypervisor کامل را فراهم میکند.
در این معماری، هر ماشین مجازی به صورت یک پردازش مستقل در لینوکس اجرا میشود و منابعی مانند پردازنده، حافظه و فضای ذخیرهسازی را از طریق هسته سیستمعامل دریافت میکند.
KVM از فناوریهای سختافزاری مجازیسازی پردازنده مانند Intel VT-x و AMD-V استفاده میکند تا عملکرد ماشینهای مجازی تا حد زیادی به اجرای مستقیم روی سختافزار نزدیک باشد.
چرا KVM را روی سرور فیزیکی نصب کنیم؟
اجرای KVM روی Bare Metal به این معنا است که Hypervisor مستقیم روی یک سرور فیزیکی نصب میشود و هیچ لایه مجازیسازی دیگری بین سختافزار و سیستمعامل وجود ندارد.
این روش مزایای مهمی دارد:
- عملکرد بسیار بالا به دلیل دسترسی مستقیم به سختافزار
- کاهش سربار مجازیسازی
- استفاده بهینه از منابع CPU و حافظه
- مناسب برای محیطهای پروداکشن
- امکان اجرای تعداد زیادی ماشین مجازی
- پایداری و امنیت بالا
به همین دلیل بسیاری از ارائهدهندگان خدمات ابری و مدیران مراکز داده از KVM به عنوان Hypervisor اصلی خود استفاده میکنند.
پیشنیازهای نصب KVM
پیش از نصب KVM باید مطمئن شوید که سختافزار و سیستمعامل از مجازیسازی سختافزاری پشتیبانی میکنند.
حداقل پیشنیازهای پیشنهادی عبارتند از:
- پردازنده Intel یا AMD با پشتیبانی از VT-x یا AMD-V
- حداقل ۴ گیگابایت حافظه RAM
- فضای ذخیرهسازی کافی برای ماشینهای مجازی
- نصب یکی از توزیعهای لینوکس مانند Ubuntu، Debian، Rocky Linux یا AlmaLinux
- دسترسی کاربر Root یا sudo
هرچه منابع سختافزاری بیشتری در اختیار داشته باشید، امکان اجرای ماشینهای مجازی بیشتری نیز فراهم خواهد شد.
بررسی پشتیبانی پردازنده از
اولین مرحله، بررسی قابلیت مجازیسازی پردازنده است.
دستور زیر وجود قابلیت Intel VT-x یا AMD-V را بررسی میکند.
egrep -c '(vmx|svm)' /proc/cpuinfo
اگر خروجی عددی بزرگتر از صفر باشد، پردازنده از Virtualization پشتیبانی میکند.

برای مشاهده جزئیات بیشتر نیز میتوانید از دستور زیر استفاده کنید.
lscpu
در خروجی، مقدار Virtualization باید یکی از گزینههای زیر باشد.
VT-x AMD-V
اگر این مقدار نمایش داده نشود، ابتدا باید قابلیت Virtualization را از طریق BIOS یا UEFI سرور فعال کنید.
بررسی فعال بودن ماژول KVM
پس از اطمینان از پشتیبانی پردازنده، بهتر است بررسی کنید که ماژول KVM در کرنل لینوکس بارگذاری شده است.
lsmod | grep kvm
در صورت فعال بودن، خروجی مشابه زیر مشاهده خواهید کرد.

kvm_intel
kvm
یا در سیستمهای AMD
kvm_amd
kvm
اگر خروجی نمایش داده نشود، پس از نصب بستههای KVM این ماژولها به صورت خودکار بارگذاری خواهند شد.
نصب KVM روی Ubuntu و Debian
در توزیعهای مبتنی بر Debian ابتدا فهرست مخازن را بهروزرسانی کنید.
sudo apt update
سپس بستههای موردنیاز را نصب کنید:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
این بستهها شامل اجزای اصلی موردنیاز برای مجازیسازی هستند.
- qemu-kvm برای اجرای ماشینهای مجازی
- libvirt برای مدیریت Hypervisor
- bridge-utils برای ایجاد شبکه Bridge
- virtinst برای ساخت ماشینهای مجازی
- virt-manager برای مدیریت گرافیکی در محیط دسکتاپ
پس از پایان نصب، سرویس libvirtd را فعال کنید.
sudo systemctl enable --now libvirtd
برای اطمینان از اجرای صحیح سرویس، وضعیت آن را بررسی کنید.
sudo systemctl status libvirtd
در صورت اجرای صحیح، وضعیت سرویس باید active (running) باشد.
نصب KVM روی Rocky Linux و AlmaLinux
در توزیعهای مبتنی بر RHEL ابتدا گروه Virtualization را نصب کنید.
sudo dnf group install "Virtualization Host"
سپس سرویس libvirtd را فعال کنید.
sudo systemctl enable --now libvirtd
در ادامه وضعیت سرویس را بررسی کنید.
sudo systemctl status libvirtd
بررسی نصب KVM
پس از نصب، میتوانید از دستور زیر برای بررسی سلامت Hypervisor استفاده کنید.
virsh list --all
اگر نصب به درستی انجام شده باشد، خروجی مشابه زیر مشاهده خواهید کرد.

در این مرحله هنوز هیچ ماشین مجازی ایجاد نشده است، اما این خروجی نشان میدهد که KVM و libvirt به درستی نصب و آماده استفاده هستند.
آشنایی با اجزای اصلی KVM
درک ساختار KVM به مدیریت بهتر ماشینهای مجازی کمک میکند.
مهمترین اجزای این پلتفرم عبارتند از:
- QEMU: موتور اصلی اجرای ماشینهای مجازی است و مسئول شبیهسازی سختافزار میباشد.
- Libvirt: یک لایه مدیریتی است که امکان ایجاد، حذف، روشن و خاموش کردن ماشینهای مجازی را فراهم میکند.
- virsh: ابزار خط فرمان برای مدیریت کامل ماشینهای مجازی است.
- Virt-Manager: یک رابط گرافیکی برای مدیریت KVM که بیشتر در سیستمهای دسکتاپ استفاده میشود.
پیکربندی شبکه Bridge در KVM
پس از نصب KVM و اطمینان از اجرای سرویسهای موردنیاز، نوبت به پیکربندی شبکه میرسد. اگر قصد دارید ماشینهای مجازی مانند یک سیستم مستقل در شبکه فعالیت کنند و مستقیم از سایر دستگاهها قابل دسترس باشند، باید از Bridge Network استفاده کنید.
در این روش، یک رابط شبکه مجازی به کارت شبکه فیزیکی سرور متصل میشود و ماشینهای مجازی از طریق آن به شبکه دسترسی خواهند داشت. در نتیجه هر ماشین مجازی میتواند IP مستقل دریافت و بدون نیاز به تنظیمات NAT با سایر سیستمها ارتباط برقرار کند.
این نوع پیکربندی برای سرورهای پروداکشن، سرویسهای میزبانی وب و محیطهای سازمانی رایجترین انتخاب است.
مشاهده رابطهای شبکه
قبل از ایجاد Bridge بهتر است نام کارت شبکه سرور را بررسی کنید.
ip addr
یا
ip link
در خروجی، نام رابط شبکه معمولا چیزی مانند ens18، ens160، enp1s0 یا eth0 خواهد بود.
ایجاد Bridge در Ubuntu
در نسخههای جدید Ubuntu که از Netplan استفاده میکنند، فایل تنظیمات شبکه معمولا در مسیر زیر قرار دارد.
/etc/netplan/
یکی از فایلهای YAML موجود را باز کرده و تنظیمات Bridge را مشابه نمونه زیر انجام دهید.
network:
version: 2
renderer: networkd
ethernets:
ens18:
dhcp4: false
bridges:
br0:
interfaces:
– ens18
dhcp4: true
در این مثال، کارت شبکه ens18 به Bridge با نام br0 متصل شده است.
پس از ذخیره فایل، تنظیمات را اعمال کنید.
sudo netplan apply
در صورت بروز خطا، میتوانید قبل از اعمال نهایی از دستور زیر برای آزمایش تنظیمات استفاده کنید.
sudo netplan try
بررسی ایجاد Bridge
پس از اعمال تنظیمات، وجود Bridge را بررسی کنید.
ip addr show br0
یا
bridge link
اگر همه مراحل به درستی انجام شده باشد، رابط br0 فعال خواهد بود و آدرس IP سرور نیز روی همین Bridge قرار میگیرد.
بررسی وضعیت Hypervisor
پیش از ایجاد ماشین مجازی، بهتر است از سلامت سرویس libvirt اطمینان حاصل کنید.
sudo systemctl status libvirtd
همچنین میتوانید با دستور زیر اطلاعات Hypervisor را مشاهده کنید.
virsh version
برای نمایش اطلاعات کامل میزبان نیز از دستور زیر استفاده کنید.
virsh nodeinfo
خروجی این دستور شامل اطلاعاتی مانند موارد زیر است.
- مدل پردازنده
- تعداد هستههای CPU
- مقدار حافظه RAM
- معماری سیستم
- تعداد Threadها
این اطلاعات هنگام برنامهریزی برای ایجاد ماشینهای مجازی بسیار مفید هستند.
برای اجرای پروژههای لینوکس و ایجاد یک محیط پایدار با منابع اختصاصی، میتوانید خرید سرور مجازی را بررسی کنید و پلن خود را انتخاب کنید.
دانلود فایل ISO سیستمعامل
برای نصب هر ماشین مجازی به فایل ISO سیستمعامل نیاز خواهید داشت. بسته به نیاز خود میتوانید نسخه موردنظر را از وبسایت رسمی توزیع لینوکس یا ارائهدهنده سیستمعامل دریافت کنید.
معمولا فایلهای ISO در مسیر زیر ذخیره میشوند:
/var/lib/libvirt/images/
برای انتقال فایل ISO به این مسیر میتوانید از دستور زیر استفاده کنید:
sudo mv ubuntu.iso /var/lib/libvirt/images/
یا هنگام دانلود، فایل را مستقیما در همین مسیر ذخیره کنید.
ایجاد اولین ماشین مجازی
یکی از سادهترین روشهای ساخت ماشین مجازی استفاده از ابزار virt-install است.
نمونه دستور زیر یک ماشین مجازی با دو هسته پردازنده، چهار گیگابایت حافظه و ۳۰ گیگابایت فضای ذخیرهسازی ایجاد میکند.
sudo virt-install \ --name ubuntu-server \ --ram 4096 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/ubuntu-server.qcow2,size=30 \ --cdrom /var/lib/libvirt/images/ubuntu.iso \ --os-variant ubuntu22.04 \ --network bridge=br0 \ --graphics vnc
در این دستور:
- name– نام ماشین مجازی را مشخص میکند.
- ram– میزان حافظه اختصاص داده شده را تعیین میکند.
- vcpus– تعداد هستههای پردازنده را مشخص میکند.
- disk– دیسک مجازی را ایجاد میکند.
- cdrom– فایل ISO نصب را معرفی میکند.
- network– ماشین مجازی را به Bridge متصل میکند.
- graphics vnc– امکان نصب سیستمعامل از طریق VNC را فراهم میکند.
پس از اجرای دستور، ماشین مجازی ایجاد شده و فرآیند نصب سیستمعامل آغاز میشود.
اتصال به ماشین مجازی از طریق VNC
اگر ماشین مجازی را با گزینه graphics vnc– ایجاد کرده باشید، میتوانید از طریق یک VNC Client به محیط نصب سیستمعامل متصل شوید.
برای مشاهده شماره پورت VNC دستور زیر را اجرا کنید.
virsh vncdisplay ubuntu-server
خروجی ممکن است مشابه زیر باشد.
:۰
در این حالت، ماشین مجازی روی پورت ۵۹۰۰ در دسترس خواهد بود و میتوانید با یک نرمافزار VNC Viewer به آن متصل شوید.
مدیریت ماشینهای مجازی با virsh
ابزار virsh یکی از مهمترین ابزارهای مدیریت KVM از طریق خط فرمان است و تقریبا تمام عملیات مدیریتی را پوشش میدهد.
برای مشاهده ماشینهای مجازی فعال از دستور زیر استفاده کنید.
virsh list
برای مشاهده همه ماشینهای مجازی، حتی ماشینهای خاموش، دستور زیر را اجرا کنید:
virsh list --all
اگر بخواهید یک ماشین مجازی را روشن کنید، کافی است دستور زیر را اجرا کنید:
virsh start ubuntu-server
برای خاموش کردن ماشین مجازی نیز میتوانید از دستور زیر استفاده کنید:
virsh shutdown ubuntu-server
در صورتی که ماشین مجازی پاسخگو نباشد، امکان خاموش کردن اجباری نیز وجود دارد:
virsh destroy ubuntu-server
البته استفاده از این دستور مشابه قطع ناگهانی برق است و تنها در شرایط ضروری توصیه میشود.
فعال شدن خودکار ماشین مجازی پس از راهاندازی سرور
اگر میخواهید یک ماشین مجازی پس از هر بار راهاندازی سرور به صورت خودکار اجرا شود، از دستور زیر استفاده کنید:
virsh autostart ubuntu-server
در صورت نیاز به غیرفعال کردن این قابلیت نیز میتوانید دستور زیر را اجرا کنید:
virsh autostart --disable ubuntu-server
بهینهسازی عملکرد KVM
پس از نصب و راهاندازی KVM و ایجاد اولین ماشین مجازی، بهتر است برخی تنظیمات را برای افزایش کارایی و استفاده بهینه از منابع سرور اعمال کنید. این تنظیمات به ویژه در محیطهای پروداکشن که چندین ماشین مجازی به صورت همزمان اجرا میشوند، تاثیر قابل توجهی بر عملکرد سیستم خواهند داشت.
استفاده از فرمت دیسک QCOW2
هنگام ایجاد ماشین مجازی میتوانید از فرمتهای مختلفی برای دیسک مجازی استفاده کنید. یکی از رایجترین گزینهها، QCOW2 است.
این فرمت قابلیتهایی مانند Snapshot، Thin Provisioning و فشردهسازی را در اختیار شما قرار میدهد و برای اکثر سناریوها انتخاب مناسبی است.
در نقطه مقابل، اگر بیشترین کارایی برای شما اهمیت دارد و به قابلیتهایی مانند Snapshot نیاز ندارید، استفاده از فرمت RAW میتواند عملکرد بهتری ارائه دهد، زیرا دادهها مستقیم روی فضای ذخیرهسازی نوشته میشوند.
استفاده از درایورهای VirtIO
یکی از مهمترین راهکارهای افزایش سرعت ماشینهای مجازی، استفاده از درایورهای VirtIO است.
VirtIO مجموعهای از درایورهای بهینهشده برای محیطهای مجازی است که ارتباط بین ماشین مجازی و Hypervisor را سریعتر و کارآمدتر میکند.
مزایای استفاده از VirtIO عبارتند از:
- افزایش سرعت خواندن و نوشتن دیسک
- بهبود عملکرد کارت شبکه
- کاهش سربار پردازنده
- افزایش سرعت انتقال داده
در بیشتر توزیعهای جدید لینوکس، درایورهای VirtIO به صورت پیشفرض در کرنل سیستمعامل وجود دارند.
فعال کردن CPU Passthrough
به صورت پیشفرض، KVM یک مدل عمومی از پردازنده را در اختیار ماشین مجازی قرار میدهد. اگر هدف شما دستیابی به حداکثر کارایی باشد، میتوانید از قابلیت CPU Passthrough استفاده کنید.
در این حالت، ویژگیهای واقعی پردازنده میزبان بدون تغییر در اختیار ماشین مجازی قرار میگیرد و عملکرد برنامههایی که به پردازنده وابسته هستند بهبود پیدا میکند.
این قابلیت به ویژه برای پایگاههای داده، پردازشهای سنگین و ماشینهای مجازی با بار پردازشی بالا توصیه میشود.
اختصاص منابع مناسب به ماشینهای مجازی
یکی از اشتباهات رایج، اختصاص بیش از حد منابع سختافزاری به ماشینهای مجازی است.
برای حفظ پایداری سرور بهتر است همواره بخشی از منابع را برای سیستمعامل میزبان آزاد بگذارید. اگر تمام حافظه یا هستههای پردازنده به ماشینهای مجازی اختصاص داده شوند، ممکن است عملکرد کل سرور کاهش پیدا کند.
پیش از ایجاد هر ماشین مجازی، میزان مصرف CPU، حافظه و فضای ذخیرهسازی را بررسی کنید و منابع را متناسب با نیاز واقعی سرویس تخصیص دهید.
استفاده از Snapshot
یکی از قابلیتهای کاربردی KVM، ایجاد Snapshot از ماشین مجازی است.
اسنپشات وضعیت فعلی ماشین مجازی را ذخیره میکند و در صورت بروز مشکل، امکان بازگردانی سیستم به همان وضعیت وجود خواهد داشت.
این قابلیت قبل از انجام عملیات زیر بسیار مفید است:
- بهروزرسانی سیستمعامل
- نصب نرمافزارهای جدید
- تغییر تنظیمات مهم
- آزمایش تنظیمات مختلف
البته نگهداری تعداد زیادی Snapshot برای مدت طولانی توصیه نمیشود، زیرا میتواند بر عملکرد دیسک تاثیر بگذارد.
تهیه بکاپ از ماشینهای مجازی
داشتن اسنپشات به معنای داشتن بکاپ نیست. در صورت خرابی استوریج، Snapshot هم از بین خواهد رفت.
به همین دلیل بهتر است به صورت منظم از فایلهای دیسک ماشینهای مجازی و فایلهای تنظیمات libvirt بکاپ تهیه کنید.
برای بسیاری از محیطهای عملیاتی، تهیه بکاپ روزانه یا هفتگی یک اقدام ضروری محسوب میشود.
مانیتورینگ ماشینهای مجازی
پس از راهاندازی ماشینهای مجازی، بهتر است وضعیت مصرف منابع را به صورت مستمر بررسی کنید.
ابزارهای مختلفی برای این کار وجود دارند که میتوانند اطلاعاتی مانند موارد زیر را نمایش دهند:
- مصرف پردازنده
- میزان استفاده از حافظه
- ترافیک شبکه
- سرعت خواندن و نوشتن دیسک
- وضعیت ماشینهای مجازی
بررسی مداوم این شاخصها به شناسایی گلوگاههای عملکردی و جلوگیری از بروز اختلال در سرویسها کمک میکند.
خطاهای رایج هنگام نصب KVM
در زمان نصب یا راهاندازی KVM ممکن است با برخی خطاهای متداول روبهرو شوید.
- پردازنده از Virtualization پشتیبانی نمیکند
اگر هنگام بررسی قابلیت مجازیسازی نتیجهای دریافت نکردید، ابتدا تنظیمات BIOS یا UEFI را بررسی کرده و قابلیت Intel VT-x یا AMD-V را فعال کنید.
- سرویس libvirtd اجرا نمیشود
در این شرایط ابتدا وضعیت سرویس را بررسی کنید.
sudo systemctl status libvirtd
همچنین میتوانید فایلهای لاگ را برای شناسایی علت خطا مشاهده کنید.
sudo journalctl -u libvirtd
- ماشین مجازی به شبکه دسترسی ندارد
در بیشتر موارد، این مشکل به دلیل پیکربندی نادرست Bridge یا اتصال اشتباه ماشین مجازی به رابط شبکه ایجاد میشود. بررسی تنظیمات Bridge و اطمینان از اتصال ماشین مجازی به رابط صحیح، معمولا مشکل را برطرف میکند.
- فضای ذخیرهسازی کافی وجود ندارد
اگر فضای دیسک میزبان تکمیل شود، ممکن است ماشینهای مجازی با خطا مواجه شوند یا عملکرد آنها کاهش یابد. بررسی دورهای فضای ذخیرهسازی و آزادسازی فضای غیرضروری از بروز این مشکل جلوگیری میکند.
بهترین روشها برای مدیریت KVM
رعایت چند نکته ساده میتواند پایداری و امنیت زیرساخت مجازیسازی را افزایش دهد.
- سیستمعامل میزبان را بهروز نگه دارید.
- برای هر ماشین مجازی منابع متناسب با نیاز آن اختصاص دهید.
- از درایورهای VirtIO برای افزایش کارایی استفاده کنید.
- به صورت منظم از ماشینهای مجازی بکاپ تهیه کنید.
- فضای استوریج و مصرف منابع را به طور مستمر مانیتور کنید.
- قبل از اعمال تغییرات مهم، از ماشین مجازی اسنپشات بگیرید.
- دسترسی به سرویسهای مدیریتی KVM را فقط در اختیار کاربران مجاز قرار دهید.
جمعبندی
KVM یکی از قدرتمندترین راهکارهای متنباز برای مجازیسازی در لینوکس است که امکان اجرای ماشینهای مجازی با عملکرد بالا را روی سرور فیزیکی(Bare Metal) فراهم میکند. استفاده از کرنل لینوکس، پشتیبانی از فناوریهای مجازیسازی سختافزاری و سازگاری با طیف گستردهای از توزیعهای لینوکس، این Hypervisor را به یکی از گزینههای محبوب در مراکز داده، زیرساختهای ابری و محیطهای سازمانی تبدیل کرده است.
در این مطلب، مراحل بررسی پیشنیازها، نصب KVM، راهاندازی سرویسهای موردنیاز، پیکربندی شبکه Bridge، ایجاد اولین ماشین مجازی و مدیریت آن با ابزارهای خط فرمان را بررسی کردیم. همچنین با برخی روشهای بهینهسازی عملکرد و نکات مهم برای نگهداری و مدیریت ماشینهای مجازی آشنا شدیم.
با رعایت این نکات، میتوانید یک زیرساخت مجازیسازی پایدار، مقیاسپذیر و قابل اعتماد ایجاد کنید که پاسخگوی نیازهای توسعه، آزمایش و اجرای سرویسهای عملیاتی باشد.