사용하지 않는 공간을 0으로 지우십시오 (ext3, ext4) 방법은 무엇입니까? (ext3, ext4) 더 똑똑한

사용하지 않는 공간을 0으로 지우는 방법은 무엇입니까? (ext3, ext4)

더 똑똑한 것을 찾고 있습니다

cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero

마찬가지로 FSArchiver는 “사용 된 공간”을 찾고되지 않는를 무시하지만 반대 사이트입니다.

목적 : 파티션 이미지를 압축하고 싶습니다. 사용하지 않는 공간을 0으로 채우는 것이 좋습니다.

Btw. btrfs의 경우 : 사용되지 않은 공간을 0으로 정리하십시오 (btrfs)



답변

이러한 유틸리티는 zerofree입니다.

설명에서 :

Zerofree는 ext2 또는 ext3 파일 시스템에서 할당되지 않은 0이 아닌 블록을 찾아 0으로 채 웁니다. 이 파일 시스템이있는 장치가 디스크 이미지 인 경우에 유용합니다. 이 경우 디스크 이미지의 유형에 따라 zerofree를 실행 한 후 보조 유틸리티가 디스크 이미지의 크기를 줄일 수 있습니다. Zerofree를 사용하려면 파일 시스템을 마운트 해제하거나 읽기 전용으로 마운트해야합니다.

동일한 결과를 얻는 일반적인 방법 (사용하지 않는 블록 제로화)은 “dd”를 실행하여 드라이브의 전체 여유 공간을 차지하는 0으로 가득 찬 파일을 만든 다음이 파일을 삭제하는 것입니다. 이것은 많은 단점이 있으며, 제로 프리는 다음을 완화합니다.

  • 느리다
  • 디스크 이미지를 (임시로) 최대한 확장시킵니다
  • 디스크의 모든 여유 공간을 (일시적으로) 사용하므로 다른 동시 쓰기 작업이 실패 할 수 있습니다.

Zerofree는 가상 머신 내에 게스트 OS로 설치된 GNU / Linux 시스템에서 실행되도록 작성되었습니다. 이것이 사실이 아니라면,이 패키지가 필요 없을 것입니다.

업데이트 # 1

.deb 패키지에 대한 설명에는 다음 단락이 포함되어 있으므로 ext4에서도 잘 작동합니다.

설명 : ext2, ext3 및 ext4 파일 시스템에서 사용 가능한 블록 없음 Zerofree는 ext2, ext3 또는 ext4 파일 시스템에서 값이 0이 아닌 내용을 가진 할당되지 않은 블록을 찾아서 0으로 채 웁니다.

다른 용도

이 유틸리티의 다른 응용 프로그램은 실제 디스크의 백업 인 디스크 이미지를 압축하는 것입니다. 전형적인 예는 BeagleBone 또는 Raspberry Pi에 SD 카드를 덤프하는 것입니다. 빈 공간이 0이되면 백업 이미지를보다 효율적으로 압축 할 수 있습니다.


답변

ext2 / ext3 / ext4에서 사용되지 않은 공간을 지우는 방법 (이 질문 및 다른 곳에서 언급 한 것처럼) 요약 :

사용하지 않는 공간 제로화

파일 시스템이 마운트되지 않았습니다

  • 파일 시스템의 “디스크”가 씬 프로비저닝 된 경우 (예 : 형식이 sparseness를 지원하는 VM 파일 인 TRIM을 지원하는 최신 SSD) 커널에서 블록 장치가이를 이해한다고 말하면 사용 e2fsck -E discard src_fs하지 않는 공간을 버릴 수 있습니다 (e2fsprogs 필요) 1.42.2 이상).
  • 사용 되지 않는 블록 위에 0을 명시 적으로 기록하기 위해 zerofree를 사용 하십시오 (예 🙂zerofree src_fs .
  • 사용중인 e2image -rap src_fs dest_fs블록 만 복사하는 데 사용 (새 파일 시스템은 0이 아닌 “디스크”에 있어야하며 e2fsprogs 1.42.9 이상이 필요합니다).

파일 시스템이 마운트되었습니다

  • 파일 시스템의 “디스크”가 씬 프로비저닝 된 경우 (예 : 형식이 sparseness를 지원하는 VM 파일 인 TRIM을 지원하는 최신 SSD) 커널은 블록 장치가이를 이해하고 마지막으로 ext 파일 시스템 드라이버가이를 지원한다고 말합니다 fstrim /mnt/fs/파일 시스템에 사용되지 않은 공간을 삭제하도록 요청하십시오.
  • 사용 cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros( sfill에서 보안 – 삭제하는 것은이 기술을 사용합니다). 이 방법은 비효율적이며 Ted Ts’o (ext4의 저자)가 권장하지 않으며 특정 사항을 제로로 만들지 않을 수 있으며 미래 속도를 늦출 수 있습니다 fsck.

파일 시스템을 마운트 해제하면 마운트하는 것보다 더 나은 결과를 얻을 수 있습니다. 폐기는 이전에 사용 된 공간을 많이 제로화해야 할 때 가장 빠른 방법 인 경향이 있지만 zerofree폐기 프로세스 후에 사용 하면 때때로 “디스크”에서 폐기가 구현되는 방식에 따라 약간 씩 추가 될 수 있습니다.

이미지 파일을 작게 만들기

이미지가 전용 VM 형식입니다

qemu-img convert src_image dst_image0으로 채워진 공간을 회수하고 이미지를 나타내는 파일이 작아 지려면 적절한 디스크 이미지 도구 (예 :)를 사용해야합니다.

이미지는 원시 파일입니다

다음 기술 중 하나를 사용하여 파일을 스파 스로 만들 수 있습니다 (따라서 공간을 차지하지 않는 실행 중지).

  • cp --sparse=always src_image dst_image.
  • fallocate -d src_image (util-linux v2.25 이상 필요)

요즘 virt-sparsify 와 같은 도구를 사용하여 이러한 단계를 한 번에 더 쉽게 수행 할 수 있습니다.

 출처


답변

sfill에서 보안-삭제 이 여러 기타 관련 작업을 할 수 있습니다.

예 :

sfill -l -l -z /mnt/X

업데이트 # 1

github의 ArchLinux 프로젝트에서 사용되는 것으로 보이는 소스 트리가 있으며 sfillSecure-Delete 패키지에 포함 된 도구가 포함 된 소스를 포함합니다 .

또한 sfill의 매뉴얼 페이지 사본 은 다음과 같습니다.


답변

e2fsprogs 1.42.9가 e2image있는 경우 처음에 여유 공간없이 파티션 이미지를 작성하는 데 사용할 수 있으므로 제로화 단계를 건너 뛸 수 있습니다.


답변

사용할 수 있습니다 sfill. 얇은 볼륨에는 더 나은 솔루션입니다.


답변

추가 도구에 의존하지 않으려면이 방법이 다음보다 빠릅니다 cat /dev/zero > /mnt/fs/zeros.

dd if=/dev/zero of="/mnt/fs/filler" bs=10485760
dd if=/dev/zero of="/mnt/fs/filler1" bs=1
rm /mnt/fs/filler
rm /mnt/fs/filler1


답변