65,000 디렉터리를 초과하는 새 디렉터리를 생성하지 못하는 Ubuntu 14.04 서버가 있습니다. 나는 a를 실행했고 플래그가 설정된 tune2fs -l
것을 볼 수 있습니다 . dir_nlink
이 문제가 발생하도록 하려면 또 무엇을 확인할 수 있는지 아는 사람이 있나요? 65,000개를 초과하고 예상대로 작동하는 이 서버 구성의 다른 복제본이 많이 있습니다. 출력 을 비교했는데 tune2fs -l
동일한 것 같습니다. 나는 아직도 수백만 개의 사용 가능한 inode와 블록을 가지고 있습니다. 파일 시스템을 마운트 해제했다가 다시 마운트했는데 아무 것도 변경되지 않았습니다.
답변1
Ext4 디렉토리 제한
- 전통적인 거의 선형적인 디렉토리
- 해시 기반 디렉터리
선형 디렉터리의 링크 수는 65000개로 제한됩니다. 즉, 이 정도의 하위 디렉터리가 가능합니다. 해시 기반 디렉터리에는 제한이 없습니다.
새 파일 시스템을 생성할 때 기본값은 해시 디렉터리입니다. 디렉터리가 여전히 선형이라면 아마도 이전 ext3 파티션을 업그레이드했기 때문일 것입니다. (Ext3에는 나중에 해시 기반 디렉터리 기능이 추가되었습니다.)
디렉터리가 거의 선형인지 해시 기반인지 테스트합니다.
$ sudo debugfs /dev/partition
$ htree /
htree: Not a hash-indexed directory
변환
- 파티션 마운트 해제
dir_index
(해시 기반 디렉터리) 및dir_nlink
(무제한 링크) 기능을 활성화합니다 .sudo tune2fs -O dir_index,dir_nlink /dev/partition
새로 생성된 모든 디렉터리는 이제 무제한의 하위 디렉터리를 보유할 수 있습니다.
기존 디렉토리를 변환하려면 다음을 수행하십시오.
- 파티션 마운트 해제(데이터 손실 방지에 중요)
디렉토리 색인을 다시 작성하도록 fsck에 지시하십시오.
sudo e2fsck -f -D /dev/partition
-f
디스크가 깨끗한 상태이더라도 fsck가 디스크를 확인하도록 강제합니다.
-D
e2fsck에게 인덱스를 다시 작성하라고 지시합니다:
이 옵션을 사용하면 e2fsck는 파일 시스템이 디렉터리 인덱싱을 지원하는 경우 디렉터리를 다시 인덱싱하거나 더 작은 디렉터리 또는 기존 선형 디렉터리를 사용하는 파일 시스템에 대해 디렉터리를 정렬 및 압축하여 모든 디렉터리를 최적화하려고 시도합니다.