웹 서버는 다양한 데이터를 담고 있으며
스토리지가 부족하다면 로그파일의 문제일 가능성이 큽니다.
주요 로그파일 경로 , 서버에서 용량이 큰 파일을 확인할 수 있는 명령어와
좀비프로세스 제거법에 대해 서술하겠습니다. ( 해당 명령이 왜 필요한지는 후술합니다.)
1. 주요 로그파일 경로
먼저 로그로테이트가 적용되지 않았다는 전제 하에
관리를 하지 않는다면 용량이 무시무시하게 클 수 있는 로그들을 설명하겠습니다.
1. /var/log/messages
시스템 로그가 총집합되는 경로에 위치한 messages 로그입니다
리눅스 커널 로그와 종합적인 로그가 저장되기 때문에 관리하지 않을 시 용량이 굉장히 커질 수 있습니다.
2. apache-tomcat/logs/catalina.out (상위 디렉토리 로그는 tomcat을 설치한 위치마다 달라질 수 있습니다)
톰캣 서버에서 발생한 모든 일을 작성하는 로그입니다.
이 또한 로그로테이트나 자체적으로 conf 파일을 조작하지 않을 경우 용량이 커질 수 있습니다.
2. 서버에서 일정 용량 이상인 파일 찾기
해당 파일이 아닌 경우 du -sh 스크립트를 사용하여 용량순으로 정렬하여 확인합니다.
du 명령어는 디렉토리의 모든 파일 및 하위 디렉토리를 스캔해야 하기 때문에
루트 디렉토리에서 실행할 경우 모든 하위 디렉토리를 스캔하므로 엄청나게 느려집니다.
du -sh * | sort -hr
- du: 지정된 경로의 용량을 계산합니다.
- -sh: du 명령어에서 -s와 -h 옵션을 사용합니다. -s 옵션은 지정된 경로 내의 총 용량만 출력하도록 설정하고, -h 옵션은 사람이 읽기 쉬운 형식으로 출력하도록 설정합니다.
- *: 와일드 카드로 현재 디렉토리에서 모든 파일을 대상으로 du 명령어를 실행합니다.
- |: "파이프" 기호는 하나의 명령의 출력을 다른 명령의 입력으로 전달하는 데 사용됩니다.
- sort: 출력을 정렬하는 명령입니다. 기본적으로 알파벳순으로 정렬되며, -h 옵션은 숫자 값으로 정렬하고, -r 옵션은 역순으로 정렬합니다.
du -sh * 명령은 현재 디렉토리에 있는 모든 파일과 하위 디렉토리의 용량을 계산하고,
-h 옵션을 사용하여 보기 쉬운 형식으로 출력합니다.
3. 시스템에 열려있는 파일 목록 출력하여 좀비 프로세스 제거하기
서버에서 너무 큰 용량의 파일을 지울 경우 정상적으로 지워지지 않고
해당 프로세스가 파일 디스크럽터를 돌고 있을 수 있습니다.
해당 명령어를 입력하여 확인합니다.
/usr/sbin/lsof / | grep deleted
해당 명령은 시스템 전체에서 열려있는 파일 목록을 출력하고,
목록에서 "deleted"라는 키워드가 포함된 라인만 필터링하여 출력합니다.
해당 명령어로 나오는 프로세스 ID를 확인 후 kill을 사용하여 강제 종료하면 됩니다.
kill -9 12345