매뉴얼 페이지를 읽는 동안 chattr
나는 I
플래그를 발견했습니다 Indexed Directory
. 조사 결과 이는 다음과 같은 HTree 인덱스 디렉터리를 참조하는 것으로 밝혀졌습니다.이 종이. 그것은 말한다시간창고나무BTree와 유사한 성능을 제공하지만 구현이 더 간단합니다.
집에서 Ubuntu 컴퓨터로 실행한 후 lsattr
다운로드 디렉터리에 Indexed Directory 플래그가 설정되어 있지만 그 외에는 아무 것도 없다는 것을 알았습니다. 나는 또한 stat --format "%s" Downloads
그 크기가 내 집에 있는 다른 모든 디렉토리의 4KiB가 아니라 12KiB라는 것을 알려주는 것을 발견했습니다. 나는 이 주제에 대한 더 많은 정보를 얻기 위해 인터넷을 검색했지만 이 논문은 2001년에 나온 것뿐입니다.
시스템은 ext4 루트 디렉터리에 있는 커널 5.3.0-26이 포함된 Ubuntu 19.10입니다.
내 질문은 다음과 같습니다
- HTree 디렉토리와 비 HTree 디렉토리의 실제 차이점은 무엇입니까?
- 어떻게 만들 수 있나요? 어떻게 만들어지나요?
- HTree 디렉토리인 디렉토리가 없는 이유는 무엇입니까?
답변1
최신 ext3/ext4 파일 시스템에서는 단일 파일 시스템 블록(보통 4KB)보다 큰 모든 디렉터리가 색인화됩니다. 이는 디렉터리가 첫 번째 블록 이상으로 커지면 자동으로 발생합니다.
하나의 블록이 수용할 수 있는 것(파일 이름 길이에 따라 60-100개 파일일 수 있음)보다 더 많은 항목을 추가하는 것 외에 htree 디렉토리를 "생성"하는 특별한 방법은 없습니다. 디렉토리가 커지면 ext4에 의해 절대 축소되지 않습니다. 하지만 언젠가 이를 가능하게 하는 패치가 있을 수도 있습니다.
답변2
현재는 immutable(i)
상위 디렉터리의 속성을 삭제한 후 indexed directory(I)
해당 속성이 있는 하위 디렉터리를 직접 삭제할 수 있습니다. (외선 4)
$ cat /etc/issue
Ubuntu 20.04 LTS \n \l