Linux에서 빈 파일에 얼마나 많은 데이터가 필요합니까?

Linux에서 빈 파일에 얼마나 많은 데이터가 필요합니까?

Linux에서 1000개의 폴더 또는 1000개의 빈 파일을 비워두는 데 필요한 디스크 공간을 계산하거나 예측하고 싶습니다. 이 작업에 필요한 디스크 공간이 얼마나 되는지 추정해 주실 수 있나요?

답변1

각 폴더는 시작하기 위해 1개의 블록과 Linux 내부 디렉터리 항목에 포함된 모든 데이터를 사용합니다. 블록 크기는 파일 시스템마다 다릅니다. 블록 크기를 확인하려면 다음을 실행할 수 있습니다.blockdev 명령.

GNU 문서에 따르면 디렉토리 항목에는 다음이 포함됩니다.

char d_name[] null로 끝나는 파일 이름 구성 요소입니다. 이는 모든 POSIX 시스템에서 믿을 수 있는 유일한 필드입니다.

ino_t d_fileno 파일 일련번호입니다. BSD 호환성을 위해 이 멤버를 d_ino로 참조할 수도 있습니다. GNU/Linux 및 GNU/Hurd 시스템과 대부분의 POSIX 시스템에서 대부분의 파일에 대해 이는 stat가 파일에 대해 반환하는 st_ino 멤버와 동일합니다. 파일 속성을 참조하세요.

unsigned char d_namlen 종료 널 문자를 제외한 파일 이름의 길이입니다. 해당 유형은 적절한 크기의 정수 유형이므로 unsigned char입니다. 이 멤버는 BSD 확장입니다. 이 멤버를 사용할 수 있는 경우 _DIRENT_HAVE_D_NAMLEN 기호가 정의됩니다.

unsigned char d_type 이것은 파일의 유형이며 아마도 알 수 없습니다. 해당 값에 대해 다음 상수가 정의됩니다.

DT_UNKNOWN 유형을 알 수 없습니다. 일부 파일 시스템만 파일 유형 반환을 완벽하게 지원하고 다른 시스템은 항상 이 값을 반환할 수 있습니다.

DT_REG 일반 파일입니다.

DT_DIR 디렉터리입니다.

DT_FIFO 명명된 파이프 또는 FIFO입니다. FIFO 특수 파일을 참조하세요.

DT_SOCK 로컬 도메인 소켓입니다.

DT_CHR 문자 장치입니다.

DT_BLK 블록 장치입니다.

DT_LNK 심볼릭 링크입니다.

총 3개의 문자 문자열입니다. 이름의 길이에 따라 크기가 달라집니다.

또한 고려해야 할 권한 코드도 있는데, 이는 또 다른 바이트 정도입니다.

블록 크기(일반적인 기본값은 4KB)를 추가하고 총계를 합산합니다.

모든 것이 총 5KB의 데이터가 되는 SWAG를 만들면 전체 공간을 대략 5000KB로 소비하게 됩니다.

내 RHEL 서버에서 이것을 시도했는데 빈 폴더로 인해 디스크 사용률이 4킬로바이트 증가했습니다. 이는 폴더에 예약된 공간을 나타내며 파일 시스템에서 사용되는 블록 크기에서 직접 파생됩니다. 4kb 블록을 사용하기 때문에 4kb는 파일 시스템에 의해 예약되었습니다.

자신의 서버에서 테스트하려면:

명령 프롬프트에서 다음을 실행하세요: df -hk

"AVAILABLE" 열 아래의 숫자 값을 기록해 두십시오.

mkdir "무엇이든"

df -hk를 다시 실행하고 차이점을 확인하세요.

관련 정보