温馨提示×

Ubuntu Overlay如何扩展存储空间

小樊
38
2025-12-24 00:00:40
栏目: 云计算

Ubuntu 中 Overlay 存储扩容的正确思路

OverlayFS 是一个联合文件系统,本身没有“容量”属性,显示的容量来自其底层的lowerdir/upperdir所在的真实文件系统。因此,扩展 Overlay 的可用空间,本质是扩展其底层目录所在的分区/卷/磁盘,然后让 Overlay 重新识别新增空间。若你是看到 Docker 的 overlay2 占用 100%,同样应先扩容底层磁盘/分区,再按需清理或迁移数据。

常见场景与对应做法

  • 虚拟机或云盘场景(VMware、VirtualBox、云服务器 ECS)

    1. 先在虚拟化平台或云控制台扩容虚拟磁盘(如从 40G → 100G),并创建快照/备份。
    2. 在系统内安装分区扩容工具:Ubuntu 建议安装 cloud-guest-utils(含 growpart)与 xfsprogs
    3. 扩展分区:例如系统盘是 /dev/vda1,执行 sudo growpart /dev/vda 1
    4. 扩展文件系统:
      • ext2/ext3/ext4sudo resize2fs /dev/vda1
      • XFSsudo xfs_growfs /(对挂载点执行)
    5. 完成后用 df -hlsblk 校验;Docker 场景再重启 Docker 服务并观察 /var/lib/docker 所在分区是否变大。
      以上流程适用于云盘扩容后扩容分区与文件系统的标准做法。
  • LVM 场景(根分区或数据盘使用 LVM)

    1. 扩展逻辑卷(LV):如 sudo lvextend -L +50G /dev/mapper/vg0-root
    2. 扩展文件系统:
      • ext4sudo resize2fs /dev/mapper/vg0-root
      • XFSsudo xfs_growfs /
    3. 校验:df -h。Overlay 将自动看到新增空间(因为其 upper/lower 位于已扩容的 LV 上)。
  • 手动挂载的 OverlayFS(非 Docker,自己用 mount -t overlay 挂载)

    1. 确认 upperdir/lowerdir 所在分区是否有新增空间(用 df -hlsblk 检查)。
    2. 若底层是 LVM/云盘,先按上文扩容分区与文件系统。
    3. 重新挂载以使 Overlay 识别新容量:
      sudo umount /path/to/overlay
      sudo mount -t overlay overlay \
        -o lowerdir=/path/to/lowerdir,\
            upperdir=/path/to/upperdir,\
            workdir=/path/to/workdir \
        /path/to/overlay
      
    4. 校验可用空间是否增加。
  • Docker 场景的 overlay2 占用过高

    1. 先定位 Docker 根目录所在分区:docker info | grep "Docker Root Dir"(常见为 /var/lib/docker)。
    2. 若该分区不足,按“虚拟机/云盘”或“LVM”步骤扩容其底层磁盘/分区/文件系统。
    3. 扩容后重启 Docker:sudo systemctl restart docker
    4. 结合业务进行镜像/容器清理(如删除无用镜像、容器、构建缓存),避免再次写满。

关键注意事项

  • 不能直接给 OverlayFS“扩容”,必须扩容其底层目录所在的真实文件系统(分区/卷/磁盘)。
  • 操作前务必做好快照/备份;分区与文件系统变更存在数据风险。
  • 扩容分区与文件系统时,选择与文件系统匹配的扩容工具:resize2fs(ext*、xfs_growfs(XFS)growpart(分区)
  • 某些环境(如 growpart 报字符编码错误)可临时设置 LANG=en_US.UTF-8 后再执行。
  • 重新挂载或重启服务后,使用 df -hdocker infolsblk 复核空间是否生效。

0