KVM虚拟机
KVM的全称是Kernel-based Virtual Machine(基于内核的虚拟机),是一种内建于Linux中的开源虚拟化技术。Linux内核 2.6.20 及更新版包含 KVM。
简介
时间轴
- 2006年,Avi Kivity 在Qumranet初创公司开始了KVM的研发工作。
- 2006年10月19日,Avi Kivity 首次公布KVM。
- 2007年2月5日,KVM被包含到Linux 2.6.20核心中。
- 2008年,红帽公司(Red Hat)收购Qumranet公司。
了解更多 >> 维基百科:基于内核的虚拟机#历史 lwn.net:KVM 十周年
安装
以Ubuntu安装为例:
# 确保你的 CPU 支持虚拟化(Intel VT-x 或 AMD-V)
# 输出大于 0 表示支持。
# 确认 BIOS/UEFI 中已启用虚拟化(通常叫 Intel VT-x / AMD-V)。
egrep -c '(vmx|svm)' /proc/cpuinfo
# 安装需要的软件包
sudo apt update # 更新软件源
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager virtinst
- qemu-kvm:提供 KVM 虚拟化后端
- libvirt-*:管理虚拟机的守护进程和工具
- virt-manager:图形化虚拟机管理器(可选但推荐)
- virtinst:命令行创建虚拟机工具(如 virt-install)
将当前用户加入相关组(避免每次用 sudo):
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
安装系统
图形化界面
- 官网下载系统镜像,如Windows 11 ISO。
- 启动 Virtual Machine Manager
- 点击左上角 “新建虚拟机”(Create a new virtual machine)
- 选择 “本地安装介质(ISO)”,点击“前进”
虚拟化管理软件
为了方便管理操作,需要安装一个图形化虚拟化管理软件。
| 名称 | 描述 | 网站 |
|---|---|---|
| virt-manager | virt-manager应用程序是一个桌面用户界面,用于通过 libvirt 管理虚拟机。不同系统安装命令:yum install virt-manager (Fedora)
apt-get install virt-manager (Debian)
emerge virt-manager (Gentoo)
pkg_add virt-manager (OpenBSD)
|
https://virt-manager.org/ |
| Multipass | Ubuntu 发行商 Canonical 推出的虚拟机管理工具。 | https://multipass.run |
| OpenStack | https://ubuntu.com/openstack/what-is-openstack |
配置桥接网路
KVM虚拟机的默认网络NAT,共享主机ip上网,对外部网络不可见。而网络桥接(bridge)可以让虚拟机(VM)像物理主机一样直接接入外部网络,从主机外访问虚拟机。 示例,主机Ubuntu创建网桥,配置虚拟机windows使用网桥:
- 主机创建网桥接口
Ubuntu24.04桌面版,使用NetworkManager管理网络,使用 NetworkManager 的命令行工具 nmcli 来直接创建和管理网桥,不用手动修改 Netplan 文件。
# 查看是否NetworkManager管理,物理网卡会显示connected。
nmcli device status
nmcli con show
# 创建网桥接口(br0)
sudo nmcli con add ifname br0 type bridge con-name br0
# 将物理接口(enp5s0)添加为网桥的从接口
sudo nmcli con add type bridge-slave ifname enp5s0 master br0
# 禁用 STP(生成树协议,以减少延迟;可选但推荐)
sudo nmcli con mod br0 bridge.stp no
# 配置网桥使用 DHCP
sudo nmcli con mod br0 ipv4.method auto ipv6.method ignore
# 关闭原物理连接(防止冲突)
sudo nmcli con down "Wired connection 2"
# 激活网桥
sudo nmcli con up br0
# 现在,运行 ip addr show 或 nmcli device show 检查:br0 应该有 IP 地址(从 DHCP 获取),enp5s0 应该显示为 br0 的从接口,无独立 IP。
方法2,修改netplan配置文件。
# 查看当前网络接口
# 假设你的主网卡是 enp3s0(有线)或 eth0
ip a
# 编辑 Netplan 配置文件
# 通常位于 /etc/netplan/,如
sudo vim /etc/netplan/01-netcfg.yaml
# 配置文件添加或修改内容为:
# 注意缩进!YAML 对格式敏感。
network:
version: 2
renderer: networkd # 或 NetworkManager,根据系统选择
ethernets:
enp0s3: # 替换为您的物理接口
dhcp4: no
bridges:
br0:
interfaces: [enp0s3] # 替换为您的物理接口
dhcp4: yes # 或手动配置:addresses: [192.168.1.100/24], gateway4: 192.168.1.1
parameters:
stp: false # 可选,关闭生成树协议以减少延迟
# 应用配置
sudo netplan generate
sudo netplan apply
# 验证
ip a show br0
方法3,创建临时网桥,测试用,重启失效。
# 使用 ip 命令临时创建网桥(名为 br0)
sudo ip link add name br0 type bridge
sudo ip link set dev br0 up
# 将物理接口添加到网桥
sudo ip addr flush dev enp0s3 # 移除物理接口上的 IP 配置
sudo ip link set dev enp0s3 master br0
sudo ip link set dev enp0s3 up
# 将原物理接口的 IP 配置转移到 br0 上。例如,如果原 IP 是 192.168.1.100/24:
sudo ip addr add 192.168.1.100/24 dev br0
sudo ip route add default via 192.168.1.1 dev br0 # 替换为您的网关
# 方案2
sudo ip link add name br0 type bridge
sudo ip link set enp3s0 master br0
sudo dhclient br0
sudo ip link set br0 up
- 配置虚拟机,使用网桥
方法1,使用virt-manager界面配置。创建或编辑虚拟机,在网络设置中选择:Source mode选Bridge,Network source选一个,Device name填br0。