跳过正文
  1. 全部文章/

Proxmox VE 9.1 虚拟化测试机搭建指南:从裸机到可用的完整记录

目录

基于 Intel i5-12500 + H610 主板 + 2TB NVMe 平台,搭建一台兼顾虚拟化测试与日常开发的机器。本文记录了完整的配置过程,包括踩过的坑和最终的解决方案。

需求与方案选择
#

目标很明确:一台机器同时满足两个用途——跑虚拟机做测试,以及通过远程桌面进行日常开发。

这就引出了一个前置问题:是先装 Proxmox 再加桌面,还是先装 Ubuntu 再加虚拟化?

最终选择:Proxmox VE + XFCE 桌面。 理由如下:

  • Proxmox 底层就是 Debian,加装桌面环境是常规操作
  • 虚拟化(KVM/LXC)作为一等公民,性能和功能完整
  • Web 管理界面(端口 8006)开箱即用
  • 反过来在 Ubuntu 上装 Proxmox,官方不支持,依赖冲突频发

确定方案后,规划一下整体的磁盘分配。Proxmox 默认把大部分空间给了 LVM-thin pool(虚拟机存储),根分区只有约 96GB。既然要兼顾日常开发,需要重新规划:

用途大小挂载点/说明
系统根分区200GB/
数据分区300GB/data
虚拟机存储~1.37TBLVM-thin pool
Swap8GBswap

基础配置:APT 源
#

装完 Proxmox VE 9.1 后,第一件事是 apt update,然后就会看到熟悉的 401 Unauthorized——企业订阅源没有许可证。

PVE 9 基于 Debian Trixie,源文件格式从传统的 .list 变成了 deb822 格式的 .sources。先看看有哪些源文件:

1
2
ls /etc/apt/sources.list.d/
# ceph.sources  debian.sources  pve-enterprise.sources

禁用企业源
#

查看源文件内容会发现,默认没有 Enabled 字段,需要手动添加:

1
2
sed -i '/^Components: pve-enterprise/a Enabled: no' /etc/apt/sources.list.d/pve-enterprise.sources
sed -i '/^Components: enterprise/a Enabled: no' /etc/apt/sources.list.d/ceph.sources

添加社区无订阅源
#

1
2
3
4
5
6
7
8
cat > /etc/apt/sources.list.d/pve-no-subscription.sources <<EOF
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
Enabled: yes
EOF

验证:

1
apt update

没有 401 错误即可继续。

磁盘分区调整
#

源配置好后,趁系统还是干净状态,先把分区调整到位。

关键限制:LVM-thin pool 不能直接缩减
#

直觉上会想用 lvreduce 缩小 thin pool,但实际执行会报错:

1
Thin pool volumes pve/data_tdata cannot be reduced in size yet.

正确的做法是:确认 thin pool 为空(Data% 为 0.00),删掉后重建。

完整操作
#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 确认 thin pool 中没有数据
lvs -a pve/data
# Data% 应为 0.00

# 删除空的 thin pool
lvremove pve/data -y

# 扩容根分区
lvextend -L 200G pve/root
resize2fs /dev/pve/root

# 创建数据分区
lvcreate -L 300G -n store pve
mkfs.ext4 /dev/pve/store
mkdir -p /data
echo '/dev/pve/store /data ext4 defaults 0 2' >> /etc/fstab
mount -a

# 用剩余空间重建 thin pool
lvcreate -l 100%FREE -T pve/data

验证:

1
2
df -h / /data
lvs

重建后 Proxmox Web UI 中的 local-lvm 存储会自动恢复。

虚拟化能力验证
#

分区就绪后,确认一下硬件虚拟化支持是否正常:

1
2
3
4
5
6
7
# VT-x 支持
egrep -c '(vmx|svm)' /proc/cpuinfo
# 输出 12(i5-12500 为 6 核 12 线程),说明每个逻辑 CPU 都支持 VT-x

# IOMMU / 设备直通
dmesg | grep -i iommu
# 能看到各 PCI 设备被分配到 iommu group,说明直通可用

i5-12500 + H610 平台验证结果:VT-x 正常,IOMMU 正常启用,支持 PCI 设备直通。确保 BIOS 中 VT-x 和 VT-d 已开启。

关于 12 代核显直通
#

UHD 770 理论上支持直通,但有明显限制:

  • GVT-d(整卡直通):可用,但宿主机会失去显示输出
  • GVT-g(核显拆分/虚拟化):12 代起 Intel 官方不再支持
  • SR-IOV:社区有 i915-sriov-dkms 补丁方案,可实现核显拆分,但稳定性一般

实际建议:如果虚拟机不需要 GPU 加速,VirtIO 显卡 + SPICE 协议完全够用。需要认真做 GPU 直通的话,买张独显(GT730 亮机卡或二手 Tesla P4)更省心。

桌面环境:XFCE + RDP 远程
#

虚拟化层没问题了,接下来搭建日常使用的桌面环境。

安装
#

1
apt install xfce4 xfce4-goodies xrdp dbus-x11 -y

踩坑记录:如果不装 dbus-x11,RDP 登录后会弹出 “Unable to contact settings server - Failed to execute child process dbus-launch” 错误。这个包容易遗漏,必须一起装。

配置 XRDP 使用 XFCE
#

1
2
3
4
echo "xfce4-session" > /root/.xsession
chmod +x /root/.xsession
systemctl enable xrdp
systemctl restart xrdp

确认 3389 端口已监听:

1
ss -tlnp | grep 3389

之后用 Windows 远程桌面或任何 RDP 客户端连接即可。

基础工具链
#

桌面可用后,把日常开发和运维需要的工具装齐:

1
2
# 基础工具
apt install -y curl wget git vim htop fastfetch unzip zip net-tools build-essential tmux

Debian Trixie 注意neofetch 已停更并从仓库移除,替代品为 fastfetchsoftware-properties-common 在 Trixie 中已不再需要,直接安装会报 “Unable to locate package”。

Docker 安装与共存配置
#

安装
#

1
2
apt install -y docker.io docker-compose
systemctl enable docker

Docker 与 Proxmox 共存的注意事项
#

两者运行在同一台宿主机上,有两个需要注意的点。

iptables 规则冲突
#

Docker 安装后会将 FORWARD 链的默认策略设为全局 DROP,所有未被前置规则匹配的转发流量都会被丢弃。

Proxmox 默认的桥接模式下,虚拟机流量走的是二层桥接(MAC 转发),不经过 iptables 的 FORWARD 链,所以大多数场景下不受影响。但有两种情况会踩坑:

  • 内核参数 net.bridge.bridge-nf-call-iptables 为 1(某些内核默认开启),此时桥接流量也会过 iptables,FORWARD DROP 就会拦截 vmbr0 的流量
  • 虚拟机使用 NAT 模式而非桥接

对应的解决方案:

  • 第一种情况:sysctl -w net.bridge.bridge-nf-call-iptables=0
  • NAT 端口转发场景:建议使用 realm 等用户态端口转发工具,绕开 iptables 规则冲突

网段冲突
#

Docker 默认使用 172.17.0.0/16,可能与 Proxmox 虚拟机网络的常用网段撞车。

推荐配置
#

在保留二者完整功能的前提下,将 Docker 网段迁移到不常用的私有地址段,同时限制日志大小并启用 live-restore:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
cat > /etc/docker/daemon.json <<EOF
{
  "bip": "10.255.0.1/24",
  "default-address-pools": [
    {"base": "10.255.0.0/16", "size": 24}
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "live-restore": true
}
EOF

systemctl restart docker

配置说明:

  • 网段 10.255.0.0/16:属于 10.0.0.0/8 私有地址段(RFC 1918),位于 10 段尾部,日常几乎无人使用,与其他网络冲突的概率极低
  • 日志限制:每个容器最多 3 个日志文件,每个 10MB,防止日志撑爆磁盘
  • live-restore:重启 Docker daemon 时容器不会跟着停止,适合跑长期服务

最终成果
#

完成以上步骤后,这台机器具备了以下能力:

  • 通过 https://IP:8006 管理虚拟机和容器(Proxmox Web UI)
  • 通过 RDP 端口 3389 远程访问 XFCE 桌面
  • 完整的 Docker 环境,与 Proxmox 网络互不干扰
  • 合理的存储分配:200GB 系统 + 300GB 数据 + 1.37TB 虚拟机

一些后续建议:

  • 创建非 root 用户用于日常桌面登录
  • 折腾系统前善用 LVM 快照做备份

相关文章