بکندباز

راه‌اندازی سرور مجازی (Virtualization) با KVM

مجازی‌سازی (Virtualization) یکی از فناوری‌های کلیدی در دنیای فناوری اطلاعات است که به سازمان‌ها و افراد اجازه می‌دهد تا از منابع سخت‌افزاری به صورت بهینه‌تر استفاده کنند. با استفاده از مجازی‌سازی، می‌توان چندین سیستم عامل و برنامه‌های مختلف را روی یک سرور فیزیکی اجرا کرد، که این امر باعث کاهش هزینه‌ها، افزایش انعطاف‌پذیری و بهبود مدیریت منابع می‌شود.

یکی از ابزارهای قدرتمند و متن‌باز برای مجازی‌سازی، KVM (Kernel-based Virtual Machine) است. KVM یک هایپروایزر (Hypervisor) مبتنی بر هسته لینوکس است که به شما امکان می‌دهد ماشین‌های مجازی (Virtual Machines) را با عملکردی نزدیک به سخت‌افزار فیزیکی ایجاد و مدیریت کنید. KVM به دلیل پشتیبانی گسترده از سیستم‌عامل‌های مختلف، انعطاف‌پذیری بالا و عملکرد عالی، یکی از محبوب‌ترین گزینه‌ها برای مجازی‌سازی در محیط‌های لینوکس است.

در این مقاله، به طور کامل مراحل راه‌اندازی سرور مجازی با استفاده از KVM را بررسی خواهیم کرد. از آماده‌سازی محیط و نصب KVM تا ایجاد و مدیریت ماشین‌های مجازی و بهینه‌سازی عملکرد آن‌ها. این مقاله برای افرادی که می‌خواهند با KVM کار کنند، چه به عنوان یک کاربر مبتدی و چه به عنوان یک مدیر سیستم حرفه‌ای، مفید خواهد بود.

آماده‌سازی محیط

قبل از شروع به راه‌اندازی سرور مجازی با KVM، باید محیط خود را به درستی آماده کنید. این مرحله شامل بررسی نیازمندی‌های سخت‌افزاری و نرم‌افزاری، فعال‌سازی مجازی‌سازی در BIOS/UEFI و نصب بسته‌های لازم است. در این بخش، به طور کامل این مراحل را بررسی خواهیم کرد.

نیازمندی‌های سخت‌افزاری

برای راه‌اندازی KVM، باید مطمئن شوید که سخت‌افزار شما از مجازی‌سازی پشتیبانی می‌کند. این نیازمندی‌ها شامل موارد زیر است:

  • پردازنده (CPU):
    • پردازنده شما باید از فناوری مجازی‌سازی سخت‌افزاری پشتیبانی کند. برای پردازنده‌های اینتل، این فناوری Intel VT-x و برای پردازنده‌های AMD، AMD-V نامیده می‌شود.
    • برای بررسی پشتیبانی CPU از مجازی‌سازی، می‌توانید از دستور زیر در ترمینال استفاده کنید:
      egrep -c '(vmx|svm)' /proc/cpuinfo
      Bash

      اگر خروجی بزرگ‌تر از صفر باشد، پردازنده شما از مجازی‌سازی پشتیبانی می‌کند.

  • حافظه رم (RAM):
    • میزان حافظه رم مورد نیاز به تعداد و نوع ماشین‌های مجازی که قصد راه‌اندازی آن‌ها را دارید بستگی دارد. به طور کلی، هر ماشین مجازی به حداقل 1 گیگابایت رم نیاز دارد، اما برای عملکرد بهتر، توصیه می‌شود از رم بیشتری استفاده کنید.
  • فضای ذخیره‌سازی (Storage):
    • فضای ذخیره‌سازی مورد نیاز نیز به تعداد و اندازه ماشین‌های مجازی بستگی دارد. برای هر ماشین مجازی، حداقل 10 گیگابایت فضای دیسک در نظر بگیرید.

نیازمندی‌های نرم‌افزاری

برای نصب و راه‌اندازی KVM، باید یک سیستم‌عامل لینوکس مناسب انتخاب کنید. برخی از توزیع‌های محبوب لینوکس که از KVM پشتیبانی می‌کنند عبارتند از:

  • Ubuntu
  • CentOS
  • Debian
  • Fedora

پس از نصب سیستم‌عامل، باید بسته‌های لازم برای KVM را نصب کنید. این بسته‌ها شامل:

  • qemu-kvm: هسته اصلی KVM که وظیفه مجازی‌سازی را بر عهده دارد.
  • libvirt: یک کتابخانه و مجموعه ابزار برای مدیریت ماشین‌های مجازی.
  • virt-manager: یک رابط گرافیکی برای مدیریت ماشین‌های مجازی.

برای نصب این بسته‌ها در توزیع‌های مبتنی بر دبیان (مانند Ubuntu)، از دستور زیر استفاده کنید:

sudo apt-get update
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
Bash

برای توزیع‌های مبتنی بر RPM (مانند CentOS)، از دستور زیر استفاده کنید:

sudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-manager
Bash

فعال‌سازی مجازی‌سازی در BIOS/UEFI

در برخی موارد، ممکن است مجازی‌سازی سخت‌افزاری به طور پیش‌فرض در BIOS/UEFI غیرفعال باشد. برای فعال‌سازی آن، مراحل زیر را دنبال کنید:

  1. سیستم خود را ری‌استارت کنید و وارد BIOS/UEFI شوید (معمولاً با فشار دادن کلید F2, F10, Delete یا Esc در هنگام بوت).
  2. به بخش تنظیمات پردازنده (CPU Settings) بروید.
  3. گزینه‌های مربوط به مجازی‌سازی سخت‌افزاری (Intel VT-x یا AMD-V) را پیدا کنید و آن‌ها را فعال کنید.
  4. تغییرات را ذخیره کرده و از BIOS/UEFI خارج شوید.

پس از انجام این مراحل، سیستم شما آماده نصب و پیکربندی KVM خواهد بود. در بخش بعدی، به بررسی مراحل نصب و پیکربندی KVM خواهیم پرداخت.

نصب و پیکربندی KVM

پس از آماده‌سازی محیط، نوبت به نصب و پیکربندی KVM می‌رسد. در این بخش، مراحل نصب KVM و ابزارهای مرتبط، پیکربندی شبکه و مدیریت ذخیره‌سازی را به طور کامل بررسی خواهیم کرد.

نصب KVM و ابزارهای مرتبط

برای نصب KVM و ابزارهای مدیریتی آن، ابتدا باید مطمئن شوید که سیستم شما به‌روز است. سپس بسته‌های لازم را نصب کنید. در ادامه، دستورات نصب برای توزیع‌های مختلف لینوکس آورده شده است.

برای توزیع‌های مبتنی بر دبیان (مانند Ubuntu):

  1. به‌روزرسانی سیستم:
    sudo apt-get update
    sudo apt-get upgrade
    Bash
  2. نصب بسته‌های KVM و ابزارهای مدیریتی:
    sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
    Bash

برای توزیع‌های مبتنی بر RPM (مانند CentOS):

  1. به‌روزرسانی سیستم:
    sudo yum update
    Bash
  2. نصب بسته‌های KVM و ابزارهای مدیریتی:
    sudo yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-manager
    Bash

پس از نصب، سرویس libvirt را راه‌اندازی و فعال کنید:

sudo systemctl start libvirtd
sudo systemctl enable libvirtd
Bash

پیکربندی شبکه در KVM

KVM از چندین نوع شبکه پشتیبانی می‌کند که دو نوع رایج آن NAT و Bridged هستند. در ادامه، نحوه پیکربندی هر یک از این شبکه‌ها را بررسی می‌کنیم.

شبکه NAT (Network Address Translation)

شبکه NAT به ماشین‌های مجازی اجازه می‌دهد تا از طریق میزبان به اینترنت دسترسی داشته باشند، اما از خارج قابل دسترسی نیستند. این نوع شبکه به طور پیش‌فرض در KVM فعال است.

  1. بررسی شبکه‌های موجود:
    virsh net-list --all
    Bash
  2. فعال‌سازی شبکه پیش‌فرض (default):
    virsh net-start default
    virsh net-autostart default
    Bash

شبکه Bridged

شبکه Bridged به ماشین‌های مجازی اجازه می‌دهد تا به طور مستقیم به شبکه فیزیکی متصل شوند و یک آدرس IP از DHCP دریافت کنند. برای پیکربندی شبکه Bridged، مراحل زیر را دنبال کنید:

  1. ایجاد یک فایل پیکربندی برای Bridge:
    sudo nano /etc/network/interfaces.d/bridge0
    Bash
  2. اضافه کردن محتوای زیر به فایل:
    auto br0
    iface br0 inet dhcp
       bridge_ports eth0
       bridge_stp off
       bridge_fd 0
       bridge_maxwait 0
    Bash
  3. راه‌اندازی مجدد شبکه:
    sudo systemctl restart networking
    Bash
  4. ایجاد یک شبکه جدید در KVM با استفاده از Bridge:
    virsh net-define /path/to/bridge.xml
    virsh net-start bridge
    virsh net-autostart bridge
    Bash

مدیریت ذخیره‌سازی (Storage Management)

KVM از چندین نوع ذخیره‌سازی پشتیبانی می‌کند، از جمله فایل‌های تصویر دیسک و LVM. در ادامه، نحوه ایجاد و مدیریت ذخیره‌سازی برای ماشین‌های مجازی را بررسی می‌کنیم.

ایجاد یک فایل تصویر دیسک

  1. ایجاد یک فایل تصویر دیسک با فرمت qcow2:
    qemu-img create -f qcow2 /var/lib/libvirt/images/vm1.qcow2 10G
    Bash
  2. بررسی فایل ایجاد شده:
    qemu-img info /var/lib/libvirt/images/vm1.qcow2
    Bash

استفاده از LVM برای ذخیره‌سازی

  1. ایجاد یک Volume Group (VG) و Logical Volume (LV):
    sudo vgcreate vg_kvm /dev/sdb
    sudo lvcreate -L 10G -n lv_vm1 vg_kvm
    Bash
  2. فرمت‌کردن Logical Volume:
    sudo mkfs.ext4 /dev/vg_kvm/lv_vm1
    Bash
  3. استفاده از Logical Volume برای ماشین مجازی:
    virt-install --name vm1 --ram 1024 --disk path=/dev/vg_kvm/lv_vm1 --vcpus 1 --os-type linux --os-variant ubuntu20.04 --network bridge=br0 --graphics none --console pty,target_type=serial
    Bash

در بخش بعدی، به بررسی مراحل ایجاد و مدیریت ماشین‌های مجازی خواهیم پرداخت.

ایجاد و مدیریت ماشین‌های مجازی

پس از نصب و پیکربندی KVM، نوبت به ایجاد و مدیریت ماشین‌های مجازی می‌رسد. در این بخش، نحوه ایجاد یک ماشین مجازی جدید، نصب سیستم‌عامل روی آن و مدیریت ماشین‌های مجازی را به طور کامل بررسی خواهیم کرد.

ایجاد یک ماشین مجازی جدید

برای ایجاد یک ماشین مجازی جدید، می‌توانید از دو روش استفاده کنید: استفاده از رابط گرافیکی virt-manager یا استفاده از دستورات CLI. در ادامه، هر دو روش را بررسی می‌کنیم.

استفاده از virt-manager (رابط گرافیکی)

  1. راه‌اندازی virt-manager:
    • در ترمینال، دستور زیر را وارد کنید تا virt-manager اجرا شود:
      virt-manager
      Bash
  2. ایجاد ماشین مجازی جدید:
    • در پنجره virt-manager، روی آیکون “Create a new virtual machine” کلیک کنید.
    • مراحل زیر را دنبال کنید:
      • انتخاب روش نصب: می‌توانید از یک ISO فایل، شبکه یا سایر روش‌ها برای نصب سیستم‌عامل استفاده کنید.
      • انتخاب سیستم‌عامل: نوع و نسخه سیستم‌عامل مورد نظر را انتخاب کنید.
      • تعیین منابع: مقدار RAM، تعداد CPU و فضای دیسک مورد نیاز را مشخص کنید.
      • پیکربندی شبکه: نوع شبکه (NAT یا Bridged) را انتخاب کنید.
      • تأیید و ایجاد: پس از بررسی تنظیمات، روی “Finish” کلیک کنید تا ماشین مجازی ایجاد شود.

استفاده از دستورات CLI

  1. ایجاد ماشین مجازی با virt-install:
    • از دستور زیر برای ایجاد یک ماشین مجازی جدید استفاده کنید:
      virt-install --name vm1 --ram 1024 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=10 --vcpus 1 --os-type linux --os-variant ubuntu20.04 --network bridge=br0 --graphics vnc --console pty,target_type=serial --cdrom /path/to/ubuntu.iso
      Bash
    • در این دستور:
      • --name: نام ماشین مجازی.
      • --ram: مقدار RAM اختصاص داده شده.
      • --disk: مسیر و اندازه دیسک مجازی.
      • --vcpus: تعداد CPU مجازی.
      • --os-type و --os-variant: نوع و نسخه سیستم‌عامل.
      • --network: نوع شبکه.
      • --graphics: تنظیمات گرافیکی (مانند VNC).
      • --cdrom: مسیر فایل ISO برای نصب سیستم‌عامل.

نصب سیستم‌عامل روی ماشین مجازی

پس از ایجاد ماشین مجازی، باید سیستم‌عامل مورد نظر را روی آن نصب کنید. این فرآیند مشابه نصب سیستم‌عامل روی یک سیستم فیزیکی است.

  1. راه‌اندازی ماشین مجازی:
    • اگر از virt-manager استفاده می‌کنید، ماشین مجازی به طور خودکار راه‌اندازی می‌شود و صفحه نصب سیستم‌عامل نمایش داده می‌شود.
    • اگر از CLI استفاده می‌کنید، ماشین مجازی با دستور زیر راه‌اندازی می‌شود:
      virsh start vm1
      Bash
  2. اتصال به کنسول ماشین مجازی:
    • برای اتصال به کنسول ماشین مجازی و مشاهده مراحل نصب، از دستور زیر استفاده کنید:
      virsh console vm1
      Bash
  3. اتمام نصب:
    • مراحل نصب سیستم‌عامل را دنبال کنید (انتخاب زبان، پارتیشن‌بندی دیسک، تنظیمات شبکه و غیره).
    • پس از اتمام نصب، ماشین مجازی به طور خودکار ری‌استارت می‌شود.

مدیریت ماشین‌های مجازی

پس از نصب سیستم‌عامل، می‌توانید ماشین‌های مجازی را مدیریت کنید. در ادامه، برخی از دستورات مفید برای مدیریت ماشین‌های مجازی آورده شده است.

راه‌اندازی و توقف ماشین‌های مجازی

  • راه‌اندازی ماشین مجازی:
    virsh start vm1
    Bash
  • توقف ماشین مجازی:
    virsh shutdown vm1
    Bash
  • ری‌استارت ماشین مجازی:
    virsh reboot vm1
    Bash

مشاهده وضعیت ماشین‌های مجازی

  • لیست ماشین‌های مجازی:
    virsh list --all
    Bash
  • مشاهده اطلاعات ماشین مجازی:
    virsh dominfo vm1
    Bash

حذف ماشین مجازی

  • حذف ماشین مجازی:
    virsh undefine vm1
    Bash
    • توجه: این دستور فقط ماشین مجازی را از لیست حذف می‌کند و فایل‌های دیسک را پاک نمی‌کند.

در بخش بعدی، به بررسی بهینه‌سازی و امنیت در KVM خواهیم پرداخت.

بهینه‌سازی و امنیت

پس از راه‌اندازی و مدیریت ماشین‌های مجازی، مهم است که عملکرد آن‌ها را بهینه‌سازی کرده و امنیت سیستم را افزایش دهید. در این بخش، به بررسی روش‌های بهینه‌سازی عملکرد ماشین‌های مجازی و افزایش امنیت در محیط KVM می‌پردازیم.

بهینه‌سازی عملکرد ماشین‌های مجازی

بهینه‌سازی عملکرد ماشین‌های مجازی به شما کمک می‌کند تا از منابع سخت‌افزاری به بهترین شکل ممکن استفاده کنید و عملکرد کلی سیستم را بهبود بخشید. در ادامه، برخی از روش‌های بهینه‌سازی را بررسی می‌کنیم.

تنظیمات CPU

  • تخصیص CPU به ماشین‌های مجازی:
    • می‌توانید تعداد هسته‌های CPU اختصاص داده شده به هر ماشین مجازی را تنظیم کنید. برای این کار، از دستور زیر استفاده کنید:
      virsh setvcpus vm1 2 --config --live
      Bash
    • در این مثال، تعداد هسته‌های CPU ماشین مجازی vm1 به ۲ افزایش یافته است.
  • پین کردن CPU (CPU Pinning):
    • پین کردن CPU به شما امکان می‌دهد که هسته‌های خاصی از CPU را به ماشین‌های مجازی اختصاص دهید. این کار می‌تواند عملکرد را بهبود بخشد و تداخل بین ماشین‌های مجازی را کاهش دهد.
    • برای پین کردن CPU، از دستور زیر استفاده کنید:
      virsh vcpupin vm1 0 1
      Bash
    • در این مثال، هسته‌ی ۱ از CPU به هسته‌ی ۰ از ماشین مجازی vm1 پین شده است.

تنظیمات حافظه (RAM)

  • تخصیص حافظه به ماشین‌های مجازی:
    • می‌توانید مقدار حافظه اختصاص داده شده به هر ماشین مجازی را تنظیم کنید. برای این کار، از دستور زیر استفاده کنید:
      virsh setmem vm1 2048 --config --live
      Bash
    • در این مثال، مقدار حافظه ماشین مجازی vm1 به ۲۰۴۸ مگابایت افزایش یافته است.
  • مدیریت حافظه پویا (Ballooning):
    • Ballooning به شما امکان می‌دهد که حافظه را به صورت پویا بین ماشین‌های مجازی تخصیص دهید. این کار می‌تواند به بهینه‌سازی استفاده از حافظه کمک کند.
    • برای فعال‌سازی Ballooning، از دستور زیر استفاده کنید:
      virsh setmem vm1 1024 --config --live --current
      Bash

تنظیمات I/O

  • بهینه‌سازی I/O:
    • می‌توانید تنظیمات I/O را برای بهبود عملکرد دیسک و شبکه بهینه‌سازی کنید. برای مثال، می‌توانید از virtio برای دیسک و شبکه استفاده کنید.
    • برای تنظیم virtio، از دستور زیر استفاده کنید:
      virsh attach-disk vm1 /var/lib/libvirt/images/vm1.qcow2 vda --driver virtio --cache none
      Bash

امنیت در KVM

افزایش امنیت در محیط KVM به شما کمک می‌کند تا از ماشین‌های مجازی و داده‌های مهم خود در برابر تهدیدات مختلف محافظت کنید. در ادامه، برخی از روش‌های افزایش امنیت را بررسی می‌کنیم.

استفاده از SELinux و AppArmor

  • SELinux (Security-Enhanced Linux):
    • SELinux یک ماژول امنیتی برای لینوکس است که دسترسی به منابع سیستم را محدود می‌کند. برای فعال‌سازی SELinux، از دستور زیر استفاده کنید:
      sudo setenforce 1
      Bash
  • AppArmor:
    • AppArmor یک سیستم امنیتی دیگر است که دسترسی به فایل‌ها و برنامه‌ها را محدود می‌کند. برای فعال‌سازی AppArmor، از دستور زیر استفاده کنید:
      sudo systemctl start apparmor
      sudo systemctl enable apparmor
      Bash

تنظیمات فایروال

  • فایروال (Firewall):
    • استفاده از فایروال برای محدود کردن دسترسی به ماشین‌های مجازی ضروری است. می‌توانید از iptables یا firewalld برای مدیریت فایروال استفاده کنید.
    • برای مثال، برای محدود کردن دسترسی به پورت ۲۲ (SSH) از دستور زیر استفاده کنید:
      sudo iptables -A INPUT -p tcp --dport 22 -j DROP
      Bash

محدود کردن دسترسی به libvirt

  • مدیریت دسترسی به libvirt:
    • می‌توانید دسترسی به libvirt را محدود کنید تا فقط کاربران مجاز بتوانند ماشین‌های مجازی را مدیریت کنند. برای این کار، از دستور زیر استفاده کنید:
      sudo usermod -a -G libvirt username
      Bash
    • در این مثال، کاربر username به گروه libvirt اضافه شده است.

رمزنگاری داده‌ها

  • رمزنگاری دیسک‌های مجازی:
    • برای افزایش امنیت داده‌ها، می‌توانید دیسک‌های مجازی را رمزنگاری کنید. برای این کار، از ابزارهایی مانند LUKS استفاده کنید.
    • برای رمزنگاری یک دیسک مجازی، از دستور زیر استفاده کنید:
      sudo cryptsetup luksFormat /dev/vg_kvm/lv_vm1
      Bash

در بخش بعدی، به بررسی عیب‌یابی و رفع مشکلات رایج در KVM خواهیم پرداخت.

نتیجه‌گیری

راه‌اندازی سرور مجازی با استفاده از KVM یک راه‌حل قدرتمند و انعطاف‌پذیر برای مجازی‌سازی در محیط‌های لینوکس است. در این مقاله، مراحل کامل راه‌اندازی سرور مجازی با KVM را بررسی کردیم، از آماده‌سازی محیط و نصب KVM تا ایجاد و مدیریت ماشین‌های مجازی، بهینه‌سازی عملکرد و افزایش امنیت.

مراحل کلی راه‌اندازی سرور مجازی با KVM:

  1. آماده‌سازی محیط:
    • بررسی نیازمندی‌های سخت‌افزاری و نرم‌افزاری.
    • فعال‌سازی مجازی‌سازی در BIOS/UEFI.
    • نصب بسته‌های لازم مانند qemu-kvm، libvirt و virt-manager.
  2. نصب و پیکربندی KVM:
    • پیکربندی شبکه (NAT و Bridged).
    • مدیریت ذخیره‌سازی (فایل‌های تصویر دیسک و LVM).
  3. ایجاد و مدیریت ماشین‌های مجازی:
    • ایجاد ماشین‌های مجازی با استفاده از virt-manager یا دستورات CLI.
    • نصب سیستم‌عامل روی ماشین‌های مجازی.
    • مدیریت ماشین‌های مجازی (راه‌اندازی، توقف، ری‌استارت و حذف).
  4. بهینه‌سازی و امنیت:
    • بهینه‌سازی عملکرد ماشین‌های مجازی (CPU، حافظه و I/O).
    • افزایش امنیت با استفاده از SELinux، AppArmor، فایروال و رمزنگاری.

فواید استفاده از KVM:

  • عملکرد بالا: KVM به دلیل ادغام با هسته لینوکس، عملکردی نزدیک به سخت‌افزار فیزیکی ارائه می‌دهد.
  • انعطاف‌پذیری: پشتیبانی از انواع سیستم‌عامل‌ها و قابلیت‌های گسترده برای مدیریت ماشین‌های مجازی.
  • هزینه‌ی کم: KVM یک ابزار متن‌باز است و نیازی به خرید لایسنس ندارد.

پیشنهادات برای مطالعه بیشتر:

  • مستندات رسمی KVM: KVM Documentation
  • آموزش‌های ویدیویی: YouTube KVM Tutorials
  • کتاب‌های مرتبط: “Mastering KVM Virtualization” توسط Packt Publishing.

با دنبال کردن این مراحل و استفاده از ابزارهای ارائه شده، می‌توانید به راحتی یک سرور مجازی با KVM راه‌اندازی کرده و از مزایای آن بهره‌مند شوید. امیدواریم این مقاله برای شما مفید بوده باشد.

backendbaz

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*