KVM(Kernel-based Virtual Machine)是一種開源的硬件虛擬化解決方案,它是 Linux 內核的一部分,允許在支持虛擬化技術的硬件(如?Intel VT-x 或 AMD-V)上運行虛擬機。
KVM 將 Linux 內核轉變為一個裸機虛擬機監控器(Hypervisor),使用戶可以運行多個隔離的虛擬機,并且每個虛擬機都可以運行自己的操作系統(如 Linux、Windows 或其他)。
1. 虛擬機基本操作
1.1 查看虛擬機列表
virsh list --all
--all:顯示所有虛擬機,包括運行中和停止的。
1.2 啟動虛擬機
virsh start <虛擬機名稱或ID>
1.3 關閉虛擬機
virsh shutdown <虛擬機名稱或ID>
這是安全關閉,等效于按下虛擬機中的電源按鈕。
1.4 強制關閉虛擬機
virsh destroy <虛擬機名稱或ID>
注意:這是強制操作,可能導致數據丟失。
1.5 重啟虛擬機
virsh reboot <虛擬機名稱或ID>
等效:shutdown + start。
1.6 掛起和恢復虛擬機
掛起虛擬機:
virsh?suspend?<虛擬機名稱>
恢復掛起的虛擬機:
virsh resume <虛擬機名稱>
1.7 刪除虛擬機
virsh undefine <虛擬機名稱>
注意:此命令僅刪除虛擬機配置,不刪除磁盤文件。
2. 虛擬機資源管理
2.1 查看虛擬機信息
virsh dominfo <虛擬機名稱>
輸出信息包括 ID、狀態、內存、CPU 等。
2.2 獲取虛擬機的 XML 配置
virsh dumpxml <虛擬機名稱>virsh dumpxml my-vm > my-vm.xml
2.3 編輯和導出虛擬機的 XML 配置
virsh edit <虛擬機名稱>#將當前安裝好的虛擬機配置文件導出
virsh dumpxml linux1 >linux1.xml
#生成新的UUID
uuidgen
#注:修改導出的xml文件,避免UUID和mac地址重復
使用系統默認編輯器打開虛擬機的 XML 文件進行編輯。
2.4 定義新虛擬機
virsh define <XML配置文件>
2.5 調整虛擬機內存
virsh setmem <虛擬機名稱> <內存大小>[K|M|G]virsh setmem my-vm 2G
2.6 調整虛擬機 CPU
virsh setvcpus <虛擬機名稱> <CPU數量> --config
--config:永久更改。
3. 存儲管理
3.1 查看存儲池
virsh pool-list --all
3.2 創建存儲池
virsh pool-create <XML配置文件>virsh pool-create pool.xml
3.3 查看存儲卷
virsh vol-list <存儲池名稱>virsh vol-list default
3.4 創建存儲卷
virsh vol-create <存儲池名稱> <XML配置文件>virsh vol-create default volume.xml
4. 網絡管理
4.1 列出網絡
virsh net-list --all
4.2 創建網絡
virsh net-create <XML配置文件>
4.3 刪除網絡
virsh net-destroy <網絡名稱>
virsh net-undefine <網絡名稱>
5. 快照管理
5.1 創建快照
virsh snapshot-create-as <虛擬機名稱> <快照名稱> --description?"<描述>"
5.2 恢復快照
virsh snapshot-revert <虛擬機名稱> <快照名稱>
5.3 其它命令
#Linux1為虛擬機名稱,laster為快照名稱
virsh snapshot-create-as linux1 laster --disk-only
#創建后查看快照
virsh snapshot-list
#恢復到指定快照
virsh snapshot-revert linux1 laster
#刪除快照
virsh snapshot-delete linux1 laster
#查看當前虛擬機快照的xml文件
virsh snapshot-current linux1
#查看當前快照詳細信息
virsh snapshot-info linux1 laster3
#列出所有快照
virsh snapshot-list linux1
5.2 恢復快照
6. 鏡像管理
6.1 創建磁盤鏡像
qemu-img create -f qcow2 <鏡像路徑> <大小>qemu-img create -f qcow2 /var/lib/libvirt/images/my-vm.qcow2 20G
6.2 查看鏡像信息
qemu-img info <鏡像路徑>
7. 虛擬機控制臺
7.2 打開虛擬機console
#進入虛擬機運行
grubby --update-kernel=ALL --args="console=ttyS0"
7.1 連接到虛擬機控制臺
virsh console <虛擬機名稱>
退出控制臺:按 Ctrl + ]。
8. 性能監控
8.1 查看實時性能
virsh domstats <虛擬機名稱>
8.2 查看虛擬機的 VCPU 信息
virsh vcpuinfo <虛擬機名稱>
8.3 查看虛擬機 I/O 信息
virsh blkstat <虛擬機名稱>
查看幫助信息
virsh?help
virsh?help?<命令>
9. 安裝虛擬機
9.1 安裝
virt-install --name linux5 \
--vcpus=1 \
--ram=1024 \
--disk path=/mnt/data/linux5.qcow2,size=20 \
--location=/mnt/data/iso/openEuler-24.03-LTS-x86_64-dvd.iso \
--network bridge=br0 \
--nographic \
-x "console=ttyS0" \
--osinfo detect=on,require=off #-x "console=ttyS0" 用于指定虛擬機啟動時使用 ttyS0(串口 0)作為控制臺。該虛擬機會通過串口輸出信息,而不是圖形界面。
#--location指定安裝程序的來源位置
#--disk path 指定虛擬機的磁盤鏡像文件及其大小
#--nographic指示虛擬機以無圖形模式(命令行模式)啟動
10. 壓縮克隆虛擬機
10.1 壓縮
#避免默認目錄存儲空間不足,這里修改默認緩存目錄
mkdir /mnt/new/data/tmp
chmod 777/mnt/new/data/tmp/ #臨時生效
export TEMP=/mnt/new/data/tmp
export TMPDIR=/mnt/new/data/tmp #寫入配置文件,使其永久生效
echo 'export TEMP=/mnt/new/data/tmp' >> /etc/profile
echo 'export TMPDIR=/mnt/new/data/tmp' >> /etc/profile
source /etc/profile #壓縮文件
#virt-sparsify --compress 源文件 壓縮后的鏡像名
virt-sparsify --compress rocky9.qcow2 rocky_ll.qcow2
10.2 克隆虛擬機
#-o 要克隆的虛擬機名 -n克隆后的虛擬機名 -f要存放的目錄
virt-clone -o linux2 -n linux5 -f /mnt/data/linux5
這些命令適用于大多數 KVM 管理場景,配合 virt-manager 等圖形化工具,可以更高效地管理 KVM 虛擬化環境。