最近服务器原系统down掉了,之前对比过esxi、Hyper-v server、Proxmox VE,正好借此机会安装一次PVE。

Proxmox VE

Proxmox Virtual Environment是一种基于QEMU/KVM和LXC的开源服务器虚拟化管理解决方案。可以使用集成的、易于使用的 Web 界面或通过 CLI 管理虚拟机、容器、高可用性集群、存储和网络。

PVE有完善的开源社区,同时有内容丰富的
Proxmox VE Wiki

下载&安装

下载链接 https://www.proxmox.com/en/downloads

安装可以把PVE的ISO写U盘做启动盘,或使用Ventoy。安装过程与Debian差不太多。

配置静态IP

显卡直通

因为服务器端有跑ML的需求,vGPU的方案性能存在损耗,所以需要配置显卡直通。服务器那边GPU是张2080的卡。

GPU也属于PCI设备,所以主要参照的方法来自于官方WIKI,另外有踩坑可以参照前人blog。

这里有一点要注意,要提前配置静态IP,如果显卡直通后物理机不能使用显卡,会无法操作物理机。

PCI 设备直通 - Wiki

启用IOMMU

在BIOS中开启VT-d

进入PVE后在grub中做如下修改

1
2
- GRUB_CMDLINE_LINUX_DEFAULT="quiet"
+ GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream video=efifb:off"

参数含义如下:

  • intel_iommu=on:开启 IOMMU,对于 AMD CPU 需要使用 amd_iommu=on
  • iommu=pt:pt 是 passthrough 的缩写,可以提高性能
  • pcie_acs_override=downstream: 可以将同一 Group 中的设备分开直通
  • video=efifb:off:禁用 efifb 驱动,防止出现报错 BAR 3: cannot reserve [mem]

保存grub修改

1
update-grub

重启后,输入dmesg | grep -e DMAR -e IOMMU来查看是否成功,如果成功会提示DMAR: IOMMU enabled

添加内核模块

在/etc/modules中添加

1
2
3
4
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

IOMMU Interrupt Remapping

输入dmesg | grep 'remapping'来查看是否支持Interrupt Remapping,如果提示如下:

  • “AMD-Vi: Interrupt remapping enabled”
  • “DMAR-IR: Enabled IRQ remapping in x2apic mode”

则支持,如果不支持输入如下命令

1
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf

GPU直通

首先,找到vga卡的设备和供应商ID:

1
lspci -nn

类似

1
2
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)

10de:0fc6,10de:0e1b即为ID

然后,创建一个文件:

1
echo "options vfio-pci ids=10de:1381,10de:0fbc" > /etc/modprobe.d/vfio.conf

将驱动程序列入黑名单:

1
2
3
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf

重新启动计算机。