iostat — 디스크 I/O 통계
Linux / 장애 진단 및 복구 / iostat.html
💬 "iostat 명령어"
iostat은 디스크별 I/O 처리량과 지연을 보여줍니다. 스토리지 병목을 특정합니다.
특히 %util과 await(지연)를 봅니다.
- tps: 초당 I/O 요청 수입니다.
- kB_read/s, kB_wrtn/s: 초당 읽기/쓰기량입니다.
- await: 평균 대기 시간(ms)입니다. 높으면 병목입니다.
- %util: 장치 사용률입니다. 100%에 가까우면 포화입니다.
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-x | 확장 통계(await, %util)를 표시합니다 |
<간격> <횟수> | 예: iostat -x 1 5 |
-d | 디스크 통계만 표시 |
-m | MB 단위로 표시 |
필수 명령어 조합 3가지
iostat -x 1 3— 디스크별 확장 통계 관찰iostat -xm 1 3 | grep -E 'Device|vdb'— 특정 디스크만 보기iostat -d -m 1 3— MB 단위 처리량 확인
💬 "이 명령어 결과를 파일로 남기는 예시 보여줘"
실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.
1단계 · 통계 관찰
확장 통계를 몇 초간 봅니다.
iostat -x 1 3
2단계 · 포화 장치 특정
%util과 await가 큰 장치를 찾습니다.
iostat -x 1 3 | awk '$1=="vdb"'
3단계 · 원인 프로세스
해당 장치를 쓰는 프로세스를 찾습니다.
iotop -o -b -n 1 2>/dev/null | head || ps -eo pid,comm | head
실무에서는 이렇게 씁니다
1. 디스크 포화 진단
상황 — 서비스가 느리고 wa가 높습니다.
iostat -x 1 3
결과 — %util이 100%에 가까운 장치와 높은 await가 확인됩니다.
포인트 — 해당 장치에 몰리는 프로세스를 찾아 부하를 분산합니다.
2. 백업 시간대 판단
상황 — 백업이 서비스에 영향을 주지 않는 시간대를 찾습니다.
iostat -xm 1 5
결과 — 시간대별 처리량을 비교해 여유 있는 창을 정합니다.
포인트 — 백업은 kB_wrtn/s가 낮은 구간에 배치합니다.
주의할 점
- 첫 측정값은 평균이라 무시하고 이후 값을 봅니다.
- 가상/클라우드 디스크는 지연 특성이 달라 수치 해석에 주의합니다.
- iotop 등 추가 도구가 없으면 ps/df와 함께 추정합니다.
실제 실행 화면
디스크별 I/O 지연과 사용률을 확인한 결과입니다(%util 포화).

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.