filesystem을 공유하는 여러 system에서 inotify 사용은 불가능하군요...

jekai의 이미지

filesystem을 감시하는 목적으로 inotify를 사용했는데,

제 환경이 filesystem을 여러 machine이 공유하고( **특정 path /user/ 밑으로만 모든 machine이 공유** )

각각의 machine에서 inotify를 사용하여 특정 directory를 monitoring합니다.

그런데, inofity가 /dev/input으로 동작하는거라서 같은 machine안에서 발생하는 file변경사항은 감지를 해도,

다른 machine에서 발생하는 file변경은 감지를 못하네요...

filesystem을 공유하고있지만, kernel이 각각 다르기때문에 /dev/input도 달라서 이건 어쩔수 없나봅니다.

그래서 저와 같은 환경에서는 어쩔수 없이 polling하면서 감지하는 방법밖에 없을까요???

/dev/input 를 옮기는 방법같은건 없을까요 ㅠㅠ

romandev의 이미지

하나의 파일 시스템이라면 inotify가 감지를 못할리가 없을 것으로 생각됩니다.

machine이 공유하는 디렉토리가 하나인가요 아니면 하나의 디렉토리안에 각 머신이 공유하는 디렉토리가 별도로 있나요?

상황이 조금 더 자세하면 더 많은 분들이 도움을 줄 수 있지 않을까 싶습니다 :)

jekai의 이미지

각각의 machine 마다 local disk 영역이 있습니다. root 밑에 /usr , /sys , /dev, /proc 등 linux 설치시 자동으로 생성되는 놈들이지요, 이것들은 machine마다 분리가 되어있고요...

공유하는 디렉토리는 /user 아래 모든 하위 디렉토리들을 공유하고 있습니다.

제가 test한 방법은, machine_A에서 프로그램을 실행하여 /user 밑 특정 path (/user/AAA/BB)를 inotify_add_watch로 등록하였습니다.
그리고 machine_B에서도 같은 프로그램으로 같은 path를 inotify_add_watch로 등록하였습니다.

그런데, machine_A 에서 terminal을 하나 열어서 file add, remove를 하면
A에서 띄운 프로그램에서는 감지를 해도, B에서 띄운 프로그램에서는 감지를 못하더군요...

"하나의 파일 시스템이라면 inotify가 감지를 못할리가 없을 것으로 생각됩니다." <<-- 솔깃해지는군요 ;;

romandev의 이미지

그렇다면 물리적으로 완전히 분리 되어있다는 말씀이신거죠?

공유는 nfs로 되고 있는겁니까? 그렇다면 노티를 받을 수 없습니다.

폴링보다는 감지한 하나의 머신에서 다른 머신들에게 브로드캐스팅을 해주는 것이 좋아보입니다.

도움이 되지 못해 죄송합니다 ㅠㅠ

jekai의 이미지

네~~ 그렇군요 ㅋㅋ

이와 같은 환경에서 브로드캐스팅하는 가장 간단한 방법은 어떤게 있을까요??

지금 커널이 분리되있는 상태라서;;;;

ㅠㅠ

romandev의 이미지

방법을 고려해보려고 비슷한 환경을 만들어서 시뮬레이션을 해봤는

소켓 같은 것을 이용해서 브로드캐스팅 해주는 방법 말고는 딱히 생각나는 방법이 없군요.

nfs 서버가 실행되는 곳에서 nfs로 마운트된 디렉토리가 아니라 실제 대상 디렉토리를 감시하고

이벤트가 발생하면 각 클라이언트로 뿌려주는게 가장 간단한 방법이 아닐런지요ㅠㅠ

다른 분들이 꼭 더 좋은 의견을 내어주시면 좋겠네요ㅠㅠ

jekai의 이미지

일딴, 정말 안될까? 궁금해했었는데, 확답주셔서 감사합니다^^

socket쓰기에는 잡일이 너무 많아질것같아서, polling 방법으로 가기로 했습니다 ;;

찾아보니.. polling 기반 filesystem monitor library도 있길래요..

그럼 수고용~ㅎ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.