给日日的 Proxmox VE 安装、使用、维护的注意事项
安装
用 Rufus 等软件写入 U 盘并启动安装即可。
如果安装失败,可以尝试拔出不需要的设备。我在笔记本上安装时,插着鼠标接收器会失败,拔出来就好了。也可以先安装 Debian 再转换为 PVE。
网络
只支持静态 IP(v4),注意不要配错了。IPv6 支持 SLAAC。
硬盘
默认使用全部硬盘,最少使用一整块硬盘,并且要使用某块硬盘就必须全部使用,对自定义分区支持很少。分区时需要小心选择。
如果有特殊分区需求必须先安装 Debian,然后再转换。
分区时如果选择 ext4 或 XFS 格式,PVE 会创建 LVM 卷,并且将 ISO 映像、模板与虚拟机磁盘分别存储。不同卷之间要预先分配空间,导致这种方式硬盘利用率非常差。
如果想尽可能地提高磁盘利用率,有以下几种方式:
使用 ZFS:单磁盘可以选 RAID 0,这种方式应该是比较简单的,也比较稳定,但我并没有采用 ZFS,也未验证实际性能等指标如何。
使用 Btrfs:PVE 的 Btrfs 支持在 preview,可能不稳定。
手动分配 LVM 各卷的大小:“maxroot”设置为系统 + ISO + 模板预计所占空间大小,这样可以设置得比默认更合理一些,但是依然没有从本质上解决问题。
单独创建系统分区,系统分区中不存储任何映像或数据:这是我采用的方法,分区选择 Btrfs,“hdsize”设置为系统分区大小(推荐不超过 16G),安装完成后在 Web UI 将剩余空间创建一个新的 Directory Storage,采用 ext4 分区格式,然后禁用 local 存储。由于 Btrfs 本身足够稳定,不用来存储 PVE 数据应该没有问题。这样做的空间利用率比上面的方法还好一些,同时系统分区可以享受到 Btrfs 的压缩、checksum 等特性。
安装 Debian 再转换:安装 Debian 时可以随意分区,绕过 LVM 创建一个 ext4 分区即可。
ext4 的性能和可靠性并不差,也支持虚拟机快照等特性,而且 LVM 的 trim 功能有 bug,有时无法正确 trim,这也是 ext4 优于其他选择的原因。
自定义安装:先安装 Debian 再转换
https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_12_Bookworm
使用:宿主机及 PVE 设置
安装好后屏幕显示命令行,可以通过 Web UI 访问(默认 https 8006 端口),也可以 SSH。紧急情况下也可以通过命令行进行操作。
软件源
直接用清华源:https://mirrors.tuna.tsinghua.edu.cn/help/proxmox/。
防火墙
防火墙有多级,很容易设置不当,然后踩坑。
节点/宿主机级:应用于宿主机,如果设置不当会阻止你访问 PVE。我没有开。
数据中心级:若打开虚拟机防火墙,本级必须打开才会生效。
虚拟机级:控制每台虚拟机的防火墙开关。
网卡级:控制每个网卡防火墙开头。
需要注意的是,数据中心、虚拟机、网卡的防火墙同时开启后,虚拟机的防火墙才会生效。
Tailscale
如果要在 host 安装 Tailscale,启动命令应为 tailscale up --accept-dns=false,来阻止 Tailscale 修改 host 的 DNS。
见 https://tailscale.com/kb/1133/proxmox。
其他优化
zram
Host 和 guest 有一个设置即可,因为压缩数据难以再次压缩。
新建文件 /etc/modules-load.d/zram.conf,添加以下内容:
zram新建文件 /etc/udev/rules.d/99-zram.rules,把“ATTR{disksize}”设置为需要的 zram 大小:
KERNEL=="zram0", ATTR{comp_algorithm}="zstd", ATTR{disksize}="16G" RUN="/sbin/mkswap /dev/zram0", TAG+="systemd"然后添加 /etc/fstab:
/dev/zram0 none swap defaults,pri=10 0 0设置 swappiness,让系统更积极地压缩内存,添加到 /etc/sysctl.conf:
vm.swappiness=180
vm.page-cluster=0官方文档:https://pve.proxmox.com/wiki/Zram
客户机设置、模板等
Host 开机后自动启动虚拟机:在虚拟机设置里开启 Start at boot。
CPU 设置为 host 时性能最高,代价只是不能热迁移到不同 CPU 的节点而已。在不用 PVE 集群的情况下约等于没有坏处。
Linux
Linux 推荐使用各发行版的 cloud 映像制作模板,方法见 https://pve.proxmox.com/wiki/Cloud-Init_Support,注意把链接替换成最新版。
制作好模板后,每次需要创建虚拟机时,直接克隆模板,然后设置 cloud-init 数据即可,非常方便。
可选操作
除了以上操作以外,还推荐设置自定义 cloud-init 数据,见 vendor-data Ubuntu 和 vendor-data Fedora。
推荐把 SCSI Controller 改为 VirtIO SCSI single,把硬盘的 IO thread 和 Discard 勾选上。如果硬盘是 SSD,可以把 SSD emulation 也勾选上。
如果有需要的话,还可以在虚拟机选项里把 CPU 和 Memory 热插拔都开启,同时开启 CPU 的 NUMA 选项。
Windows
Windows 模板创建比较复杂,需要单独写一篇博客才能讲清。若有需要可以告诉我。