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/grub
在GRUB_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种方式的实现
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
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.msi
和virtio-win-guest-tools.exe
,然后重启系统。
群辉 Synology DSM
在套件中心添加DSM7.x矿神SPK套件源地址:https://spk7.imnks.com/ 下载QEMU Guest Agent驱动即可开启QEMU Guest Agent,且:虚拟机内存 ≥ 4GB (特别是SA6400,否则virtio-ports加载失败)