2009-05-05 4 views
3

이 나는 ​​아이 노드 번호의 정의에 의해 깜짝 놀라게하고있다 :Inode 번호의 데이터 구조는 어떻습니까?

아이 노드는 UFS 또는 EXT3 같은 전통적인 유닉스 스타일의 파일 시스템 에 데이터 구조입니다. 아이 노드는 보통 파일, 디렉토리 또는 다른 파일 시스템 객체에 대한 기본 정보를 저장합니다. Source

따라서 모든 inode 번호에는 논리적 순서가 있어야합니다. 정면의 번호에서 직접 결론을 내릴 수 있습니까?

4214970 0 drwx------ 102 user staff 3.4K Feb 2 22:34 new 
5728909 0 drwx------ 3 user staff 102B Mar 25 22:11 new_new 
5415906 0 drwx------ 15 user staff 510B Mar 19 02:28 stdout_TEST 

그렇지 않은 경우 데이터 구조 덕분에 어떤 종류의 것을 알 수 있습니까?

답변

3

정면의 번호에서 직접 결론을 내릴 수 있습니까?

반드시 그렇지는 않습니다. Inode는 재활용됩니다.

그렇지 않은 경우 데이터 구조 덕분에 어떤 종류의 것을 알 수 있습니까?

체크 특정 파일 시스템 (EXT2와 EXT3위한 예컨대 /usr/include/linux/ext2_fs.h)에 적절한 struct의 정의를 포함하는 헤더 파일.

+0

+1을 할당하는 데 어려움을 겪습니다 –

6

아이 노드 번호는 아이 노드가 아닙니다. :) 당신은 inode 번호를 inode의 기본 키로 생각할 수 있습니다.

inode 번호를 결정하는 방법은 파일 시스템에 따라 다릅니다. 어떤 파일 시스템은 심지어는 공기 중에있는 inode 번호 (특히 일부 FUSE 파일 시스템)를 만들 수도 있습니다. 다른 시간은 디스크의 위치에 직접 매핑 될 수 있습니다. 불행한 사실은 다소 구식인데 많은 현대 파일 시스템은 요즘 내부 위치 정보를 32 비트 숫자로 압축하는 데 어려움을 겪습니다.

어쨌든 어플리케이션 프로그래머로서, 아이 노드 번호가 재사용 될 수 있기 때문에, 파일이 삭제되지 않았다는 확신이있는 경우에만 inode 번호를 불투명 값으로 취급해야합니다 ...)

+0

"가상 메모리의 inode"라는 문구는 "inode numbers out of thin air"라는 문구로 언급합니까? –

+0

아이 노드 번호 자체를 의미합니다. 일부 파일 시스템에서는 inode 번호를 만드는 합리적인 방법이 없습니다. 예를 들어 FUSE 파일 시스템은 Windows 서버에 FTP를 기반으로 구축됩니다. 이 파일 시스템은 inode를 고유하게 만들기 위해 필요한 정보가 없기 때문에 inode를 고유하게 유지해야합니다. 마찬가지로, (잠재적으로) 2^32 개 이상의 inode를 가진 가상 파일 시스템은 경로에 대해 고유 한 inode 번호 – bdonlan

관련 문제