basyura's blog

あしたになったらほんきだす。

GitLab - Hashed Storage

v10.0 からリポジトリパス(/var/opt/gitlab/git-data/repositories 配下のパス)をハッシュ化する機能がリリースされていて、v12.0 でデフォルト ON に変更された。

プロジェクト名やグループを変更した際にディスクのパスが変更されていたけど、プロジェクトID を hash 化したパスを使うことでそれがなくなった。特定のグループに偏ることなくフラットに配置されるので色々とディスクに優しくなるらしい。

管理画面でプロジェクトのパスを確認できる。

To access the Projects page, go to Admin Area > Overview > Projects
and then open up the page for the project.
The “Gitaly relative path” is shown there, for example:
"@hashed/b1/7e/b17ef6d19c7a5b1ee83b907c595526dcb1eb06db8227d650d5dda0a9f4ce8cd9.git"

新規のプロジェクトを Hashed Storage にするかは管理画面で設定できる。

1. Go to Admin > Settings > Repository and expand the Repository Storage section.
2. Select the Use hashed storage paths for newly created and renamed projects checkbox.

ID 指定で migration できる。

sudo gitlab-rake gitlab:storage:migrate_to_hashed ID_FROM=50 ID_TO=100

逆に元のプロジェクト名のフォルダ構成に戻す方法もある

sudo gitlab-rake gitlab:storage:rollback_to_legacy

Rails console から該当プロジェクトを引く方法もある。

Project.find(16).disk_path
ProjectRepository.find_by(disk_path: '@hashed/b1/7e/b17ef6d19c7a5b1ee83b907c595526dcb1eb06db8227d650d5dda0a9f4ce8cd9').project

いろいろ機能追加されていってて便利に。