개발/리눅스

NOTIFY (dnotify, inotify, fanotify)비교

-=HaeJuK=- 2024. 5. 21. 11:02

dnotify, inotify, fanotify 비교

리눅스 커널에서 파일 시스템 이벤트를 모니터링하는 데 사용되는 dnotify, inotify, fanotify 세 가지 메커니즘의 비교와 각 메커니즘이 지원되는 커널 버전에 대해 설명드리겠습니다.

dnotify

  • 지원되는 커널 버전: 리눅스 커널 2.4에서 도입됨.
  • 특징:
    • 디렉토리 전용: 디렉토리에서 발생하는 이벤트만 모니터링할 수 있습니다.
    • fcntl 기반: 파일 디스크립터와 fcntl 시스템 호출을 사용합니다.
    • 비효율성: 각 디렉토리에 대해 파일 디스크립터를 유지해야 하므로 많은 디렉토리를 모니터링하는 데 비효율적입니다.
    • 프로세스 전용 알림: 알림은 설정된 프로세스에만 전달됩니다.
  • 주요 이벤트:
    • DN_ACCESS: 파일에 접근했을 때.
    • DN_MODIFY: 파일이 수정되었을 때.
    • DN_CREATE: 파일이 생성되었을 때.
    • DN_DELETE: 파일이 삭제되었을 때.

inotify

  • 지원되는 커널 버전: 리눅스 커널 2.6.13에서 도입됨.
  • 특징:
    • 파일 및 디렉토리 모니터링: 파일과 디렉토리 모두에 대해 이벤트를 모니터링할 수 있습니다.
    • 효율성: 더 높은 성능과 적은 리소스로 이벤트 모니터링이 가능합니다.
    • 사용자 공간 인터페이스: inotify 파일 디스크립터를 통해 이벤트를 처리합니다.
  • 주요 이벤트:
    • IN_ACCESS: 파일이 접근되었을 때.
    • IN_MODIFY: 파일이 수정되었을 때.
    • IN_ATTRIB: 파일의 메타데이터가 변경되었을 때.
    • IN_CLOSE_WRITE: 파일이 쓰기 모드로 닫혔을 때.
    • IN_CLOSE_NOWRITE: 파일이 읽기 모드로 닫혔을 때.
    • IN_OPEN: 파일이 열렸을 때.
    • IN_MOVED_FROM, IN_MOVED_TO: 파일이 이동되었을 때.
    • IN_CREATE: 파일이나 디렉토리가 생성되었을 때.
    • IN_DELETE: 파일이나 디렉토리가 삭제되었을 때.

fanotify

  • 지원되는 커널 버전: 리눅스 커널 2.6.37에서 도입됨.
  • 특징:
    • 파일 시스템 전체 모니터링: 전체 파일 시스템에 대해 이벤트를 모니터링할 수 있습니다.
    • 보안 및 접근 제어: 파일 액세스를 모니터링하고 차단할 수 있는 기능이 포함되어 있습니다.
    • 더 높은 유연성: 세밀한 제어와 다양한 설정이 가능합니다.
    • 사용자 공간 인터페이스: fanotify 파일 디스크립터를 통해 이벤트를 처리합니다.
  • 주요 이벤트:
    • FAN_ACCESS: 파일이 접근되었을 때.
    • FAN_MODIFY: 파일이 수정되었을 때.
    • FAN_CLOSE_WRITE: 파일이 쓰기 모드로 닫혔을 때.
    • FAN_CLOSE_NOWRITE: 파일이 읽기 모드로 닫혔을 때.
    • FAN_OPEN: 파일이 열렸을 때.
    • FAN_OPEN_PERM: 파일 열기 전에 권한을 확인할 때.
    • FAN_ACCESS_PERM: 파일 접근 전에 권한을 확인할 때.
    • FAN_ONDIR: 디렉토리에 대한 이벤트일 때.
    • FAN_EVENT_ON_CHILD: 자식 디렉토리에서 발생한 이벤트를 포함할 때.

비교 요약

 

특징 dnotify  inotify  fanotify
도입된 버전 리눅스 커널 2.4 리눅스 커널 2.6.13 리눅스 커널 2.6.37
대상 디렉토리 전용 파일 및 디렉토리 전체 파일 시스템
이벤트 모니터링 기본적인 디렉토리 이벤트 다양한 파일 및 디렉토리 이벤트 파일 시스템 전반의 세밀한 이벤트
성능 및 효율성 낮음 높음 높음
보안 기능 없음 없음 접근 제어 및 보안 기능 포함
알림 방식 설정된 프로세스에만 전달 사용자 공간 인터페이스를 통해 전달 사용자 공간 인터페이스를 통해 전달
복잡도 낮음 중간 높음

이 표는 각 메커니즘의 주요 특징과 차이점을 요약하여 보여줍니다. dnotify는 기본적이고 단순한 파일 시스템 모니터링을 제공하지만, 성능과 효율성 측면에서 한계가 있습니다. inotify는 보다 강력하고 효율적인 파일 및 디렉토리 모니터링을 제공하며, fanotify는 보안 및 접근 제어 기능을 포함한 파일 시스템 전반에 걸친 세밀한 모니터링을 제공합니다.

반응형