Enterprise Infrastructure Intelligence ● Certified engineers online · Fast response guaranteed
리눅스/OS

Inotify API: 리눅스 파일시스템 이벤트 감시의 아키텍처와 실무 활용

Inotify API는 리눅스 커널에 통합된 파일시스템 변화 감시 메커니즘으로, 단일 파일 디스크립터로 다수의 감시 인스턴스를 효율적으로 관리합니다. 기존 dnotify의 마운트 점 고정 문제를 해결하면서 확장성과 메모리 효율성을 동시에 달성한 설계입니다.

2026.09.15  ·  37회  · 

핵심 아키텍처: 감시 인스턴스와 파일 디스크립터의 분리

Inotify API의 가장 핵심적인 설계 원칙은 감시(watch)를 열린 파일(open file)이 아닌 inotify 장치에 연결하는 것입니다. 이는 dnotify의 치명적 결함을 해결합니다. dnotify에서는 파일을 열린 상태로 유지해야 감시할 수 있었는데, 이로 인해 파일뿐 아니라 마운트 지점까지 메모리에 고정되어 이동식 매체가 언마운트될 수 없었습니다. Inotify는 하나의 파일 디스크립터로 다수의 감시를 추가할 수 있으므로, 애플리케이션은 inotify_init()을 단 한 번 호출하고 필요한 만큼의 감시를 등록할 수 있습니다.

이벤트 구조와 이벤트 큐의 순서 보증

inotify_event 구조체는 wd(감시 디스크립터), mask(이벤트 유형), cookie(관련 이벤트 연결), len과 name(파일명)으로 구성됩니다. 특히 cookie는 파일 이동 시 IN_MOVED_FROM과 IN_MOVED_TO 이벤트를 연결하는 데 사용되며, 같은 cookie 값을 가진 두 이벤트는 관련 있는 작업임을 나타냅니다. inotify 파일 디스크립터에서 읽은 이벤트들은 정렬된 큐를 이루므로, 디렉토리 간 파일 이동 시에도 이벤트 순서가 보장됩니다.

실무 주의점: 이벤트 병합과 오버플로우 처리

동일한 파일에서 연속으로 발생한 동일한 이벤트(wd, mask, cookie, name이 모두 같음)는 아직 읽지 않은 상태에서 자동으로 병합되어 커널 메모리를 절감합니다. 그러나 이는 이벤트 개수를 신뢰성 있게 집계할 수 없음을 의미합니다. /proc/sys/fs/inotify/max_queued_events(기본값 16,384)를 초과하면 IN_Q_OVERFLOW 이벤트가 발생하므로, 대규모 감시 환경에서는 FIONREAD ioctl()로 큐 크기를 모니터링하여 처리 속도를 조절해야 합니다.

WIKIDATA WORKSTATION
AI·렌더링에 최적화된
전문가용 워크스테이션
NVIDIA RTX GPU · 최대 192GB 메모리 · ECC 지원