서버를 운영하다 보면 대게는 DB나 Log파일에 의해 디스크 부족 현상이 생기곤 합니다.
이럴 때 첫 번째로 쉽게 df명령을 통해 디스크가 어느 부분에서 많이 사용되는지를 체크해 볼 수 있습니다.
제가 서버를 운영하면서 가장 큰 문제가 되었던 부분은 바로 저 위에 /dev/xvda3 부분입니다.
이 부분 영역 자체가 17G로 작고 시스템 설정 파일 등을 빼면 실제 가용 가능한 크기는 12G 정도밖에 되지 않습니다.
만약 리눅스상에 문제나 실행등으로 Log가 쌓여서 17G를 넘어서게 되면 연관된 프로그램 등이
디스크가 깨지는 문제등이 발생해서 서버 운영 시에는 이 부분은 가장 중요한 부분 중 하나입니다.
만약 /dev/xvda3이 가득 찼다고 가정하에 그럼 어떻게 해야 하는가??
먼저 /dev/xvda3(다른 디렉토리도 마찬가지) 및 전체적으로 보았을 때
용량을 많이 차지하고 있는 파일을 찾아야 해결이 가능합니다.
하지만 제가 처음 접 글 할 때에는 이 부분이 굉장히 난해했는데요.
mount 명령을 통해서 본다 해도 이게 내 가사 용한 어느 폴더인지 자체가
명확히 구분이 가지 않았기 때문입니다.
간단하게 해당 경로의 디렉터리가 어느 Filesystem에 연결되어 있는지 그리고 또한
그 Filesystem은 용량이 얼마나 되는지 확인하려면
df .
명령을 사용해서 확인 가능합니다.
일단 저는 home 디렉터리가 어디인지 확인해보도록 하겠습니다.
그림에서 보이듯이 home 디렉터리는 /dev/xvda3과 mount 되어 있으며 지금까지 사용한
용량은 30% 정도라고 정보가 나옵니다.
그렇다면 /dev/xvda3은 home 하고만 연동되어 있는가??
아닙니다.
home 디렉터리는 /dev/xvda3에 연결된 하나의 mount일 뿐입니다.
자 이렇게 까지 본다면 먼저 home디렉터리 내에 파일을
du -h를 통해 /dev/xvda3의 용량을 먹고 있는 실질적인 폴더인지 확인합니다.
만약 home디렉터리가 원인이였다면 이 home 디렉토리 내의 파일 용량을 줄이는 것으로
디스크 문제는 해결이 됩니다.
하지만 아까도 말했듯이 home디렉터리는 하나의 mount일 뿐이고
근본적인 원인이 아니라고 한다면 home디렉터리 외의 용량을 많이 먹는파일을 찾아야 합니다.
리눅스에서는 용량이 큰 파일을 추적하여 파일로 저장해주는 명령어가 있습니다.
du -ckx | sort -n > /tmp/duck-root
이렇게 명령을 실행하면 /tmp 디렉토리 내에 duck-root라는 이름의 파일이 생성됩니다.
tail -f /tmp/duck-root
를 실행하면 파일 용량이 큰 순서대로 아래서부터 정렬되어 출력하게 됩니다.
디스크 에러의 주된 파일을 찾아서 정리하거나 용량을 줄여주면 디스크 용량 부족 문제를 해결할 수 있습니다.
'서버 > 리눅스' 카테고리의 다른 글
[Linux] 파일 내용만 지우기 (0) | 2021.09.15 |
---|---|
[Linux] 오픈소켓 확인 / Open Socket Count (0) | 2021.09.13 |
[Linux] TCP/IP란? (0) | 2021.09.13 |
[Linux] 시간 동기화 (0) | 2021.09.09 |
[Linux] 클라우드 CIP란? (0) | 2021.08.25 |
댓글