사용하지 않는 공간을 0으로 지우는 방법은 무엇입니까? ( btrfs 파일 시스템 도구를 요청 합니다 )
더 똑똑한 것을 찾고 있습니다
cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero
마찬가지로 FSArchiver는 “사용 공간”을 사용하지 않는 무시하지만 반대 사이트를 찾고 있습니다.
목적 : 파티션 이미지를 압축하고 싶습니다. 사용하지 않는 공간을 0으로 채우는 것이 좋습니다.
Btw. ext3, ext4의 경우 : 사용하지 않는 공간을 0으로 지 웁니다 (ext3, ext4) . 여기에 btrfs를 요청합니다
“스마트 한 알고리즘”에 대한 설명 : “스마트 한 알고리즘”이 혼동을 일으키는 것을 보았을 때, 여기에 마지막으로 추가하기로 결정했습니다. 독자 여러분, 파일 시스템을 데이터 구조로 생각하십시오. 단순화를 위해 값이 정수인 연관 키-> 값 배열로 사용되는 자체 균형 조정 레드-블랙 트리 홀딩 맵을 상상해 봅시다. 목표는 모든 음수 값을 0으로 지우는 것입니다. “스마트하지 않음”알고리즘은이를 반복하고 키 : 값 쌍을 새 맵에 추가합니다 (결과적으로 음수가 0으로 변경됨). 스마트 알고리즘은 음수 값이 저장된 장소 만 감지하여 제자리에서 지 웁니다 .
답변
다음은 이전 질문에 대한 나의 답변에 대한 수정되고 훨씬 확장 된 게시물입니다.
sfill
secure-delete
패키지 에서 원하는 것을 할 수 있습니다.
ext2, ext3 및 ext4 파일 시스템에서만 작동하는 zerofree와 달리 sfill은 모든 파일 시스템에서 작동합니다.
예 :
sfill -l -l -z /mnt/X
sfill / secure-delete 홈 페이지는 이제 사라진 것 같지만 데비안과 우분투 용으로 패키지되었습니다. 아마 다른 배포판도. 소스 코드가 필요하다면, 다른 곳에서 찾을 수 없다면 데비안 아카이브에서 찾을 수 있습니다.
참고 : sfill은 마운트 된 파일 시스템에서만 작동합니다. VM이 아닌 호스트 시스템에서 이미지 파일을 0으로 채우는 경우 호스트에 fs 이미지를 마운트해야합니다. 정확한 방법은 이미지 파일의 종류 (예 : qcow2 또는 raw)에 따라 다릅니다.
‘원시’이미지 마운트는 쉽고 간단합니다. 그냥 사용kpartx
각 파티션에 대해 루프백 장치는 / dev / 매퍼 / 항목을 만들 수있는 이미지 파일에 다음 개별적으로 장착 할 수 있습니다.
다음은 net-bootable freedos 하드 디스크 이미지를 마운트하는 데 사용하는 스크립트 조각에서 수정 된 부분 스크립트입니다 (flashrom이 작동하지 않는 시스템의 BIOS 업데이트에 사용됨).
image="myrawimagefile.img"
# use kpartx to build /dev/mapper device nodes
KP=$(kpartx -a -v "$image")
# now mount each partition under ./hd/
for p in $(echo "$KP" | awk '/^add map/ {print $3}') ; do
dm="/dev/mapper/$p"
fp=$(echo "$p" | sed -r -e 's/^loop[0-9]+//')
mkdir -p "./hd/$fp"
mount "$dm" "./hd/$fp"
sfill -l -l -v "./hd/$fp"
umount "$dm"
done
# now remove the loopback device and /dev/mapper entries
kpartx -d "$image"
참고 : 이미지의 모든 파티션을 마운트 할 수 있다고 가정합니다. 내 유스 케이스 (하나의 파티션이있는 freedos hd 이미지)에서 true입니다. 파티션 중 하나가 스왑 공간 인 경우에는 해당되지 않습니다. 이러한 파티션을 감지하고 dd를 사용하여 스왑 파티션을 제로화하는 것은 독자의 연습으로 남아 있습니다 🙂
이 방법 또는 변형은 LVM 볼륨에서도 작동합니다.
이미지가 qcow 인 qemu-nbd
경우qemu-utils
이미지 파일과 해당 파티션을 네트워크 블록 장치로 표시 패키지 예 : / dev / nbd0 / dev / ndb0p1-/와 유사한 방식으로 사용할 수 있음). 위의 dev / mapper 장치.
qemu-img
qcow에서 raw로 변환하고 위의 raw에 대한 방법을 사용한 다음 수정 된 raw 이미지를 다시 압축 된 qcow2로 변환하는 것이 더 쉽고 번거롭지 않지만 시간이 많이 소요 됩니다. 이것은 새로운 qcow2 이미지가 생성 될 때 압축 할 때 qemu-nbd를 사용하는 것보다 약간 더 작은 이미지를 생성 할 것입니다.
답변
여유 공간을 지우는 올바른 “똑똑한”방법은 다음을 사용하는 것입니다.
fstrim /mountpoint
마운트 된 파일 시스템에서 이것을 사용하십시오.
이것에 대한 보안 이점이 없다는 점에 유의하는 것이 중요합니다. 보안을 위해 디스크를 지우려면 파일을 백업하고 “파쇄”와 같은 명령으로 전체 디스크를 0으로 만든 다음 파일을 복원하십시오.
그러나 디스크가 스파 스 파일 시스템에서 씬 프로비저닝이고 사용되지 않은 공간을 복구하려는 경우 솔루션이 제대로 작동합니다.