긴 이야기 짧게Linux에서 어떤 파일 액세스로 인해 하드 드라이브가 회전하는지 알 수 있는 방법이 있습니까?
전체 이야기내 노트북에는 OS와 홈 디렉터리가 포함된 NVME 디스크와 NVME에 적합하지 않은 대량 데이터를 저장하는 데 사용하는 두 번째 홈 디렉터리가 포함된 회전 하드 드라이브가 있습니다. 나는 이것이 일반적인 합의라고 믿습니다.
이 레이아웃의 장점 중 하나는 디스크의 파일 회전이 필요한 프로젝트에서 작업하지 않을 때 디스크 자체를 회전시켜 에너지, 배터리 시간, 소음 등을 절약할 수 있다는 것입니다. 이런 일이 자주 발생합니다.
그러나 당시 내가 하고 있던 작업이 거기에 저장된 데이터와 명확하게 연결되어 있지 않은 경우에도 하드 드라이브가 가끔씩 회전했습니다. 그것은 여전히 내가 한 일의 결과이지 cron 스크립트나 다른 것의 결과가 아닙니다. 왜냐하면 그것은 여전히 내가 앱을 여는 것과 같은 일을 한 결과이기 때문입니다. 그러나 앱을 열면 회전 디스크에 어떤 파일이 있어야 하는지 알 수 있게 어떻게 액세스할 수 있는지 알 수 없습니다. 그래서 나는 위의 질문을 정당화하는 무슨 일이 일어나고 있는지 더 알고 싶습니다.
답변1
편집하다얼마 후 나는 다음과 같은 멋진 유틸리티가 있다는 것을 발견했습니다.fatrace
이렇게 하면 서비스와 장치를 망칠 필요가 없기 때문에 모든 것이 더 쉬워집니다. 전화만 하면 fatrace
모든 파일 액세스 로그를 볼 수 있습니다. 장치만 보려면 grep
해당 마운트 지점만 보거나 dir을 마운트 지점으로 변경하고 이 -c
플래그를 사용하세요.
auditd
Linux 시스템 호출을 모니터링하는 데 사용할 수 있으며 관련 장치를 기반으로 필터링을 지원합니다. 다음 지침은 Debian 시스템에 대한 것이지만 다른 시스템도 매우 유사할 수 있습니다.
첫 번째 설치 및 실행 auditd
:
# apt-get install auditd
# service auditd start
그런 다음 모니터링하려는 장치의 주 번호와 부 번호를 찾으세요 /dev/sda
. 제 경우에는 다음과 같습니다.
# ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 feb 17 09:58 /dev/sda
따라서 8은 장조이고 0은 단조입니다. 마지막으로 auditd
다음과 같이 생성하고 규칙을 지정합니다.
# auditctl -a always,exit -F devmajor=8 -F devminor=0
이제 /var/log/audit/audit.log
모든 파일 액세스가 기록됩니다. 이는 어떤 프로세스가 하드 드라이브 회전을 일으키는지 알아내는 데 도움이 될 수 있습니다.
로그는 매우 장황할 수 있으며 디스크를 빠르게 채울 수 있습니다. 완료되면 다음을 닫을 수 있습니다 auditd
.
# service auditd stop