17 KiB
title | description | keywords | tags | author | date | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2. KVM 安装配置 | 如何在 Linux 系统上安装和配置 KVM 虚拟化技术,包括硬件要求、操作系统选择、KVM 安装步骤、网络桥接配置、存储池和存储卷管理、虚拟机创建和管理工具的使用。 |
|
|
仲平 | 2024-07-16 |
环境准备
硬件要求
检查 CPU 是否支持虚拟化技术(Intel VT-x 或 AMD-V)
在部署 KVM 前,需要确保系统的 CPU 支持硬件虚拟化技术。这些技术包括 Intel 的 VT-x 和 AMD 的 AMD-V。以下是检查方法:
- Intel CPU:使用命令
grep -E "vmx" /proc/cpuinfo
检查 CPU 是否支持 VT-x。 - AMD CPU:使用命令
grep -E "svm" /proc/cpuinfo
检查 CPU 是否支持 AMD-V。
如果命令输出中包含 vmx
或 svm
,则表示 CPU 支持相应的虚拟化技术。
启用 BIOS/UEFI 中的虚拟化支持
**即使 CPU 支持虚拟化技术,也需要在 BIOS/UEFI 中启用相应的功能。**以下是通用的启用步骤,具体步骤可能因主板制造商不同而有所差异:
- 启动计算机并进入 BIOS/UEFI 设置界面(通常按
Delete
、F2
、F10
或Esc
键)。 - 在 BIOS/UEFI 设置中,找到“高级”或“处理器”选项。
- 启用 "Intel Virtualization Technology" 或 "AMD-V" 选项。
- 保存更改并退出 BIOS/UEFI 设置。
操作系统要求
KVM 作为 Linux 内核的一部分,主要在 Linux 操作系统上运行。以下是一些常用的、支持 KVM 的 Linux 发行版:
- CentOS:企业级发行版,基于 Red Hat Enterprise Linux (RHEL) 的源代码构建,适合服务器环境。
- RHEL:Red Hat Enterprise Linux,提供商业支持和长期维护,广泛应用于企业环境。
- Ubuntu:广泛使用的发行版,提供了良好的社区支持和文档。
安装 KVM 和 QEMU
在 Ubuntu 上安装
-
更新软件包列表:
sudo apt update
-
安装 KVM、QEMU 和相关工具:
apt -y install qemu-kvm libvirt-daemon-system libvirt-daemon virtinst libosinfo-bin
-
启用并启动 libvirtd 服务:
sudo systemctl enable --now libvirtd
在 CentOS/RHEL 上安装
-
更新系统:
sudo dnf update
-
安装 KVM、QEMU 和相关工具:
sudo dnf install qemu-kvm libvirt virt-install
-
启用并启动 libvirtd 服务:
sudo systemctl enable --now libvirtd
在其他 Linux 发行版上安装
以下是一些其他常见 Linux 发行版的安装方法:
-
Debian:
sudo apt update sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils sudo systemctl enable --now libvirtd
-
Fedora:
sudo dnf update sudo dnf install @virtualization sudo systemctl enable --now libvirtd
安装虚拟机管理工具
安装 libvirt
libvirt
是一个开源 API,用于管理平台虚拟化。前面已经在安装 KVM 和 QEMU 时安装了 libvirt
。确保其已启用并正在运行:
sudo systemctl enable --now libvirtd
安装 virt-manager
virt-manager
是一个基于 GUI 的虚拟机管理工具,适用于桌面用户。
-
在 Ubuntu 上安装:
sudo apt install virt-manager
-
在 CentOS/RHEL 上安装:
sudo dnf install virt-manager
-
在其他 Linux 发行版上安装:
-
Debian:
sudo apt install virt-manager
-
Fedora:
sudo dnf install virt-manager
-
验证安装
检查 KVM 模块是否已加载
-
检查 KVM 模块是否已加载:
lsmod | grep kvm
应该看到类似以下的输出:
kvm_intel 204800 0 kvm 655360 1 kvm_intel
-
如果使用 AMD 处理器,检查
kvm-amd
模块:lsmod | grep kvm
应该看到类似以下的输出:
kvm_amd 204800 0 kvm 655360 1 kvm_amd
确认虚拟化功能可用
-
在 Ubuntu 和 Debian 上使用
kvm-ok
工具检查虚拟化功能:sudo apt install cpu-checker sudo kvm-ok
输出应显示:
INFO: /dev/kvm exists KVM acceleration can be used
-
在 CentOS/RHEL 和其他发行版上,使用
virt-host-validate
工具检查:sudo virt-host-validate
输出应显示:
QEMU: Checking for hardware virtualization: PASS QEMU: Checking for device /dev/kvm: PASS QEMU: Checking for device /dev/vhost-net: PASS QEMU: Checking for device /dev/net/tun: PASS ……
通过以上步骤,可以确保 KVM 及其相关工具已正确安装并配置好。接下来可以开始创建和管理虚拟机,充分利用 KVM 提供的虚拟化功能。
基本配置
配置网络桥接
网络桥接允许虚拟机直接与主机网络进行通信,使其像物理机一样访问网络。以下是使用 nmcli
创建和配置虚拟网络桥接的详细步骤:
创建虚拟网络桥接(桥接模式)
-
安装必要的软件包:
-
在 Ubuntu 上:
sudo apt update sudo apt install network-manager
-
在 CentOS/RHEL 上:
sudo dnf install NetworkManager
-
-
配置网络桥接:
-
创建一个新的网桥接口:
sudo nmcli connection add type bridge ifname br0
-
将物理接口连接到网桥上,例如假设你正在使用
eth0
接口:sudo nmcli connection add type bridge-slave ifname eth0 master br0
-
建议禁用网桥接口 IPv4 和 IPv6,网桥接口仅作为二层设备使用:
sudo nmcli connection modify br0 ipv4.method disable sudo nmcli connection modify br0 ipv6.method disable
-
激活网桥和物理接口:
sudo nmcli connection up br0 sudo nmcli connection up eth0
-
验证桥接配置
-
检查网桥接口状态:
nmcli connection show nmcli device status
应该看到类似以下的输出,表示网桥
br0
和物理接口eth0
已经配置并启用:NAME UUID TYPE DEVICE br0 12345678-1234-1234-1234-123456789abc bridge br0 eth0 87654321-4321-4321-4321-abcdefabcdef ethernet eth0
配置 Libvirt 使用桥接网络
-
编辑或创建网络配置文件:例如
/etc/libvirt/qemu/networks/bridged.xml
:<network> <name>bridged</name> <forward mode='bridge'/> <bridge name='br0'/> </network>
-
定义并启动该网络:
sudo virsh net-define /etc/libvirt/qemu/networks/bridged.xml sudo virsh net-start bridged sudo virsh net-autostart bridged
通过这些步骤,您可以在 Ubuntu 和 CentOS 系列系统中使用 nmcli
来统一配置和管理网络桥接。这确保了配置的一致性,并简化了网络管理。
配置存储池和存储卷
存储池和存储卷管理是 KVM 中虚拟机存储管理的重要组成部分。存储池可以是目录、LVM 或 NFS 等类型,存储卷则是具体的磁盘映像文件。
创建存储池
-
目录类型存储池:
-
创建目录:
sudo mkdir -p /var/lib/libvirt/images
-
定义存储池:
sudo virsh pool-define-as --name default --type dir --target /var/lib/libvirt/images
-
启动并自动启动存储池:
sudo virsh pool-start default sudo virsh pool-autostart default
-
-
LVM 类型存储池:
-
创建物理卷和卷组:
sudo pvcreate /dev/sdX sudo vgcreate vg_kvm /dev/sdX
-
定义存储池:
sudo virsh pool-define-as --name lvm-pool --type logical --source-name vg_kvm
-
启动并自动启动存储池:
sudo virsh pool-start lvm-pool sudo virsh pool-autostart lvm-pool
-
-
NFS 类型存储池:
-
安装 NFS 客户端:
-
在 Ubuntu 上:
sudo apt install nfs-common
-
在 CentOS/RHEL 上:
sudo dnf install nfs-utils
-
-
定义存储池:
sudo virsh pool-define-as nfs-pool netfs --source-host nfs-server --source-path /path/to/nfs/export --target /mnt/nfs
-
启动并自动启动存储池:
sudo virsh pool-start nfs-pool sudo virsh pool-autostart nfs-pool
-
管理存储卷
-
创建存储卷:
-
在默认存储池中创建一个新的存储卷:
sudo virsh vol-create-as default new-volume 10G
-
在 LVM 存储池中创建一个新的逻辑卷:
sudo virsh vol-create-as lvm-pool lv_new-volume 10G
-
-
查看存储卷:
sudo virsh vol-list default sudo virsh vol-list lvm-pool
-
删除存储卷:
sudo virsh vol-delete new-volume --pool default
通过以上配置步骤,可以成功配置 KVM 的网络桥接、存储池和存储卷,确保虚拟机具备网络连接和存储资源。
创建和管理虚拟机
使用命令行工具创建虚拟机
使用 virt-install
创建虚拟机
virt-install
是一个命令行工具,用于创建虚拟机。它支持多种参数,可以灵活配置虚拟机的各种选项。
-
创建基本虚拟机:
sudo virt-install \ --name myvm \ --ram 2048 \ --disk path=/var/lib/libvirt/images/myvm.qcow2,size=20 \ --vcpus 2 \ --os-type linux \ --os-variant ubuntu20.04 \ --network bridge=br0 \ --graphics vnc \ --cdrom /path/to/ubuntu-20.04.iso
以上命令创建了一个名为
myvm
的虚拟机,分配 2 GB 内存、20 GB 磁盘空间和 2 个虚拟 CPU,使用桥接网络,并通过 VNC 访问图形界面。 -
其他常用选项:
在使用
virt-install
创建和安装虚拟机时,以下是一些常用的选项及其功能,列在一个表格中以便参考:选项 功能 --name
虚拟机的名称 --memory
分配给虚拟机的内存大小(单位:MB) --vcpus
分配给虚拟机的虚拟 CPU 数量 --disk
定义虚拟机的磁盘配置 --cdrom
使用 CD-ROM 镜像文件作为安装源 --location
网络安装源的位置(URL 或本地路径) --os-type
指定操作系统类型(如 linux
、windows
)--os-variant
指定操作系统版本 --graphics
配置图形显示方式 --network
配置虚拟机的网络接口 --extra-args
向内核传递额外的启动参数 --boot
配置引导设备和引导顺序 --console
配置控制台类型 --import
从现有磁盘映像文件导入虚拟机 --autostart
安装后自动启动虚拟机 --cpu
配置 CPU 相关选项 --check
启用或禁用安装前的配置检查 --virt-type
指定虚拟化类型(如 kvm
、xen
)--initrd-inject
指定需要注入到 initrd 的文件 --metadata
定义虚拟机的元数据 --noautoconsole
安装后不自动连接到控制台 --wait
等待安装完成的时间(单位:分钟)
使用 virsh
管理虚拟机
virsh
是一个强大的命令行工具,用于管理和控制虚拟机。以下是一些常用的命令及其功能,列在一个表格中以便参考:
命令 | 功能 |
---|---|
virsh list |
列出当前运行的虚拟机 |
virsh list --all |
列出所有虚拟机,包括停止的 |
virsh start <vm_name> |
启动指定的虚拟机 |
virsh shutdown <vm_name> |
关闭指定的虚拟机 |
virsh reboot <vm_name> |
重启指定的虚拟机 |
virsh destroy <vm_name> |
强制关闭指定的虚拟机 |
virsh suspend <vm_name> |
暂停指定的虚拟机 |
virsh resume <vm_name> |
恢复暂停的虚拟机 |
virsh create <xml_file> |
从 XML 配置文件创建并启动虚拟机 |
virsh define <xml_file> |
定义但不启动虚拟机 |
virsh undefine <vm_name> |
删除虚拟机定义,但不删除磁盘文件 |
virsh edit <vm_name> |
编辑虚拟机的 XML 配置 |
virsh dumpxml <vm_name> |
输出指定虚拟机的 XML 配置 |
virsh attach-disk <vm_name> <disk_path> <target_dev> |
附加磁盘到虚拟机 |
virsh detach-disk <vm_name> <target_dev> |
从虚拟机分离磁盘 |
virsh attach-interface <vm_name> <type> <source> |
附加网络接口到虚拟机 |
virsh detach-interface <vm_name> <type> <mac> |
从虚拟机分离网络接口 |
virsh snapshot-create-as <vm_name> <snapshot_name> |
创建虚拟机快照 |
virsh snapshot-list <vm_name> |
列出虚拟机的所有快照 |
virsh snapshot-revert <vm_name> <snapshot_name> |
恢复到指定快照 |
virsh migrate <vm_name> <dest_uri> |
迁移虚拟机到另一个主机 |
virsh console <vm_name> |
连接到虚拟机的控制台 |
virsh dominfo <vm_name> |
显示虚拟机的详细信息 |
virsh domstats <vm_name> |
显示虚拟机的统计信息 |
使用图形化工具创建虚拟机
安装和使用 virt-manager
virt-manager
是一个基于图形界面的虚拟机管理工具,适合那些更喜欢图形界面操作的用户。
-
安装
virt-manager
:-
在 Ubuntu 上:
sudo apt install virt-manager
-
在 CentOS/RHEL 上:
sudo dnf install virt-manager
-
-
启动
virt-manager
:virt-manager
通过 virt-manager
创建和配置虚拟机
- 创建新虚拟机:
- 打开
virt-manager
,点击左上角的“创建新虚拟机”按钮。 - 选择安装来源(例如,ISO 映像或 PXE 网络引导),然后点击“转到下一步”。
- 设置虚拟机名称、内存和 CPU 配置,然后点击“转到下一步”。
- 配置虚拟机硬盘(例如,创建新磁盘映像或导入现有磁盘),然后点击“转到下一步”。
- 选择网络配置(例如,使用桥接网络),然后点击“转到下一步”。
- 检查配置并点击“完成”以创建虚拟机。
- 打开
- 配置虚拟机:
- 右键点击已创建的虚拟机,选择“打开”以启动虚拟机。
- 在虚拟机启动后,可以通过 VNC 或 SPICE 连接访问虚拟机的图形界面。
- 可以通过“虚拟机”菜单下的“编辑”选项修改虚拟机配置,如增加内存、添加硬盘或修改网络设置。
通过上述方法,可以使用命令行工具和图形化工具创建和管理 KVM 虚拟机。无论是命令行操作还是图形界面,都提供了丰富的选项和灵活的配置,使得 KVM 虚拟机的管理变得简单高效。