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 이상이 필요합니다).
요즘에는 이런 도구를 사용하는 것이 더 쉬울 수도 있습니다.가상 희소화이 단계와 기타 여러 단계를 한 번에 완료하세요.
원천
- 0으로 사용되지 않는 공간 지우기(ext3, ext4)(이 Unix 및 Linux 질문입니다!)
- https://ext4.wiki.kernel.org/index.php/Ext4_VM_Images
- 이미지 축소 기술을 논의하는 Ted Ts'o의 게시물"fs/ext4/resize.c:409의 커널 오류" linux-ext4 스레드에 있습니다.
- 파일 시스템 이미지를 드물게 유지작가:
zerofree
- kvm/qemu의 qcow2-image-file에서 사용되지 않은 공간 확보응답 서버 오류
- http://libguestfs.org/virt-sparsify.1.html
답변3
sfill
~에서안전 삭제이 작업과 기타 여러 관련 작업을 수행할 수 있습니다.
예를 들어
sfill -l -l -z /mnt/X
업데이트 #1
github의 ArchLinux 프로젝트는 sfill
Secure-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