Linux에서 파일 시스템에 의해 트리거되는 전체 디스크 활동을 얻는 방법은 무엇입니까?

Linux에서 파일 시스템에 의해 트리거되는 전체 디스크 활동을 얻는 방법은 무엇입니까?

운영 체제에서 호출한 디스크 액세스 활동을 기록하고 싶습니다. 내가 기록하려는 데이터는 디스크 섹터 번호, 요청 길이, 도착 시간, 읽기 또는 쓰기를 포함하여 디스크가 운영 체제로부터 수신하는 데이터입니다.

구체적으로 운영체제는 linux, 커널은 3.xxx, 디스크 파일 시스템은 ext4이다. 그러한 디스크 액세스 활동을 기록하려면 ext4 드라이버를 수정해야 할 수도 있습니다.

운영 체제는 Intel i686의 Ubuntu 15.04 32비트입니다. 조사 중이며 데스크탑에 대한 I/O 추적을 얻고 싶습니다.

답변1

ext4드라이버는 디스크 섹터 및 기타 디스크 구조를 담당하지 않고 Linux 커널의 블록 장치 계층 하위 시스템을 담당하므로 드라이버에서 이 모든 정보를 얻을 수 있는지 확신할 수 없습니다 . 내가 아는 한 당신은 낮은 수준의 작업과 높은 수준의 읽기/쓰기 작업에 관심이 있기 때문에 관심 있는 모든 정보를 얻을 수 있는 방법은 없지만 한 번 살펴보세요.블록 추적유용.

답변2

귀하의 질문이 불분명합니다. 원시 디스크 I/O 분석을 원하는 경우(파일 시스템은 관련이 없으며 스왑 디스크 IO도 측정하려는 경우) 커널을 구성하거나 패치해야 할 수도 있습니다(방법은 모르겠습니다). 어쩌면 하이퍼바이저(예: xen)를 통해 Linux를 실행하는 것이 도움이 될 수도 있습니다. 또한 살펴보세요oprofile

반면에 파일 시스템 활동에 관심이 있다면 다음을 사용할 수 있습니다.이노티파이(7). 참고해주세요, 감사합니다페이지 캐시, 파일 시스템 활동은 원시 디스크 활동과 다릅니다.

답변3

이를 달성하려면 커널 수준 추적이 필요합니다.

다양한 수준의 기능, 유용성 및 안정성을 갖춘 이를 가능하게 하는 수많은 도구가 있습니다.sysdig,ftrace,perf,dtrace4linux,ktap,systemtap다른 사람.

당신은에서 얻을 수 있습니다포인트 t을 기반으로 하면 ftrace(스크립트 자체 외부에서) 아무것도 설치할 필요가 없습니다. 예를 들면 다음과 같습니다.

# tpoint -H ext4:ext4_da_write_end

한 단계 더 나아가려면 Survey 를 사용하는 것이 좋습니다 systemtap.

관련 정보