UNIX 파일 시스템에서 디렉토리는 어떻게 구현됩니까?

UNIX 파일 시스템에서 디렉토리는 어떻게 구현됩니까?

이 질문은 다음과 같이 확장됩니다.Unix 파일 시스템에서 디렉토리는 어떻게 구현됩니까?

내 목표는 기본 파일 시스템을 구현하는 것입니다. inode 번호와 이름을 읽은 후 파일 이름을 알 수 있으므로 디렉터리 내용을 나열할 수 있지만 항목 유형은 결정할 수 없습니다. 다른 디렉터리인지 파일인지 . 디렉토리에 1000개의 항목이 있는 경우 파일인지 디렉토리인지 확인하기 위해 1000개의 inode를 읽는 것은 어리석은 것처럼 보입니다.

여기서 뭔가를 놓치고 있는 걸까요, 아니면 이것이 유일한 방법인가요?

답변1

원래:네가 결정할 일이야

"UNIX 파일 시스템"이 UFS를 참조하는 경우 상위 디렉토리 inode는 파일 유형을 캐시하지 않고 파일과 해당 inode만 포함합니다. 원천:UFS 파일 시스템(PDF, 15.2.2장 참조)

모든 파일 시스템이 이와 같은 것은 아니며 디자인 선택입니다. 파일 시스템의 경우 다음과 같을 수 있습니다.당신의디자인 선택.

나는 이 선택의 어리석음에 동의하지 않는다. 시스템이 디렉터리의 파일 형식을 몇 번이나 확인해야 하는지 생각해 보세요. ls -linode에서 정보를 캐시하는 데 필요한 추가 공간과 명령 빈도의 균형을 맞춰야 합니다 .
파일 시스템이 클러스터형(예: glusterfs) 또는 네트워크형(예: nfs) 파일 시스템인 경우 모든 inode에 액세스할 때 지연이 발생할 수 있으므로 이는 좋은 생각일 수 있습니다. 로컬 저장소에서는 이것이 문제가 되지 않을 수 있습니다.
또한 파일 시스템은 무엇을 달성하려고 합니까? 수천 개의 파일이 포함된 디렉터리에 대해 효율적으로 설계된 경우 파일 형식 캐싱을 고려해 볼 가치가 있습니다. 간결하고 최소한의 공간을 갖도록 설계된 경우 캐싱을 피할 수 있는 방법이 없습니다.

ext2, 3, 4 및 파일 형식 기능에 대한 참고 사항

당신의 아이디어를 구현하는 것이 가능할 것 같습니다 ext2-4. 디렉터리 항목에 파일 형식을 캐시할 수 있습니다. 이 기능은 filetype파일 시스템이 생성될 때만 작동합니다. 이 기능을 사용하면ext4는 디렉토리 항목에 대해 다른 구조를 사용합니다.파일 유형의 캐시를 가질 수 있습니다. 이것ext2 및 ext3에서도 작동합니다..

관련 정보