사용하지 않는 공간 지우기

사용하지 않는 공간 지우기

0으로 사용되지 않는 공간을 지우는 방법은 무엇입니까? (외부3, 외부4)

나는 그 이상을 찾고 있어요

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

좋다FS 아카이버"사용된 공간"을 찾고 있으며 사용되지 않았지만 반대편 사이트는 무시합니다.

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

그런데. btrfs의 경우:0으로 사용되지 않는 공간 지우기(btrfs)

답변1

그러한 유틸리티는 zerofree.

설명으로 판단하면 다음과 같습니다.

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

동일한 결과(사용하지 않는 블록을 0으로 만들기)를 얻는 일반적인 방법은 "dd"를 실행하여 드라이브에서 사용 가능한 전체 공간을 차지하는 0으로 가득 찬 파일을 만든 다음 파일을 삭제하는 것입니다. 여기에는 zerofree가 완화하는 여러 가지 단점이 있습니다.

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

Zerofree는 가상 머신 내 게스트 운영 체제로 설치된 GNU/Linux 시스템에서 실행되도록 작성되었습니다. 귀하의 경우가 아니라면 거의 확실하게 이 패키지가 필요하지 않습니다.

업데이트 #1

이제 .deb 패키지 설명에 다음 단락이 포함되어 있습니다. 이는 이것이 ext4에도 적용된다는 의미입니다.

설명: ext2, ext3 및 ext4 파일 시스템의 Zerofree 블록 Zerofree는 ext2, ext3 또는 ext4 파일 시스템에서 0이 아닌 콘텐츠가 포함된 할당되지 않은 블록을 찾아 0으로 채웁니다.

기타 용도

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

답변2

ext2/ext3/ext4에서 사용되지 않은 공간을 지우는 방법 요약(이 질문 및 다른 곳에서 설명):

사용하지 않는 공간 지우기

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

  • 파일 시스템이 있는 "디스크"가 씬 프로비저닝되고(예: TRIM을 지원하는 최신 SSD, 희소성을 지원하는 형식의 VM 파일 등) 커널이 이를 이해하는 블록 장치를 나타내는 경우 e2fsck -E discard src_fs폐기를 사용할 수 있습니다. 사용되지 않은 공간(e2fsprogs 1.42.2 이상이 필요함)
  • 사용자유도 제로(예: zerofree src_fs) 사용되지 않은 블록에 명시적으로 0을 씁니다.
  • 사용 중인 블록만 복사 하는 데 사용됩니다 e2image -rap src_fs dest_fs(새 파일 시스템은 0이 아닌 "디스크"에 있어야 하며 e2fsprogs 1.42.9 이상이 필요합니다).

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

  • 파일 시스템이 있는 "디스크"가 씬 프로비저닝된 경우(예: TRIM을 지원하는 최신 SSD, 희소성을 지원하는 형식의 VM 파일 등) 커널은 이를 이해하는 블록 장치를 나타내고 마지막으로 ext 파일 시스템을 나타냅니다. 드라이버 지원 fstrim /mnt/fs/사용하지 않는 공간을 삭제하도록 파일 시스템에 요청할 수 있습니다 .
  • cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros( sfill이 기술을 사용하려면 보안 삭제에서)을 사용하세요 . 이 접근 방식은 비효율적이며 Ted Ts'o(ext4 작성자)가 권장하지 않으며 일부 사항을 0으로 만들지 않을 수 있으며 향후 속도를 늦출 수 있습니다 fsck.

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

이미지 파일 줄이기

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

qemu-img convert src_image dst_image비워진 공간을 회수하고 이미지를 나타내는 파일을 더 작게 만들려면 적절한 디스크 이미징 도구(예: )를 사용해야 합니다 .

이미지는 원본파일입니다

다음 기술 중 하나를 사용하여 파일을 희박하게 만들 수 있습니다(따라서 0을 실행하면 공간을 더 이상 차지하지 않습니다).

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

요즘에는 이런 도구를 사용하는 것이 더 쉬울 수도 있습니다.가상 희소화이 단계와 기타 여러 단계를 한 번에 완료하세요.

 원천

답변3

sfill~에서안전 삭제이 작업과 기타 여러 관련 작업을 수행할 수 있습니다.

예를 들어

sfill -l -l -z /mnt/X

업데이트 #1

github의 ArchLinux 프로젝트는 sfillSecure-Delete 패키지에 포함된 도구의 소스 코드가 포함된 소스 트리를 사용하는 것으로 보입니다.

sfill매뉴얼 페이지의 사본도 여기에 있습니다:

답변4

다른 도구를 사용하고 싶지 않다면 이 방법이 다음보다 빠릅니다 cat /dev/zero > /mnt/fs/zeros.

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

관련 정보