¿"btrfs filesystem defrag -c" (opción de compresión) fuerza la compresión?

¿"btrfs filesystem defrag -c" (opción de compresión) fuerza la compresión?

BTRFS con compresión habilitada utiliza una heurística para no comprimir archivos que no son bien comprimibles. ¿La compresión de archivos existentes con "btrfs filesystem defrag -c" también utiliza la heurística o comprime todos los archivos incluso si no son bien comprimibles?

Respuesta1

btrfs filesystem defrag -cparece forzar la compresión, y eventualmente marca un archivo como no comprimible solo si los intentos iniciales de compresión no fueron fructíferos y el sistema de archivos no se montó con compress-force.

Para demostrarlo, creé un archivo con un primer millón de datos incompresibles, seguido de 128 K de datos comprimibles (es decir, un archivo de texto). El archivo se almacenó /tmpy se copió en un punto de montaje btrfs con varias opciones:

# compress=lzo: no actual compression
root@debian12:~# mount /dev/zvol/tank/vol1 /mnt/ -o compress=lzo
root@debian12:~# cp /tmp/random.img /mnt/
root@debian12:~# sync
root@debian12:~# compsize /mnt/random.img
Processed 1 file, 1 regular extents (1 refs), 0 inline.
Type       Perc     Disk Usage   Uncompressed Referenced
TOTAL      100%      1.1M         1.1M         1.1M
none       100%      1.1M         1.1M         1.1M

# compress=lzo + defrag: compressed, but 'm' (incompressible) flag set
root@debian12:~# btrfs filesystem defrag -c -r /mnt/
root@debian12:~# sync
root@debian12:~# compsize /mnt/random.img
Processed 1 file, 3 regular extents (3 refs), 0 inline.
Type       Perc     Disk Usage   Uncompressed Referenced
TOTAL       90%      1.0M         1.1M         1.1M
none       100%      1.0M         1.0M         1.0M
zlib        15%       20K         128K         128K
root@debian12:~# lsattr /mnt/random.img
---------------------m /mnt/random.img

# compress-force=lzo: some limited compression 
root@debian12:~# mount /dev/zvol/tank/vol1 /mnt/ -o compress-force=lzo
root@debian12:~# cp /tmp/random.img /mnt/
root@debian12:~# sync
root@debian12:~# compsize /mnt/random.img
Processed 1 file, 3 regular extents (3 refs), 0 inline.
Type       Perc     Disk Usage   Uncompressed Referenced
TOTAL       96%      1.0M         1.1M         1.1M
none       100%      1.0M         1.0M         1.0M
lzo         68%       88K         128K         128K

# compress-force=lzo + defrag: better compression and no 'm' flag
root@debian12:~# compsize /mnt/random.img
Processed 1 file, 3 regular extents (3 refs), 0 inline.
Type       Perc     Disk Usage   Uncompressed Referenced
TOTAL       90%      1.0M         1.1M         1.1M
none       100%      1.0M         1.0M         1.0M
zlib        15%       20K         128K         128K
root@debian12:~# lsattr /mnt/random.img
---------------------- /mnt/random.img

información relacionada