...
해시 구성에 /etc/gitlab/gitlab.rb
에 git_data_dirs({})
로 구성되며, 스토리지 레이아웃은 정의 된 샤드에 적용된다.
Hashed storage
...
새로 생성되거나 이름이 변경된 리포지토리에 Hashed storage 경로를 사용하며 Disk에 리포지토리를 저장하기 위해서 고정되지 않는 해시 기반 경로 및 리포지토리 이름을 사용한다.
프로젝트 URL과 저장소가 디스크에 저장되는 폴더 구조를 결합하는 대신 프로젝트 ID를 기반으로 해시를 결합한다. 따라서 폴더 구조를 변경할 수 없으므로 URL에서 디스크 구조로 상태를 동기화해야 할 필요가 없습니다. 즉, 그룹, 사용자 또는 프로젝트 이름을 바꾸면 데이터베이스 트랜잭션 비용만 발생하고 즉시 적용된다.
...
해시는 디스크에 리포지토리를 보다 고르게 분산시키는데 도움이 되므로 최상위 디렉터리에는 총 최상위 네임 스페이스보다 적은 수의 폴더가 포함됩니다.
해시 형식은 SHA256의 16진 표현
SHA256(project.id)
을 기반으로 하며 최상위 폴더는 처음 2자를 사용하고 다음 2자가있는 다른 폴더를 사용하며 존 레거시 스토리지 프로젝트와 공존 할 수 있도록 둘 다 특수 폴더@hashed
에 저장됩니다 .
Code Block |
---|
# Project's repository:
"@hashed/#{hash[0..1]}/#{hash[2..3]}/#{hash}.git"
# Wiki's repository:
"@hashed/#{hash[0..1]}/#{hash[2..3]}/#{hash}.wiki.git" |
2. Storage nodes for new repositories
새 리포지토리의 스토리지 노드, 새 리포지토리에 사용할 수 있는 구성된 스토리지를 선택한다.
...