[에러메세지]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
참고하시기 바랍니다. |