ubuntu gitlab怎样优化存储空间
导读:Ubuntu 上 GitLab 存储空间优化实操指南 一 定位大目录与常见膨胀源 查看各目录占用:执行 sudo du -xh /var/opt/gitlab | sort -rh | head -20,优先关注以下路径: /var/o...
Ubuntu 上 GitLab 存储空间优化实操指南
一 定位大目录与常见膨胀源
- 查看各目录占用:执行
sudo du -xh /var/opt/gitlab | sort -rh | head -20,优先关注以下路径:- /var/opt/gitlab/git-data:仓库对象与对象池。
- /var/opt/gitlab/prometheus/data:监控时序数据,默认可能长期累积。
- /var/opt/gitlab/gitlab-rails/shared/artifacts、uploads、lfs-objects:CI 产物、用户上传、LFS 对象。
- /var/opt/gitlab/backups:备份文件,如未设置保留策略会持续增长。
- /var/log/gitlab:服务日志,长期未轮转会变大。
- 若发现 git-data/repositories 下出现大量 tmp_pack_* 临时文件并导致磁盘被占满,通常是仓库打包/GC 异常或并发过大所致,应先停止写入、清理残留临时文件,再优化并发与 GC 策略。
二 仓库与对象存储优化
- 使用对象存储卸载大对象
- 将 LFS、上传、CI 产物等迁移到对象存储(如 Amazon S3、MinIO),在 /etc/gitlab/gitlab.rb 中配置相应项(对接 S3/MinIO 的 endpoint、bucket、access/secret key 等),执行
sudo gitlab-ctl reconfigure生效。对象存储能显著降低本地盘占用并便于横向扩容。
- 将 LFS、上传、CI 产物等迁移到对象存储(如 Amazon S3、MinIO),在 /etc/gitlab/gitlab.rb 中配置相应项(对接 S3/MinIO 的 endpoint、bucket、access/secret key 等),执行
- 调整仓库存储路径或扩展新盘
- 将仓库数据迁移到独立磁盘或大容量挂载点,编辑 /etc/gitlab/gitlab.rb:
- 单目录:
git_data_dirs({ "default" => { "path" => "/home/gitlab-data" } } ) - 多目录:
git_data_dirs({ "default" => { "path" => "/var/opt/gitlab/git-data" } , "alt" => { "path" => "/home/gitlab-data" } } )
- 单目录:
- 迁移步骤(停写→同步→改配置→启动):
sudo gitlab-ctl stopsudo rsync -av /var/opt/gitlab/git-data/repositories /home/gitlab-data/sudo gitlab-ctl reconfiguresudo gitlab-ctl start
- 目标路径及其子目录不要使用软链接;迁移后确认 /home/gitlab-data/repositories 存在并可访问。
- 将仓库数据迁移到独立磁盘或大容量挂载点,编辑 /etc/gitlab/gitlab.rb:
- 规范大文件管理
- 历史仓库中的大文件应通过 git lfs migrate import --everything 迁移至 LFS,避免继续膨胀仓库对象。完成后执行仓库 GC 回收空间。
- 定期仓库维护
- 在维护窗口对仓库执行
git gc --prune=now(Omnibus 可结合 gitlab-rake git:gc),并删除已合并且不再需要的分支,减少对象冗余。
- 在维护窗口对仓库执行
三 监控、日志与备份的存储治理
- 监控数据降占用
- 方案 A:缩短保留期(示例保留 15 天)
- 编辑 /etc/gitlab/gitlab.rb:
prometheus['enable'] = trueprometheus['flags'] = { 'storage.tsdb.path' => "/var/opt/gitlab/prometheus/data", 'storage.tsdb.retention.time' => "15d", 'config.file' => "/var/opt/gitlab/prometheus/prometheus.yml" }
- 编辑 /etc/gitlab/gitlab.rb:
- 方案 B:不需要自监控时可关闭
prometheus['enable'] = false
- 变更后执行
sudo gitlab-ctl reconfigure生效。
- 方案 A:缩短保留期(示例保留 15 天)
- 日志轮转与清理
- 启用与调整 logrotate 策略,控制 /var/log/gitlab 下各服务日志的保留天数与压缩;对审计/访问日志可按需降低级别或缩短保留。
- 备份保留策略
- 修改备份目录:
gitlab_rails['backup_path'] = '/var/opt/gitlab/backups',执行sudo gitlab-ctl reconfigure。 - 定时备份并清理旧备份(示例保留 7 天):
- 备份:
/opt/gitlab/bin/gitlab-rake gitlab:backup:create - 清理脚本(示例):
find "/var/opt/gitlab/backups/" -name "*.tar" -mtime +7 -delete - Crontab(示例):
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create;30 2 * * * find /var/opt/gitlab/backups/ -name "*.tar" -mtime +7 -delete
- 备份:
- 修改备份目录:
四 数据库与缓存侧优化
- 数据库维护
- 使用受支持的 PostgreSQL 版本,按需调整连接池、共享缓冲区等参数;定期执行
VACUUM/ANALYZE,清理无效/陈旧数据,降低表膨胀对磁盘的压力。
- 使用受支持的 PostgreSQL 版本,按需调整连接池、共享缓冲区等参数;定期执行
- 缓存与连接
- 合理配置 Redis 作为会话与缓存后端,避免频繁落盘;结合实例规格调整 Unicorn/Sidekiq 并发数,减少资源争用与异常堆积导致的额外写入。
五 快速处置命令清单
- 查看占用:
sudo du -xh /var/opt/gitlab | sort -rh | head -20 - 停止/启动:
sudo gitlab-ctl stop/sudo gitlab-ctl start - 重新配置:
sudo gitlab-ctl reconfigure - 迁移仓库数据:
sudo rsync -av /var/opt/gitlab/git-data/repositories /new/path/ - 立即备份:
/opt/gitlab/bin/gitlab-rake gitlab:backup:create - 清理旧备份:
find /var/opt/gitlab/backups/ -name "*.tar" -mtime +7 -delete - 调整 Prometheus 保留期或关闭(编辑 gitlab.rb 后
reconfigure):- 保留 15 天:
prometheus['flags'] = { 'storage.tsdb.retention.time' => "15d", ... } - 关闭:
prometheus['enable'] = false[4,5,6,7]
- 保留 15 天:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu gitlab怎样优化存储空间
本文地址: https://pptw.com/jishu/769592.html
