fedora虚拟化

系统要求

KVM 要求 CPU 有虚拟化扩展功能,近些年生产的很多 CPU 都具有该类扩展功能。这些扩展功能被称为 Intel VT 或 AMD-V 。使用如下命令检查您的 CPU 是否支持虚拟化:

1
egrep '^flags.*(vmx|svm)' /proc/cpuinfo 

如果没有任何输出,则说明您的系统不支持相关扩展功能。您仍然可以使用 QEMU/KVM ,但是虚拟将只能使用软件虚拟化(想当慢)。

安装虚拟化软件包

1
su -c "yum install @virtualization"

该命令将安装 qemu-kvmpython-virtinstqemuvirt-managervirt-viewer 以及所有需要的依赖软件包。

su -c “systemctl start libvirtd”

确认所有 kvm 内核模块已正常加载:

1
2
3
4
$ lsmod | grep kvm
kvm_intel 471040 0
kvm 1486848 1 kvm_intel
irqbypass 12288 1 kvm

如果该命令没有列出 kvm_intel 或 kvm_amd, 则说明 KVM 没有正常配置。确保系统正常使用 KVM 以解决问题。
例如:
重载内核module,if you know,you know.
卸载kvm模块

1
2
3
4
5
# 对于Intel处理器
sudo modprobe -r kvm_intel kvm

# 对于AMD处理器
sudo modprobe -r kvm_amd kvm

重新加载 KVM 模块

1
2
3
4
sudo modprobe kvm
sudo modprobe kvm_intel # 对于Intel处理器
# 或
sudo modprobe kvm_amd # 对于AMD处理器

如出现错误自行查看内核信息

1
2
demsg |grep -i kvm
jounalctl -k |grep -i kvm

如果需要嵌套虚拟化,载入kvm虚拟化module时可以加个参数

1
2
3
4
5
# 对于Intel处理器
sudo modprobe kvm_intel nested=1

# 对于AMD处理器
sudo modprobe kvm_amd nested=1

如果需要永久生效,用一下命令创建修改module载入的默认参数的配置文件

1
2
3
4
5
# 对于Intel处理器
echo "options kvm_intel nested=1" | sudo tee /etc/modprobe.d/kvm.conf

# 对于AMD处理器
echo "options kvm_amd nested=1" | sudo tee /etc/modprobe.d/kvm.conf

网络支持

配置默认的NAT,查看是否存在default
Libvirt 是 Linux 上管理 KVM/QEMU 等虚拟机的通用工具。为了让虚拟机能上网,它默认自带了一个基于 NAT(网络地址转换)的虚拟网络,名字就叫 “default”。能让你的虚拟机通过宿主机(运行虚拟机的电脑)的网络上网,但外界无法直接访问虚拟

1
sudo virsh net-list --all

如果不存在,使用默认的XML重载

1
2
3
4
5
6
7
8
# 1. 重新加载默认网络的XML配置文件(系统自带模板) /usr/share/libvirt/networks/default.xml
sudo virsh net-define /usr/share/libvirt/networks/default.xml

# 2. 设置为开机自动启动
sudo virsh net-autostart default

# 3. 立即启动这个虚拟网络
sudo virsh net-start default

安装创建guest

直接virt-manager图形化安装

1
su -c "virt-manager"

命令行安装

1
su -c "/usr/bin/virt-install --prompt"

虚拟机管理

启动虚拟机

例如启动我的rhel9.0

1
sudo virsh start rhel9.0

显示已运行的虚拟机

1
sudo virsh list

显示所有包括未运行的虚拟机

1
sudo virsh list --all

关闭虚拟机

1
sudo virsh shotdown rhel9.0

强制关闭虚拟机

1
sudo virsh destroy rhel9.0

将机器快照保存到文件

1
sudo virsh save rhel9.0 my-snapshot-file 

导出机器的xml配置文件输出到终端

1
virsh dumpxml rhel9.0 

拍摄管理快照

拍摄快照

1
sudo virsh snapshot-create rhel9.0

拍摄快照名为test

1
sudo virsh snapshot-create-as test rhel9.0

显示虚拟机已有快照

1
sudo virsh snapshot-list rhel9.0

删除名为test快照

1
sudo virsh snapshot-delete rhel9.0 test

恢复到指定快照

1
sudo virsh snapshot-revert rhel9.0 1757256035

查看虚拟机ip信息

1
sudo virsh domifaddr rhel9.0

console 连接虚拟机

1
sudo virsh console rhel9.0

按回车如果没反应,则系统没启用该功能,我这边就不配置了,需要的可以自行上网配置