본문 바로가기

Gitlab 서버를 설치하고 바로 DATA저장소 위치를 적절한 곳으로 설정한다면 아주 간단한 문제입니다.
그냥 gitlab.rb에서 git_data_dirs({"default" => { "path" => "/var/opt/gitlab/git-data" }})의 위치만 변경해 주면 되기 때문입니다. 하지만… 큰 문제는 미처 DATA저장소 위치를 변경하지 않고 운영을 하던 중 늦게 실수를 깨닫게 된 경우 입니다.

"지금까지 열심히 쌓여있는 DATA는 어떻게 되는거지!!! 아!! 어떡하지.. 어떡하지…"

이런 탄식이 절로 나옵니다. 제가 그랬으닌까요 ㅠㅠ

저는 불행히도 에러를 만나고서야 무언가 잘못되었다는 것을 알게 되었습니다. 클라우드를 사용하고 있었는데 시스템이 설치되어 있는 작은 용량의 드라이브에 많은 데이터가 들어가다보니 Full이 나서 gitlab서버가 500 error502 error을 토해내고 있었습니다. 그래서 제 경험담을 바탕으로 다시는 이런 일이 생기지 않도록 정리를 해 두려고 합니다.

Gitlab서버의 DATA저장 위치 변경하기

먼저 기본적인 DATA 저장 위치를 변경하는 방법입니다.
telnet이나 ssh로 리눅스의 터미널에 접속을 합니다.

1. gitlab 설정파일 수정하기

gitlab의 설정파일은 /etc/gitlab/폴더에 gitlab.rb이라는 파일입니다. 해당 파일을 엽니다.

sudo vi /etc/gitlab/gitlab.rb

열린 파일에서 git_data_dirs 설정 부분을 찾아 이동합니다. 보통 아래와 같이 주석처리가 되어 있는 것을 볼 수 있습니다. # 주석처리가 되어 있으면 이 라인은 실행되지 않습니다.

# git_data_dirs({
#   "default" => { "path" => "/var/opt/gitlab/git-data" },
# })

2. 기본(default) 저장소 지정

주석(#)을 해제하고 저장 경로위치를 원하는 위치로 수정하면 됩니다.

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

이제 gitlab의 저장소 DATA는 /data/git-data에 저장이 됩니다.

3. 다중( multiple repository storage ) 저장소 지정

저장위치는 여러 군데 저장도 가능한데, 아래와 같이 저장소 위치를 추가할 수 있습니다.
이때 반드시 "default"는 존재해야 합니다.

 git_data_dirs({
   "default" => { "path" => "/data/git-data" },
   "nfs_1" => { "path" => "/mnt/nfs1/git-data" },
   "nfs_2" => { "path" => "/mnt/nfs2/git-data" }
 })

이렇게 지정된 저장소는 gitlab 설정화면에서 선택하여 지정할 수 있습니다.
Storage nodes for new projects

4.설정 수정 반영하기

설정을 변경하면 항상 아래의 명령어로 재구성시켜 적용해야 합니다.

sudo gitlab-ctl reconfigure

혹시나 이렇게 해도 반영이 되지 안으면 시작 또는 재시작 명령어도 한번 해보세요

# 시작 명령어
sudo gitlab-ctl start

# 재시작 명령어
sudo gitlab-ctl restart

Gitlab서버의 DATA저장 위치를 변경하기

이제 드디어 열심히 운영 중에 갑자기 저장소 위치를 변경하는 방법입니다.
겁먹지 말고 리눅스 명령어로 /var/opt/gitlab/git-data/data/git-data로 복사 또는 이동하면 됩니다.
그리고 저장소 위치를 git_data_dirs({ "default" => { "path" => "/data/git-data" } }) 변경 해 주면 됩니다

1. gitlab 서버 중지하기

먼저 gitlab서버를 중지합니다.

sudo gitlab-ctl stop

2. DATA 저장소 이동/복사하기

data폴더를 원하는 위치로 이동하면 되지만 혹시 몰라 원본을 보호하기 위한 차원으로 아래와 같이 복사를 하고 정상적으로 작동이 되는지 확인을 한 후에 원래 위치에 있던 data를 지우는 것이 좋습니다. data는 소중하닌까요.

sudo rsync -av /var/opt/gitlab/git-data/repositories /data/git-data/

고맙게도 windows와는 달리 이렇게 data저장소 폴더만 복사해도 정상적으로 적용이 됩니다.

3. DATA 저장소 변경하기

gitlab.rb에서 아래 위치를 찾아서 저장 경로 위치를 변경합니다.

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

4. 설정 수정 반영하기

설정을 변경하면 아래의 명령어로 재구성하여 적용해야 합니다.

sudo gitlab-ctl reconfigure

5. gitlab 서버 시작하기

이제 완료가 되었으니 서버를 다시 시작하면 됩니다.

sudo gitlab-ctl start

기타

혹시나 경로의 오류가 발생한다면 캐쉬를 초기화 한번 해보면 해결 될 수도 있습니다.

gitlab-rake cache:clear Rails_ENV=production

새롭게 저장위치를 추가했다면 해당 폴더에 gitlab이 접근할 수 있도록 권한을 확인해 보셔야 합니다.
권한이 없다면 아래의 명령어로 접근권한을 줄 수 있습니다.

chown -R git:git /data/git-data/

이상입니다.

어쩌다보니여기까지

고급지게 만들어 저렴하게 배포는 공작소

0