파일은 때때로 변경되지만 inode는 변경되지 않고 그 반대의 경우도 마찬가지인 이유는 무엇입니까?

파일은 때때로 변경되지만 inode는 변경되지 않고 그 반대의 경우도 마찬가지인 이유는 무엇입니까?

파일이 업데이트되면 해당 인덱스 노드도 업데이트됩니다. 그러나 때로는 다음과 같은 상황이 발생합니다.

  1. 파일은 동일하고 inode는 새 것입니다.
  2. 파일이 변경되었지만 해당 inode가 더 오래되었습니다.

왜?

답변1

질문이 좀 불분명하지만 시도해 보겠습니다.


편집기 등을 사용하여 파일을 편집하는 경우 일반적으로 새 파일이 생성되지만(새 inode 포함) 동일/편집된 데이터가 포함됩니다. 원본 파일(원본 inode 포함)은 백업으로 보관될 수 있습니다.

반면, 쉘 리디렉션( >and)은 inode를 재사용하므로 파일을 덮어쓰거나 추가한 후에도 inode는 변경되지 않은 상태로 유지됩니다. >>(단점은 오래된 내용을 덮어쓰는 경우가 많기 때문에 실수로 덮어쓰면 저장할 수 없다는 점입니다.)


inode가 "순서대로" 사용된다는 보장은 없으며 사용 가능한 가장 낮은 inode가 먼저 사용됩니다. "가장 오래된"(처음 삭제된) i-노드는 반드시 "최신" i-노드 이전에 사용되는 것은 아닙니다. 파일을 삭제하면 해제된 리소스가 파일 시스템에서 유지 관리하는 두 목록에 추가됩니다. 하나는 사용 가능한 블록(즉, 디스크의 공간)을 포함하고 다른 하나는 사용 가능한 inode를 포함합니다. 이러한 목록은 특정한 순서로 되어 있지 않습니다. 즉, 파일이 삭제될 때 해제된 리소스가 추가되기만 합니다.

일반적으로 이 두 목록은 "청크"로 유지되므로 여러 inode 또는 여러 여유 블록이 느슨하게 그룹화됩니다. 새 파일에 리소스가 필요한 경우 파일 시스템은 일반적으로 다음 파일로 이동하기 전에 "블록"의 리소스 사용을 완료합니다.

따라서 요약하면 inode나 공간 블록이 어떤 순서로 재사용될지 알 수 없습니다. inode 번호나 삭제 순서로 정렬되지 않습니다. 모든 inode 또는 모든 공간은 재사용되기 전에 동일한 시간을 "대기"할 필요도 없습니다. 일부는 거의 즉시 다시 사용되지만 다른 일부는 오랫동안 재사용되지 않습니다(목록에서 어떤 "청크"에 포함되는지에 따라 다름).

관련 정보