ubuntu上gitlab如何优化存储空间
导读:Ubuntu 上 GitLab 存储空间优化实操指南 一 定位大占用目录 查看总体占用:sudo du -xh -d1 /var/opt/gitlab | sort -hr | head 常见热点路径与用途: 仓库对象:/var/opt...
Ubuntu 上 GitLab 存储空间优化实操指南
一 定位大占用目录
- 查看总体占用:sudo du -xh -d1 /var/opt/gitlab | sort -hr | head
- 常见热点路径与用途:
- 仓库对象:/var/opt/gitlab/git-data/repositories(裸仓库,pack 文件)
- 监控数据:/var/opt/gitlab/prometheus/data(TSDB 时序数据,极易膨胀)
- 备份目录:/var/opt/gitlab/backups(若未改路径)
- 日志:/var/log/gitlab(可通过日志轮转控制)
- 若发现 repositories 下出现大量 tmp_pack_* 临时包文件,多为仓库打包/GC 过程中残留,可先清理后触发一次仓库 GC 回收空间(见第三部分)。
二 快速释放空间的低风险操作
- 清理过期备份:在 /etc/gitlab/gitlab.rb 设置保留天数并生效
- gitlab_rails[‘backup_keep_time’] = 604800(保留 7 天,单位秒)
- 执行:sudo gitlab-ctl reconfigure
- 说明:官方备份工具不会备份配置文件,记得另行备份 /etc/gitlab/gitlab.rb 与 /etc/gitlab/gitlab-secrets.json。
- 限制或迁移监控数据(Prometheus)
- 降低占用:prometheus[‘flags’] = { ‘storage.tsdb.retention.time’ => “15d” }
- 或关闭监控:prometheus[‘enable’] = false
- 或迁移目录:将 storage.tsdb.path 指向大磁盘,并确保目录属主为 gitlab-prometheus:gitlab-prometheus
- 执行:sudo gitlab-ctl reconfigure
- 清理仓库残留临时包(tmp_pack_xxx)
- 原则:仅在确认无 Git 操作进行时处理,优先在单库目录的 objects/pack 下删除 tmp_pack_*,随后对该仓库执行 GC。
- 示例(请替换为实际仓库路径):
- 查找大包:git verify-pack -v /var/opt/gitlab/git-data/repositories/@hashed/e6/29/e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb.git/objects/pack | sort -k3 -nr | head
- 清理临时包:find /var/opt/gitlab/git-data/repositories/@hashed/e6/29/e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb.git/objects/pack -name “tmp_pack_*” -delete
- 触发回收:git -C /var/opt/gitlab/git-data/repositories/@hashed/e6/29/e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb.git gc --prune=now
- 建议:先在测试仓库演练,再批量处理,避免误删。
三 中长期治理与架构优化
- 扩展仓库存储卷(迁移 git-data)
- 方案一 Bind Mount(推荐,简单可靠)
- 准备大磁盘挂载点(如 /data/gitlab),写入 /etc/fstab:/data/gitlab /var/opt/gitlab none bind 0 0
- 操作:sudo gitlab-ctl stop → sudo mount -a → sudo gitlab-ctl reconfigure → sudo gitlab-ctl start
- 方案二 修改 git_data_dir(同样有效)
- /etc/gitlab/gitlab.rb:git_data_dirs({ “default” => { “path” => “/data/gitlab/git-data” } } )
- 操作:sudo gitlab-ctl stop → sudo gitlab-ctl reconfigure → sudo gitlab-ctl start
- 注意:不要对 GitLab 数据目录使用普通软链接,可能导致 push 失败等问题。
- 方案一 Bind Mount(推荐,简单可靠)
- 启用对象存储(将附件/上传等迁走)
- 将 上传(uploads)、附件(attachments)、LFS、制品库(packages)、**备份(backups)**等配置为 S3/MinIO,减轻本地盘压力(按需逐步启用)。
- 规范大文件管理
- 历史大文件应迁移到 Git LFS,避免继续膨胀仓库对象;新项目启用 LFS 管理二进制资产(音频、视频、数据集、镜像等)。
- 数据库与缓存
- 使用受支持的 PostgreSQL 版本并合理调参(连接池、共享缓冲区等);会话/缓存使用 Redis,减轻数据库压力。
- 高可用与扩展
- 仓库体量持续增长时,考虑 Gitaly 集群 做存储与计算分离,提升可扩展性与稳定性。
四 自动化与监控建议
- 备份生命周期管理
- 定时备份:echo ‘0 4 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create’ | sudo tee /etc/cron.d/gitlab-backup
- 过期清理:find /var/opt/gitlab/backups -name “*.tar” -mtime +7 -delete
- 备份可用性监控
- 基于备份文件名时间戳(前缀为 Unix 时间戳)检查最近 24 小时是否生成备份,缺失则告警(邮件/企业微信/钉钉等)。
- 容量与增长监控
- 监控 /var/opt/gitlab 各子目录增长趋势,设置阈值告警;对 Prometheus 数据单独设限(如 15 天)避免失控。
五 变更操作安全要点
- 任何涉及数据迁移或清理的操作前,先做好完整备份(含配置文件),并在维护窗口执行。
- 执行 reconfigure/restart 前确认服务已停止,变更后逐步验证 push/pull、Web 访问、CI、LFS 等功能。
- 对生产仓库执行 GC/清理前,优先在副本或测试环境验证命令与影响范围。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu上gitlab如何优化存储空间
本文地址: https://pptw.com/jishu/760208.html
