KVM部署实列

零、 环境说明

wang@ubuntu:~/Desktop$ sudo screenfetch
./+o+- root@ubuntu
yyyyy- -yyyyyy+ OS: Ubuntu 22.04 jammy
://+//////-yyyyyyo Kernel: x86_64 Linux 5.19.0-38-generic
.++ .:/++++++/-.+sss/` Uptime: 2d 2h 14m
.:++o: /++++++++/:--:/- Packages: 2193
o:+o+:++.`..```.-/oo+++++/ Shell: sudo
.:+o:+o/. `+sssoo+/ Resolution: 1920x1080
.++/+:+oo+o:` /sssooo. WM: Mutter
/+++//+:`oo+o /::--:. WM Theme: Adwaita
\+/+o+++`o++o ++////. GTK Theme: Yaru [GTK3]
.++.o+++oo+:` /dddhhh. Disk: 31G / 234G (14%)
.+.o+oo:. `oddhhhh+ CPU: Intel Core i7-6500U @ 4x 3.1GHz [54.0°C]
\+.++o+o``-````.:ohdhhhhh+ GPU: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07)
`:o+++ `ohhhhhhhhyo++os: RAM: 2305MiB / 7831MiB
.o:`.syhhhhhhh/.oo++o`
/osyyyyyyo++ooo+++/
````` +oo+++o\:
`oo++.

一、 安装依赖

sudo apt install -y \
qemu-kvm \
virt-manager \
libvirt-daemon-system \
virtinst \
libvirt-clients \
bridge-utils
软件包 用途
qemu-kvm 提供硬件仿真的开源仿真器和虚拟化包
virt-manager 通过 libvirt 守护进程,基于 QT 的图形界面的虚拟机管理工具
libvirt-daemon-system 为运行 libvirt 进程提供必要配置文件的工具
virtinst 一套为置备和修改虚拟机提供的命令行工具
libvirt-clients 一组客户端的库和API,用于从命令行管理和控制虚拟机和管理程序
bridge-utils 一套用于创建和管理桥接设备的工具

二、 启用虚拟化守护进程(libvirtd)

sudo systemctl enable libvirtd --now
sudo systemctl status libvirtd

三、 将当前用户加入kvm和libvirt用户组

sudo usermod -aG kvm wang
sudo usermod -aG libvirt wang

四、 创建虚拟机

4.1 图形管理工具 virt-manager 创建虚拟机

图形化操作较为简单, 按照提下一步即可.
png

4.2 使用 virt-install 创建虚拟机

virt-install 支持多种方式部署虚拟机, 详细参见文档.
常见有如下几种:

  1. iso/image固件
  2. 网络安装
  3. 从虚拟磁盘导入镜像
  4. PXE
  5. Kickstart

下面选择较为简单的通过iso固件部署虚拟机

sudo virt-install \ 
--name vhost1 \
--memory 2048 \
--vcpus 2 \
--disk size=8 \
--cdrom /path/to/centos.iso \
--os-variant centos7

png

五、 常见问题

5.1 权限问题

may not be accessible by the hypervisor. You will need to grant the ‘libvirt-qemu’ user
png

解决:

  1. 确保将当前用户加入kvm和libvirt用户组
  2. 将镜像文件放置其他目录下.

六、 虚拟机共享主机网络(vhost模式)

如果希望虚拟机共享物理机的网络, 需要创建网桥来实现.
查看当前的网络情况
png

创建网桥br0 接口为 wlp9s0

#sudo vim /etc/netplan/br.yaml

network:
version: 2
renderer: networkd
ethernets:
wlp9s0:
dhcp4: false
dhcp6: false
bridges:
br0:
macaddress: aa:bb:cc:11:22:33
dhcp4: false
dhcp6: false
addresses:
- 192.168.110.157/24
routes:
- to: default
via: 192.168.110.1
metric: 100
on-link: true
nameservers:
addresses:
- 223.6.6.6
interfaces:
- wlp9s0
parameters:
stp: true
forward-delay: 4