NTFS 압축이 많은 공간을 차지하는 이유는 무엇입니까?

NTFS 압축이 많은 공간을 차지하는 이유는 무엇입니까?

디스크 공간을 절약하려면 제가 설치한 VMware vSphere Client를 거의 사용하지 않기 때문에 압축하는 것이 좋을 것이라고 생각했습니다.

여유 디스크 공간에 정반대의 효과가 있다는 사실에 놀랐습니다. 좀 더 추적해 보니 Help폴더 압축과 관련이 있는 것으로 나타났습니다. 디스크 공간 손실은 폴더 크기에 반영되지 않습니다.

다른 프로그램이 우연히 디스크 공간을 차지하지 않도록 압축/압축 해제 주기를 세 번 반복했습니다. 폴더에 많은 수의 작은 파일(약 30k)이 포함되어 있다는 점은 주목할 만합니다.

왜 그런가요? 어떻게든 필요한 다른 폴더를 찾을 수 있나요?압축을 풀다디스크 공간을 절약하려면?


압축하지 않은 경우:

압축하지 않은 폴더 크기 압축하지 않은 여유 공간

압축 사용:

압축된 폴더 크기 압축을 통한 여유 공간

답변1

제공하신 폴더 크기 스크린샷에 관한 약간의 배경 지식:

비압축

작은 파일이 많으면 예상대로 오버헤드가 많이 발생합니다. 하드 디스크는 특정 블록 크기(NTFS의 경우 기본적으로 4KB)로 분할되어 있습니다.

각 파일은 4KB의 배수를 할당해야 합니다. 즉, 1KB 파일이든 3.5KB 파일이든 둘 다 4KB의 공간을 차지하게 됩니다. 13KB 파일이 있는 경우 드라이브에서 16KB를 사용합니다. "크기"와 "디스크 상의 크기"의 차이점은 블록 내 사용되지 않은 공간으로 인해 발생하는 오버헤드입니다.클러스터 팁.

압축

압축 후에도 "크기"는 여전히 순 데이터 양과 동일하며 전혀 변경되지 않았습니다. 그러나 압축을 통해 전체 크기를 약 130MB 정도 줄일 수 있었습니다. 실제로 여기에도 오버헤드가 적용되기 때문에 훨씬 더 그렇습니다.따라서 압축은 실제로 해당 폴더의 일부 공간을 절약했으며 이는 폴더 크기에도 표시됩니다.

이제 C 드라이브의 여유 디스크 공간이 줄어들면서 나타나는 동작과 관련하여: 여기에는 여러 가지 이유가 있을 수 있습니다. 이해해야 할 한 가지는 여유 디스크 공간이 항상 다음보다 작다는 것입니다.

<Disk size> - <total size of all files>

이는 공간을 차지하는 메타데이터(VSS 스냅샷, 시스템 복원 지점, MFT 등)가 많기 때문입니다.

단일 파일을 압축하는 동안 NTFS는 압축이 완료될 때까지 원본 파일을 일시적으로 유지합니다. 이는 컴퓨터가 충돌할 경우에도 유효한 버전의 파일이 남아 있도록 하기 위한 것입니다. 그러나 이는 일시적일 뿐입니다. 그럼에도 불구하고 모든 것이 NTFS 메타데이터를 가리키며 이 문제가 발생합니다.

결과를 보다 정확하게 확인하려면 다음을 수행하십시오.

  • 압축되지 않은 폴더로 시작
  • 각 볼륨에 대한 시스템 보호 비활성화(컴퓨터 속성/시스템 보호)
  • 동일한 대화 상자에서 각 볼륨의 복원 지점 삭제
  • 임시 파일을 제거하려면 볼륨 C: 속성에서 "디스크 정리"를 사용하세요.
  • 여유 디스크 공간을 확인하세요.
  • 폴더를 압축하세요
  • 컴퓨터를 다시 시작하세요
  • 디스크 정리 다시 사용
  • 디스크의 여유 공간을 확인하세요

이론적으로는 여유 공간이 증가하는 것을 볼 수 있습니다.

답변2

최근 비슷한 문제를 조사한 결과, 압축된 파일은 파일당 최소 4KB의 공간과 64KB의 임시 공간을 차지한다고 말할 수 있습니다. 이는 클러스터 크기가 4kb인 NTFS용 "압축 단위" 하나의 크기입니다.blogs.msdn.com의 기사또한 파일이 압축되면 하나의 전체 CU를 보관하도록 디스크 공간이 할당되고 결정되지 않은 시간에 해제된다는 점을 언급합니다. 이것이 일시적이기는 하지만 5GB의 손실이 발생하는 이유입니다(재부팅으로 손실을 확실히 해결해야 하며, 다른 방법으로도 이를 수행해야 하지만 조각 모음은 할 수 없습니다. 시도했지만 실패했습니다). 분명히 할당된 것은 훨씬 더 큰 것 같지만(64kb*(31048+582) = 2072903680 또는 1.93GB) NTFS에는 원시 데이터에 커밋되는 데 시간과 프로세서 장치가 걸리는 트랜잭션이 있고 해당 프로세스가 언제 완료되는지 설명할 수 있습니다. 완료되면 압축으로 인해 5GB와 150MB 공간이 모두 해제됩니다.

요약하자면, 많은 파일을 압축하면 일시적으로 공간이 손실됩니다. 그러나 해당 파일이 자주 수정되는 경우 변경된 콘텐츠를 쓰기 작업 전에 클러스터가 차지했던 공간에 맞게 압축할 수 없는 경우를 대비하여 해당 파일에 대한 압축되지 않은 데이터를 보관하도록 디스크 공간이 할당됩니다.

답변3

저도 같은 현상이 있었습니다.

서버 마이그레이션을 통해 이전 Windows Server 2012R2 드라이브의 데이터 폴더(2개의 압축 폴더 포함)를 폴더 구조를 생성한 동일한 크기의 최신 Windows Server 2016 Datacenter 드라이브에 복사하고 이 두 폴더에 압축 플래그를 설정했습니다. 이전에 복사 프로세스를 진행했습니다. 복사하는 동안 디스크 공간이 부족하고 어디에서나 20GB 중 3GB만 사용되었지만 드라이브 자체에서는 19.xGB가 사용되었다고 표시됩니다. 동료가 압축 플래그를 제거하라고 했더니, 기적적으로 사라졌던 17GB가 다시 나타났습니다.

그런 다음 귀하의 기사를 읽고 플래그를 다시 적용하고 재부팅을 시도하기로 결정했지만 재미있게도 이번에는 사용된 디스크 공간이 늘어나지 않았습니다.

Windows Server 2016에는 (아마도 그 이후로) 파일이 압축 폴더에 복사될 때(압축 플래그가 이미 존재하는 파일에 적용될 때와는 반대로) 내부적으로 생성된 임시 파일이 제대로 정리되지 않는 문제가 있을 수 있습니다.

답변4

추가: 위의 설명 외에도 응용 프로그램 폴더에는 압축이 잘 되지 않는 파일이 포함될 수 있습니다. 이미 데이터가 크게 감소된 미디어 형식(jpeg 이미지, 비디오 파일, mp3 오디오...), 이미 압축된 파일(많은 양) 요즘 데이터 형식은 ZIP 아카이브로 구축됩니다!), 실제로 임의의 데이터가 포함된 파일 또는 임의의 데이터와 유사한 파일, 암호화된 파일 - 이로 인해 압축으로 저장된 것보다 압축된 내용을 장부에 사용하는 데 더 많은 데이터가 사용될 수 있습니다. ...

관련 정보