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에서 어떻게 호출 할 수 있습니까?
답변
내가 아는 한 Btrfs 파일 시스템의 사용되지 않은 공간을 0으로 채우는 직접적인 방법은 없습니다. 그러나 파일 시스템을 0으로 채워진 파일로 채운 다음 삭제하는 것만으로도 동일한 결과를 얻을 수 있습니다. sfill은이를 수행하는 한 가지 방법 sfill -llz \dev\X
입니다. Sfill은 보안 삭제 툴킷의 일부입니다.https://github.com/GIJack/secure_delete.
그러나 언급했듯이 파일 시스템 압축이 활성화 된 상태에서는 작동하지 않습니다. 0 무리보다 압축하기 쉬운 것이 없기 때문입니다. 작동하려면 compress = zstd 마운트 옵션없이 파일 시스템을 다시 마운트해야합니다. 또는를 사용하여 Btrfs 파일 시스템의 루트에 no compression 플래그를 설정 btrfs property set <object> compression ""
합니다. 시스템이 Btrfs 하위 볼륨에있는 경우 먼저 파일 시스템 루트를 마운트해야합니다. 이 플래그는 현재로만 제거 할 수 있습니다 chattr -c
.
VMWare 이미지는 자동으로 축소되지 않지만 축소하는 방법이 있습니다.