PVE 简介

PVE 是 Proxmox Virtual Environment(Proxmox 虚拟化环境,也通常简称为 Proxmox VE)的简称,它是基于 QEMU/KVM 和 LXC 的开源服务器虚拟化管理解决方案。该项目由 Proxmox Server Solutions GmbH 开发和维护,其代码基于 GNU Affero GPLv3 授权。PVE 提供了易用的 WebUI 和 CLI 来管理虚拟机、容器、高可用性集群、存储和网络,更多介绍请看官网

PVE 安装

PVE 本身是基于 Debian 的,可以直接在 Debian 上安装 PVE 内核,也可以使用官方提供的安装镜像,详细步骤可以参考官方 Wiki
在这里主要提下磁盘配置,注意合理规划磁盘空间,尤其是小容量硬盘。

硬件直通

PCI 直通允许在 VM 内部使用物理 PCI 设备(图形卡、网卡等,仅限 KVM 虚拟化)。如果是PCI直通设备,该设备将不再可用于主机。确认 CPU 支持虚拟化,然后执行如下操作:

编辑 grub
vim /etc/default/grub

找到如下内容:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

替换为

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

或者

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

更新 grub

update-grub
新增模块
vim /etc/modules

添加如下内容

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

重启。

网卡直通

网卡直通可以通过 WebUI 操作,在此不再赘述。

硬盘直通稍麻烦点

在添加物理磁盘前,需要先确认其标识(ID)信息,然后根据此信息来确认其设备文件的路径和名称。

安装 lshw

apt install lshw

获取磁盘ID

ls -l /dev/disk/by-id

直通硬盘给 VM:

qm set 101 --sata1 /dev/disk/by-id/ata-ST2000DM001-1ER164_Z4Z1EYYK

其中101是需要直通的VM ID,sata1是硬盘顺序(磁盘编号从sata0开始),/dev/disk/by-id/ata-ST2000DM001-1ER164_Z4Z1EYYK是直通的硬盘ID。

导入 OpenWrt 固件

上传固件 将OpenWrt固件上传到PVE主机指定目录下

scp ./openwrt.img 192.168.2.100:/root/

转换固件文件的磁盘格式为qcow2

qemu-img convert -f raw -O qcow2 openwrt.img vm-101-disk-0.qcow2

其中,固件文件为openwrt.img,输入的磁盘映像文件为vm-101-disk-0.qcow2,输出文件名是为了清晰表明它是为ID为101的 VM 所使用的格式为qcow2的第一个磁盘文件。

在转换完成后,可以使用命令来检查结果是否正常

qemu-img check vm-101-disk-0.qcow2

正常的会出现No errors的提示结果

No errors were found on the image.
703/4360 = 16.12% allocated, 0.00% fragmented, 0.00% compressed clusters
Image end offset: 46399488

此外,还可以用qemu-img info命令获取更详细的信息

qemu-img info vm-101-disk-0.qcow2

正常会输出详细的信息

image: vm-101-disk-0.qcow2
file format: qcow2
virtual size: 273M (285736960 bytes)
disk size: 44M
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false

导入磁盘系统到 VM 中,此步骤通过命令qm importdisk实现

qm importdisk 101 vm-101-disk-0.qcow2 local-lvm

其中,101为VM ID,磁盘文件为vm-101-disk-0.qcow2,存储为local-lvm

命令执行后会输出下面的信息,显示磁盘卷已成功创建到 VM 中

Using default stripesize 64.00 KiB.
Rounding up size to full physical extent 276.00 MiB
For thin pool auto extension activation/thin_pool_autoextend_threshold should be below 100.
Logical volume "vm-201-disk-1" created.

这个过程中会创建一个磁盘设备,并将其加入到 VM 的硬件中成为“未使用的磁盘”,这时在/dev/pve里面可以看到新建立的磁盘设备与 VM 之间的对应关系。登录到WebUI中将导入的磁盘添加到 VM 中就完成了。

个人网络设置

net

  • Port1: 用于设置PVE,未直通
  • Port2 Port3: LAN口,直通
  • Port4: WAN口,直通

为虚拟机配置SPICE

web界面中把虚拟机的 Display 改为 SPICE

修改 /etc/pve/qemu-server/ 下虚拟机对应的配置文件

echo "args: -spice 'port=61101,addr=0.0.0.0,seamless-migration=on,disable-ticketing'" >> /etc/pve/qemu-server/101.conf

我的配置文件如下

conf

  • port=61101: 连接端口,PVE设置从61001开始
  • addr=0.0.0.0: 容许网段
  • seamless-migration=on: QMP支持
  • disable-ticketing: 无需密码验证,可使用 password=xxxx 进行密码验证
  • vga: qxl,memory=32: web界面设置的 Display 也可以从这里写入

接下来就可以使用virt-viewer进行连接,注意此处连接IP使用宿主机IP,具体使用方法见其官网