[에러메세지]ext3_dx_add_entry:Director index Full - 파일갯수가 너무 많을 때
리눅스에서 이런 메세지를 만난다면 ~~~
한 폴더에 너무 많은 파일이 있을 가능성이 있다
EXT3-fs warning (device hda1): ext3_dx_add_entry:Director index Full
dmesg 명령어로 보면 오류메세지 출력 (한 디렉토리에 너무 많은 파일이 있을 경우)
upload 디렉토리나 session, log 디렉토리에 너무 많은 파일이 들어가지 않도록 해야 한다
그럼 ~~ 하나의 디렉토리에 몇개의 파일이 있을수 있나?
운영체제 중에 파일 갯수 관련 문제는 파일시스템에 따라 사용개수가 정해지는 듯 한데요.
파일시스템이 ntfs, fat32, ext2, ext3, ext4 ,xfs 등등 파일시스템의 정의에
따라 혹은 하드디스크의 크기에 따라 정해 진다네요.
그리고, 파일시스템에 상관없이 염두해 두어야 하는 게 바로 ARG_MAX 크기 입니다.
이것은 운영체제에 따라 다르구요 (예, Solaris의 경우 10240, 리눅스의 경우 0X20000)
ARG_MAX는 프로그램이 시작할 때 환경 변수들의 내용과 프로그램에 전달된 인자들이
저장되는 공간의 최대 크기 입니다.
따라서 리눅스 시스템에 파일시스템이 ext3 을 사용시에 한 디렉토리에 파일이 너무 많을 경우
$ ls *.txt
ls: arg list too long
$
dmesg 로 확인해 보면
EXT3-fs warning (device hda1): ext3_dx_add_entry:Director index Full
같은 에러 메세지를 확인 할 수 있습니다.
물론 이런 에러 메세지에도 파일이 저장될 수 는 있구요
rm -rf 등으로 폴더 자체를 삭제하는데에 1~2주 정도 걸리는 경우도 있습니다.
하여튼 한 폴더나 디렉토리에 너무 많은 파일을 저장하는 것은 시스템에 상당한 무리를
주는 것이라는 것을 잊지 말아야 겠습니다.
참고로 윈도우에서 이정도 갯수를
FAT32 : 65,534
NTFS : 4,294,967,295
리눅스에서 이정도 라고들 하네요
* 한 디렉토리 내의 최대 서브디렉토리 개수는 32768 개
* 한 디렉토리 내의 이론적인 최대 파일 개수는 130 조 개 이상
* 한 디렉토리 내의 실질적인 최대 파일 개수는 10000 ~ 15000 (이 이상일 경우 속도 저하가 심각합니다)
간단히 디렉토리에 파일 수의 계산법
find 디렉토리경로 -type f | wc -l
참고하시기 바랍니다.