btrfs 파일 시스템 이미지의 사용되지 않는 부분을 0으로 채우는 방법은 무엇입니까?

btrfs 파일 시스템 이미지의 사용되지 않는 부분을 0으로 채우는 방법은 무엇입니까?

이는 VMware Workstation의 게스트 Linux에 적용됩니다.

vmware-toolbox-cmd disk shrink /btrfs 설치를 시도했습니다 compress=zstd,noatime,nodiratime,space_cache,ssd,discard. 단, 이미지는 최대 크기까지만 확대되며 축소할 수는 없습니다.

압축된 btrfs는 0 파일을 0으로 쓰지 않는 것 같습니다.

제로 패딩을 위한 ioctl 패치가 있다는 것을 발견했습니다.https://lwn.net/ml/linux-btrfs/aed736d257f7e91cf3b0cf4d1fdfc247212d8bf7.1524233244.git.dsterba@suse.com/.

BTRFS_CLEAR_OP_ZERO_NOUNMAP게스트 Linux에서 전화를 거는 방법은 무엇입니까 ?

답변1

내가 아는 한, Btrfs 파일 시스템의 사용되지 않은 공간을 0으로 채울 수 있는 직접적인 방법은 없습니다. 그러나 파일 시스템을 0으로 채워진 파일로만 채운 다음 삭제하면 동일한 결과를 얻을 수 있습니다. sfill은 이를 수행하는 한 가지 방법입니다 sfill -llz \dev\X. Sfill은 안전 제거 도구 키트의 일부입니다.https://github.com/GIJack/secure_delete.

그러나 지적했듯이 이것은 파일 시스템 압축이 활성화된 경우에는 적용되지 않습니다. 왜냐하면 여러 개의 0보다 더 쉽게 압축할 수 있는 것은 없기 때문입니다. 이것이 제대로 작동하려면 압축=zstd 마운트 옵션 없이 파일 시스템을 다시 마운트해야 합니다. 또는 Btrfs 파일 시스템의 루트에 압축 없음 플래그를 설정하는 방법을 사용하십시오 btrfs property set <object> compression "". 시스템이 Btrfs 하위 볼륨에 있는 경우 파일 시스템 루트를 먼저 마운트해야 합니다. 현재는 이 플래그를 제거하는 것만 사용할 수 있습니다 chattr -c.

VMWare 이미지는 자동으로 축소되지 않지만 축소하는 방법이 있습니다.

답변2

답변을 추가하겠습니다.여기

mkdir -p btrfs-zero
btrfs property set btrfs-zero compression none
cat /dev/zero > btrfs-zero/zero
rm btrfs-zero/zero

관련 정보