리눅스는 시스템의 다양한 정보를 /proc 디렉토리 하위에 있는 파일을 통해 제공한다. 이번 포스트에서는 /proc/diskstats 파일에 대해 알아보자.
/proc/diskstats 파일
/proc/diskstats 파일은 시스템에 있는 블록 디바이스들의 입출력 통계 정보를 출력해준다. cat 명령을 통해 /proc/diskstats 파일의 내용을 조회해보면 블록 디바이스 이름과 다양한 숫자들이 화면에 출력된다.
[root@6f9963e1a7aa /]# cat /proc/diskstats
252 0 vda 13523 61 847172 2801 1330009 31047 225631031 1399426 0 870390 1523579 4707 0 386812040 173 64168 121177
252 1 vda1 26 0 208 1 0 0 0 0 0 40 1 0 0 0 0 0 0
252 2 vda2 59 0 4416 4 0 0 0 0 0 50 4 0 0 0 0 0 0
252 3 vda3 158 61 10922 11 5 0 16 0 0 100 11 0 0 0 0 0 0
252 4 vda4 13183 0 827906 2775 1330004 31047 225631015 1399425 0 870350 1402374 4707 0 386812040 173 0 0
특정 디바이스에 대한 diskstats 정보를 확인하려면 파이프라인으로 뒤에 "grep 디바이스이름"을 붙여주면 된다.
따로 헤더 정보가 출력되지 않아 각 필드들이 어떤 정보를 의미하는지 파악하는게 다소 어렵긴하다. /proc/diskstats 파일의 필드별 의미는 다음과 같다.
필드 순서 | 의미 |
1 | major number |
2 | minor number |
3 | 디바이스 이름 |
4 | 성공한 읽기 요청 횟수 |
5 | 병합된 읽기 횟수 |
6 | 성공적으로 읽은 섹터 수 |
7 | 읽기 작업에 소요된 시간 (ms) |
8 | 성공한 쓰기 요청 수 |
9 | 병합된 쓰기 횟수 |
10 | 성공적으로 쓰여진 섹터 수 |
11 | 쓰기 작업에 소요된 시간(ms) |
12 | 현재 진행중인 입출력 작업 |
13 | 입출력에 소요된 시간 (ms) |
14 | 입출력에 소요된 가중치가 적용된 시간 (ms) |
15 | 성공적으로 완료된 폐기 수 |
16 | 병합된 폐기 수 |
17 | 폐기된 섹터 수 |
18 | 폐기에 소요된 시간 |
19 | 성공적으로 종료된 Flush 요청 수 |
20 | Flush 하는데 소요된 시간 |
뒤쪽 필드들은 커널 버전이 올라가면서 추가된 정보다. 커널 버전이 오래된 경우 표시되지 않을 수도 있다.
/proc/diskstats 파일의 내용을 주기적으로 수집해 집계해두면 장비의 입출력 상황을 모니터링 할 수 있고, 장비에 입출력 관련 이상상황이 있을 때 빠르게 문제를 파악할 수 있다.
댓글