更改数据目录 gitlab 以将 repos 存储在其他地方

Posted

技术标签:

【中文标题】更改数据目录 gitlab 以将 repos 存储在其他地方【英文标题】:change the data directory gitlab to store repos elsewhere 【发布时间】:2013-11-23 00:32:15 【问题描述】:

我的 gitlab 安装的基本磁盘已满,是否可以将存储库及其数据移动到其他文件夹并确保即将推送的数据发送到这些目录?

我尝试停止 gitlab 并复制整个文件夹,但无济于事。 PS - 我不是 IT 人,我只是想看看我们如何才能摆脱这个问题;所以请在回答时详细说明。

【问题讨论】:

【参考方案1】:

只是更新以防人们仍然提到这个。来自 GitLab documentation:

omnibus-gitlab 默认将 Git 仓库数据存储在 /var/opt/gitlab/git-data。存储库存储在子文件夹中 repositories。您可以更改git-data 父级的位置 通过将以下行添加到 /etc/gitlab/gitlab.rb 来创建目录。

git_data_dirs("default" => "/mnt/nas/git-data")

从 GitLab 8.10 开始,您还可以添加多个 git 数据 通过将以下行添加到/etc/gitlab/gitlab.rb 目录 而是。

git_data_dirs(
  "default" => "/var/opt/gitlab/git-data",
  "alternative" => "/mnt/nas/git-data"
)

请注意,目标目录及其任何子路径都不能是 符号链接。

运行 sudo gitlab-ctl reconfigure 以使更改生效。

如果您已经拥有现有的 Git 存储库 /var/opt/gitlab/git-data 您可以将它们移动到新位置 如下:

# Prevent users from writing to the repositories while you move them.
sudo gitlab-ctl stop

# Note there is _no_ slash behind 'repositories', but there _is_ a
# slash behind 'git-data'.
sudo rsync -av /var/opt/gitlab/git-data/repositories /mnt/nas/git-data/

# Fix permissions if necessary
sudo gitlab-ctl reconfigure

# Double-check directory layout in /mnt/nas/git-data. Expected output:
# gitlab-satellites  repositories
sudo ls /mnt/nas/git-data/

# Done! Start GitLab and verify that you can browse through the repositories in
# the web interface.
sudo gitlab-ctl start

【讨论】:

另见gitlab.com/gitlab-org/omnibus-gitlab/blob/… 不需要启动 Postgres 来让 gitlab-ctl reconfigure 工作吗? @Stéphane 当前链接:gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/… sudo gitlab-ctl reconfigure 命令非常重要,因为不这样做会在 GitLab 中导航时产生一些 502 错误,甚至更糟。 单次repo转账呢?【参考方案2】:

更简单的解决方案对于版本 > 7.14.1 的新安装:

打开gitlab.rb配置文件

sudo nano /etc/gitlab/gitlab.rb

搜索git_data_dir,取消注释该行并在此处设置您的目录,例如

git_data_dir "/storage/data/gitlab/git-data"

保存文件并重新配置 Gitlab:

sudo gitlab-ctl reconfigure

【讨论】:

【参考方案3】:

我刚刚将我的 gitlab 存储库文件夹从一个目录移动到另一个目录,可能对某人有用(在安静的时间快速执行此操作或提前停止 gitlab!)

假设你有一个标准安装步骤是

以 root 身份为 repos 创建一个新文件夹并将所有者更改为 git 用户 将旧的 repo 文件夹内容复制(使用存档、递归选项)到它的新主页 cp -ar SOURCE DESTINATION 编辑 gitlab 配置文件用新的 repo 路径编辑 gitlab-shell 配置文件 重启gitlabsudo /etc/init.d/gitlab restart

【讨论】:

我忘记编辑 gitlab-shell config.yml 并且我的推送被钩子拒绝了,这帮助我意识到了问题,谢谢! 不适用于 wiki。 UPD:也用于存储库。难道我做错了什么?在 cp -ar SOURCE* DESTINATION/ 之后,我在 SOURCE forlder .git 和 .wiki.git 中删除【参考方案4】:

如果您在运行上述步骤后在 GitLab 中收到 cannot find repo 错误。运行此命令。

gitlab-rake cache:clear RAILS_ENV=production

如果您的路径正确,这应该可以解决问题。

【讨论】:

你拯救了我的一天!【参考方案5】:

你需要在下面附加这个小配置:

git_data_dirs(
    "default" => 
        "path" => "/srv/gitlab/git-data"
    
)

rsync -av /var/opt/gitlab/git-data/* /srv/gitlab/git-data/.
chown -R git:git /srv/gitlab/git-data/
sudo gitlab-ctl reconfigure

完成。

【讨论】:

【参考方案6】:

就我而言,我需要将存储库从 default 存储移动到 storage1 如果加载项目的通用设置,它会显示项目编号,例如37

sudo gitlab-rails console
irb(main):012:0> p37 = Project.find(37)
irb(main):009:0> p37.repository_storage
=> "default"
irb(main):010:0> p37.repository_storage = 'storage1'
irb(main):011:0> p37.save
=> true
irb(main):012:0>  # <ctrl>+d to send EOF and exit

清除缓存也可能是个好主意

gitlab-rake cache:clear RAILS_ENV=production

【讨论】:

绝对的救星。我只是将一些存储库移到了一个新驱动器上,然后当我看到“这是一个空白/空存储库”消息时,我有一个纯粹的恐惧时刻。找到了这个,它修复了一切。非常感谢

以上是关于更改数据目录 gitlab 以将 repos 存储在其他地方的主要内容,如果未能解决你的问题,请参考以下文章

linux更改gitlab存储位置

修改Gitlab代码仓库存储目录

修改Gitlab代码仓库存储目录

Gitlab:推送向 repo 注册,但管道未运行且项目 dashbaord 'last updated' 未更改

设置 GitLab CI/CD 以将多个存储库部署到 DigitalOcean Droplet 上的 Docker 容器

gitlab仓库存储位置的修改方法