在 2021-05-11星期二的 22:57 +0800,Qiyu Yan写道:
Dear folks,
My problem is that new file created at /usr won't be compressed.
I accenticly that none of my files under /usr is compressed[1], so I
tried to run `sudo btrfs fi def -czstd -v -r /usr` to compress them,
that seems to work. And `sudo compsize /usr` now gives
Processed 431312 files, 224528 regular extents (230971 refs), 253758
inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 56% 7.2G 12G 13G
none 100% 3.5G 3.5G 3.5G
zstd 39% 3.6G 9.2G 9.7G
This seems pretty good, but when I am testing dding to dump a file to
/usr to test compress for new file, problem happens:
[root@yan-desktop /]# dd if=/dev/zero of=/usr/1 bs=10240 count=10000
记录了10000+0 的读入
记录了10000+0 的写出
102400000字节(102 MB,98 MiB)已复制,0.0426441 s,2.4 GB/s
[root@yan-desktop /]# dd if=/dev/zero of=/etc/1 bs=10240 count=10000
记录了10000+0 的读入
记录了10000+0 的写出
102400000字节(102 MB,98 MiB)已复制,0.0585055 s,1.8 GB/s
[root@yan-desktop /]# compsize /usr/1
Processed 1 file, 1 regular extents (1 refs), 0 inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 100% 97M 97M 97M
none 100% 97M 97M 97M
[root@yan-desktop /]# compsize /etc/1
Processed 1 file, 782 regular extents (782 refs), 0 inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 3% 3.0M 97M 97M
zstd 3% 3.0M 97M 97M
Just ignore those Chinese output by dd, it doesn't important... But
as
you can see: file created at /usr/1 is not compressed at all while
file
created at /etc/1 gets compressed. There should not be any difficult
to
compress all-zero contents for zstd.
There should not be so much difference between /usr and /etc, they
are
in same subvolume named "root" mounted at /.
[root@yan-desktop /]# btrfs su li /
ID 256 gen 1530662 top level 5 path home
ID 257 gen 1530662 top level 5 path root
ID 266 gen 1530614 top level 257 path var/lib/machines
ID 292 gen 1530585 top level 257 path var/lib/mock
...[some container storage subvolumes]
and mount options for / is
rw,noatime,seclabel,compress=zstd:3,ssd,space_cache=v2,subvolid=257,s
ub
vol=/root (subvol=root,noatime,compress=zstd in fstab)
lsattr /|grep -E "var|etc" gives
-------------------- /etc
-------------------- /var
`btrfs property get /usr` or `btrfs property get /etc` gives empty
output.
How do I troubleshoot this problem?
[1] That is also a problem since I setup compress after upgrading to
fedora 34, and have done many package updates since then. So new
extents written to /usr should be compressed while compsize reports
none of them.
And by setting compress-force=zstd, new files in /usr will get
compressed as expected. I suspect there to be something wrong with the
compressible check process builtin in btrfs?
--
Qiyu Yan
GPG keyid: 0x4FC914F065F2DF12
About:
https://fedoraproject.org/wiki/User:Yanqiyu