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


8

필자는 각 디렉토리가 파일 이름 및 inode 쌍 목록을 사용하여 컨텐츠 (파일 및 서브 디렉토리)를 저장한다는 것을 읽었습니다. 그러나 참조 중 어느 것도 저장 방법에 대해 언급하지 않았습니다.

그들은 일반 파일과 같은 데이터 블록을 사용하거나 내가 알지 못하는 다른 방법을 사용하여 부모 디렉토리의 inode에 저장됩니까?

설명해 주셔서 감사합니다.


유닉스가 파일을 저장하는 유일한 방법은 없습니다. Windows가 파일을 저장하는 방법은 하나도 없습니다. 두 경우 모두 사용 된 파일 시스템에 따라 다릅니다. (FAT, NTFS, ext2, UFS 등 ...)
Hennes

파일 시스템의 경우 디스크의 디렉토리 구조는 dirent.h에 정의되어 있으며 libcalls opendir / readdir / closedir 등을 사용하여 컨텐츠에 액세스해야합니다.
ott--

답변:


10

일반적인 Unix 파일 시스템의 내부를 다소 간단한 방법으로 설명하는 파일 시스템 내부 를 참조하십시오 .

여기에 이미지 설명을 입력하십시오

대부분의 유닉스 파일 시스템에는

  • 부팅 블록
  • 수퍼 블록 (디스크 지오메트리, 파티션 레이아웃, inode 수 등)
  • 아이 노드 블록
  • 데이터 블록

최신 파일 시스템에는 추가 구조가 포함되어 있습니다.

수퍼 블록의 것 중 하나는 루트 디렉토리에 대한 inode의 위치입니다.

디렉토리는 특별히 형식이 지정된 파일입니다. 모든 일반 파일과 마찬가지로 데이터 블록이 있습니다.

Linux 문서 프로젝트 : 파일 시스템 에서이를 확인할 수 있습니다 .

여기에 이미지 설명을 입력하십시오

debugfs이러한 구조를 탐색 하는 데 사용할 수 있습니다 .


2
"디렉토리는 특수한 형식의 파일입니다. 모든 일반 파일과 마찬가지로 데이터 블록이 있습니다." 따라서 디렉토리는 파일 이름-노드 쌍 (첫 번째 그림의 가장 왼쪽 표 또는 두 번째 그림의 행)을 데이터 블록에 저장합니까?
Oka

1
@ 오카 : 맞습니다.
RedGrittyBrick 10

따라서, 디렉토리는 파일이므로 데이터 블록에 저장됩니다. ext4예를 들어 파일 시스템의 각 디렉토리 ( ext4_dir_entry_2길이는 263 바이트)는 단일 4KB 블록이 약 15 개의 디렉토리 항목을 저장할 수 있습니까?
campescassiano
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.