디스크를 찾고 있는지 어떻게 감지합니까?


16

다양한 도구를 사용하여 현재 시스템을 통해 흐르는 디스크 I / O의 볼륨을 측정 할 수 있습니다 (예 : iotopiostat). 디스크가 적은 양만으로도 많은 것을 찾고 있는지 쉽게 감지 할 수 있는지 궁금합니다. I / O

나는 그것을 사용 하여이 정보를 추출 blktrace한 다음 해독 할 수 btt있지만 다소 다루기 힘들고 더 간단한 대안이 있기를 바랐습니까?


4
귀를 드라이브 가까이에 두십시오? :)
terdon

2
낮은 비율 (rkB/s + wkB/s)/%util이 디스크가 ( iostat -x)을 찾고 있음을 나타내서는 안 됩니까?
Marco

1
이 라이브를 보여주는 도구를 원하십니까? 아니면 일정 기간 동안 데이터를 보려고하십니까?
slm

1
AFAIK, kernel.org/doc/Documentation/iostats.txt 는 커널에 의해 유지되는 유일한 통계이므로 blktrace보다 더 나은 것을 기대하지는 않습니다.
Stéphane Chazelas

답변:


4

결과의 비율 (rkB/s + wkB/s)/%utiliostat -x다음과 같은 통찰력을 제공합니다.

Device:  rrqm/s wrqm/s   r/s   w/s  rkB/s  wkB/s avgrq-sz avgqu-sz await r_await w_await  svctm  %util
sda        0.04   3.65  7.16  6.37 150.82 212.38    53.71     0.03  1.99    0.82    3.31   0.76   1.03

이 비율이 디스크 탐색과 정확히 일치하는지 잘 모르겠습니다. 그러나 디스크 사용량이 많고 처리량이 많지 않다면 디스크를 찾는 것이 좋습니다. 그러나 보장되지는 않습니다. 손상된 디스크는 때때로 높은 활용도를 보이며 처리량이 거의 없습니다. 그러나 그것은 적어도 지표입니다.

iostat -x 5업데이트 간격을 지정 하기 위해 iostat에 숫자를 제공 할 수도 있습니다 (예 :) . 그렇게하면 지속적으로 모니터링 할 수 있습니다.


아마도 낮은 rkB / s와 쌍을 이루는 많은 읽기 요청은 그러한 상황을 나타내는 것일 수 있습니다.
Gearoid Murphy

8

이러한 유형의 정보를 실시간으로 또는 일정 기간 동안 표시하는 도구를 찾고 있는지 확실하지 않지만 액세스되는 디스크의 실시간 측면을 보여주는 두 가지 도구가 있습니다.

nmon

당신은 그렇게 호출합니다 nmon. 그런 다음 j(파일 시스템)을 누른 다음 d(디스크 I / O 그래프 D = 통계) 를 누르십시오 . 자세한 내용은 내장 도움말 ( h)을 참조하십시오.

$ nmon
┌nmon─13g─────────────────────Hostname=manny────────Refresh= 2secs ───11:15.32─────────────────────────────────────────────────────┐
│ Filesystems ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│
│Filesystem            SizeMB  FreeMB %Used Type     MountPoint                                                                    │
│v/mapper/ubuntu-root 465389.0 457483.9   1.7 ext4     /                                                                           │
│/proc                                      proc     not a real filesystem                                                         │
│/sys                                       sysfs    not a real filesystem                                                         │
│/sys/fs/fuse/connections                   fusectl  not a real filesystem                                                         │
│/sys/kernel/debug                          debugfs  not mounted                                                                   │
│/sys/kernel/security                       security not a real filesystem                                                         │
│/dev                                       devtmpfs not a real filesystem                                                         │
│/dev/pts                                   devpts   not a real filesystem                                                         │
│tmpfs                  740.5   739.4   0.1 tmpfs    /run                                                                          │
│none                     5.0     5.0   0.0 tmpfs    /run/lock                                                                     │
│none                  1851.2  1849.8   0.1 tmpfs    /run/shm                                                                      │
│none                   100.0    99.9   0.1 tmpfs    /run/user                                                                     │
│/dev/sda1              910.9   606.5  33.4 ext2     /boot                                                                         │
│/run/rpc_pipefs                            rpc_pipe fstatfs returned zero blocks!!                                                │
│/run/user/emma/gvfs                        fuse.gvf not mounted                                                                   │
│/run/user/emily/gvfs                       fuse.gvf not mounted                                                                   │
│ Disk I/O ──/proc/diskstats────mostly in KB/s─────Warning:contains duplicates─────────────────────────────────────────────────────│
│DiskName Busy  Read WriteMB|0          |25         |50          |75       100|                                                    │
│sda      100%    0.0   66.4|RWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW>                                                    │
│sda1       0%    0.0    0.0|>                                                |                                                    │
│sda2       0%    0.0    0.0|>                                                |                                                    │
│sda5     100%    0.0   66.4|RWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW>                                                    │
│dm-0     100%    0.0   48.0|RWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW>                                                    │
│dm-1       0%    0.0    0.0|                     >                           |                                                    │
│Totals Read-MB/s=0.0      Writes-MB/s=180.9    Transfers/sec=363.2                                                                │
│──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│

내가 접한 또 다른 도구는 적어도 디스크 I / O의 라이브 뷰입니다 atop.

$ atop
ATOP - grinchy                           2013/08/23  11:10:58                           ------                           10s elapsed
PRC | sys    2.18s  | user  26.26s  | #proc    315  | #trun  5 |  #tslpi   764 |  #tslpu     1 |  #zombie    0 |  #exit  1 |
CPU | sys      22%  | user    264%  | irq       0%  | idle    110% |  wait      4% |  guest     0% |  curf 1.20GHz |  curscal  44% |
cpu | sys       5%  | user     76%  | irq       0%  | idle     19% |  cpu003 w  0% |  guest     0% |  curf 1.20GHz |  curscal  44% |
cpu | sys       5%  | user     67%  | irq       0%  | idle     26% |  cpu001 w  2% |  guest     0% |  curf 1.20GHz |  curscal  44% |
cpu | sys       5%  | user     62%  | irq       0%  | idle     31% |  cpu000 w  1% |  guest     0% |  curf 1.20GHz |  curscal  44% |
cpu | sys   7%  | user     58%  | irq   0%  | idle     34% |  cpu002 w  1% |  guest     0% |  curf 1.20GHz |  curscal  44% |
CPL | avg1    3.83  | avg5    4.59  | avg15   4.76  |              |  csw    54101 |  intr   45315 |               |  numcpu     4 |
MEM | tot     7.6G  | free  194.3M  | cache 495.5M  | dirty   2.7M |  buff   38.9M |  slab   86.7M |               |               |
SWP | tot     5.7G  | free    5.5G  |               |              |               |               |  vmcom  12.4G |  vmlim   9.5G |
LVM | nchy-lv_home  | busy     11%  | read       1  | write    524 |  KiB/w      3 |  MBr/s   0.00 |  MBw/s   0.20 |  avio 2.05 ms |
LVM | nchy-lv_root  | busy      1%  | read       0  | write      7 |  KiB/w  4 |  MBr/s   0.00 |  MBw/s   0.00 |  avio 9.00 ms |
DSK |          sda  | busy     11%  | read       1  | write    109 |  KiB/w 19 |  MBr/s   0.00 |  MBw/s   0.20 |  avio 10.3 ms |
NET | transport     | tcpi  72  | tcpo     118  | udpi      15 |  udpo   5 |  tcpao     11 |  tcppo      0 |  tcprs      0 |
NET | network       | ipi       87  | ipo      123  | ipfrw      0 |  deliv     87 |               |  icmpi      0 |  icmpo      0 |
NET | wlan0   ----  | pcki      88  | pcko     123  | si   34 Kbps |  so   19 Kbps |  erri       0 |  erro       0 |  drpo       0 |

  PID  RUID       EUID       THR    SYSCPU    USRCPU   VGROW    RGROW    RDDSK   WRDSK   ST   EXC  S   CPUNR    CPU  CMD         1/4
 3649  saml       saml        34     0.33s    11.98s      0K    1752K       4K   2828K   --     -  R       2   122%  chrome
10399  saml       saml         4     0.14s     3.08s   5120K   -12.8M       0K      0K   --     -  S       2    32%  chrome

특히 LVM 및 DSK 활동을 보여주는 다음 행은 다음과 같습니다.

    LVM | nchy-lv_home  | busy     11%  | read       1  | write    524 |  KiB/w      3 |  MBr/s   0.00 |  MBw/s   0.20 |  avio 2.05 ms |
    LVM | nchy-lv_root  | busy      1%  | read       0  | write      7 |  KiB/w  4 |  MBr/s   0.00 |  MBw/s   0.00 |  avio 9.00 ms |
    DSK |          sda  | busy     11%  | read       1  | write    109 |  KiB/w 19 |  MBr/s   0.00 |  MBw/s   0.20 |  avio 10.3 ms |

iostat

일정 기간 동안 데이터에 관심이 있다면 iostat아마도 스크립트로 싸인 최고의 옵션 일 것입니다. 활용도 출력을 제거하여보다 쉽게 ​​처리 할 수 ​​있습니다.

$ iostat -dx /dev/sda 5
Linux 2.6.35.14-106.fc14.x86_64 (grinchy)   08/23/2013  _x86_64_    (4 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               1.82    96.60    3.84   20.68   122.26   891.99    41.36     0.46   18.77   7.35  18.01

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00    26.20    1.60   24.60    17.60   350.40    14.05     0.31   11.95   8.84  23.16

커널에서 직접

이 코드 블록 (bash)은 커널에서 직접 처리 된 읽기 I / O를 보여줍니다.

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

출처 : /server//a/525248/2518

이 정보는 또한에서 하나가있을 수 있습니다 /sys/block/sda/stat또는 /proc/diskstats위치를 할 수없는 상황에서 또는 도구를 설치하지 않습니다.

참고 문헌


자세한 답변에 감사하지만 제공 한 메트릭은 여전히 ​​I / O에 중점을 둡니다. 이상적으로 I / O 처리량에 관계없이 디스크 탐색 활동을보고 싶습니다
Gearoid Murphy

@GearoidMurphy-I / O 외부의 디스크 액세스에 대한 이러한 유형의 원격 측정 데이터를 얻는 방법을 보지 못했습니다.
slm

Marco가 위의 의견에서 그것을 명했다고 생각합니다. 솔루션은 디스크 트랜잭션과 실제 데이터 읽기 / 쓰기 양의 비율을 보는 것입니다.
Gearoid Murphy

1
@GearoidMurphy-그렇기 때문에 실시간 유형의 솔루션을 원했는지 또는 기간 유형을 원했는지에 대한 의견을 명확하게 요청했습니다. 당신이 실행 가능한 솔루션을 생각해 내면 나는 그것을 답으로 작성하고 받아 들일 것입니다. 이것에 대한 특정 경사를 검색 할 때별로 많지 않았습니다.
slm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.