디렉토리는 얼마나 많은 공간을 소비합니까?

디렉토리는 얼마나 많은 공간을 소비합니까?

빈 디렉토리는 얼마나 많은 공간을 차지합니까?

Windows 및 NTFS 파일 시스템에서는 '0바이트'라고 표시되며 이는 불가능합니다.

디렉토리가 실제로 얼마나 많은 양을 차지합니까? 파일 시스템이나 운영 체제에 따라 달라지나요?

답변1

기술적으로 속성 창에 표시되는 것은 폴더의 내용이며, 비어 있으면 디스크에서 0바이트를 차지합니다.

귀하의 질문은 폴더의 공간을 다룹니다.구조분명히 의존하는 파일 시스템을 차지합니다. FAT32에서 저장해야 하는 유일한 항목은 일부 플래그(숨김, 보관됨)와 이름 및 경로입니다. NTFS에서는 권한과 기타 사항도 저장해야 합니다. 전체적으로 그 공간은 거의 무시할 수 있습니다.

빈 디렉토리 공간구조차지하는 공간은 이름과 폴더 경로에 따라 다릅니다. 예를 들어 모든 폴더를 루트 드라이브(예: C:)에 두고 26개의 알파벳 문자를 모두 사용한다고 가정합니다. 10억 개의 고유 이름을 사용하면 log_26(1.000.000.000) = 약 7(6.3065)자 길이의 폴더 이름을 가질 수 있습니다. 따라서 7바이트 * 1.000.000.000은 대략 7GB의 공간과 같습니다.

이는 이름이 모든 구조에서 차지해야 하는 공간의 양만을 기준으로 한 최소값입니다. 앞으로 보여지겠지만, 파일 시스템은 파일 구조에 파일 이름 외에 훨씬 더 많은 정보를 저장합니다.

내 모든 드라이브에는 약 100만개 정도의 폴더와 파일이 있어서 현실적으로 그 가치에 도달하지도 못하는 것 같아요. 이것은 매우 대략적인 추정치라는 것을 잊지 마십시오.


현재 가장 많이 사용되는 파일 시스템은 FAT(파일 할당 테이블) 및 NTFS(신기술 파일 시스템)로 간주할 수 있습니다.지방우리가 알고 있듯이 Windows 95가 FAT32와 함께 출시된 1996년부터 사용되어 왔습니다. NFTS(Windows), HFS+(OSX) 또는 ext3(Linux)와 같은 보다 탄력적인 다른 파일 시스템으로 대체되었지만 대부분의 OS에서 잘 지원되므로 휴대용 장치, 메모리 카드 또는 플래시 드라이브에서 여전히 널리 사용됩니다. 그리고 무엇보다도 간단합니다.

이제 중요한 것이 있습니다. FAT 파티션의 파일과 디렉터리에는 아무것도 포함되어 있지 않더라도 이름, 위치, 특정 속성 등이 있으며 FAT 파티션이라는 영역에 저장됩니다.디렉토리 테이블.

그만큼디렉토리 테이블특수 파일입니다(즉, OS와 특정 응용 프로그램만 직접 액세스할 수 있도록 일반적인 사용에는 숨겨져 있습니다). 이는 디렉터리(일명 폴더)를 나타내며 그 안에 저장된 모든 파일이나 폴더는 테이블에 32바이트 항목을 갖습니다. 다음과 같이디렉토리 테이블파일인 경우 하나 이상의 클러스터(즉, 단일 파일(또는 파일의 일부)만 들어갈 수 있는 디스크 내 미리 설정된 크기의 상자)를 차지합니다.

따라서 최신 드라이브(>512MB)에 있는 모든 폴더나 디렉터리에는적어도테이블을 저장하기 위한 4KB의 오버헤드(원천). 그러나 이는 동일한 폴더에 128개의 서로 다른 파일(4 * 1024 B / 32 B = 128)을 저장할 수 있으며 레코드 저장에 따른 오버헤드는 여전히 이전과 동일한 4KB임을 의미합니다.

첫 번째 예를 편승하면 10억 개의 폴더에 대해 내가 계산한 대략적인 7GB가 아닌 32GB의 오버헤드가 발생한다는 의미입니다. 이 32GB에는 짧은 이름(8개의 ASCII 문자)뿐만 아니라 속성, 플래그, 액세스, 생성 및 수정 날짜, 기타 레거시 속성이 저장됩니다.

이 내용을 모두 읽었다면 다음과 같은 질문이 생길 수 있습니다. "글쎄요. 다 좋은데, 예를 들어 긴 이름은 어떻습니까?"와바잭또는 다음과 같은 해시 이름도 있습니다.e4d909c290d0fb1ca068ffaddf22cbd0, 저장됐나요?"

Microsoft는 Windows 95에서 사용자 경험을 향상시키기 위해 이 기능을 추가하기로 결정했습니다. "표준에 가까운" 시스템이 깨지는 것을 방지하기 위해 그들은 VFAT(Virtual FAT)라는 깔끔한 해결 방법을 사용했습니다. 기본적으로 긴 파일 이름을 파일에 맞추기 위해 실제 파일 레코드 전에 추가 레코드가 기록되었습니다(이전 시스템에서는 볼 수 없는 일부 특수 속성 포함). 긴 파일 이름 시스템에서는 최대 255개의 UTF-16(유니코드) 문자를 허용합니다.(원천) (원천).

모든 폴더에 9자를 포함하도록 첫 번째 예를 변경하면 긴 이름을 저장하기 위해 레코드를 하나 더 작성해야 하므로 오버헤드가 32GB에서 64GB로 두 배가 됩니다.


에 따르면위키피디아NTFS에 관한 기사에서 모든 권한은 마스터 파일 테이블에 저장됩니다. 그 공간은 그림과 같이 디스크 조각 모음을 통해 분명히 볼 수 있습니다.여기.

MFT 레코드가 폴더나 파일에서 차지하는 크기는 다음 항목에 설명되어 있습니다.여기:

파일 및 폴더 레코드는 각각 1KB입니다.MFT에 저장되며 그 속성은 MFT의 할당된 공간에 기록됩니다. 파일 속성 외에도 각 파일 레코드에는 MFT의 파일 레코드 위치에 대한 정보가 포함되어 있습니다.

파일의 속성이 해당 파일의 MFT 파일 레코드 내에 들어갈 수 있는 경우 이를 상주 속성이라고 합니다. 파일 이름, 타임스탬프 등의 속성은 항상 상주합니다. 파일에 대한 정보의 양이맞지 않는다MFT 파일 레코드에서 일부 파일 속성은비거주자.비거주 속성에는 하나 이상의 디스크 공간 클러스터가 할당됩니다.. 비거주 특성의 일부는 MFT에 남아 있으며 외부 클러스터를 가리킵니다. NTFS는 모든 특성 레코드의 위치를 ​​설명하기 위해 특성 목록 특성을 만듭니다. NTFS 파일 특성 유형 표에는 현재 NTFS에서 정의한 파일 특성이 나열되어 있습니다.

따라서 NTFS에서 폴더는 매우 긴 인수 및 권한 목록이 없는 한 최소 1KB의 공간을 차지합니다. 이 시점에서 MFT 레코드는 파티션에서 추가 클러스터를 차지하며 크기는 포맷된 방식에 따라 달라집니다. 단, 해당 게시물에서 Microsoft는 2GB가 넘는 경우 4KB 클러스터를 권장합니다.

답변2

실제 예를 들어, 방금 여유 공간을 기록한 다음 큰 디렉터리 구조를 만들고 새 여유 공간을 빼서 얼마나 많은 공간이 사용되었는지 알아냈습니다. 나는 각 요일에 대해 0-6 디렉토리를 생성한 다음, 하루 중 몇 시간 동안 0-23 디렉토리, 그 다음 몇 분 동안 0-59 디렉토리를 생성했습니다. 총 10,080개의 디렉토리. 내 디스크 사용량이 6,926,336바이트만큼 변경되었습니다. 이는 디렉토리당 687바이트입니다. 신경쓰시면 1TB 드라이브의 0.0006%까지 적용됩니다(1TB를 1024^4로 계산하는 경우).

답변3

Windows 10에서는 1,000,000개의 빈 폴더를 만들었고 Python의 설명에 따르면getsize함수에서는 200540160바이트의 공간을 차지했습니다. 이는 폴더당 평균 200.54016바이트입니다.

관련 정보