저는 일부 Linux 배포판을 실행하는 NAS 소유자입니다. 여러 서비스, 사용자 권한 및 절전 모드 전환 시기를 관리할 수 있는 네트워크 관리 프런트 엔드가 함께 제공됩니다. 내 문제는 NAS가 절전 모드로 전환되면 몇 분 후에 하드 드라이브가 다시 켜진다는 것입니다. 그런 다음 잠시 회전한 다음 다시 잠에 들어갑니다. 이것은 무한정 계속될 것입니다.
원인을 파악하려면 어떻게 해야 합니까? 저는 Linux를 처음 접했지만 루트 액세스를 얻었고 이제 SSH 연결이 가능해졌습니다.
答え1
이노티파이 도구이 작업을 수행하는 쉬운 방법입니다. 해당 웹 사이트에는 원하는 작업을 수행하는 몇 가지 예가 있습니다(실제로 기본적인 예는 inotifywatch 예 참조).
答え2
달리기를 해보세요iotop
아마도? 나는 과거에 그것이 유용하다고 생각했습니다.
答え3
디스크에 대한 모든 읽기/쓰기를 알리도록 커널에 지시한 다음 해당 정보를 확인해야 합니다.
그래서:
# sync
# echo 1 > /proc/sys/vm/block_dump
# dmesg -c | grep '/dev/sda'
sync
새로운 읽기 또는 쓰기만 볼 수 있도록 보류 중인 모든 쓰기를 디스크에 플러시합니다.
dmesg -c
커널 메시지를 표시하고 지웁니다(그렇지 않으면 dmesg를 실행할 때마다 이전 메시지도 표시됩니다).
grep
관심 있는 디스크의 활동을 이해하려면 dmesg의 출력을 필터링하세요. /dev/sda를 실제 장치로 바꾸십시오.
나는 일반적으로 다음과 같은 방법을 사용하여 디스크 회전을 줄인 다음 다시 회전하는지 확인합니다.
# sync
# hdparm -y /dev/sda
# while true; do hdparm -C /dev/sda ; sleep 600 ; done
이 while
루프는 10분마다 디스크 활동/유휴 상태를 확인합니다. 시작되는 것을 보면 dmesg
위의 줄을 실행하여 whodunit을 확인하세요.
答え4
또 다른 팁: Systemtap을 사용하세요. systemtap 웹사이트에는 범인을 찾는 데 충분한 조사 스크립트가 많이 있습니다.
또 다른 경우에는
디스크 회전을 일으키는 프로세스를 찾으려면 플래그를 설정하여 정보를 수집할 수 있습니다 /proc/sys/vm/block_dump
. 이 플래그가 설정되면 Linux는 발생하는 모든 디스크 읽기 및 쓰기 작업은 물론 파일에 대한 더티 블록 작업도 보고합니다. 이를 통해 디스크 회전이 필요한 이유를 디버깅하고 배터리 수명을 더욱 연장할 수 있습니다. block_dump의 출력은 커널 출력에 기록되며 "dmesg"를 사용하여 검색할 수 있습니다. 또는 디버그 메시지 대상에 대한 syslog kern 도구를 참조하세요. 일반적으로 말하면 /var/log/debug
. block_dump를 사용하고 커널 로깅 수준에 커널 디버그 메시지도 포함되어 있는 경우 klogd를 꺼야 할 수 있습니다. 그렇지 않으면 block_dump의 출력이 기록되어 일반적으로 존재하지 않는 디스크 활동이 발생하게 됩니다.