v10.0 からリポジトリパス(/var/opt/gitlab/git-data/repositories
配下のパス)をハッシュ化する機能がリリースされていて、v12.0 でデフォルト ON に変更された。
プロジェクト名やグループを変更した際にディスクのパスが変更されていたけど、プロジェクトID を hash 化したパスを使うことでそれがなくなった。特定のグループに偏ることなくフラットに配置されるので色々とディスクに優しくなるらしい。
- Geo: Make hashed storage a hard requirement in 12.0
- Hashed Storage is enabled by default on new installations
- hashed-storage
管理画面でプロジェクトのパスを確認できる。
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
いろいろ機能追加されていってて便利に。