서론

이전에 live server의 disk used 이슈가 발생해 해결했던 경험 정리

 

사용량 확인

df #디스크 사용량 확인
df -m #메가 단위로 확인
df -h #깔끔하게 보기 (메가는 메가 기가는 기가로 표시 해줌)

du -h #현재 디렉토리에서 모든 하위 디렉토리 및 파일 용량 확인
du -sh * #현재 디렉토리에 있는 얘들만 용량 확인

먼저 어디서 disk를 많이 쓰고 있는지 확인하자

여기서 주로 df -h로 디스크를 얼만큼 사용중인지 확인

(-h는 human-readable 옵션으로 사람이 읽기 좋게 G, M 등으로 표시)

 

그냥 root 디렉토리에서 du -h를 쓰면 os내 모든 디렉토리 및 파일 목록이 다 나와 보기가 매우 힘들다

du -sh *를 이용해 한 단계 디렉토리만 확인하여 단계별로 추적해가자.

 

찾아낸 서버의 문제는 매일 서버 log를 저장 하는데 몇 년간 로그가 쌓이면서 이슈가 발생한 것

 

로그 제거

sudo find -name '*.out.*' -mtime +180 |xargs sudo rm

sudo find -name '*log.*' -mtime +180 |xargs sudo rm

find -mtime 옵션은 수정된 날짜에 따라 찾기

+180은 수정된 지 180일 이후의 것들을 찾아오고

-180은 180일 이내의 것들을 찾아온다.

 

ctime = change time  

mtime = modify time 

atime = access time

 

현재 서버에서 6개월 이후의 로그는 필요 없기에 6개월을 기준으로 찾아온다.

 

이후 찾은 로그들을 xargs를 이용해 찾아온 내용을 제거 해준다.

 

자동화

매번 로그가 쌓일 때마다 위 과정을 반복할 필요 없도록 자동화 시켜주자.

 

리눅스에서는 쉽게 주기적 실행을 할 수 있는 Crontab이 있다.

 

위의 로그 제거 명령어를 쉘 스크립트로 만들어 두고 주기적으로 실행 하도록 crontab에 넣어주면 된다.

 

crontab -e

#텍스트 에디터 실행

0 0 1 * * /directory/delete_log.sh #매달 1일 0시 0분 실행

 

+ Recent posts