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

GitLab升级至v17.4.0后执行gitlab-backup create失败报错求助

GitLab 17.4.0备份失败:unexpected EOF错误解决方法

问题重现

执行gitlab-backup create --trace时,出现以下错误(涉及仓库随机变化,错误类型一致):

{"level":"error","msg":"create: pipeline: 3 failures encountered:\n - @hashed/18/d3/18d37c950a3e810d9b9a84c72c230ca16b7cec123456ef123456as1234567fe.git (dev/abc.com): manager: write bundle: remote repository: create bundle: rpc error: code = Internal desc = unexpected EOF\n - @hashed/2e/00/2e00b312b0a9681bef09f9085a4e918b8fceb0c0123456ef123456as1234567fe.git (dev/reports): manager: write bundle: remote repository: create bundle: rpc error: code = Internal desc = unexpected EOF\n - @hashed/b8/1d/b81d00e65f747a4161b56ab92f400b81862c2b123456ef123456as1234567fe.git (sts/matomo): manager: write bundle: remote repository: create bundle: rpc error: code = Internal desc = unexpected EOF","pid":2547819,"time":"2024-09-27T01:11:37.937Z"}

伴随报错栈:

Backup::Error: gitaly-backup exit status 1
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/gitaly_backup.rb:49:in `finish!'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/targets/repositories.rb:33:in `dump'
...(省略后续栈信息)
Tasks: TOP => gitlab:backup:create

升级至GitLab v17.4.0前备份正常,多次执行报错仓库不同,排除仓库本身问题,备份存储在/dev/sdb1分区。

解决步骤

1. 排查存储分区问题

  • 检查备份分区可用空间:
    执行df -h /var/opt/gitlab/backups(替换为你的实际备份目录),确认分区未被占满,磁盘空间不足会导致写入中断触发EOF错误。
  • 检查文件系统完整性:
    先卸载分区(umount /dev/sdb1),执行fsck /dev/sdb1修复文件系统错误,完成后重新挂载并重试备份。
  • 测试磁盘IO性能:
    在备份目录执行dd if=/dev/zero of=test_io bs=1G count=1 oflag=direct,观察写入是否正常,若出现中断或异常,说明磁盘硬件或IO链路存在问题。

2. 调整Gitaly备份并发配置

GitLab 17.4.0可能调整了Gitaly备份的默认并发数,高并发会加剧IO压力导致EOF错误:

  • 编辑/etc/gitlab/gitlab.rb,添加配置:
    gitaly['backup_concurrency'] = 1
    
  • 执行gitlab-ctl reconfigure应用配置,然后重新运行备份命令。

3. 验证权限与日志

  • 检查备份目录权限:
    确保备份目录归属git用户组:
    chown -R git:git /var/opt/gitlab/backups
    
  • 查看Gitaly详细日志:
    过滤Gitaly日志中的错误信息:
    grep -i "unexpected EOF" /var/log/gitlab/gitaly/current
    
    日志中可能包含更具体的IO或存储相关错误提示。

4. 单仓库备份测试

单独备份某一个报错的仓库,验证是否为全局备份的并发问题:

gitlab-backup create --trace REPOSITORIES_PATTERNS="dev/abc.com"

若单仓库备份成功,进一步确认是并发IO导致的全局备份失败。

5. 回退相关配置

对比升级前的gitlab.rb配置文件,重点检查Gitaly备份相关参数(如backup_storage_path、gitaly['backup_timeout']等),恢复到升级前的配置后重新尝试备份。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:23:09