Proxmox VE PVE 9.X使用合集篇--持续更新

注意,本篇文章仅记录Proxmox VE 9.X版本日常的使用设置,低于9.0版本的可能不适用。

PVE换源

更换国内源主要是为了解决网络访问问题、提升下载速度、确保系统更新的可靠性,同时避免付费订阅的要求。

更换系统源

中科大源

# 替换 Debian 官方源和安全源为中科大源
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources
sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources

更换企业源

中科大源

# 关闭官方订阅企业源
sed -i '/Types:/a Enabled: false' /etc/apt/sources.list.d/pve-enterprise.sources
# 新增无订阅企业源为中科大源
cat > /etc/apt/sources.list.d/pve-no-subscription.sources <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

更换Ceph源

# 匹配当前Ceph版本和系统版本并更换为社区无订阅的中科大源
if [ -f /etc/apt/sources.list.d/ceph.sources ]; then
  CEPH_CODENAME=`ceph -v | grep ceph | awk '{print $(NF-1)}'`
  source /etc/os-release
  cat > /etc/apt/sources.list.d/ceph.sources <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME
Suites: $VERSION_CODENAME
Components: no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
fi

执行更新

# 更新软件包并将系统升级到最新
apt update && apt dist-upgrade -y

LXC容器更源

国内清华源

# 备份APLInfo.pm
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
# 替换为清华源:
sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
# 重启服务后生效
systemctl restart pvedaemon.service

PVE常用优化脚本

# 一键给PVE增加温度和CPU频率显示;硬盘信息;取消弹窗订阅;
(curl -Lf -o /tmp/temp.sh https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh || curl -Lf -o /tmp/temp.sh https://mirror.g hproxy.com/https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh) && chmod +x /tmp/temp.sh && /tmp/temp.sh remod

删除local-lvm将空间合并到local

删除local-lvm将空间合并到local目录池让空间最大化。

# 使用命令删除local-lvm
lvremove /dev/pve/data
# 输入y,确认,输出以下信息即成功
Do you really want to remove active logical volume pve/data? [y/n]: y
  Logical volume "data" successfully removed.
# 再将local-lvm的空间转移到pve-root
lvextend -rl +100%FREE /dev/pve/root
# 输出以下信息即合并local分区成功
Size of logical volume pve/root changed from <9.75 GiB (2495 extents) to <19.50 GiB (4991 extents).
  Logical volume pve/root successfully resized.
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mapper/pve-root is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/pve-root is now 5110784 (4k) blocks long.

删除了lvm-thin之后,还需要在Web删除local-lvm才算完成。

禁止PVE修改网卡名称

如果你有经常移除或更换PCI-E设备的需求,如增加个显卡,硬盘转接卡,网卡之类的 PCIe 设备,PVE都会自动修改网卡名,导致访问不了PVE后台,网卡灯不亮的原因。所以这里统一改成ethX来命名网卡,防止网卡名随意变动而无法访问。
使用nano命令编辑/etc/default/grubGRUB_CMDLINE_LINUX=""加入这个参数即可net.ifnames=0 biosdevname=0

# 更新GRUB
update-grub

开启硬件直通

从Proxmox VE 8.0 开始,系统在检测到CPU和芯片组支持 IOMMU 的情况下,会自动启用内核参数,用户通常无需手动在 GRUB 中添加 intel_iommu=on 参数。只需要在主板BIOS开启IO虚拟化功能就能正常直通了。英特尔为vt-d,AMD平台是iommu

Intel CPU

如你的PVE是用GRUB启动则修改/etc/default/grub ,如你的PVE是用Systemd启动则修改/etc/kernel/cmdline

GRUB启动

nano /etc/default/grub 
# 开启iommu分组,在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"项将其修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction"
# 更新grub
update-grub
# 更新后重启PVE
reboot

Systemd启动

nano /etc/kernel/cmdline
# 注释掉原来的,替换以下参数即可
root=ZFS=rpool/ROOT/pve-1 boot=zfs intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction
# 更新Systemd
proxmox-boot-tool refresh
# 更新后重启PVE
reboot

AMD CPU

如你的PVE是用GRUB启动则修改/etc/default/grub ,如你的PVE是用Systemd启动则修改/etc/kernel/cmdline

GRUB启动

nano /etc/default/grub 
# 开启iommu分组,在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"项将其修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction"
# 更新grub
update-grub
# 更新后重启PVE
reboot

Systemd启动

nano /etc/kernel/cmdline
# 注释掉原来的,替换以下参数即可
root=ZFS=rpool/ROOT/pve-1 boot=zfs amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction
# 更新Systemd
proxmox-boot-tool refresh
# 更新后重启PVE
reboot


intel_iommu=on iommu=pt: 为 Intel 平台启用 IOMMU 并设置为透传模式。
pcie_acs_override=downstream,multifunction: 绕过 PCIe 访问控制服务 (ACS) 的检查,用于解决某些硬件组无法单独直通的问题

验证是否开启直通

# 验证是否开启iommu
dmesg | grep iommu
或者
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi

出现如下例子。则代表成功

[ 1.341100] pci 0000:00:00.0: Adding to iommu group 0
[ 1.341116] pci 0000:00:01.0: Adding to iommu group 1
[ 1.341126] pci 0000:00:02.0: Adding to iommu group 2
[ 1.341137] pci 0000:00:14.0: Adding to iommu group 3
[ 1.341146] pci 0000:00:17.0: Adding to iommu group 4

此时输入命令

find /sys/kernel/iommu_groups/ -type l 
#出现很多直通组,就代表成功了。如果没有任何东西,就是没有开启

硬盘直通

Proxmox VE直通硬盘相对简单。有2种方式的实现
硬盘直通.png

RDM (裸磁盘映射)

RDM是引用于VMware的裸磁盘映射。将单个硬盘或者分区,通过qemu进行映射到虚拟机。在KVM上没有找到类似技术的名词,所以用RDM代名。通过这种方式,硬盘会在虚拟机内会认为是一个qemu-hdd。

列出磁盘ID

ls -l /dev/disk/by-id

列出的ID信息带有part的是分区,不带part是整改硬盘ID

lrwxrwxrwx 1 root root  9 Oct  5 10:57 ata-LITEON_CV5-CQ128_002709100P6R -> ../../sda
lrwxrwxrwx 1 root root 10 Oct  5 10:57 ata-LITEON_CV5-CQ128_002709100P6R-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Oct  5 10:57 ata-LITEON_CV5-CQ128_002709100P6R-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Oct  5 10:57 ata-LITEON_CV5-CQ128_002709100P6R-part3 -> ../../sda3
lrwxrwxrwx 1 root root 13 Oct  5 10:57 nvme-eui.e8238fa6bf530001001b444a48b10235 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Oct  5 10:57 nvme-eui.e8238fa6bf530001001b444a48b10235-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 13 Oct  5 10:57 nvme-WDC_WDS240G2G0C-00AJM0_22478A460803 -> ../../nvme0n1
lrwxrwxrwx 1 root root 13 Oct  5 10:57 nvme-WDC_WDS240G2G0C-00AJM0_22478A460803_1 -> ../../nvme0n1
lrwxrwxrwx 1 root root 15 Oct  5 10:57 nvme-WDC_WDS240G2G0C-00AJM0_22478A460803_1-part1 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Oct  5 10:57 nvme-WDC_WDS240G2G0C-00AJM0_22478A460803-part1 -> ../../nvme0n1p1

nvme开头的是nvme硬盘,ata开头是走sata或者ata通道的设备。,scsi是scsi设备-阵列卡raid或者是直通卡上的硬盘
可以通过qm set <vmid> --scsiX /dev/disk/by-id/xxxxxxx 进行RDM直通

qm set 100 --scsi0 /dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a48b10235

当然,你也可以使用ide或者sata形式直通硬盘,如下

qm set 100 --sata1 /dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a48b10235
qm set 100 --ide1 /dev/disk/by-id/nvme-eui.e8238fa6bf530001001b444a48b10235


1) 建议为scsi设备,这样性能理论上是最优秀的。
2) 需要注意的是,scsi会有序号,如scsi1,scsi0。在操作之前,应该要知道哪些scsi号是空的。
3) 对于pve来说,sata最多有6个设备。如果要使用sata类型直通,请勿超过sata5。

如果需要取消直通,可以使用命令qm set <vmid> --delete scsiX
如上面的例子,你应该输入

qm set 100 --delete scsi0

出现update即代表成功。可返回网页上查看。

root@pve:~# qm set 101 --delete scsi1
update VM 101: -delete scsi1

磁盘控制器直通

在DAS架构中,硬盘都是连接到硬盘控制器(Nvme除外),由硬盘控制器管理。因此直通了磁盘控制器,就会让磁盘控制器下的所有硬盘间接直通到虚拟机。通过这种方式,硬盘会在虚拟机内会认为是一个物理磁盘,具有smart属性。

配置QEMU Guest Agent

VMware平台有VMwareTools,KVM平台有qemu-guest-agent。PVE下给虚拟机安装qemu-guest-agent可解决虚拟机无法关机和内存不同步IP不显示等问题。以下是各个虚拟机平台安装qemu-guest-agent方法:
在PVE先给虚拟机开启qemu-guest-agent再安装qemu-guest-agent
qemu-guest-agent

Debian/Ubuntu

apt-get install qemu-guest-agent
systemctl enable --now qemu-guest-agent

Redhat/CentOS

yum install qemu-guest-agent
systemctl enable --now qemu-guest-agent

Arch Linux

pacman -S qemu-guest-agent
systemctl enable --now qemu-guest-agent

OpenWrt

opkg update
opkg install qemu-ga

Windows

访问网站 Virtio驱动下载页 下载 Virtio 驱动,例如 virtio-win-0.1.240.iso,上传到虚拟机。加载镜像文件后安装 virtio-win-gt-x64.msivirtio-win-guest-tools.exe,然后重启系统。
qemu-ga-x86_64.exe

群辉 Synology DSM

在套件中心添加DSM7.x矿神SPK套件源地址:https://spk7.imnks.com/ 下载QEMU Guest Agent驱动即可
QEMU Guest Agent
开启QEMU Guest Agent,且:虚拟机内存 ≥ 4GB (特别是SA6400,否则virtio-ports加载失败)

广告:PROXMOX-VE 技术支持,疑难解答,有需要可以闲鱼与我联系↓↓↓

PVE技术支持
最后修改:2025 年 08 月 28 日
如果觉得我的文章对你有用,请随意赞赏