ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NAS 스토리지 간 파일 복제 시 inode 변경?
    성능 이슈 2020. 12. 19. 23:40

    NAS (Network Attached Storage)에 접근하여 파일을 Scan 하는 솔루션을 구축하던 중, Storage가 파일의 고윳값인 inode를 매일 바꾸는 작업을 한다는 개발업체의 의견을 통해 고객이 원인 분석 요청해 온 사례를 공유한다.

     

     

    시스템 환경

    • File Storage 2대로 Replication 구성되어 있고 10분 단위로 복제 수행
    • 이 중, 복제된 스토리지에 접근하여 파일을 스캔하는 솔루션 구축 중, 이는 NAS의 파일 현황을 모니터링하기 위함
    • 기 NAS 환경은 윈도우 기반, 개발 솔루션 OS는 Linux 이기에, 윈도 공유 파일 시스템을 mount.cifs 명령으로 마운트 하여 액세스하고 있음

     

    이상 현상

    • 스토리지 Daily scan 결과 확인 시, 파일시스템에서 부여하는 파일의 고윳값인 inode가 매일 변경되어 추출됨 (소스와 타깃 스토리지의 File inode가 다름)
    • 이는, 일반적인 시스템에서 파일 전체를 삭제한 후 다시 생성하지 않는 한 일어나지 않는 현상임

     

    예상 원인

    • 원인1. NAS 스토리지에서 Daily로 inode를 변경하는 작업을 진행함
    • 원인2. NAS 스토리지에서 CIFS Extensions를 지원하지 않아, 업체 솔루션에서 Windows 2000 Server 이전의 OS로 mount.cifs 명령어 호출 시 파일의 inode를 가져오는 serverino 옵션이 정상적으로 작동하지 않음 (근거 : linux.die.net/man/8/mount.cifs)

     

    질의 요청

    • 원인1 이라면, 어떠한 이유에서 Daily 변경 작업이 일어나는가?
    • 원인2 라면, 스토리지에서 CIFS Extensions를 지원하게 하는 방법이 있는가?

     

     

    -- (이상 개발업체 의견) --

     


     

    원인 분석

    • 하나의 파일을 만들고, 하위 디렉터리로 이동 후 inode 변경 여부 확인
    • 그 파일을 다른 파일시스템으로 이동 후 inode 변경 여부 확인

    File 이동 시 inode 변경 확인

     

    분석 결과

    • 파일 abc의 inode는 74186808
    • 동일 파일시스템 내 파일 이동 시 : inode 변경되지 않음 (74186808)
    • 다른 파일시스템으로 파일 이동 시 : inode 변경됨 (528622)
    • 다른 시스템 (스토리지)으로 파일 이동 시 : (당연히) inode 변경됨

     

     

    정리

    우선, 스토리지가 inode 값을 바꿀 이유는 아무리 생각해도 떠오르지 않았다. 또한 파일 시스템에서 하는 일을 스토리지가 왜 관여하고, 또 어떻게 바꿀 수 있단 말이지?

     

    그래서, 즉시 테스트를 하였고, 예상했던 대로 결과가 나왔다.

    즉, 실제 inode 인식 번호인 inumber는 동일 파일시스템 내 하위 디렉터리로 이동 시 바뀌지 않으나, 다른 파일 시스템으로 이동 시 바뀌는 것을 알 수 있다. 이는, 스토리지와 무관하게 inode 구조체의 동작 원리에 기인한 것이다. (동일 파일 시스템 내에서 mv 명령어는 물리적으로 데이터를 이동할 필요가 없는, 단순히 디렉토리 엔트리의 변경일뿐이므로 inode의 변경 사항이 아님)

    다른 스토리지로 복제하는 것 역시 시스템이 달라지므로 변경될 수밖에 없다. 즉, 새로운 시스템의 새로운 파일 시스템에서는 모든 파일의 inode 번호가 바뀌게 되는 것이다.

     

    해당 개발업체 엔지니어는 스토리지 간 File을 복제하면 모든 정보가 동일한 것인데, 모든 File의 inode가 서로 다른 것을 보고, 이는 스토리지에 의해 변경이 되었을 수밖에 없다고 여겼던 것이다.

    그나저나, File의 inode 값은 항상 Unique 하다고 생각하여 Source Storage의 File inode와 복제된 Target Storage의 File inode 번호를 비교하여 파일의 변경 여부를 체크하는 프로그램을 개발 중이었는데, 이미 2달여의 시간을 써버린 그 업체는 이후 어떻게 해결하였는지 궁금하다.

     

     

    댓글

Designed by Tistory.