banner
约 1,800 字
6 分钟

家庭服务器安装PVE虚拟机

-
-
无标签

摘要

本文介绍了在家庭服务器上安装 Proxmox VE (PVE) 的全过程。文章对比了 KVM 与 LXC 的适用场景,建议 Linux 服务优先使用 LXC。安装后需合并分区、更换清华源、屏蔽订阅弹窗并更新系统。同时强调了备份需存放在外部存储,并提供了常见问题的排查方法。

为什么用 PVE

如果你的家庭服务器打算长期跑多个服务(NAS、软路由、各种 Docker 应用),把它们拆开装在虚拟机里往往更稳。Proxmox VE(简称 PVE)就是一套开源的虚拟机管理平台,基于 Debian,自带 Web 管理界面,支持 KVM 虚拟机和 LXC 容器,是搭建"一台物理机、多套系统"最主流的选择之一。这篇记录我在家庭服务器上从零安装 PVE 并做基础调优的过程。

开装之前:先决定用 KVM 还是 LXC

PVE 比较好玩的一点是它同时提供两套虚拟化技术,装之前想清楚要跑什么,能少走很多弯路

对比项

KVM(虚拟机)

LXC(容器)

隔离层级

全虚拟化,独立内核

共享宿主内核

能跑什么

Linux / Windows / 黑群 / 任意系统

只能跑 Linux

性能开销

有(通常 2-5%)

几乎没有,接近原生

启动速度

秒级到十几秒

通常是秒级以下

资源分配

必须预先分配内存/CPU

与宿主共享,弹性更好

适合场景

需要异构系统、需要自定义内核、做实验

跑 Linux 服务、轻量、追求效率

实践建议:跑 Nginx、数据库、Docker 这类纯 Linux 服务,优先用 LXC,省资源又省心;要跑 Windows、群晖、或者需要完整内核控制的场景,才上 KVM。很多人一上来全用 KVM,结果一台机器十几个虚拟机把内存吃光,其实大部分换成 LXC 就够。

安装 PVE 虚拟机系统

  1. 下载镜像:去官网下载 PVE 最新的安装 ISO。

官网地址:https://www.proxmox.com/ 下载地址:https://www.proxmox.com/en/downloads

blog image
  1. 安装到服务器:用 U 盘启动镜像进入安装向导,一路下一步,期间会要求设置 root 密码和网卡 IP(安装后 Web 管理就是靠这个 IP 访问的),建议在局域网里给服务器固定一个 IP。

blog image
  1. 安装完毕,记住 IP 后重启,等系统起来。

blog image

安装时创建的 vmbr0 是 PVE 默认的网桥。理解它很关键:虚拟机没有物理网卡,靠这个"逻辑交换机"才能接进你的局域网 —— PVE 把物理网卡和虚拟机的虚拟网卡都接到 vmbr0 上做二层转发。所以:

  • 桥接模式(默认):虚拟机拿到和宿主同网段的 IP,局域网内可直接访问

  • 需要"独立网段"(NAT)时才另外建网桥,家用一般用不上

PVE 虚拟机的基础设置

  1. 电脑浏览器输入 https://PVE的IP:8006 登录 Web 管理界面(默认 https,首次会有证书告警,忽略即可)。

blog image
  1. 合并硬盘分区(把安装时自动划分的 local-lvm 空间并回根分区,让可用存储更灵活):

  • 先删除 local-lvm 逻辑卷:

纯文本
lvremove pve/data
  • 再把释放的空间扩容给根分区 local

纯文本
lvextend -l +100%FREE -r pve/root
  • 随后回到数据中心的图形界面,把残留的 local-lvm 存储删除。

blog image
  • 编辑 local 存储,勾选全部内容类型,然后重启,让分区扩容生效。

blog image

blog image

⚠️ 合并分区前,先知道你要放弃什么

网上教程几乎都在教合并分区,但很少有人说代价。这里补上,避免你事后后悔:

  • local-lvm 是 LVM-thin 池,特点是精简置备(磁盘文件按实际用量占用空间,不用预留)+ 支持秒级快照

  • local 是目录型存储,虚拟机磁盘以文件形式存放,没有 thin 快照能力

所以合并后你得到的是:空间更灵活(不用纠结"分多少给 local-lvm"),但失去了"打个快照,改坏了 5 秒回滚"的能力

结论

  • 如果只是把 PVE 当"稳定跑几个服务"的平台,不折腾 → 合并分区,图省心

  • 如果你习惯在虚拟机上做实验、需要频繁快照回滚别合并,保留 local-lvm,甚至建一个更大的 thin 池

顺带说一句:合并前记得先确认 local 里没有重要数据,操作前最好备份 —— lvremove 是不可逆的。

  1. 更换软件源(PVE 默认连 Debian 官方源,国内速度很慢,换成清华源能快非常多):

清华源参考:https://mirrors.tuna.tsinghua.edu.cn/help/debian/

纯文本
nano /etc/apt/sources.list

把网页上推荐的清华源内容粘贴进去,保存退出。

blog image

建议把所有行都换成清华源格式,例如 Debian 12(bookworm):

纯文本
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware

blog image

这里要注意 Debian 12(bookworm)起的一个格式变化:新版 Debian 引入了 deb822 格式的 /etc/apt/sources.list.d/debian.sources,而 PVE 默认仍沿用老格式 /etc/apt/sources.list两种格式不能同时对同一个源生效(会重复定义、警告甚至报错)。所以换源前先确认你到底该改哪个文件:

纯文本
# 列出所有还在生效的源定义位置
grep -rn "^deb " /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

哪个文件里有内容就改哪个,不要两个都写。

注意:默认的 sources.list 里有一条不带 -security 的普通源也指向 Debian 官方,建议一并替换。做完这步后,PVE 自带的那个源可能还会影响下载速度,需要处理掉(见下)。

  1. 修改 PVE 专属源

清华 PVE 源参考:https://mirrors.tuna.tsinghua.edu.cn/help/proxmox/

纯文本
nano /etc/apt/sources.list.d/pve-no-subscription.list

加入一行(对应 Debian 12 / bookworm):

纯文本
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription

blog image
  • 去掉企业源(企业源需要订阅,不注释会报错):

纯文本
nano /etc/apt/sources.list.d/pve-enterprise.list

在内容前加 # 注释掉。

blog image
  • 去掉 Ceph 源(一般用不到,先注释,日后有需要再开):

纯文本
nano /etc/apt/sources.list.d/ceph.list

同样在内容前加 #

blog image

在 PVE 的"更新—存储库"界面里,确认能看到并启用了 pve-no-subscription(即上一步加的那个清华源)。

blog image

blog image

blog image

订阅源和社区源到底差在哪? 企业源(enterprise)是给付费用户用的,特点是版本保守、经过充分测试、有官方支持pve-no-subscription 是社区源,更新更快、特性更早,但偶尔会碰到回归问题。家用、学习场景用社区源完全没问题,不买订阅不算"盗版",只是每次登录会弹个提示(见下一步)。

  1. 去掉登录弹窗(无订阅用户每次登录会弹提示,用下面命令屏蔽):

纯文本
sed -i.backup -z "s/res === null || res === undefined || \!res || res\n\t\t\t.data.status.toLowerCase() \!== 'active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

⚠️ 这条命令会在 PVE 升级后被重置。因为它的原理只是改掉前端 JS 里的一段订阅检查逻辑,而 PVE 大版本升级会整个覆盖 proxmoxlib.js。所以每次升级 PVE 后弹窗又出现,属于正常现象,重跑一次即可,不用担心是配置坏了。

  1. 更新并升级软件

纯文本
apt update
apt upgrade -y

升级要分两层理解

  • apt upgrade 只升级(同一个 Debian 大版本内的更新)—— 日常维护用这个就够

  • PVE 大版本升级(比如 7 → 8)不一样:必须先跑官方的检查脚本 pve7to8 看有没有不兼容项,再用 apt dist-upgrade。跨大版本升级不能跳级,也不能在 Debian 大版本不匹配时进行

另外提醒:PVE 的"更新"界面偶尔会在升级后提示需要重启内核 —— 看到提示就重启一次,别一直挂着。

  1. 开启 IPv6(可选):如果你要走 IPv6 外网访问,在 sysctl 里放开自动配置:

纯文本
nano /etc/sysctl.conf

添加:

纯文本
net.ipv6.conf.all.accept_ra=2
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.vmbr0.accept_ra=2
net.ipv6.conf.all.autoconf=1
net.ipv6.conf.default.autoconf=1
net.ipv6.conf.vmbr0.autoconf=1
  • 保存后重启系统:reboot,IPv6 配置即生效。

这组参数的意思:accept_ra=2 表示"即使开启了转发也照样接受路由通告"(默认值 1 是在"转发关闭"时才接受 —— 而 PVE 宿主本身就在转发流量,所以必须显式写 2,否则 IPv6 永远配不上)。这是 PVE 上开 IPv6 最常见的坑,直接抄这段就行。

另外提醒:reboot 会重启所有虚拟机,建议先确认没有正在跑的重要任务。

备份:别把备份和原盘放在同一块硬盘上

PVE 自带 vzdump,可以在「数据中心 → 备份」里配定时任务,也能手动对单个虚拟机备份。

有一条原则值得强调:备份目标要放在另一块物理盘、NAS 或外置存储上。很多人图省事把备份存到同一个 local 存储里 —— 盘一坏,虚拟机和它的备份一起消失,"有备份"变成了心理安慰。另外可以设一个保留策略(比如保留最近 7 天 + 每周 1 份),避免备份把空间占满。

小结

装完 PVE 并做完上面这套基础设置后,你的家庭服务器就有一个干净、可用的虚拟化底座了。核心思路归纳为:选好 KVM/LXC 路线 → 合并分区腾出空间(或保留 thin 池换快照)→ 换国内源加速 → 屏蔽订阅弹窗 → 升级系统。之后再在这个平台上建虚拟机或 LXC 容器跑应用,就非常顺畅了。

常见问题排查

  • apt update 一直报错或很慢:多半是源没换干净,重点检查 /etc/apt/sources.list 里的 Debian 普通源和 /etc/apt/sources.list.d/pve-enterprise.list 企业源是否都已注释或替换成清华源。

  • 登录页一直弹"无有效订阅"提示:说明屏蔽弹窗的 sed 命令没执行成功(或被升级覆盖),重新跑一次第 5 步的命令,并确认 systemctl restart pveproxy.service 已生效。

  • Web 界面打不开:确认浏览器用的是 https://IP:8006,并检查防火墙是否放行 8006 端口;如果能 ping 通但网页打不开,多半是 pveproxy 服务挂了,执行 systemctl restart pveproxy 试试。

  • 合并分区后空间没变大:做完 lvextend 后需要重启一次,若仍未生效,检查是否还残留 local-lvm 存储占用了逻辑卷。

  • 虚拟机启动报 "no space left":多半是存储选错了(选到了快满的 local),在虚拟机硬件里把磁盘迁到有空间的存储上即可。

以上是安装和初始化 PVE 最常见的几个坑,按步骤排查基本都能解决。

虚拟化的路子不止一条,按需选择就好:

END

相关文章

暂无相关文章