gitlab 存储仓库目录设置及数据迁移

本文介绍如何解决因GitLab默认安装导致的数据目录空间不足问题。通过重新配置存储位置,将仓库数据迁移到新挂载的磁盘,确保长期稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:一开始没有考虑到把gitlab划分好存储目录,占用系统磁盘,由于gitlab是默认安装的,随着公司代码越来越多,导致gitlab数据目录空间不足

磁盘空间:

[root@gitlab ~]# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      ext4       40G   25G   13G  67% /

注:因为使用的阿里云服务,所以考虑另挂载一块磁盘专用于gitlab存储。
······ 云盘挂载,磁盘分区就直接略过。

设置存储仓库数据

默认情况下omnibus-gitlab 将仓库数据存储在 /var/opt/gitlab/git-data目录下,仓库存放在子目录 repositories里面。 以可以通过修改/etc/gitlab/gitlab.rb 的这一行来自定义 git-data 的父目录

[root@gitlab ~]#  vim /etc/gitlab/gitlab.rb 
# 把注释取消然后指定新的仓库存储位置
git_data_dirs({ "default" => { "path" => "/home/gitlab-data" } })

注: /home/gitlab-data 是我新挂载的目录,
注意 :目标路径和其子路径必须不能为软链接。

使设置生效

1.1 ,在没有数据的情况下

[root@gitlab ~]#  gitlab-ctl stop
[root@gitlab ~]# gitlab-ctl reconfigure //使修改生效

1.2,如果 /var/opt/gitlab/git-data 目录已经存在Git仓库数据, 你可以用下面的命令把数据迁移到新的位置:

# 准备迁移之前要停止GitLab服务,防止用户写入数据。
[root@gitlab ~]# gitlab-ctl stop

# 注意 'repositories'后面不带斜杠,而
# '/home/gitlab-data'后面是有斜杠的。
[root@gitlab ~]# rsync -av /var/opt/gitlab/git-data/repositories /home/gitlab-data/

# 如果需要修复权限设置,
# 可运行下面的命令进行修复。
[root@gitlab ~]# gitlab-ctl reconfigure

# 再次检查下  /home/gitlab-data 的目录. 正常情况应该有下面这个子目录:
# repositories

[root@gitlab ~]# ls  /home/gitlab-data/
repositories
# 完工! 启动GitLab,验证下是否能
# 通过web访问Git仓库。
[root@gitlab ~]# gitlab-ctl start

设置存储仓库数据的备用目录

注意的是:自GitLab 8.10开始,可以通过在/etc/gitlab/gitlab.rb文件中添加下面的几行配置, 来增加多个 git 数据存储目录。

git_data_dirs({
  "default" => { "path" => "/var/opt/gitlab/git-data" },  //默认存储目录
  "alternative" => { "path" => " /home/gitlab-data" }     //备用存储目录
})
<think>好的,用户想了解如何使用rsync进行GitLab数据迁移,特别是最佳实践和配置方法。首先,我需要回忆一下rsync的基本用法和它在数据迁移中的优势,比如增量同步和断点续传。然后,结合GitLab的数据结构,确定需要迁移的关键目录和配置文件,比如/home/git/git-data、/etc/gitlab和/var/opt/gitlab这些路径。 接下来,用户提到之前的问题是关于在不停机的情况下迁移数据到云端,而引用中提到了rsync可能因为公网传输和数据量大需要较长时间。所以,这里需要考虑到GitLab数据迁移可能也需要在不停机的情况下进行,或者至少尽量减少停机时间。可能需要步骤进行,先做全量同步,然后在维护窗口做最后的增量同步,以减少停机时间。 另外,用户可能关心迁移过程中的配置调整,比如目标服务器的GitLab配置是否需要修改,如何保持权限一致,以及迁移后的验证步骤。需要确保迁移后的数据权限正确,否则GitLab可能无法正常运行。同时,要提醒用户在迁移完成后重新配置GitLab并重启服务,以及如何验证数据完整性。 还要考虑使用rsync的哪些参数更适合这种场景,比如-avz来保持文件属性和压缩传输,--progress显示进度,--delete删除目标端多余文件。如果数据量大,可能需要使用--bwlimit限制带宽,避免影响线上服务。此外,排除某些临时文件或缓存目录,比如./cache,可以节省时间和带宽。 用户可能还会遇到问题,比如迁移后的权限问题,或者如何在迁移过程中最小化服务中断。需要给出具体步骤,比如首次全量同步,之后多次增量同步,最后在维护窗口进行最后一次同步并切换服务。同时,建议备份配置,避免配置错误导致的问题。 最后,生成相关问题时要围绕用户的需求扩展,比如迁移后的验证、处理权限问题、增量同步频率、断点续传、带宽限制以及替代工具等,帮助用户全面了解相关知识点。</think>### GitLab数据迁移rsync最佳实践 一、关键迁移路径说明 1. 核心数据目录:`/home/git/git-data`(仓库存储) 2. 配置文件目录:`/etc/gitlab`(包含所有配置和密钥) 3. 应用数据目录:`/var/opt/gitlab`(数据库、Redis等) 4. 备份目录:`/var/opt/gitlab/backups`(可选迁移) 二、步迁移方案 1. **首次全量同步**(服务可运行) ```bash rsync -avz --progress --delete \ /home/git/git-data/ \ user@new-server:/home/git/git-data/ ``` *参数说明*:`-a`保持文件属性,`-v`显示进度,`-z`压缩传输,`--delete`保持目录同步 2. **增量同步阶段**(建议每小时执行) ```bash rsync -avz --progress --bwlimit=50m \ --exclude='repositories/@hashed/*' \ /home/git/git-data/ \ user@new-server:/home/git/git-data/ ``` *优化项*:`--bwlimit`限制带宽,`--exclude`排除哈希目录减少重复传输[^1] 3. **最终同步窗口**(需停机维护) ```bash systemctl stop gitlab-runsvdir rsync -avz --delete \ /etc/gitlab/ \ user@new-server:/etc/gitlab/ ``` 三、配置验证要点 1. 目标服务器安装相同版本GitLab 2. 检查文件权限: ```bash sudo chown -R git:git /home/git/git-data ``` 3. 重建配置: ```bash sudo gitlab-ctl reconfigure sudo gitlab-ctl restart ``` 四、迁移验证方法 ```bash # 仓库完整性检查 sudo gitlab-rake gitlab:check # 数据一致性验证 find /home/git/git-data -type f -exec md5sum {} + | sort > source.md5 ssh new-server "find /home/git/git-data -type f -exec md5sum {} + | sort" | diff -u source.md5 - ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值