软件开发 --- KVM之初体验
KVM(Kernel-based Virtual Machine)是 Linux 内核中的一个虚拟化模块,它允许操作系统运行在虚拟机中。KVM 通过硬件虚拟化扩展(如 Intel VT-x 或 AMD-V)为虚拟机提供高性能的虚拟化支持。KVM 被广泛用于构建虚拟化平台,管理虚拟机,以及支持容器和云平台。
以下是 KVM 的基本使用示例,涵盖了从安装、配置到创建虚拟机的全过程。
1. 安装 KVM
首先,确保你的系统支持硬件虚拟化,可以使用以下命令检查:
egrep -c '(vmx|svm)' /proc/cpuinfo
如果返回数字大于 0,则表示支持硬件虚拟化。
1.1 在 Ubuntu 上安装 KVM
# 更新系统
sudo apt update
# 安装 KVM 和其他必需的工具
sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager
# 检查 KVM 模块是否加载
lsmod | grep kvm
安装完成后,可以通过 virt-manager
工具管理虚拟机。
1.2 在 CentOS 上安装 KVM
# 安装 KVM 和相关工具
sudo yum install qemu-kvm libvirt virt-install bridge-utils
# 启动 libvirt 服务
sudo systemctl start libvirtd
sudo systemctl enable libvirtd
2. 创建虚拟机
创建虚拟机可以通过 virt-install
命令来完成,也可以使用 virt-manager
图形化工具来进行操作。我们先来看使用命令行的方式创建虚拟机。
2.1 使用 virt-install
创建虚拟机
下面是一个使用 virt-install
命令创建虚拟机的示例:
virt-install \
--name myvm \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/myvm.img,size=20 \
--cdrom /path/to/your/iso/file.iso \
--network bridge=br0 \
--graphics vnc \
--os-type linux \
--os-variant ubuntu20.04
解释:
--name myvm
:虚拟机的名称为myvm
。--ram 2048
:分配给虚拟机的内存为 2048MB。--vcpus 2
:虚拟机分配 2 个虚拟 CPU。--disk path=/var/lib/libvirt/images/myvm.img,size=20
:指定虚拟机磁盘路径和大小(20GB)。--cdrom /path/to/your/iso/file.iso
:指定 ISO 文件路径,用于安装操作系统。--network bridge=br0
:配置虚拟机使用网桥(br0)进行网络连接。--graphics vnc
:启用 VNC 图形界面,以便远程访问虚拟机。--os-type linux --os-variant ubuntu20.04
:指定虚拟机操作系统类型和版本。
2.2 启动虚拟机
虚拟机创建完成后,可以使用以下命令启动虚拟机:
sudo virsh start myvm
2.3 查看虚拟机列表
使用 virsh list
可以查看当前运行的虚拟机:
sudo virsh list --all
3. 管理虚拟机
3.1 连接到虚拟机
虚拟机启动后,可以通过 VNC 连接到虚拟机的图形界面,或者使用 virsh
命令行工具进行管理。
使用 virsh console
命令连接到虚拟机的控制台:
sudo virsh console myvm
3.2 停止虚拟机
sudo virsh shutdown myvm
如果虚拟机无法正常关闭,可以强制关闭:
sudo virsh destroy myvm
3.3 删除虚拟机
如果你不再需要某个虚拟机,可以使用 virsh undefine
命令删除虚拟机配置:
sudo virsh undefine myvm
同时,如果需要删除虚拟机的磁盘文件,可以手动删除对应的文件:
sudo rm /var/lib/libvirt/images/myvm.img
4. 网络配置
KVM 支持几种虚拟网络配置,最常见的是 NAT 和 桥接模式。
4.1 桥接模式(Bridge Mode)
桥接模式可以让虚拟机直接连接到物理网络,这通常用于需要虚拟机与外部设备通信的场景。在 virt-install
命令中,我们通过 --network bridge=br0
来指定网络桥接模式,br0
是物理网络接口的名称。
4.2 NAT 模式
如果你不想配置网络桥接,可以使用 NAT 模式。KVM 会为虚拟机提供虚拟化的网络,并通过主机的 IP 地址与外部网络通信。
5. 使用图形界面管理虚拟机
如果你更喜欢图形界面,可以使用 Virt-Manager。它是一个用于管理 KVM 虚拟机的图形化工具,适用于那些不想通过命令行操作的用户。
5.1 启动 Virt-Manager
在终端输入以下命令启动 Virt-Manager:
virt-manager
通过该界面,你可以:
- 查看所有虚拟机的状态
- 创建、启动、停止、删除虚拟机
- 配置虚拟机的硬件和网络
- 远程连接到虚拟机的控制台
6. KVM 常见命令总结
virsh list
:列出所有运行中的虚拟机。virsh start <vm_name>
:启动虚拟机。virsh shutdown <vm_name>
:优雅关机虚拟机。virsh destroy <vm_name>
:强制停止虚拟机。virsh undefine <vm_name>
:删除虚拟机配置。virsh console <vm_name>
:连接虚拟机控制台。
总结
- 安装 KVM:通过包管理工具安装 KVM 和相关工具。
- 创建虚拟机:通过命令行工具
virt-install
创建虚拟机,或使用图形界面virt-manager
进行管理。 - 管理虚拟机:通过
virsh
工具控制虚拟机的启动、停止、删除等操作。 - 网络配置:可以选择桥接模式或 NAT 模式来配置虚拟机网络。
- 图形化管理:使用
virt-manager
提供的图形界面来管理虚拟机。
KVM 提供了一个高效、可扩展的虚拟化解决方案,非常适合用于构建虚拟化平台或云环境,尤其是在 Linux 系统中。