해당 포스팅은 인프런 "리눅스 성능 분석 시작하기" 를 수강하고 정리한 글입니다 :)
- 리눅스 기반 os 에서 돌아가는 서버 시스템의 성능 측정 및 장애 대응에 대한 학습 내용 정리 글 입니다.
💡 리눅스 성능 분석의 기본 명령어
명령어 | 역할 |
uptime | 시스템 가동 시간, Load Average 확인 |
dmesg | 커널 메세지 확인 (OOME 발생 여부, SYN Flooding 여부) |
free | 메모리 사용 현황 확인 |
df | 디스크 여유 공간 및 inode 공간 확인 |
top | 프로세스들의 상태, CPU 사용률, 메모리 사용률 확인 |
netstat | 네트워크 연결 정보 확인 |
tcpdump | 네트워크 트러블 슈팅 분석을 위한 패킷 수집 명령어 |
✅ df 명령어
- df는 리눅스 환경에서, 디스크의 여유 공간과 inode 의 공간을 확인할 수 있는 명령어 입니다.
- "df -h" 명령어로, 파티션들을 볼 수 있습니다. ( -h : human readable 사람이 해석하기 좋은 출력결과로 해주는 옵션)
- 파티션 별로 사용중인 used 영역, 전체 크기, 더 사용할 수 있는 크기, 사용중인 %, 각각의 파티션들의 어디에 마운트 되어있는지 확인할 수 있다.
✔️ 디스크 사용량 모니터링이 중요한 이유
파일 시스템이 100%가 된다면?
- 사진처럼 root 파티션이 꽉차게 되면 "No space left on device" 라는 에러를 띄우면서 디스크가 full이 되었음을 알려줍니다.
- 이렇게 되면 어떤 명령어도 제대로 동작하지 않고, 최악의 경우 ssh 접속도 불가능해지는 경우도 생길 수 있습니다.
✔️ 디렉터리 별 사용량 측정
du -sh ./*
- root(/) 디렉터리 하위 디렉토리 중 어떤 마운트 포인트가 디스크를 과하게 사용하고 있는지 확인하는 방법
- 루트 디렉토리에서 해당 명령어를 사용하면, 루트 하단의 모든 디렉토리를 방문하면서 사용량을 보여 줍니다.
❗️ 만약, 아래 사진과 같이파일을 지웠는데 용량이 안늘어난다면 파일 핸들을 확인해 보아야 합니다.
- 파일을 삭제해도 df 로 확인하면 파일 용량을 그대로 잡고있음을 확인할 수 있음
- 막상 해당 디렉토리를 확인하면 파일은 없음
✔️ 파일 핸들
- 파일 핸들(Handle)이란, A 라는 프로세스가 어떤 파일을 읽을 때, 이 파일을 누군가가 참조하고 있음을 기록하는 것입니다.
- 핸들은 운영체제 내부에 있는 어떤 리소스의 주소를 정수로 치환한 값입니다.
- 그리고 리소스의 주소와 이 핸들 값을 한 쌍으로 묶어서 관리하는데 이것을 '핸들 테이블'이라고 합니다.
- 📌 결론적으로 이 파일 핸들이 지워지지 않으면, 파일도 용량이 확보되지 않습니다.
파일 핸들 삭제 방법
- lsof : 파일 핸들을 확인하는 명령어
- lsof 를 이용해 grep 으로 삭제할 파일을 찾은 후 어떤 프로세스가 삭제할 파일을 참조하고 있느지 (열고 있는지) 확인할 수 있음
- → 이렇게 프로세스를 종료하면 파일 핸들이 반환되고 실제로 파일이 지워집니다.
✅ inode 사용률 확인하기
df 명령어는 디스크 여유 공간 및 inode 공간을 확인할 수 있습니다. 이제 inode 에 대해서 알아보고자 합니다
✔️ inode란
- 파일 또는 디렉터리에 대한 메타데이터를 저장하는 구조체 = 파일과 디렉터리의 개수
- 즉, 파일과 디렉터리가 얼마나 많은가를 표현하는 컬럼입니다.
df -i
- df -h 는 용량을, df -i는 개수를 표현
- 아래 그림에서 IUsed가 각 파티션에서 사용하고 있는 파일과 디렉터리의 존재 개수를 나타냅니다.
📌 정리
- ✔️df 명령어를 이용해서 디스크 여유 공간 및 inode 공간을 확인할 수 있다.
- ✔️ 간혹 파일 핸들이 남아서 파일을 지웠지만, 용량이 확보되지 않는경우가 있음 그때는 lsof 명령어로 해당 파일핸들(어떤 프로세스에서 파일을 참조하고있는지) 를 확인하자
- ✔️ inode는 파일과 디렉터리의 개수로 생각하면 된다.
- ✔️inode 에도 최대값이 있으며 그 이상 파일을 만들수 없다는 의미
'운영체제 > Linux' 카테고리의 다른 글
[Linux] netstat - 리눅스 네트워크 연결 정보 (0) | 2023.09.01 |
---|---|
[Linux] top - 리눅스 CPU 사용량 보기 (0) | 2023.08.31 |
[Linux] free - 메모리 사용량 확인하기 (0) | 2023.08.24 |
[Linux] dmesg - 리눅스 커널 로그 메세지 확인하기 (OOME, SYN Flooding) (0) | 2023.08.23 |
[Linux] uptime - 서버가 받고있는 부하 평균 측정 및 대응하기 (0) | 2023.08.22 |