내 작업 컴퓨터에 ext4 파일 시스템이 있는데 1MB 이상의 공간을 차지하는 디렉토리를 발견했습니다. 이 디렉토리에는 7개의 항목이 있습니다. 디렉토리에는 20개 이상의 항목이 포함되지 않습니다.
여기서 무슨 일이 일어나고 있는 걸까요? 디렉토리에는 아직 어떤 문제도 발생하지 않았습니다. 걱정해야 할까요?
제가 아는 한, 볼륨에 ACL이나 범위를 설정하지 않았습니다. 제가 만들 때 기본 블록 크기인 4096을 사용했습니다.
=[3 dc@work ~/documents/work/foo ]= $ ls -lat -r
[...]
drwxr-xr-x 2 dchurch users 4096 Dec 23 11:53 _old/
drwxr-xr-x 5 dchurch users 4096 Dec 30 17:43 ./
drwxr-xr-x 3 dchurch users 1032192 Jan 2 08:51 account_import/
drwxr-xr-x 14 dchurch users 4096 Jan 2 08:54 ../
=[3 dc@work ~/documents/work/foo ]= $ ls -la account_import/
total 5500
drwxr-xr-x 3 dchurch users 1032192 Jan 2 08:51 ./
drwxr-xr-x 5 dchurch users 4096 Dec 30 17:43 ../
drwxr-xr-x 2 dchurch users 4096 Jan 2 08:54 _first/
-rw-r--r-- 1 dchurch users 804852 Dec 17 15:37 ca.csv
-rw-r--r-- 1 dchurch users 3495 Dec 17 16:14 slurp.php
-rw-r--r-- 1 dchurch users 3707 Dec 17 16:13 slurp.php~
-rw-r--r-- 1 dchurch users 3769577 Dec 17 15:37 us.csv
=[3 dc@work ~/documents/work/foo ]= $ stat account_import
File: 'account_import'
Size: 1032192 Blocks: 2024 IO Block: 4096 directory
Device: 804h/2052d Inode: 4458105 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 1000/ dc) Gid: ( 100/ users)
Access: 2015-01-05 04:40:11.629350078 -0600
Modify: 2015-01-02 08:51:06.024793685 -0600
Change: 2015-01-02 08:51:06.024793685 -0600
Birth: -
답변1
4096B는 디렉토리의 초기 크기로 한 섹터와 같습니다. 그러나 저장할 데이터의 양(메타데이터, 파일 이름 포함)이 증가하고 디렉터리 크기도 증가하지만 디스크 조각화 문제를 줄이기 위해 다시 감소하지는 않습니다.
$ mkdir testdir
$ cd testdir
$ ls -lhd .
drwxrwxr-x 2 me me 4.0K Jan 5 18:06 .
$ for ((i=0; i<1000; i++)); do touch this_is_a_long_file_name_$i; done
$ ls -lhd .
drwxrwxr-x 2 me me 64K Jan 5 18:08 .
$ rm this*
$ ls -lhd .
drwxrwxr-x 2 me me 64K Jan 5 18:09 .
편집: 이것은 reiserfs를 사용한 동일한 실험입니다.
$ mkdir testdir
$ cd testdir
$ ls -lhd .
drwxr-xr-x 2 me me 48 gen 5 18:54 .
$ for ((i=0; i<1000; i++)); do touch this_is_a_really_long_file_name_$i; done
$ !ls
ls -lhd .
drwxr-xr-x 2 me me 55K gen 5 18:55 .
$ rm this*
$ !ls
ls -lhd .
drwxr-xr-x 2 me me 48 gen 5 18:55 .
이것은 xfs용입니다:
$ mkdir testdir
$ cd testdir
$ ls -lhd .
drwxr-xr-x 2 me me 6 gen 5 19:00 .
$ for ((i=0; i<1000; i++)); do touch this_is_a_really_long_file_name_$i; done
$ ls -lhd .
drwxr-xr-x 2 me me 48K gen 5 19:01 .
$ rm this*
$ !ls
ls -lhd .
drwxr-xr-x 2 me me 6 gen 5 19:01 .
분명히 둘 다 아니야레이셀프스xfs*는 또한 많은 수의 파일을 삭제한 후 디렉터리 크기가 원래 값으로 돌아가기 때문에 디스크 조각화에 신경 쓰지 않습니다.