66
votes

my basic disk is full for my gitlab installation, is it possible to move the repositories and their data to some other folder and make sure that the upcoming push's data is sent to those directories?

I tried stopping the gitlab and copying over the entire folder, but to no avail. PS - I am not an IT guy, I am just pitching in to see how could we get out of this issue; so please be verbose when answering.

6

6 Answers

132
votes

Just updating in case people still refer to this. From the GitLab documentation:

By default, omnibus-gitlab stores the Git repository data under /var/opt/gitlab/git-data. The repositories are stored in a subfolder repositories. You can change the location of the git-data parent directory by adding the following line to /etc/gitlab/gitlab.rb.

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

Starting from GitLab 8.10 you can also add more than one git data directory by adding the following lines to /etc/gitlab/gitlab.rb instead.

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

Note that the target directories and any of its subpaths must not be a symlink.

Run sudo gitlab-ctl reconfigure for the changes to take effect.

If you already have existing Git repositories in /var/opt/gitlab/git-data you can move them to the new location as follows:

# 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
12
votes

Much easier solution for new installs with the version > 7.14.1:

Open the gitlab.rb configuration file

sudo nano /etc/gitlab/gitlab.rb

Search for git_data_dir, uncomment the line and set your directory here, e.g.

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

Save the file and reconfigure Gitlab:

sudo gitlab-ctl reconfigure
5
votes

I just moved my gitlab repositories folder from one directory to another, might be useful for someone (do this quickly at a quiet time or stop gitlab beforehand!)

Assuming you have a standard install the steps are

  • Create a new folder for repos as root and change the owner to the git user
  • Copy (with archive, recursive options) the old repo folder contents to its new home cp -ar SOURCE DESTINATION
  • Edit the gitlab config file and the gitlab-shell config files with the new repo path
  • Restart gitlab sudo /etc/init.d/gitlab restart
3
votes

If you're getting the cannot find repo error in GitLab after running the above steps. Run this command.

gitlab-rake cache:clear RAILS_ENV=production

This should fix the issue if your pathing is correct.

2
votes

you need append this small config bellow:

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

And

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

Done.

1
votes

In my case, I needed to move a repository from the default storage to storage1
If you load the project's general setting, it show the project number, for example 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

clearing the cache is probably a good idea too

gitlab-rake cache:clear RAILS_ENV=production