آموزش نصب مجازی ساز KVM در Ubuntu و CentOS
با گسترش روزافزون تکنولوژی مجازیسازی، بسیاری از سازمانها، شرکتهای هاستینگ و حتی کاربران حرفهای خانگی، به دنبال راهکارهایی هستند که بتوانند با حداقل منابع سختافزاری، حداکثر بهرهوری را تجربه کنند. در این میان، تکنولوژی KVM (Kernel-based Virtual Machine) یکی از قدرتمندترین و پرکاربردترین ابزارهای مجازیسازی در بستر سیستمعامل لینوکس محسوب میشود که به صورت مستقیم در کرنل لینوکس ادغام شده و توانایی تبدیل سیستم شما به یک هایپروایزر (Hypervisor) کامل را دارد.
KVM این امکان را فراهم میکند که چندین سیستمعامل مختلف (مثل ویندوز، لینوکس، BSD و …) به صورت همزمان و کاملاً ایزوله، روی یک سختافزار واحد اجرا شوند؛ آن هم با پرفورمنس بالا، امنیت قابل قبول و بدون نیاز به نرمافزارهای جانبی سنگین.
در این مقاله، قصد داریم آموزش کامل نصب و راهاندازی KVM را برای دو سیستم عامل محبوب لینوکس یعنی Ubuntu و CentOS/RHEL به زبان ساده اما کاملاً تخصصی ارائه دهیم. از بررسی پیشنیازها و نصب اولیه گرفته تا مدیریت ماشینهای مجازی از طریق خط فرمان (CLI)، ابزار گرافیکی Virt‑Manager و کنسول تحت وب Cockpit، همه موارد را قدمبهقدم با هم جلو میبریم.
اگر به دنبال راهاندازی یک زیرساخت مجازی سازی حرفهای و کم هزینه هستید، یا میخواهید سرور مجازی شخصیتان را در محیط لینوکس بسازید، این آموزش دقیقاً برای شماست.

پیش نیاز های نصب KVM
قبل از نصب و راهاندازی KVM روی سیستمعاملهای لینوکسی مثل Ubuntu یا CentOS، لازم است ابتدا از چند پیش نیاز حیاتی مطمئن شویم. این پیشنیازها شامل بررسی پشتیبانی سختافزاری از قابلیت مجازی سازی، آماده سازی سیستمعامل و بررسی منابع فیزیکی است. در ادامه، این موارد را مرحله به مرحله بررسی میکنیم:
1. سختافزار و BIOS
اولین و مهمترین شرط برای راهاندازی KVM، این است که پردازنده سیستم شما از قابلیت مجازیسازی سختافزاری پشتیبانی کند. این قابلیت در پردازندههای اینتل با نام Intel VT‑x و در پردازندههای AMD با عنوان AMD‑V شناخته میشود.
بررسی پشتیبانی CPU با دستور زیر:
برای بررسی اینکه پردازنده شما از این قابلیتها پشتیبانی میکند یا نه، میتوانید از دستور زیر در ترمینال استفاده کنید:
lscpu | grep -E 'vmx|svm'- اگر نتیجهای شامل vmx (برای Intel) یا svm (برای AMD) نمایش داده شد، یعنی پردازنده از مجازیسازی پشتیبانی میکند.
- اگر خروجی خالی بود، ممکن است یا پردازنده این قابلیت را نداشته باشد یا در BIOS/UEFI غیرفعال باشد.

فعالسازی VT-x یا AMD-V در BIOS/UEFI:
در بسیاری از مادربوردها، قابلیت مجازیسازی به صورت پیشفرض غیرفعال است. برای فعالسازی آن:
- هنگام بوت شدن سیستم، وارد تنظیمات BIOS یا UEFI شوید (معمولاً با کلیدهایی مثل Del یا F2).
- به دنبال گزینههایی مانند Intel Virtualization Technology یا SVM Mode بگردید.
- آن را روی Enabled قرار دهید و تنظیمات را ذخیره کنید.
نکته: موقع ورود به BIOS ممکن است کلید ورود بسته به برند مادربورد متفاوت باشد.
۲. سیستمعامل و منابع سختافزاری
برای اجرای بدون مشکل KVM و ماشینهای مجازی، بهتر است حداقل مشخصات سختافزاری زیر را داشته باشید:
- سیستمعامل 64 بیتی (Ubuntu 20.04+ یا CentOS 7+)
- حداقل 2 گیگابایت RAM (4 گیگ یا بیشتر توصیه میشو)
- حداقل 20 گیگابایت فضای خالی در دیسک
- اتصال اینترنت پایدار برای دریافت بستهها و بروزرسانیها
بروزرسانی سیستمعامل:
قبل از شروع نصب KVM، مطمئن شوید سیستمعامل شما به روز است. بسته به سیستم عامل، از یکی از دستورات زیر استفاده کنید:
در Ubuntu/Debian-based:
sudo apt update && sudo apt upgrade -yدر CentOS/RHEL-based:
sudo yum update -yبروزرسانی کامل سیستم باعث میشود نصب KVM با کمترین خطا و ناسازگاری انجام شود.
نصب KVM با خط فرمان (CLI)
اگر به دنبال نصب سریع، سبک و حرفهای KVM هستید، استفاده از خط فرمان (Command Line Interface) بهترین انتخاب شماست. این روش نه تنها ساده و مؤثر است، بلکه به شما کنترل کاملتری روی فرآیند نصب و پیکربندی خواهد داد. در این بخش، نحوه نصب KVM و پکیجهای مکمل آن را در سیستم عامل های محبوب لینوکسی یعنی Ubuntu و CentOS/RHEL بررسی میکنیم.
نصب KVM در Ubuntu و Debian-based
درنسخههای مانند Ubuntu یا Debian، تنها با چند دستور ساده میتوانید KVM را نصب و فعال کنید:
1. بررسی اینکه سیستم از KVM پشتیبانی میکند:
egrep -c '(vmx|svm)' /proc/cpuinfoاگر خروجی عددی بزرگتر از صفر باشد، یعنی سیستم شما برای KVM مناسب است.
2. نصب پکیج های موردنیاز:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager -yاین پکیجها شامل:
- qemu-kvm: هسته اصلی مجازیسازی
- libvirt: برای مدیریت ماشینها
- virt-manager: ابزار گرافیکی مدیریت (اختیاری ولی مفید)
- bridge-utils: برای تنظیم شبکه ماشینها
- virtinst: ابزار ساخت ماشین مجازی از طریق CLI
3. فعالسازی و شروع سرویس libvirtd:
sudo systemctl enable libvirtd
sudo systemctl start libvirtd4. افزودن کاربر به گروه libvirt:
sudo usermod -aG libvirt $(whoami)پس از اجرای این دستور، باید یکبار از سیستم خارج و دوباره وارد شوید.

نصب KVM در CentOS / RHEL
در نسخههای CentOS 7/8 و RHEL نیز مراحل نصب مشابه است ولی با استفاده از yum یا dnf انجام میشود:
1. نصب پکیجهای اصلی:
sudo yum install qemu-kvm libvirt libvirt-client virt-install bridge-utils virt-manager -yدر نسخههای جدیدتر CentOS (مانند 8 یا Stream)، بهتر است از dnf به جای yum استفاده شود.
2. فعالسازی و شروع سرویس libvirtd:
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
3. افزودن کاربر به گروه libvirt:
sudo usermod -aG libvirt $(whoami)بررسی موفقیت آمیز بودن نصب KVM:
برای اینکه مطمئن شوید همه چیز به درستی نصب شده، دستور زیر را اجرا کنید:
virsh list --allاگر خروجی بدون خطا دریافت کردید (حتی اگر لیست ماشینها خالی باشد)، یعنی KVM به درستی نصب و آماده استفاده است.
تا این مرحله، شما زیرساخت اصلی مجازیسازی را با موفقیت روی سیستم خود راهاندازی کردهاید.
نصب KVM با ابزار گرافیکی Virt-Manager
پس از نصب KVM، استفاده از ابزار Virt-Manager میتونه مدیریت ماشینهای مجازی رو بسیار راحتتر کنه. این نرمافزار با رابط گرافیکی ساده اما قدرتمند، امکاناتی مثل ساخت، ویرایش، مانیتورینگ و مدیریت VMها رو در محیطی بصری فراهم میکنه.
Virt-Manager چیست؟
Virt-Manager یا Virtual Machine Manager، یک نرمافزار متنباز برای مدیریت هایپروایزرهایی مثل KVM، QEMU و Xen هست که از طریق libvirt کار میکنه.
با Virt-Manager میتونی:
- وضعیت عملکرد ماشینها رو به صورت زنده بررسی کنی
- ماشین مجازی جدید بسازی
- منابع CPU، رم، دیسک و شبکه رو تنظیم کنی
- به کنسول VM دسترسی مستقیم داشته باشی (مثل VNC/SPICE)
نصب Virt-Manager در Ubuntu و Debian
sudo apt install virt-manager -yنصب Virt-Manager در CentOS / RHEL
در نسخههای جدیدتر CentOS/RHEL، ابتدا EPEL رو فعال کن:
sudo yum install epel-release -yسپس:
sudo yum install virt-manager -yیا در CentOS 8 و بالاتر:
sudo dnf install virt-manager -yاجرای Virt-Manager
بعد از نصب، میتونی Virt-Manager رو از منوی گرافیکی سیستم باز کنی یا مستقیماً از طریق ترمینال اجراش کنی:
virt-managerدر اجرای اولیه، اگر مشکلی در اتصال به libvirt وجود داشته باشه، معمولاً پیام خطا نمایش داده میشه که باید با بررسی سرویس libvirtd و دسترسیهای کاربر، برطرفش کنی:
sudo systemctl start libvirtdحتماً مطمئن شو که کاربر فعلی عضو گروه libvirt باشه:
sudo usermod -aG libvirt $(whoami)

ساخت اولین ماشین مجازی در Virt-Manager
- روی دکمه “Create a new virtual machine” کلیک کن.
- نوع نصب رو انتخاب کن (مثل نصب از ISO یا فایل ایمیج دیسک).
- فایل ISO سیستمعامل دلخواهت رو انتخاب کن.
- منابعی مثل رم، CPU و فضای دیسک رو مشخص کن.
- تنظیمات شبکه رو انتخاب کن (پیشفرض NAT کافیه، اما میتونی Bridged هم راهاندازی کنی).
- در نهایت، روی Finish کلیک کن تا ماشین مجازی راهاندازی بشه.
نکته: اگر از راه دور به سرور متصل هستی
برای اجرای Virt-Manager از یک کلاینت به سرور لینوکسی با KVM، میتونی از SSH X11 forwarding استفاده کنی:
ssh -X user@server_ip
virt-managerاین روش باعث میشه پنجره Virt-Manager از راه دور روی سیستم لوکال باز بشه.
با نصب Virt-Manager، دیگه نیازی به وارد کردن دستورهای پیچیده برای ساخت و مدیریت VMها نداری. فقط با چند کلیک، همهچیز در کنترل تو خواهد بود.
ساخت ماشین مجازی با virt-install (CLI)
اگر میخوای بدون رابط گرافیکی و مستقیماً از طریق ترمینال، یک ماشین مجازی با کنترل کامل روی پارامترها بسازی، ابزار virt-install دقیقاً همون چیزیه که نیاز داری. این ابزار بخشی از بستههای libvirt هست و به شما امکان میده یک ماشین مجازی رو تنها با یک دستور بسازید و اجرا کنید.
مثال عملی ساخت ماشین مجازی
در این مثال، یک ماشین مجازی با سیستمعامل Ubuntu، با 2 گیگ رم، 2 CPU و دیسک 20 گیگ ساخته میشه:
sudo virt-install \
--name ubuntu-vm \
--ram 2048 \
--vcpus=2 \
--disk path=/var/lib/libvirt/images/ubuntu-vm.qcow2,size=20 \
--os-type=linux \
--os-variant=ubuntu20.04 \
--network network=default \
--graphics vnc \
--cdrom /path/to/ubuntu.isoتوضیح کامل گزینهها:
- –name: نام ماشین مجازی
- –ram: میزان رم به مگابایت
- –vcpus: تعداد هستههای پردازنده
- –disk: مسیر و اندازه دیسک مجازی (در فرمت QCOW2 یا RAW)
- –os-type: نوع سیستمعامل (linux یا windows)
- –os-variant: نسخه سیستمعامل برای بهینهسازی تنظیمات (مثل ubuntu20.04 یا centos7)
- –network: نوع اتصال شبکه (network=default معمولاً NAT هست)
- –graphics: تعیین نوع گرافیک (VNC برای اتصال از راه دور یا none برای headless)
- –cdrom: مسیر فایل ISO نصب سیستمعامل
اگر هنوز فایل ISO رو نداری، میتونی با ابزارهایی مثل wget یا curl دانلودش کنی.
اتصال به محیط نصب از طریق VNC
بعد از اجرای دستور، ماشین مجازی شروع به کار میکنه و به صورت خودکار منتظر اتصال از طریق VNC میمونه. برای اتصال:
- آیپی سیستم سرور رو پیدا کن.
- با ابزار VNC Viewer در سیستم خودت به سرور متصل شو.
- پورت معمول VNC برای اولین VM: :0 یا پورت 5900
مثال: 192.168.1.100:0
اگر از محیط دسکتاپ استفاده نمیکنی و فقط CLI داری، بهتره از حالت graphics none و console text-based استفاده کنی. مثلاً:
--graphics none --console pty,target_type=serial
بررسی وضعیت ماشینهای مجازی:
virsh list --allاجرای VM:
virsh start ubuntu-vm
اتصال به کنسول ماشین:
virsh console ubuntu-vmبرای خروج از محیط console، کلید ترکیبی زیر رو بزن:
Ctrl + ]نکات مهم:
- محل ذخیره دیسک VM رو میتونی سفارشی کنی. اگه فضای خاصی مثل /data/kvm داری، توی –disk مشخص کن.
- برای جلوگیری از تداخل VNC، میتونی پورت خاصی برای هر VM تعریف کنی:
–graphics vnc,port=5910,listen=0.0.0.0
با virt-install میتونی دهها ماشین مجازی در یک اسکریپت خودکار بسازی، بدون نیاز به حتی یک کلیک!
تنظیم شبکه برای ماشین مجازی
انتخاب نوع اتصال شبکه (Networking Mode) در KVM نقش کلیدی در ارتباط ماشین مجازی با دنیای بیرون داره. بسته به نوع کاربرد، باید بین حالتهای NAT و Bridge یکی رو انتخاب کنیم.
حالت اول: NAT (Network Address Translation)
در حالت NAT، ماشینهای مجازی از طریق یک آدرس داخلی (Private IP) به بیرون وصل میشن و خود KVM یا libvirt نقش یک روتر یا NAT Gateway رو بازی میکنه.
مزایا:
- راهاندازی سریع و خودکار (بدون نیاز به تنظیم خاصی)
- مناسب برای تست و توسعه
- ایزوله بودن VMها از شبکه فیزیکی (امنتر)
معایب:
- VMها از بیرون مستقیماً قابل دسترسی نیستن
- مناسب محیط production نیست
فعالسازی NAT:
معمولاً بعد از نصب libvirt، حالت NAT به صورت پیشفرض با نام virbr0 ایجاد میشه. بررسی با:
ip a | grep virbr0یا:
virsh net-listحالت دوم: Bridge Networking
در حالت Bridge، ماشین مجازی مثل یه سیستم فیزیکی واقعی مستقیماً به شبکه متصل میشه و IP از DHCP شبکه واقعی میگیره.
مزایا:
- VMها مستقیماً قابل دسترسی هستن (مثل SSH، وبسرور و…)
- مناسب برای محیط production و سناریوهای واقعی
معایب:
- راهاندازی پیچیدهتر از NAT
- در برخی شبکهها (مثل وایفای لپتاپ) به راحتی پشتیبانی نمیشه
ساخت Bridge در Ubuntu
1. فایل تنظیمات Netplan رو ویرایش کن:
sudo nano /etc/netplan/01-netcfg.yaml2. نمونه تنظیمات برای Bridge:
network:
version: 2
renderer: networkd
ethernets:
enp0s3: {}
bridges:
br0:
interfaces: [enp0s3]
dhcp4: true
3. اعمال تنظیمات:
sudo netplan applyساخت Bridge در CentOS / RHEL / AlmaLinux
استفاده از nmcli یا ویرایش فایلهای زیر:
/etc/sysconfig/network-scripts/ifcfg-br0
/etc/sysconfig/network-scripts/ifcfg-eth0تنظیم فایلها به صورتی انجام میشه که کارت فیزیکی به bridge متصل بشه و خودش آدرس IP نگیره.
فعالسازی Bridge در libvirt
بعد از ساخت bridge در سیستمعامل، حالا باید به libvirt معرفی بشه:
sudo virsh net-define br0.xml
sudo virsh net-start br0
sudo virsh net-autostart br0
نمونه فایل br0.xml:
<network>
<name>br0</name>
<forward mode='bridge'/>
<bridge name='br0'/>
</network>
انتخاب حالت مناسب: تست یا Production؟
| کاربرد | پیشنهاد ما |
|---|---|
| تست و توسعه | NAT |
| سناریوهای واقعی | Bridge |
| اتصال مستقیم به اینترنت | Bridge |
| نیاز به IP از DHCP اصلی | Bridge |
| ایزولهسازی کامل ماشین | NAT |
نکات حرفهای:
✅ حتماً bridge رو روی یک کارت شبکه سیمی (Ethernet) پیادهسازی کنید
✅ در لپتاپ یا محیط وایفای، برای Bridge به مشکل برمیخورید (بهتره از NAT استفاده بشه)
✅ اگه از DHCP استفاده نمیکنید، IP استاتیک برای VMها تنظیم کنید
✅ در Cockpit یا virt-manager، به راحتی میتونید نوع اتصال شبکه ماشین رو تغییر بدید
نکات و مشکلات معمول در نصب و اجرای KVM
در طول نصب و راهاندازی KVM سوئیچ، ممکنه با خطاها یا چالشهایی مواجه بشید که بیشترشون قابل پیشگیری یا رفع هستن. در این بخش، به مهمترین مشکلات رایج و راهکارهای اونها میپردازیم.
خطاهای رایج ابزار virt-host-validate
قبل از نصب KVM، اجرای دستور زیر توصیه میشه:
sudo virt-host-validateاین ابزار بررسی میکنه که سیستم شما برای مجازیسازی مناسب هست یا نه.
خطاهای رایج:
- KVM device not found: پشتیبانی سختافزاری غیرفعاله → VT-x/AMD-V رو در BIOS فعال کن.
- QEMU: Checking for hardware virtualization: FAIL: ممکنه CPU شما از مجازیسازی پشتیبانی نکنه یا ماژول KVM بارگذاری نشده باشه.
- libvirt: no suitable hypervisor found: بستههای libvirt یا QEMU کامل نصب نشدن یا daemon فعال نیست.
حتماً بعد از فعالسازی در BIOS، سیستم رو ریستارت کن و سپس تست رو مجدد انجام بده.
مجوز کاربران و گروه libvirt
گاهی اوقات کاربر به libvirt دسترسی نداره و موقع اجرای دستوراتی مثل virsh یا virt-manager با خطا مواجه میشه.
راهحل:
اضافه کردن کاربر فعلی به گروه libvirt:
sudo usermod -aG libvirt $USERو سپس خروج و ورود مجدد یا ریاستارت سیستم.
مشکلات SELinux و فایروال
در توزیعهایی مثل CentOS، RHEL یا Fedora، SELinux بهصورت پیشفرض فعاله و ممکنه باعث محدودیت در دسترسی به فایلهای ISO یا دیسکهای ماشین بشه.
راهحلهای پیشنهادی:
- استفاده از مسیرهای مجاز (مثل /var/lib/libvirt/images)تنظیم مجوزهای SELinux:
- تنظیم مجوزهای SELinux:
sudo chcon -t svirt_image_t /path/to/your.iso- غیرفعالسازی موقت SELinux (توصیه نمیشه):
sudo setenforce 0همچنین اگر Cockpit یا VNC درست لود نمیشن، پورتهای مربوطه مثل 9090 یا 5900 تا 5999 باید در فایروال باز بشن:
sudo firewall-cmd --add-port=9090/tcp --permanent
sudo firewall-cmd --add-port=5900-5999/tcp --permanent
sudo firewall-cmd --reloadمشکلات کنسول VNC در Cockpit
Cockpit با کمک VNC یا SPICE، کنسول گرافیکی VM رو نشون میده. اما گاهی:
- صفحه سیاه نمایش داده میشه
- ارتباط قطع میشه
- VM اصلاً اجرا نمیشه
دلایل ممکن:
- عدم نصب بسته cockpit-machines
- ناسازگاری با مرورگر یا افزونههای بلاککننده
- مشکل در تنظیمات شبکه VM
بررسی کنید که بستههای زیر نصب باشن:
sudo dnf install cockpit cockpit-machinesو اطمینان حاصل کنید که libvirt و qemu در حال اجرا هستن:
sudo systemctl status libvirtdکرنلهای مدرن و پشتیبانی از IOMMU
اگر قصد دارید از GPU passthrough یا کارت شبکه فیزیکی در VM استفاده کنید، باید از ویژگی IOMMU بهره ببرید که نیازمند کرنل مدرن و فعالسازی در bootloader هست.
فعالسازی IOMMU در GRUB:
برای Intel:
intel_iommu=onبرای AMD:
amd_iommu=onنمونه ویرایش فایل:
sudo nano /etc/default/grub
اضافه کردن به خط GRUB_CMDLINE_LINUX=
سپس:
sudo update-grub # Ubuntu
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # CentOS
همچنین مطمئن باشید که VT-d در BIOS فعال باشه (برای Intel).
| مشکل | دلیل | راهحل سریع |
|---|---|---|
| KVM فعال نیست | VT-x یا AMD-V غیرفعال | فعالسازی در BIOS |
| VNC کار نمیکنه | پورتها بستهان یا Cockpit ناقصه | نصب کامل Cockpit + باز کردن پورت |
| عدم دسترسی کاربر | عضو نبودن در گروه libvirt | usermod -aG libvirt |
| SELinux محدود میکنه | فایلها در مسیر غیراستاندارد | chcon یا استفاده از /var/lib/libvirt/images |
| عدم پشتیبانی از IOMMU | کرنل قدیمی یا BIOS ناقص | فعالسازی intel_iommu یا amd_iommu |
جمعبندی و گام بعدی
تا اینجای مسیر، قدمبهقدم با هم فرایند نصب و راهاندازی KVM و کنسول مدیریتی آن روی سیستمعامل محبوب لینوکس مثل Ubuntu و CentOS رو بررسی کردیم. ابتدا با بررسی پیشنیازهای سختافزاری و نرمافزاری شروع کردیم، سپس نصب KVM در ابزارهای گرافیکی مثل Virt-Manager و در نهایت راهاندازی پنل تحتوب Cockpit رو بهطور کامل آموزش دادیم.
اکنون شما میتونید:
- قابلیت مجازیسازی سیستم رو با دستوراتی مثل lscpu بررسی و در BIOS فعال کنید
- KVM و libvirt رو از طریق CLI نصب و فعالسازی کنید
- با Virt-Manager یا Virt-Install ماشینهای مجازی جدید بسازید
- با Cockpit بهصورت گرافیکی، از داخل مرورگر تمام VMها رو مدیریت و مانیتور کنید
اما این فقط شروع ماجراست…
اگر قصد دارید از KVM در محیطهای واقعی مثل سرورهای دیتاسنتر یا حتی برای توسعه و تست در محیط لوکال استفاده کنید، پیشنهاد میکنیم در ادامه مسیر، روی این موضوعات تمرکز کنید:
گام بعدی: از راهاندازی تا بهرهبرداری حرفهای
راهاندازی شبکه بریج (Bridge Network): برای اتصال مستقیم VMها به شبکه واقعی (و دسترسی از بیرون) باید یک بریج مجازی بین VM و کارت شبکه فیزیکی بسازید.
استفاده از تصاویر ابری (Cloud-Init): در سناریوهای DevOps یا مدیریت ابری، استفاده از Cloud-Init برای خودکارسازی نصب VMها بسیار کاربردی است.
مدیریت منابع با cgroups و tuning: برای بهینهسازی عملکرد VMها و جلوگیری از مصرف بیشازحد منابع توسط هر ماشین.
تهیه Snapshot و Backup VM: استفاده از ابزارهایی مثل virsh snapshot یا بکاپگیری دورهای برای اطمینان از در دسترس بودن اطلاعات.
ادغام با ابزارهای مانیتورینگ: نصب Prometheus Node Exporter یا Zabbix Agent برای مانیتورینگ حرفهای ماشینهای مجازی و سرور میزبان.
