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

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

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

【问题讨论】:

    标签: git gitlab


    【解决方案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
    

    【讨论】:

    【解决方案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

        【讨论】:

        • 绝对的救星。我只是将一些存储库移到了一个新驱动器上,然后当我看到“这是一个空白/空存储库”消息时,我有一个纯粹的恐惧时刻。找到了这个,它修复了一切。非常感谢
        猜你喜欢
        • 2011-08-23
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        • 2021-04-29
        • 1970-01-01
        • 2022-06-10
        • 1970-01-01
        • 2015-05-09
        相关资源
        最近更新 更多