少于 1 分钟阅读 次阅读

github issues #9428

环境信息

  • 操作系统:Ubuntu 22.04.1 LTS
  • 1Panel版本:v1.10.29-lts
  • 磁盘配置:系统盘128GB + 数据盘4TB(备份目标盘)

Problem Description

当使用1Panel的定时备份目录功能备份大文件(>128GB)时:

  1. 虽然指定了外部备份存储路径(如 /mnt/nvme
  2. 但压缩过程仍强制使用系统盘临时目录 /opt/1panel/tmp
  3. 导致系统盘被完全占满
  4. 最终引发 1panel disk I/O error (4874) 面板服务崩溃

Steps to Reproduce

  1. 配置定时目录备份任务(指向大容量数据目录,如 >128GB)
  2. 观察备份执行过程: bash

    关键进程展示:

    root 50264 2.9 0.0 9864 3200 ? S 17:32 0:00 tar … -zcf /opt/1panel/tmp/…/directory_mnt_nvme_…tar.gz … root 50269 96.7 0.0 3528 1920 ? R 17:32 0:26 gzip

  3. 等待系统盘空间持续消耗至100%
  4. 面板服务不可用并报错

The expected correct result

  1. 压缩过程应在用户指定的备份存储路径(如 /mnt/nvme/backups)创建临时文件
  2. 或提供临时目录配置选项
  3. 系统盘空间不应被备份任务占用
可以看到系统盘/dev/sda2被占满了:
arm@arm-Default-string:/mnt/hdd_4T_for_backup$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           6.3G  131M  6.2G   3% /run
/dev/sda2       117G  117G     0 100% /
tmpfs            32G  8.0K   32G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
efivarfs        128K   28K   96K  23% /sys/firmware/efi/efivars
/dev/nvme0n1p1  1.8T  122G  1.6T   7% /mnt/nvme
/dev/sda1       511M  6.1M  505M   2% /boot/efi
/dev/sdb1       1.8T   99G  1.7T   6% /mnt/hdd
tmpfs           6.3G  124K  6.3G   1% /run/user/1000
/dev/sdc1       3.6T   33G  3.4T   1% /mnt/hdd_4T_for_backup

1panel 在/opt/1panel/tmp的占用:
arm@arm-Default-string:/opt/1panel$ du -sh *
4.0K    apps
4.0K    backup
104K    cache
12M     db
8.0K    docker
19M     geo
du: cannot read directory 'log': Permission denied
4.0K    log
4.0K    mcp
1.4M    resource
4.0K    runtime
91G     tmp

Additional Information

故障分析

  1. 关键错误:备份过程分两步
    • 先在系统盘生成压缩包:/opt/1panel/tmp/xxx.tar.gz
    • 再(可能)移动到目标存储位置
  2. 设计缺陷:未考虑系统盘容量限制,对大型备份操作缺乏保护机制

留下评论