Blog

Proxmox VE 入门:LXC 还是虚拟机?

二手 1U 到家后,我没有直接在裸机 Ubuntu 上糊所有 Docker,而是装了 Proxmox VE。想要的是同一台物理机上切开测试环境、软路由实验和长期服务,坏了彼此少连坐。Web UI 装好后,第一个认真问题不是「虚拟机创建按钮在哪」,而是每个负载到底走 LXC 还是 KVM 虚拟机。选型错了,后面全是嵌套与权限补丁。

先用一张决策表定边界

判断问题 偏 LXC 偏 VM
是否需要独立内核或自建内核模块 否 是
是否要跑 Docker / k8s 一类嵌套容器 尽量避免 可以,作专用宿主
内存预算是否紧张 是,想多开几个小系统 否,愿意为隔离付开销
是否要 Windows 或非 Linux 否 是
网络是否要强隔离、可整机回滚的路由实验 轻量代理可 LXC 软路由更稳妥用 VM
快照与迁移语义是否要「整机」清晰 系统容器够用 数据库认真档倾向 VM

一句话对照:VM 是硬件虚拟化,自带内核,隔离强、开销大;LXC 共享宿主内核,轻,接近加强版 chroot。需要自己的内核模块、别扭的 Docker-in-Docker、测其它发行版内核 → VM。只要独立用户空间跑服务、想省内存 → LXC。

场景 A:软路由与「玩坏可回滚」

OpenWrt 或其它软路由我放在 VM。原因不是 LXC 绝对跑不起来,而是网络栈实验失败时,整机快照回滚的心理成本更低;网卡直通、多桥、VLAN 子接口的文档与社区经验也以 VM 为主。注意:网卡直通后宿主会失去该口,二手 1U 若只有一个管理口,先画图再点直通,否则只能跑弱电箱接显示器。

默认 vmbr0 桥接物理网卡,VM 与宿主同网段,家庭起步够用。进阶再做 VLAN 感知桥。第一次把唯一管理口桥乱的人,会理解「带外管理」为什么在机架上是刚需。

场景 B:长期 Docker 宿主

长期 compose 栈,我倾向独立 VM,或干脆独立物理机,而不是特权 LXC 里再套 Docker。嵌套容器加上存储驱动与 cgroup 版本问题,排障时分不清是 Proxmox 的锅还是 Docker 的锅。VM 里装常规 Linux,再跑 Docker,边界干净:vzdump 备份的是整台宿主,迁移语义清楚。

有人全 LXC 也能活,我被「特权 LXC + 嵌套」烫过后,边界宁肯保守。测试用的一次性 Docker 环境,可以用活得短的 VM 模板克隆,用完删,不在生产 LXC 上叠加实验。

场景 C:轻量工具与跳板

DNS 试验实例、临时跳板、跑个静态文档站、单独的 fail2ban 观察机——这类负载 LXC 很合适:秒起,内存占用小,模板克隆快。不需要独立内核,不需要嵌套容器,隔离到「别的 CT 炸了不直接拖死宿主用户态」即可。资源超售在这里可以积极一点;对延迟敏感的游戏服和数据库则不要在同一套超售策略里幻想。

模板策略也很省事:先做一个最小 Debian/Ubuntu CT 模板,装好常用工具与 SSH 公钥,之后克隆改 IP 就能用。实验失败直接销毁 CT,不必像物理机那样纠结「这台还要不要留着」。正是这种低心理成本,让我愿意把乱七八糟的试验都塞进 LXC,而不是污染 Docker 宿主 VM。

场景 D:数据库与「认真档」数据

Postgres、需要清晰崩溃一致性预期的数据服务,我更常放 VM。不是说 LXC 不能跑数据库,而是快照、备份、迁移时「整盘」叙事更简单,和后续 restic、逻辑 dump 的分层也好讲清楚。LXC 里跑库可以,但要对宿主内核升级、CT 特性开关有额外心理准备。

Windows 实验没有选择,只能 VM。GPU 直通、厂商工具链,同样走 VM 决策树。

存储与备份如何配合选择结果

Proxmox 系统盘用 SSD;大盘给 ZFS 或 LVM-thin 做虚拟盘。LXC 与 VM 的盘文件都落在这里,选型结果会反过来影响备份粒度:VM 整盘 vzdump 体积大但语义干净,LXC 小而快,却更容易让人误以为「拷一层 rootfs 就等于应用可恢复」。重要 VM 用 vzdump 定期丢到另一台或 NFS,不要只靠本地同一块盘的快照当灾备。ISO 与云镜像模板放 local,导入一次省得到处装。

恢复练过一次才算数:删测试 VM → 从备份拉起 → 改 IP → 看业务是否回来。内存与 CPU 超售会让你感觉「还能再开一台」,账单是过热和 OOM——对已经划进「认真档」的 VM 网开一面。调度上我习惯给路由 VM 与数据库 VM 钉住最低保障,把超售压力留给可牺牲的工具 CT。

什么场景其实不该上 Proxmox

只有一台小 N100、只跑三个 compose,裸机 Ubuntu 更简单。虚拟化的收益是隔离与快照,成本是多一层存储和网络概念。机器与场景匹配再上,别为了「像数据中心」而数据中心。对我这台二手 1U,决策表的输出很具体:路由 VM、Docker 宿主 VM、一堆工具 LXC、数据库 VM——而不是「全部 LXC 省内存」或「全部 VM 一刀切」。

← Back to Blog