Bagaimana cara mengisi bagian yang tidak terpakai dari gambar filesystem btrfs dengan nol?
Ini untuk tamu Linux di bawah VMware Workstation.
Saya mencoba vmware-toolbox-cmd disk shrink /
btrfs yang dipasang sebagai compress=zstd,noatime,nodiratime,space_cache,ssd,discard
. Namun, gambar hanya diperluas ke ukuran maksimum dan tidak dapat dikecilkan.
Tampaknya btrf yang dikompresi tidak akan menulis file nol sebagai nol.
Saya menemukan ada beberapa patch ioctl di zero-fill di https://lwn.net/ml/linux-btrfs/aed736d257f7e91cf3b0cf4d1fdfc247212d8bf7.1524233244.git.dsterba@suse.com/.
Bagaimana saya bisa menelepon BTRFS_CLEAR_OP_ZERO_NOUNMAP
dari guest Linux?
Jawaban
Sejauh yang saya tahu tidak ada cara langsung untuk mengisi ruang yang tidak terpakai dari filesystem Btrfs dengan nol. Namun, Anda dapat mencapai hal yang sama dengan hanya mengisi filesystem dengan nol file diisi dan kemudian menghapus mereka, sfill adalah salah satu cara untuk melakukannya: sfill -llz \dev\X
. Sfill adalah bagian dari toolkit hapus aman:https://github.com/GIJack/secure_delete.
Tetapi seperti yang Anda catat itu tidak akan berfungsi dengan kompresi sistem file yang diaktifkan, karena tidak ada yang lebih mudah untuk dikompres daripada sekumpulan nol. Anda harus memasang ulang sistem berkas tanpa opsi kompres = zstd mount untuk membuatnya bekerja. Atau setel tanda tidak ada kompresi ke root sistem file Btrfs Anda dengan btrfs property set <object> compression ""
, jika sistem Anda menggunakan subvolume Btrfs, Anda harus memasang root sistem file terlebih dahulu. Bendera itu saat ini hanya dapat dihapus dengan chattr -c
.
Gambar VMWare tidak menyusut secara otomatis, tetapi ada cara untuk mengecilkannya.