kvm, libvirt 和 qemu

简介

KVM 是 Kernel base Virtual Machina 的简称.

QEMU 是 quick emulator 的简称.

Ubuntu 上使用

查看是否支持虚拟化

使用:

1
$ LC_ALL=C lscpu |grep Virtualization

若输出 Virtualization: VT-x 即可。

或:

1
$ grep -Eoc '(vmx|svm)' /proc/cpuinfo

输出大于0的数字.

查看是否支持硬件加速

1
$ sudo apt install cpu-checker

输入:

1
$ kvm-ok

若输出为:

1
KVM acceleration can be used

即表明支持。

安装

1
$ sudo apt install qemu qemu-kvm libvirt-deamon-system libvirt-client virt-manager virtinst bridge-utils

安装软件:

  • qemu-kvm, 为 KVM 管理程序提供硬件仿真
  • libvirt 管理虚拟机和其他虚拟化功能的软件集合, 其包含一个 API 库,一个守护进程 (libvirtd) 和一个命令行工具 (virsh)

使用

需把镜像文件放在 /var/lib/libvirt/images 中。

需要在 virt-manager 中添加一个叫做 network 的网络连接。

先创建一个虚拟机磁盘的镜像:

1
$ qemu-img create -f qcow2 archlinux.qcow2 40G

通过脚本创建虚拟机:

1
$ sudo virt-install --name archlinux --os-variant=archlinux --memory 4096 --vcpus 2 --disk path=./archlinux.qcow2,size=20 --cdrom=/var/lib/libvirt/images/archlinux-2022.08.05-x86_64.iso  --boot loader=/usr/share/qemu/OVMF.fd --virt-type kvm --network network=network,bridge=virbr1

部分选项说明:

  • –name, 创建虚拟机名称
  • –os-variant, 创建虚拟机类型
  • –memory, 虚拟机的内存大小
  • –vcpus, 虚拟机的 CPU 数量
  • –cdrom, 虚拟机的 CD, 可接 ISO 镜像路径
  • –disk path, 指定虚拟机硬盘路径
  • –disk path, 指定虚拟机硬盘大小,单位为 G
  • –boot, 指定启动的 BIOS, Archlinux 只支持 UEFI 启动
  • –virt-type, 选择 hypervisor, 如 kvm, qemu, xen 等
  • –network, 添加网卡

若遇到 cannot access storage file (as uid:107, gid:107) permission denied 类似的报错, 修改 /etc/libvirt/qemu.comf 文件中:

1
2
3
# user = "root"

# group = "root"

改为:

1
2
user = "root"
group = "root"

若遇到 You will need to grant the 'libvirt-qemu' user search permissions for the following directories 报错,是 libvirt-qemu 用户没有当前 qemu 文件所在位置用户的权限,将 libvirt-qemu 添加到当前的用户组即可, 即修改 /etc/group 文件。

正式安装注意

貌似必须得创建 /boot 分区。

进入虚拟机后的配置

在设置里面搜索 “Display Configuration” 可以修改分辨率。

ArchWiki 中关于 KVM 部分

ArchWiki 相关
KVM 是基于内核的虚拟机, 是内置于 Linux 内核的 hypervisor.

KVM 是 QEMU 的一种特殊的运行模式, 这种模式通过内核模块使用 CPU 扩展进行虚拟化.

需检查模块是否加载.

Virtio 准虚拟化

准虚拟化为客户机提供了一种使用主机上设备的快速有效的通信方式.

KVM 使用 Virto API 作为虚拟机管理程序和客户端之间的连接层, 为虚拟机提供虚拟化设备.

所有 Virtio 设备都包括两部分, 主机设备和客户机驱动程序.

需检查模块是否加载.

ArchWiki 中关于 QEMU 部分

Qemu 是一个广泛使用的开源计算机模拟器和虚拟机.

作为虚拟机时, QEMU 可以使用其他虚拟机管理程序 (如 Xen 或 KVM) 来使用 CPU 扩展 (HAV) 进行虚拟化. 通过主机 CPU 上直接执行客户机代码来获得接近于宿主机的性能.

安装

安装 qemu 包.

QEMU 不提供管理虚拟机的 GUI. 也不提供创建具有已保存设置的持久虚拟机的方法, 除非已创建自定义脚本以启动虚拟机, 否则必须在每次启动时在命令行上指定虚拟机的所有参数.

创建新虚拟系统

创建硬盘镜像

除非直接从 CM-ROM 或网络引导, 运行 QEMU 时都需要硬盘镜像 (一个文件, 存储虚拟机硬盘上的内容).

raw 镜像, 和客户机器上看到的内容一模一样.

qcow2 格式, 仅当客户系统实际写入内容的时候, 才会分配镜像空间.

QEMU 提供 qemu-img 命令来创建硬盘镜像.

也可以用 ddfallocate 命令来创建一个 raw 镜像.

HAV

Wiki 百科
HAV 是 Hardware-assisted virtualization 的简称.


kvm, libvirt 和 qemu
http://example.com/2022/08/25/kvm-libvirt-和-qemu/
作者
Jie
发布于
2022年8月25日
许可协议