You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Python脚本时GNU Parallel提示磁盘已满但空间充足问题求助

问题排查&解决思路

第一步:优先排查磁盘满的隐性原因

  • 检查inode使用情况:你只查了磁盘可用空间,大量小文件会占满inode导致无法写入新文件,执行df -i查看对应分区的inode使用率,若100%则删除无用小文件即可。
  • 检查用户磁盘配额:部分共享服务器会对单个用户设置存储配额,总磁盘剩余空间不代表你的用户可用空间,执行quota -s查看是否达到配额上限。
  • 检查临时目录权限与路径合法性:确认执行parallel命令的当前工作目录下存在scratch/tmp目录,且你的运行用户对该目录有读写执行权限,可先手动执行mkdir -p scratch/tmp && chmod 755 scratch/tmp确认路径可用。

第二步:修复GNU Parallel缓存溢出问题

GNU Parallel默认会将所有任务的stdout、stderr输出缓存到tmpdir,待任务执行完成后再统一输出,即使你看脚本没有主动打印内容,依赖库的日志、运行时警告也会产生输出,并发量大时会占用大量缓存空间:

  • 方案1(最优):屏蔽不需要的脚本输出,修改run_reshape.sh里的命令,加上输出丢弃规则:
    python3 reshape.py 'group_1' > /dev/null 2>&1
    python3 reshape.py 'group_2' > /dev/null 2>&1
    
    没有输出就不需要缓存,从根源避免Parallel占用tmp空间。
  • 方案2:添加压缩参数,修改parallel启动命令,启用输出压缩减少缓存占用:
    parallel --compress --jobs 6 --tmpdir scratch/tmp --cleanup < run_reshape.sh
    

第三步:修复Python脚本的本地存储泄露

你当前的代码中np.save是将10GB的npy文件写入本地磁盘,完成上传到存储桶后没有删除本地文件,6个并行任务就会产生60GB的本地临时文件,累计运行几次就会占满磁盘:
在reshape.py中保存完成后添加本地文件删除逻辑:

import os
# ...原有代码...
np.save(file_io.FileIO(f'{save_string}', 'w'), new_shape)
del new_shape
# 新增:删除本地生成的npy文件
os.remove(save_string)

如果你的需求是直接写入存储桶不需要本地缓存,可直接将save_string改为存储桶路径(如gs://目标桶/xxx/前缀),file_io会直接写入GCS,完全不占用本地磁盘。

内容的提问来源于stack exchange,提问作者morepenguins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:24:02