관리 메뉴

KorSA

Gitlab의 용량이 Full이 되었을 때 해결법 본문

Development Experience/*Ops

Gitlab의 용량이 Full이 되었을 때 해결법

Praiv. 2021. 6. 1. 21:21
320x100

 

 

 

 

이 글은 내가 관리하던 회사 Gitlab의 용량이 Full이 된 후 겪게 된 삽질을 다룬다.

 

때는 지난주 금요일, 함께 일하는 동료가 나에게 Gitlab 접속이 되지 않는다며 확인해달라고 한 게 시작이었다. Gitlab 웹 페이지에 접속을 시도하니 정말 5XX 에러가 뜨고 있었다. Putty로 Gitlab이 운영되고 있는 Ubuntu 서버에 접속해서 이것저것 확인해보니 디스크 용량의 Usage가 100%를 치고있던 것이었다…! 더욱이 이 하드 디스크의 용량은 고작 500GB밖에 되지 않았다. 지금까지 500GB 짜리 하나 믿고 Gitlab을 쓰고 있었다니… 곧바로 회사의 남는 하드 디스크를 공수하기 시작했다. 다행히 4TB짜리 놀고 있는 하드 디스크가 있어서 곧바로 Gitlab, 더 나아가서는 이 Gitlab을 작동시키는 Docker의 용량 확보를 위한 작업에 착수했다.

 

※참고> Linux 터미널에서 명령어를 사용하다가 Permission Denied 등이 뜰 경우 sudo 명령어로 root 권한을 얻어서 진행하길 바란다. 이와 더불어, 나는 cd 명령어를 수행할 때 권한 문제가 자꾸 발생하여 sudo chmod로 디렉터리의 접근 권한을 수정하며 폴더 이동을 했었다. cd 명령어는 shell에서 제공해주는 명령어이기 때문에 sudo cd가 먹히질 않았기 때문이다. 좋은 방법이었는지는 모르겠지만 혹 권한 문제로 어려움을 겪는 분들께 조그만 힌트라도 됐으면 한다.

 

1.     PC에 새로운 하드 디스크 꼽기

새로운 하드 디스크를 PC에 추가하려면 두 종류의 선을 알아야 한다. 하나는 전원을 제공해주는 ‘파워 서플라이’이고, 다른 하나는 데이터를 송수신하기 위한 ‘SATA 케이블’이다. 파워 서플라이는 PC 본체에 있기 때문에 이 선을 이용하면 되지만, SATA 케이블은 PC 전문점이나 다이소 등에서 몇 천원주고 사와야 한다.

 

2.     Ubuntu OS에 새로운 하드 디스크 인식시키기

Windows OS와 다르게 Ubuntu OS는 새로운 하드를 자동으로 인식하지 않는다. 따라서 사용자가 직접 하드 디스크를 마운트 시켜야 한다.

 

이 작업에서 참조한 글> https://seongkyun.github.io/others/2019/03/05/hdd_mnt/

 

3.     Docker 서비스 중지

새로운 하드를 Ubuntu OS에서 인식할 수 있는 상태가 되면, 이제 본격적으로 docker를 다뤄볼 차례이다. 우선 현재 동작 중인 docker 프로세스를 중지시킨다.

$ systemctl stop docker

 

4.     Docker 파일 이동하기

/var/lib/docker에 있는 docker 파일들을 새로운 하드 디스크의 경로로 이동시킨다. 여기서 새로운 하드의 경로는 각자 상황에 맞춰 개별적으로 지정해주면 된다. 나의 경우 /hdd_ext/hdd4000 경로에 docker 파일들을 놓기로 했다. 여기서 시간이 꽤나 소요된다. 나는 290GB를 옮겨야했기 때문에 명령어를 실행시켜놓고 퇴근했다.

$ mv /var/lib/docker [새 하드의 경로(나의 경우 /hdd_ext/hdd4000)]

 

5.    옮겨진 Docker 폴더 확인하기

/var/lib/docker에 있는 파일들이 모두 옮겨지면 ‘[새 하드의 경로] + /docker’ 폴더를 볼 수 있다. 나의 경우는 ‘/hdd_ext/hdd4000/docker’ 폴더이다.

 

6.    Docker 경로 변경하기 (심볼릭 링크 또는 Root Directory 수정)

여기서 기존의 /var/lib/docker를 심볼릭 링크로 사용하는 방법과 docker의 Root Directory를 직접 변경하는 방법 두 가지가 있다. 나는 개인적인 뻘짓으로 인해 심볼릭 링크를 사용하는 방법을 포기하고 docker의 Root Directory를 직접 변경했는데, 이 글을 보는 분들은 심볼릭 링크를 활용해도 좋을 듯 하다. 심볼릭 링크를 활용하는 방법은 아래에 레퍼런스를 남겨둔다.

 

심볼릭 링크를 활용하는 방법에 관한 글> https://archive.formellow.com/it/834

 

7.    Docker Root Directory 확인하기

위의 심볼릭 링크를 사용할 게 아니라면 마저 이 글을 따라오면 된다. 우선, /var/lib/docker에 있는 파일을 모두 옮겼으므로 Docker Root Directory를 변경해 주어야 한다. 기존의 Docker Root Directory를 확인하는 명령어는 다음과 같다.

$ docker info | grep ‘Docker Root Dir’

 

8.    docker.service 파일 열기

/lib/systemd/system/docker.service 파일을 연다.

$ vi /lib/systemd/system/docker.service

 

9.  docker.service 파일에서 Docker Root Directory 수정하기

ExecStart=/usr/bin/dockerd -H unix://

로 되어있는 라인을 주석으로 만든다. 주석은 라인 맨 앞에 '#'을 붙이면 된다.

#ExecStart=/usr/bin/dockerd -H unix://

이렇게.

 

그리고 아래와 같이 한 줄을 추가한다. (때에 따라 docker.service의 접근 권한을 chmod로 수정하고, vi sudo vi로 실행해야 할 수도 있다.)

ExecStart=/usr/bin/dockerd --graph='새로운 docker 폴더 경로 + /docker'

 

9.   docker.service 파일 저장하기

:wq 명령어로 변경한 내용을 저장한 후 vim을 빠져 나온다.

 

10.  데몬 reload하기

자, 이제 변경할 부분들은 다 변경했다. 이제는 docker를 다시 올리면 된다. 우선 데몬을 reload 한다.

$ systemctl daemon-reload

 

11.  Docker 실행시키기

$ systemctl start docker

 

12. Docker의 Root Directory의 변경 확인하기

docker의 Root Directory가 새로운 디스크의 docker 경로로 변경되었는지 확인한다.

$ docker info | grep 'Docker Root Dir’

 

13. Docker Container들의 마운트 상태 확인하기

docker container들이 잘 마운트 되었는지 확인한다. (나는 여기서 아무런 docker container가 나오지 않아서 오전 내내 식은 땀을 흘렸다. 뭐지.. 내가 회사 Gitlab을 망가뜨린 건가? 라는 생각이 계속 들었다. 1시간 반 동안의 삽질 끝에 원인은 docker의 Root Directory 경로가 잘못 입력되어 있었던 것이었다. Docker의 Root Directory를 설정할 때에는 새로운 하드 디스크의 docker 경로를 정확히 입력해주자.)

$ docker ps -a

 

14.   Gitlab Docker Container의 STATUS 확인하기

Gitlab docker container의 STATUS가 healthy 상태이면 정상적으로 Gitlab이 실행되었음을 알 수 있다.

 

 

 

728x90
728x90

'Development Experience > *Ops' 카테고리의 다른 글

Rocky OS selinux 무한 재부팅  (0) 2022.02.07
GCP(Google Cloud Platform)와 MLOps  (0) 2022.01.04
SonarQube 라이센스 구입기  (0) 2021.06.15
Gitlab CI/CD vs Jenkins CI/CD  (0) 2021.01.27
git abort 명령어가 안먹힐 때  (0) 2020.09.08
Comments