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

Perforce服务器磁盘空间不足致操作受限求助

紧急恢复:解决当前磁盘耗尽无法操作的问题

第一步:清理系统级垃圾,腾出少量操作空间

  • 压缩清理系统日志:sudo journalctl --vacuum-size=100M
  • 删除旧软件包缓存:sudo apt-get clean
  • 删除临时目录无用文件:sudo rm -rf /tmp/*
    这些操作不涉及Perforce核心数据,先腾出足够空间让Perforce命令能正常执行。

第二步:启动Perforce紧急模式,绕过空间阈值限制

  • 停止Perforce服务:sudo systemctl stop perforce(若使用init脚本则替换为sudo service perforce stop)
  • 手动启动服务器并关闭空间检查:p4d -r /your/actual/P4ROOT/path -L log -v server.minimum.freespace=0
    把/your/actual/P4ROOT/path替换为你服务器上P4ROOT的真实路径(比如/opt/perforce),启动后即可正常执行Perforce命令。

第三步:清理Perforce服务器冗余数据

  • 查看所有废弃的未提交变更:p4 changes -s abandoned
  • 清理这些变更对应的临时文件:p4 clean -a
  • 删除确认无用的旧文件/废弃分支(该操作不可逆,务必确认文件已无保留价值):p4 obliterate -y //depot/path/to/unused/files/...
  • 压缩整理Perforce数据库释放空间:p4d -r /your/actual/P4ROOT/path -z housekeeping

第四步:恢复正常服务并调整空间阈值

  • 停止紧急模式服务器:按Ctrl+C,或执行p4 admin stop
  • 正常启动Perforce服务:sudo systemctl start perforce
  • 调整最小空闲空间阈值(比如改为1G,避免再次触发2G限制):p4 configure set server.minimum.freespace=1073741824
    1073741824是1GB对应的字节数,可根据实际需求调整。
根本解决:避免再次出现磁盘耗尽问题

1. 定期清理Perforce冗余数据

  • 每周执行一次p4 clean -a,清理废弃的未提交文件
  • 每月检查废弃分支、旧标签,用p4 obliterate删除无用文件
  • 每月执行一次p4d -r /your/actual/P4ROOT/path -z housekeeping,压缩整理数据库

2. 开启磁盘监控预警

  • 设置定时任务,每天检查P4ROOT所在磁盘空间:
    编辑定时任务:crontab -e,添加一行:
    0 12 * * * df -h /your/actual/P4ROOT/path | grep -v Filesystem | awk '{if($5>90) print "Perforce磁盘空间不足!使用率:"$5}' | mail -s "Perforce磁盘预警" your-email@example.com
    替换路径和你的邮箱地址,当磁盘使用率超过90%时会自动发邮件提醒。

3. 优化Perforce存储效率

  • 启用归档文件压缩:p4 configure set server.archive.compress=1,减少大文件的存储空间占用
  • 配置大文件存储规则:执行p4 typemap,在编辑器中添加对应艺术资源的规则(示例如下),让Perforce用更高效的方式存储大文件:
    +b //depot/art/assets/.../*.psd
    +b //depot/art/assets/.../*.blend
    +b //depot/art/assets/.../*.mp4
    
    保存退出后规则自动生效。

4. 分离Perforce数据与系统盘(适配Digital Ocean)

由于Digital Ocean服务器扩容后无法缩容,建议把Perforce数据迁移到单独的块存储卷,后续只需单独扩容该卷即可,无需改动服务器系统盘:

  • 在Digital Ocean控制台创建新块存储卷,按照指引挂载到服务器的/mnt/perforce-storage路径
  • 停止Perforce服务:sudo systemctl stop perforce
  • 复制P4ROOT所有数据到新卷:sudo cp -rp /your/old/P4ROOT/path/* /mnt/perforce-storage/
  • 修改Perforce配置文件(比如/etc/perforce.conf),将P4ROOT的值改为/mnt/perforce-storage
  • 启动Perforce服务:sudo systemctl start perforce,确认服务正常后再删除旧的P4ROOT数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:15:50