پرش به محتوا

مجازی‌سازی KVM روی Rocky و AlmaLinux با bridge شبکه

KVM و libvirt را نصب کنید، با nmcli یک bridge بسازید تا ماشین‌ها در شبکه‌ی اصلی IP بگیرند و یک VM را با virt-install بدون محیط گرافیکی نصب کنید.

Rocky Linux 10سطح: متوسطبرای: Rocky Linux 10، AlmaLinux 10، CentOS Stream 10، Rocky Linux 9، AlmaLinux 9به‌روزرسانی: ۱۷ آبان ۱۴۰۵

۱. بررسی پشتیبانی سخت‌افزار

bash
grep -cE 'vmx|svm' /proc/cpuinfo

عدد صفر یعنی مجازی‌سازی در BIOS خاموش است (یا سرور خودش VM است و nested فعال نیست).

۲. نصب

bash
sudo dnf install -y qemu-kvm libvirt virt-install virt-viewer guestfs-tools
for d in qemu network nodedev nwfilter secret storage; do sudo systemctl enable --now virt${d}d.socket; done
sudo virt-host-validate qemu

از نسخه‌ی ۹ به بعد libvirt به‌جای یک سرویس libvirtd از سرویس‌های جدا (modular) استفاده می‌کند. حلقه‌ی بالا همین سرویس‌ها را فعال می‌کند.

۳. bridge شبکه

این مرحله اتصال شبکه را چند ثانیه قطع می‌کند. از کنسول یا iDRAC/iLO انجامش دهید، نه از SSH روی همان کارت.
bash
nmcli -t -f NAME,DEVICE con show --active    # find the current connection, e.g. "ens18"
sudo nmcli con add type bridge ifname br0 con-name br0 \
  ipv4.method manual ipv4.addresses 192.168.10.20/24 ipv4.gateway 192.168.10.1 ipv4.dns 192.168.10.5 \
  bridge.stp no
sudo nmcli con add type ethernet ifname ens18 master br0 con-name br0-port
sudo nmcli con down ens18 ; sudo nmcli con up br0
ip -br addr show br0

حالا IP سرور روی br0 است و VMها مستقیم در شبکه‌ی 192.168.10.0/24 قرار می‌گیرند.

۴. نصب VM

bash
osinfo-query os | grep -iE 'rocky|alma|debian|ubuntu' | head
sudo virt-install \
  --name web01 --memory 4096 --vcpus 2 \
  --disk size=30,format=qcow2,bus=virtio \
  --os-variant rocky9 \
  --network bridge=br0,model=virtio \
  --location https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/ \
  --graphics none \
  --extra-args 'console=ttyS0,115200n8 inst.text'

نصب در همان ترمینال انجام می‌شود. برای خروج از کنسول Ctrl+] را بزنید.

۵. مدیریت روزمره

bash
sudo virsh list --all
sudo virsh autostart web01           # start with the host
sudo virsh console web01
sudo virsh shutdown web01
sudo virsh snapshot-create-as web01 before-upgrade
sudo virsh snapshot-list web01

رابط وب هم دارید: با sudo dnf install -y cockpit-machines ماشین‌ها در Cockpit (پورت 9090) نمایش داده می‌شوند.

محل دیسک‌ها

دیسک‌ها به‌طور پیش‌فرض در /var/lib/libvirt/images ساخته می‌شوند. اگر می‌خواهید آن‌ها را روی دیسک دیگری بگذارید، یک storage pool جدید بسازید. با این کار برچسب SELinux مسیر جدید (virt_image_t) هم درست تنظیم می‌شود:

bash
sudo virsh pool-define-as vmdata dir --target /data/vms
sudo virsh pool-build vmdata && sudo virsh pool-start vmdata && sudo virsh pool-autostart vmdata
sudo semanage fcontext -a -t virt_image_t '/data/vms(/.*)?' && sudo restorecon -Rv /data/vms