Deploy KVM on Oracle Linux 8

2025-10-08 unix KVM Linux

KVM 主機架構

  • pollochang-ovirt
    • hostname: pollochang-ovirt-00
    • FQDN: pollochang-ovirt-00.kvm-host.home-lab.pollo.local
    • IP: 172.30.1.20/24
    • CPU: 2 vCore
    • RAM: 8 G
    • Disk: 50 G
  • pollochang-kvm-01
    • hostname: pollochang-kvm-01
    • FQDN: pollochang-kvm-01.kvm-host.home-lab.pollo.local
    • IP: 172.30.1.3/24
  • pollochang-disk-01
    • 用途: 負責提供儲存
    • hostname: pollochang-disk-01
    • FQDN: pollochang-disk-01.kvm-host.home-lab.pollo.local
    • IP: 172.30.1.10/24

安裝前置作業

  1. 透過文件取得軟體相容性

透過下表可以得知,OLVM 當前僅支援 Oracle Linux 8,為了日後維護的方便,因此在此次實現我挑選Oracle Linux 8.10

Release Platform Compute host requirement Minimum kernel requirement
OLVM requirement
Oracle Linux 8 x86-64 OL8 Update 8 and higher UEK R7 Update 2 (5.15.0-200) and higher
UEK R6 Update 3 (5.4.17-2136) and higher
RHCK (4.18.0-477) and higher OLVM 4.5
Release Platform KVM host requirement Minimum kernel requirement
Oracle Linux 8 x86-64 OL8 Update 5 and higher UEK R7 (5.15.0-0) and higher
UEK R6 Update 3 (5.4.17-2136) and higher
RHCK (4.18.0-348) and higher
aarch64 OL8 Update 5 and higher UEK R7 (5.15.0-0) and higher
UEK R6 Update 3 (5.4.17-2136) and higher
Oracle Linux 9 x86-64 OL9 and higher UEK R8 (6.12.0-0) and higher
UEK R7 (5.15.0-0) and higher
RHCK (5.14.0-70) and higher
aarch64 OL9 and higher UEK R8 (6.12.0-0) and higher
UEK R7 (5.15.0-0) and higher

上表來自於:Hardware Certification List Oracle Linux and Oracle Virtualization

  1. 啟動之後可以下指令檢查 CPU 有支援虛擬化,如果有支援才可以安裝KVM
grep --color --perl-regexp 'vmx|svm' /proc/cpuinfo

以下為 AMD CPU 檢查結果

flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local nt_good clzero irperf xsaveerptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip rdpid overflow_recov succor smca sme sev sev_es ibpb_exit_to_user

以下為 Intel CPU 檢查結果

flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp vnmi md_clear flush_l1d
vmx flags	: vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple shadow_vmcs pml ept_mode_based_exec
  1. 檢查載入的 KVM 模組

使用下列指令檢查有載入KVM模組

lsmod |grep kvm

以下為 AMD CPU 檢查結果

$ lsmod |grep kvm
kvm_amd               180224  0
kvm                  1142784  1 kvm_amd
irqbypass              16384  1 kvm
ccp                   131072  1 kvm_amd

以下為 Intel CPU 檢查結果

$ lsmod |grep kvm
kvm_intel             393216  0
kvm                  1142784  1 kvm_intel
irqbypass              16384  1 kvm
  1. 以下為建議處理事項

請參閱: [build-template-oracle-linux-8]

  1. 額外建議安裝軟體
sudo dnf install epel-release
sudo dnf install bind-utils nc tmux tree nmon

安裝 iSCIC

安裝 KVM

1. 安裝並啟動 KVM

安裝主機: pollochang-kvm-01

sudo dnf install oraclelinux-release-el8
# sudo dnf config-manager --enable ol8_kvm_appstream
sudo dnf update
# 安裝與 Oracle Linux 虛擬化模組相關的軟體套裝程式。
sudo dnf group install "Virtualization Host"
# 安裝 virt-install 和 virt-viewer,如果規劃使用最小安裝,則可以不用安裝 GUI 介面,
sudo dnf install qemu-kvm virt-install -y
# 驗證主機機器已就緒,並設定為執行 libvirt VM
virt-host-validate

輸出範例

[oracle@ol-node01 ~]$ virt-host-validate
QEMU: Checking for hardware virtualization                                 : PASS
QEMU: Checking if device /dev/kvm exists                                   : PASS
QEMU: Checking if device /dev/kvm is accessible                            : PASS
QEMU: Checking if device /dev/vhost-net exists                             : PASS
QEMU: Checking if device /dev/net/tun exists                               : PASS
QEMU: Checking for cgroup 'cpu' controller support                         : PASS
QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
QEMU: Checking for cgroup 'memory' controller support                      : PASS
QEMU: Checking for cgroup 'devices' controller support                     : PASS
QEMU: Checking for cgroup 'blkio' controller support                       : PASS
QEMU: Checking for device assignment IOMMU support                         : WARN (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform)
QEMU: Checking for secure guest support                                    : WARN (Unknown if this platform has Secure Guest support)

啟動 libvirtd 常駐程式,並啟用該常駐程式在每次啟動時自動啟動。然後檢查其狀態以確認其已啟動並在執行中。

sudo systemctl enable --now libvirtd.service
sudo systemctl status libvirtd.service


for drv in qemu network nodedev nwfilter secret storage interface; 
do
  sudo systemctl enable virt${drv}d.service
  sudo systemctl enable virt${drv}d{,-ro,-admin}.socket;
  sudo systemctl start virt${drv}d{,-ro,-admin}.socket; 
done

sudo systemctl enable --now virtproxyd.service virtproxyd-tls.socket
sudo systemctl stop virtproxyd-tls.socket
sudo systemctl restart virtproxyd-tls.socket
sudo systemctl list-units --type=socket virt*

2. 設定 Cockpit Web 主控台來管理 Oracle Linux 上的 KVM

  1. 安裝並設定啟動
sudo dnf install cockpit cockpit-machines -y
sudo systemctl enable --now cockpit.socket
sudo systemctl status cockpit.socket
  1. 設定防火牆
sudo firewall-cmd --add-service=cockpit --permanent
sudo firewall-cmd --reload

打開瀏覽器: https://172.30.1.3:9090/

Oracle Linux Virtualization Manager

安裝

sudo yum update -y
dnf config-manager --enable ol8_baseos_latest
dnf install oracle-ovirt-release-45-el8
dnf install kernel-uek-modules-extra # running UEK R7 需要
dnf install ovirt-engine

初始化設定

engine-setup
  • /etc/ovirt-engine/engine.conf.d/99-custom-sso-setup.conf
SSO_ALTERNATE_ENGINE_FQDNS="pollochang-ovirt-00.kvm-host.home-lab.pollo.local pollochang-ovirt-00 172.30.1.20"
systemctl restart ovirt-engine

管理員帳號: admin@ovirt

遇到問題處理

  • /var/log/ovirt-engine/engine.log

參考資料