KVM 建置 RHEL9 虛擬機筆記
這篇是在 RHEL 宿主機上用 KVM / libvirt 管理虛擬機的操作紀錄,涵蓋建立、網路除錯、資源監控到完整刪除。原始設計是為了跑 OpenShift 實驗環境,不過這些指令和觀念拿來管理任何 VM 都適用。
環境準備:ISO 與權限
KVM / libvirt 在 RHEL 上對路徑和 SELinux 非常敏感,ISO 沒放對地方就會出現 Permission denied 或 Anaconda 讀不到安裝來源。標準做法是統一放進 /var/lib/libvirt/images/:
1 | # 移至 libvirt 標準目錄 |
建立虛擬機
用 --location 搭配 --extra-args 做 Headless 安裝(不開圖形介面,走 serial console):
1 | sudo virt-install \ |
透過參數指定 DNS 目前還沒找到完美解法,這邊先用
inst.dns=8.8.8.8暫時帶過,之後再研究。
RHEL 安裝選單:SRE 視角的重點整理
Anaconda 的安裝選單項目很多,但真正值得停下來想清楚的只有幾個。
Time settings:最重要的是時區與 NTP。多台 VM 時區不統一,日誌對齊會很痛苦。建議統一設 Asia/Taipei 或 UTC,擇一就好,別混用。
Software selection:永遠優先選 Minimal Install。不裝多餘的東西,Attack Surface 小,啟動也快。
Installation Destination(磁碟分區):RHEL 預設使用 LVM,這讓你之後可以在不關機的情況下線上擴展空間,對維運很重要。實驗環境 10GB 先跑,不夠再加。
Kdump:Kernel Panic 時把記憶體狀態寫成 dump 檔,是分析「為什麼當機」的唯一線索。Lab 可以關掉省空間,生產環境必開。
Network / Hostname:安裝時就定好 Hostname,不要留預設的 localhost,之後在叢集裡要識別哪台機器會很痛。
隱藏的分流選單(Bottom Tabs)
在 virt-install console 裡,畫面下方會看到 1:main* 2:shell 3:log 4:storage-log——這是 Anaconda 內建的 tmux,可以在安裝中途切換視窗:
| Tab | 用途 |
|---|---|
1:main |
正在操作的安裝選單 |
2:shell |
互動式 Bash Shell,安裝出錯時切來這裡下 ip addr、ping 除錯 |
3:log |
核心日誌與安裝程式執行訊息 |
4:storage-log |
磁碟分割、掛載相關的底層訊息 |
切換方式:Ctrl + b 後放開再按數字(tmux 預設),或 Ctrl + Alt + a 後按數字。
網路除錯 SOP
安裝程式出現 Error checking software selection 時,大多是 VM 連不到外網、DNS 有問題、或 Host 轉發被擋。依序確認三個層面:
1. VM 內部(TTY2 Shell)
按 Ctrl + a(或 Ctrl + Alt + a)後按 2 進入 Shell:
1 | # 確認是否拿到正確 IP |
2. 宿主機層面
1 | # 開啟 IP 轉發(沒開的話封包出不去) |
3. Anaconda 設定
安裝來源:mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/(選 https)
網路設定:手動指定 DNS = 8.8.8.8,並記得勾選 [x] Apply configuration。
磁碟與資源監控
1 | # 查看 qcow2 實際佔用的物理空間 |
後續管理
1 | # 設定隨宿主機開機自動啟動 |
乾淨刪除
實驗結束要完整回收空間,兩步搞定:
1 | # 強制關機 |
--remove-all-storage 會直接物理刪除 qcow2 檔,確認要刪再跑,沒有後悔機會。