본문 바로가기
Linux/명령어

[Linux] iostat 명령어 사용법 - 디스크 사용량 모니터링

by A6K 2022. 6. 3.

iostat는 디스크 입출력에 대한 통계정보를 측정할 수 있는 명령어다. 처리량이나 사용률, 대기열 길이와 트랜잭션 비율 그리고 서비스 시간 등의 정보를 확인할 수 있다.

리눅스 시스템을 운영하면서 갑자기 서버에 부하가 높다던가 서버의 응답속도가 저하되는 경우가 발생할 때 디스크 입출력에서 문제가 생긴게 아닌지 모니터링하고 문제를 찾을 수 있다.

목차

    iostat 설치

    iostat은 sysstat 패키지를 설치하면 사용할 수 있다.

    $ sudo yum install sysstat
    
    or
    
    
    $ sudo apt install sysstat

    iostat 사용법

    iostat 명령어를 이용하면 디스크 디바이스에 대한 입출력 정보를 확인할 수 있다.

    $ iostat [옵션] [인터벌] [횟수]

    iostat의 옵션 뒤에는 인터벌과 횟수를 의미하는 숫자가 온다. 인터벌은 몇 초마다 디스크 디바이스의 정보를 출력할 것인지, 횟수는 몇 번 수집할 것인지를 의미한다.

    기본적으로 iostat은 CPU 정보와 함께 시스템에 마운트되어 있는 디바이스의 정보를 함께 표시해준다.

    $ iostat
    Linux 2.6.32-754.11.1.el6.x86_64 (myhost)   2022년 06월 01일        _x86_64_        (40 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              18.85    0.00    2.42    0.00    0.00   78.73
    
    Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
    sda              35.08      1318.71      2753.02 135111327948 282067923024

    만약 CPU 정보만 출력하고 싶으면 -c 옵션을 사용하면 된다. 다음은 1초마다 CPU 정보를 총 3번 출력하라는 명령어다.

    $ iostat -c 1 3
    Linux 2.6.32-754.11.1.el6.x86_64 (myhost)   2022년 06월 01일        _x86_64_        (40 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              18.85    0.00    2.42    0.00    0.00   78.73
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              35.56    0.00    6.00    0.00    0.00   58.44
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              31.52    0.00    4.20    0.00    0.00   64.28

    만약 디스크 디바이스 정보만 출력하고 싶으면 -d 옵션을 사용하면 된다. 다음은 1초마다 디스크 디바이스 정보를 총 3번 출력하라는 명령어다.

    $ iostat -d 1 3
    Linux 2.6.32-754.11.1.el6.x86_64 (myhost)   2022년 06월 01일        _x86_64_        (40 CPU)
    
    Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
    sda              35.08      1318.70      2753.01 135111327972 282068410232
    
    Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
    sda              37.00         0.00       872.00          0        872
    
    Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
    sda              43.00         0.00       744.00          0        744

    시스템에는 여러개의 디스크 디바이스들이 마운트되어 있을 수 있다. 그리고 그 디바이스는 여러개의 파티션으로 분할되어 사용될 수 있다.

    iostat 명령어를 이용해 특정 디바이스에 대한 정보만을 확인하고 싶으면 -p 옵션을 사용해서 디바이스 이름을 넘겨주면 된다. 그러면 그 디바이스와 디바이스의 파티션에 대한 정보를 출력한다.

    $ iostat -p sda
    Linux 2.6.32-754.11.1.el6.x86_64 (myhost)   2022년 06월 01일        _x86_64_        (40 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               1.04    0.00    0.47    0.26    0.00   98.23
    
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               7.08       476.47       795.11 4353309764 7264577912
    sda1              7.08       476.45       795.11 4353073584 7264577912

    시스템에 마운트되어 있고 사용하지 않고 있는 디바이스들이 있을 수 있다. -z 옵션을 사용하면 실제 활성화되어 사용중인 디바이스에 대한 정보만을 표시한다.

    $ iostat -z
    Linux 2.6.32-754.11.1.el6.x86_64 (myhost)   2022년 06월 01일        _x86_64_        (40 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              18.85    0.00    2.42    0.00    0.00   78.73
    
    Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
    sda              35.08      1318.71      2753.02 135111327948 282067923024

    -x 옵션을 사용하면 확장된 통계 정보를 출력한다.

    $ iostat -x
    Linux 2.6.32-754.11.1.el6.x86_64 (myhost)   2022년 06월 01일        _x86_64_        (40 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
              18.85    0.00    2.42    0.00    0.00   78.73
    
    Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    sda               0.07   320.11   11.06   24.01  1318.69  2753.00   116.08     0.02    0.51    0.50    0.51   0.13   0.46

    iostat 출력 정보

    iostat이 출력하는 CPU 사용과 관련된 정보는 다음과 같다.

    %user CPU가 User 모드에서 사용된 시간의 비율
    %nice 작업 우선순위 정책에 의해 우선순위가 바뀐 프로세서가 사용한 시간의 비율
    %system CPU가 시스템 모드에서 사용된 시간의 비율
    %iowait 디스크 입출력을 기다리는데 사용된 시간의 비율
    %steal Steal CPU의 작동시간
    %idle 디스크 입출력을 대기하지 않은 유휴상태의 시간 비율

    디스크 디바이스와 관련된 정보는 다음과 같다.

    tps  디스크 디바이스에서 초당 처리한 입출력 작업의 개수
    Blk_read/s 디스크에서 초당 읽어들인 블럭의 개수
    Blk_wrtn/s 디스크로 초당 쓰여진 블럭의 개수
    Blk_read 총 읽어들인 블럭 개수
    Blk_wrtn 총 쓰여진 블럭 개수
    kB_read/s 디스크로부터 읽은 데이터의 양(초당 킬로바이트)
    kB_wrtn/s 디스크로 쓰여진 데이터의 양 (초당 킬로바이트)
    kB_read  디스크로부터 읽은 데이터의 총량(킬로바이트)
    kB_wrtn  디스크로 쓰여진 데이터의 총량 (킬로바이트)
    MB_read/s 디스크로부터 읽은 데이터의 양(초당 메가바이트)
    MB_wrtn/s 디스크로 쓰여진 데이터의 양 (초당 메가바이트)
    MB_read 디스크로부터 읽은 데이터의 총량(메가바이트)
    MB_wrtn 디스크로 쓰여진 데이터의 총량(메가바이트)
    rrqm/s 디바이스 큐에 대기중인 초당 읽기 요청의 건수
    wrqm/s 디바이스 큐에 대기중인 초당 쓰기 요청의 건수
    r/s 디바이스에 요청한 초당 읽기 요청의 건수
    w/s 디바이스에 요청한 초당 쓰기 요청의 건수
    rsec/s 디바이스에서 초당 읽어들인 섹터의 개수
    wsec/s  디바이스로 초당 기록한 섹터의 개수
    rkB/s  디바이스에서 읽어들인 초당 데이터의 양 (킬로바이트)
    wkB/s  디바이스로 쓴 초당 데이터의 양 (킬로바이트)
    rMB/s 디바이스에서 읽어들인 초당 데이터의 양 (메가바이트)
    wMB/s  디바이스로 쓴 초당 데이터의 양 (메가바이트)
    avgrq-sz  디바이스에 요청한 초당 평균 데이터의 크기
    avgqu-sz 디바이스에 요청한 초당 평균 큐 길이
    await 디바이스에서 처리되기 위해서 요청된 입출력의 평균 시간. (큐에서 소요된 시간과 처리된 시간이 합쳐져 출력)
    svctm  디바이스에서 처리한 입출력의 평균 시간
    %util  디바이스에서 요청한 입출력 작업을 수행하기 위해 사용한 CPU 시간의 비율. 이 값이 100%에 근접할 경우 디바이스가 Saturation(한계에 도달) 되었다고 판단할 수 있음

    iostat 명령어 옵션

    옵션 설명
    -c  cpu 사용량 출력
    -d 디스크 사용량 출력
    -k 블럭 단위에서 킬로바이트로 정보 출력
    -m 블럭 단위에서 메가바이트로 정보 출력
    -p 파티션 당 통계 포함
    -t 타임스탬프 출력
    -x 확장 정보
    -z 사용량이 0인 정보는 제외

     

    댓글