۱. بررسی پشتیبانی سختافزار
grep -cE 'vmx|svm' /proc/cpuinfoعدد صفر یعنی مجازیسازی در BIOS خاموش است (یا سرور خودش VM است و nested فعال نیست).
۲. نصب
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 روی همان کارت.
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
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+] را بزنید.
۵. مدیریت روزمره
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) هم درست تنظیم میشود:
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