정기적으로 디스크에 쓰는 프로세스를 찾는 방법은 무엇입니까?


40

디스크에 지속적으로 쓰는 프로세스를 어떻게 알 수 있습니까?

나는 조용한 워크 스테이션을 좋아하고 조용한 팬 등을 갖춘 새로운 시스템 (P8B75-M + Core i5 3450-최대 TDP가 낮으므로 's')을 구축하고 데비안 Wheezy 64 비트를 설치했습니다. 그 위에.

그리고 무언가가 내 신경에 닿아 있습니다 : 하드 디스크가 쓰거나 무언가를 찾고있는 것과 같은 일종의 패턴을들을 수 있습니다 ( tick ... tick ... tick ... trrrrrr 헹구고 매 초 정도 반복).

과거에는 과거 (많은, 몇 년 전)에 비슷한 문제가 있었고 CUPS 로그 또는 다른 것으로 밝혀졌고 그 중 하나를 (실제) RAM 디스크로 리디렉션했습니다.

그러나 나는 확실하지 않다.

나는 다음을 시도했다.

ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp

그러나 아무것도 바뀌지 않습니다.

이제 이상한 점은 LVM 암호 해독 암호를 입력하라는 메시지가 표시 될 때 패턴이 들린다는 것입니다.

방금 설치 한 커널 / 시스템에 문제가 있거나 하드 디스크에 결함이 있습니까?

hdparm -tT /dev/sda 올바른 HD 속도 (130 GB / s 비 캐시, sata 6GB)를보고하고 문제없이 이미 큰 소스 (Emacs)에서 설치하고 컴파일 했으므로 시스템이 나쁘지 않다고 생각합니다.

(HD는 Seagate Barracude 500GB입니다)


다른 소음이 아닌 소음을 일으키는 하드 드라이브입니까? (PSU 팬을 포함하여 팬을 확인하십시오. 매우 얇은 케이블이 팬에 너무 가까울 때 한 번 매우 이상한 클릭 음이 발생했으며 때로는 블레이드에 약간 살짝 닿아 몇 번의 "딸깍"소리가납니다 ...)
Mat

@Mat : 케이스 밖에서 하드 드라이브를 가져와 (커넥터가 충분히 길어야 함) 다시보고하겠습니다. )
Cedric Martin

2
디스크 파일 시스템이 relatime 또는 noatime으로 마운트되었는지 확인하십시오. 파일 읽기로 인해 액세스 시간을 기록하기 위해 쓰기가 inode에 발생할 수 있습니다.
camh

답변:


42

어떤 프로그램 iotop이 보여주고 있는지 조사하려고 했습니까 ? 어떤 종류의 프로세스가 현재 디스크에 쓰고 있는지 정확하게 알려줍니다.

출력 예 :

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
 1033 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [flush-8:0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]

1
그 팁 주셔서 감사합니다. 나는 iotop 에 대해 몰랐다 . 데비안에서는 apt-cache search iotop 을 수행하여 iotopapt-get 해야한다는 것을 알았습니다 . 매우 멋진 명령입니다!
세드릭 마틴

3
나는 iotop -o -b -d 10매 10 초마다 디스크에 읽고 쓰는 프로세스 목록과 사용 된 IO 대역폭의 양을 인쇄합니다.
ndemou 2016 년

15

/ var / log / syslogecho 1 > /proc/sys/vm/block_dump 에서 디버깅 메시지 를 통해 IO 디버깅을 활성화 한 다음 디버깅 메시지를 볼 수 있습니다 . 이는 과거 활동이있는 일부 유형의 로그 파일을 얻는 반면 현재 활동 만 표시 하는 이점이 있습니다 .iotop


3
block_dump가 활성화 될 때 sysloging을 활성화 된 상태로 두는 것은 정말 미친 짓입니다. 로깅은 디스크 활동을 유발하여 로깅을 유발하여 디스크 활동 등을 유발합니다.이를 활성화하기 전에 syslog를 중지하는 것이 좋습니다 (dmesg를 사용하여 메시지 읽기)
dan3

효과가 묘사 한 것처럼 극적이지는 않지만 당신은 절대적으로 옳습니다. 디스크 활동을 간단히 살펴 보려면 syslog 디먼을 중지 할 필요가 없습니다.
scai

나는 약 2 년 전에 그것을 시도했고 내 컴퓨터를 멈췄습니다. 요즘에는 중요한 달리기가 없을 때 다시 시도하겠습니다. :)
dan3

나는 그것을 시도했지만 아무 일도 일어나지 않았다. 특히 파일 시스템 버퍼링으로 인해. syslog에 쓰기가 디스크에 대한 쓰기를 즉시 트리거하지는 않습니다.
scai

1
로그 메시지에 대해 일반적인 속도 제한이 있다고 가정하고이 경우도 처리합니다 (?)
Volker Siegel

5

디스크 소음이 디스크 스핀 다운 문제가 아닌 쓰기를 유발하는 프로세스로 인한 것으로 가정하면 감사 서브 시스템을 사용할 수 있습니다 ( auditd패키지 설치 ). sync통화와 친구를 감시하십시오 .

auditctl -S sync -S fsync -S fdatasync -a exit,always

에서 로그를 확인하십시오 /var/log/audit/audit.log. 감사 로그 자체가 플러시되면이 작업을 수행하지 않도록주의하십시오! 옵션이로 설정 되어 /etc/auditd.conf있는지 확인하십시오 .flushnone

파일이 자주 플러시되는 경우 시스템 로그가 원인 일 수 있습니다. 예를 들어, 실패한 들어오는 연결 시도를 기록하고 누군가가 컴퓨터를 조사하는 경우 많은 항목이 생성됩니다. 이로 인해 디스크가 기관총 스타일 노이즈를 방출 할 수 있습니다. 기본 로그와 데몬 Sysklogd의, 검사 /etc/syslog.conf: 로그 파일 이름이 선행되지 않을 경우 -로그가 각 쓰기 후에 디스크로되어 다음.


@StephenKitt Huh. 아 케르는 데비안을 언급 했으므로 데비안 패키지에 대한 링크로 변경했습니다.
Gilles 'SO- 악마 그만해

3

귀하의 드라이브가 자동으로 회전하고있을 수 있으며, 오늘날 많은 소비자 급 드라이브가 그렇게합니다. 불행히도 약간로드 된 시스템에서도 드라이브 속도가 지속적으로 감소했다가 다시 증가합니다. 특히 hddtemp를 실행하거나 드라이브 온도를 모니터링하기 위해 비슷한 경우 (대부분의 드라이브는 바보로 SMART 온도 값을 쿼리 할 수 ​​없습니다) 드라이브를 돌리지 않고-크레 틴!).

많은 드라이브가 제한된 수의 파크 사이클을 갖기 때문에 이것은 성 가실 일뿐 만 아니라 드라이브를 더 빨리 마모시킬 수 있습니다. 예를 들어 https://bugs.launchpad.net/ubuntu/+source/hdparm/+bug/952556 에서 문제에 대한 설명을 참조 하십시오 .

다음과 같은 비트 코드로 모든 드라이브에서 유휴 스핀 다운을 비활성화합니다. /etc/rc.boot 스크립트 나 /etc/rc.local 또는 이와 유사한 곳에 넣을 수 있습니다.

/ dev / sd의 디스크? ; 하다
  / sbin / hdparm -q -S 0 "$ disk"
끝난

2
드라이브를 돌리지 않고 SMART 판독 값을 쿼리 할 수 ​​없다는 것은 말이 없습니다 .- / 이제 "스피닝 다운"문제는 상당히 복잡해질 수 있습니다. 회전 중지 비활성화와 관련하여 HD 자체가 더 빨리 마모되지 않습니까? 내 말은 : 시스템이 켜져있는 한 절대 "휴식"이되지 않습니까?
세드릭 마틴

IIRC를 사용하면 드라이브가 작동하지 않고 일부 SMART 값을 쿼리 할 수 ​​있지만 테스트 한 드라이브 (WD, Seagate, Samsung, Hitachi의 모델 포함)의 온도 중 하나가 온도가 아닙니다. 온도에 대한 우려가 드라이브를 공전시키는 이유 중 하나이기 때문에 물론 미친 것입니다. 다시 : 마모 : AIUI 1. 일정한 속도는 변화하는 속도보다 마모가 적습니다. 2. 드라이브는 안전한 장소에 헤드를 파킹해야하며 드라이브는 그 횟수만큼만 등급을 매 깁니다 (IIRC는 최대 수십만 – 드라이브가 공회전하고 몇 초마다 회전하는 경우 쉽게 초과 됨)
cas

드라이브를 가동 상태로 유지하거나 회전시키는 것이 더 좋은지 여부에 대한 긴 논쟁입니다. 개인적으로 나는 그들을 실행시키는 것이 가장 좋다고 생각한다. 나는 밤에 외출 할 때 컴퓨터를 끄지 않고 드라이브를 돌리지 않는다. 어떤 사람들은 밤에 컴퓨터를 켜두거나 장시간 컴퓨터를 사용하지 않을 경우 컴퓨터를 스핀 다운하는 것을 선호합니다. 이러한 경우 몇 시간 동안 컴퓨터를 스핀 다운하여 실행 상태로 두는 이점은 논쟁의 여지가 있습니다. . 그러나 결코 좋지 않은 것은 하드 드라이브가 짧은 시간에 반복적으로 회전하고 다시 올라가는 것입니다.
Micheal Johnson

또한 몇 시간 동안 유휴 상태가 된 드라이브를 회전시키는 것은 약간 어리석은 일입니다. 몇 시간 동안 유휴 상태 인 경우 1 시간 이내에 다시 사용할 수 있기 때문입니다. 이 경우 드라이브가 유휴 상태 (예 : 10 분 이내)이면 드라이브를 즉시 내리는 것이 좋지만, 누군가 컴퓨터를 사용하고있을 때 몇 분 동안 드라이브가 유휴 상태 일 수 있습니다. 곧 다시 드라이브.
Micheal Johnson

드라이브가 마운트되지 않은 상태에서도 쓰기처럼 주기적으로 들리는 소리 (3-4 회 / 초)를 들으면서 이것이 문제를 해결할 것이라고 생각했습니다! 그러나이 명령을 실행 한 후에도 여전히 소음이 들립니다. 걱정스럽게도, 그것은 내부 SSD를 백업하는 데 사용하는 드라이브입니다.
Michael

1

방금 스마트가 외부 USB 디스크가 라즈베리 파이에서 반복적으로 회전하는 것을 발견했습니다. SMART는 일반적으로 좋은 일이지만 다시 비활성화하기로 결정한 이후 원치 않는 디스크 활동이 중지 된 것으로 보입니다.


USB 디스크를 스캔하지 않도록 스마트 데몬을 구성 할 수 있습니다. 대부분의 Linux 배포판에서는 기본적으로이 작업을 수행합니다.
lzap 2016 년

1

이것에 조금 w 수 있습니다. 대부분 좁혀 야합니다.

find / -mount -newer /proc -print

부팅 후 / files 시스템의 물리적 장치에서 수정 된 파일을 제공하십시오. 파일을 알면 작성자를 식별하는 데 도움이 될 것입니다.


1

정확한 디스크로 좁혀 야 할 경우 다음을 사용하십시오.

lsblk장치 번호를 실행 하십시오. 아래의 경우는9:126

NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdb           8:16   0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdc           8:32   0   7.3T  0 disk  
└─sdc1        8:33   0   7.3T  0 part  /mnt/InternalFBE

위의 디스크 번호 와 비교 lsof | grep '9,126'하여 :replace로 실행 하십시오 ,. 제 경우에는 다음과 같이 나타납니다.

bash      389162            root  cwd       DIR              9,126      4096  449183796 /mnt/InternalPhase/0000000001/CHANNEL01/LIVE/PHASE/DATA/2018/10/04

PID를 389162사용 하여이 프로세스를 종료하려면 다음을 사용하십시오.

kill -9 389162

-1

문제는 시스템이 기본적으로 5 초 정도 디스크 버퍼에서 디스크로 데이터를 플러시해야한다는 것입니다. 따라서 디스크가 스핀 다운되면 플러시가 필요할 때 다시 스핀 업하는 것 외에 다른 옵션이 거의 없습니다. 따라서 스핀 다운 또는 디스크 전원 관리 기능을 모두 비활성화하는 것 외에는 문제를 피할 수 없습니다 hdparm -B 255 /dev/hdax. 다시 시작하는 것이 단순히 항상 머무르는 것보다 훨씬 더 손상 될 수 있기 때문에 이것은 아마도 더 나은 옵션 일 것입니다.


1
플러시 할 데이터가있는 경우에만 데이터를 플러시합니다. 디스크를 실제로 사용하고 있지 않으면 플러시 할 버퍼링 된 데이터가 없습니다.
Micheal Johnson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.