前言:磁盘红了!😱

最近我在 PVE (Proxmox VE) 上的 Ubuntu 24 虚拟机里部署了 1Panel 面板。正用得开心,突然发现 1Panel 首页的磁盘 / 分区快满了!
1panel磁盘管理界面

作为一个 PVE 用户,第一反应肯定是去给虚拟机加硬盘。但是打开 PVE 后台一看,LVM 占用率显示 93%,当场吓出一身冷汗:“完了,我物理硬盘也满了?”

经过一番排查和折腾,发现这其实是虚惊一场。今天就把这套从“看懂 PVE 存储”到“无损扩容”再到“解决 Docker 权限报错”的全流程记录下来。如果你也遇到了类似问题,看这篇就够了。


第一部分:PVE 里的“视觉误差” —— 93% 到底满没满?

首先,我们要解决一个吓人的问题。在 PVE 的 LVM 页面,你可能会看到类似这样的画面:

LVs 数:7 | 分配给 LV:93% | 大小:248GB | 可用:17GB

看到这个 93%,很多新手(包括我)都会慌。但实际上,你的硬盘可能根本没满。 我们来把 PVE 的三张关键图表拆解一下:

1️⃣ LVM (底层分配):吓人的 93%

PVE磁盘LVM
这只是“地皮规划图”
PVE 安装时,它自动把硬盘切成了三块:给系统自己用、给交换分区、给虚拟机数据池。
这里的 93% 只是表示:“我已经把 93% 的地皮规划出去了”,并不代表地皮上已经盖满了楼。剩下的 17GB 是完全未规划的荒地。

2️⃣ LVM-Thin (Local-LVM):租客的真实房间

PVE磁盘LVM-Thin
这才是虚拟机真正住的地方(data 池)。它是精简置备 (Thin Provisioning) 的。

  • 分配大小 (147GB):你口头答应给租客(虚拟机)的总额度。
  • 已用大小 (56GB):租客实际占用的空间。
  • 结论:看这里最准!虽然我分出去了很多,但实际只用了 30%-40%,还有大把的空余空间,放心扩容!

3️⃣ Local (PVE 概要):房东的自留地

PVE首页概要
在 PVE 的概要页面,你看到的是宿主机系统盘 (local) 的状态。

  • 结论:这块区域是给 PVE 系统自己用的,通常只用来存放 ISO 镜像文件和 VZDump 备份文件。它非常空闲,完全不用担心。

总结一下:规划占了 93%,但实际居住率很低。不用慌,直接扩容!


第二部分:实操扩容(两步走)

既然确定物理硬盘有空间,我们现在就把 1Panel 所在的虚拟机从 32G 扩容到 64G。

1️⃣ 第一步:在 PVE 层面“加大地皮”

这一步相当于把物理硬盘变大,但在虚拟机内部还看不出来。

  1. 登录 PVE,点击你的 Ubuntu 虚拟机。
  2. 选择 「硬件 (Hardware)」 -> 「硬盘 (Hard Disk)」
  3. 点击上方的 「磁盘操作 (Disk Action)」 -> 「调整大小 (Resize)」
  4. 在弹出的框里输入 增量

    • 注意:这里填的是你要“增加多少 G”。比如原来 32G,想变 64G,就填 32
  5. 点击确定。

2️⃣ 第二步:在 Ubuntu 内部“装修扩建”

PVE 操作完,虚拟机里的系统还不知道,我们需要通过 SSH 告诉它。

连接到 SSH(或者用 PVE 的控制台),按顺序执行:

A. 检查变化
输入 lsblk,你会看到 sda 硬盘的总大小已经变大了(比如 64G),但下面的分区 sda3 还是原来的大小。

B. 安装扩容工具(防患于未然)

apt update
apt install cloud-guest-utils -y

C. 扩容分区 (growpart)
我们要把多出来的空间合并进 sda3(注意:/dev/sda 是盘符,3 是分区号,中间有空格)。

growpart /dev/sda 3

如果你看到 CHANGED 字样,说明分区表修改成功。

D. 扩容文件系统 (resize2fs)
最后一步,告诉 ext4 文件系统占满整个分区。

resize2fs /dev/sda3

等进度条跑完,再次输入 df -h,你会发现 / 目录的空间瞬间变大了!回到 1Panel 刷新,告警消失。🎉


第三部分:避坑指南 —— Docker 权限报错怎么办?

在折腾完系统或者重启后,有时候我们在 SSH 里运行 docker ps 或者 1Panel 进行某些容器操作时,可能会遇到下面这个报错:

permission denied while trying to connect to the docker API at unix:///var/run/docker.sock

这是什么意思?
这说明 Docker 守护进程运行得好好的,但你当前登录的这个用户“没资格”跟它说话。Docker 默认只听 root 用户和 docker 用户组的话。

✅ 解决方法(推荐):
不要每次都输 sudo,我们直接把当前用户加入“管理员群”:

  1. 将当前用户加入 docker 组(复制粘贴运行即可):

    sudo usermod -aG docker $USER
  2. 立即生效
    运行下面这行命令刷新组权限(或者直接退出 SSH 重新登录):

    newgrp docker
  3. 测试
    再次输入 docker ps,如果能列出容器列表,说明权限修复成功!

📝 总结

  1. 别慌:PVE 里的 LVM 93% 只是分配率,看 Local-LVM 的实际占用才是真相。
  2. 扩容:先在 PVE 界面 Resize,再去虚拟机里 growpart + resize2fs
  3. 避坑:遇到 Docker 权限拒绝,把用户加入 docker 组即可解决。
  4. 关于 Discard:虽然网上有很多教程建议开启 SSD 仿真和 Discard 回收空间,但在某些 PVE 环境下会导致 IO 锁死或控制台卡顿,为了稳定起见,普通用户不建议随意开启。

搞定收工!你的 1Panel 又可以愉快地玩耍了。🚀

最后修改:2025 年 12 月 19 日
如果觉得我的文章对你有用,请随意赞赏