通过 fuse 在 ext4 实现透明压缩

2025 年 10 月 16 日
 garywill

最近正在考虑把自己的电脑从 ext4/ntfs 迁移到 btrfs/zfs 的事,加入透明压缩的队伍

主要因为有些东西 git clone 下来,加上 submodule ,再装上构建依赖,硬盘十几二十个 G 就没了。就这样满得很快

这两天看到一个项目: https://github.com/Big-Dig-Data/fuse-zstd

实际储存的文件是这样的(压缩过)

file.txt.zst
directory/
directory/file.txt.zst

在 mountpoint 上看起来是这样的(直接访问像未压缩的文件):

file.txt
directory/
directory/file.txt

我觉得这种 idea 挺好的

一来不需要把 ext4/ntfs 重新格式化了

二来可以灵活决定哪些放进压缩总目录里,哪些不要压缩

不过这是个比较新的项目,readme 中都没提性能、数据安全的事。作者估计也没去宣传,是个值得尝试和观望的项目吧现在

2327 次点击
所在节点    Linux
9 条回复
anytk
2025 年 10 月 16 日
直接备份数据(以防万一)后把文件系统 convert ( https://wiki.archlinux.org/title/Btrfs#Ext3/4_to_Btrfs_conversion )过来就行,再启用 zstd 压缩就好了,一般能压缩的 zstd 压缩结果在 38% 左右,的确很节省空间并延长 SSD 寿命。

我使用的压缩 zstd=3 默认水平,压缩效果分 / 和 /home:

sudo compsize -x /
Processed 514750 files, 311074 regular extents (323117 refs), 295598 inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 58% 14G 24G 25G
none 100% 8.0G 8.0G 7.8G
zstd 35% 5.3G 15G 16G
prealloc 100% 818M 818M 1016M


sudo compsize -x /home
Processed 4067717 files, 3248206 regular extents (3374612 refs), 2410852 inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 76% 458G 601G 623G
none 100% 386G 386G 396G
zstd 33% 71G 214G 226G
prealloc 100% 37M 37M 144M
mayli
2025 年 10 月 16 日
不如直接 zfs, fuse 的这种 读写都费劲
artiga033
2025 年 10 月 16 日
首先 ntfs 也是有透明压缩的,不过 linux 上支不支持就不好说了
其次感觉 fuse 性能会不太好,有没有 benchmark 看看?
aloxaf
2025 年 10 月 16 日
这看起来是把文件整个压缩,感觉随机读取效率会非常低啊
strobber16
2025 年 10 月 16 日
但凡支持透明压缩的文件系统都是支持为文件夹级分别配置的
fuis
2025 年 10 月 16 日
构建依赖本身不太好压,可以先在外面试试压缩比
garywill
2025 年 10 月 16 日
@strobber16 有吗?所说 btrfs 不能预先设置某个目录或文件的压缩开关,只有你先写入完了文件后,才可以去改它们的压缩开关
AoEiuV020JP
2025 年 10 月 16 日
没试过,直觉上看会认为文件随机访问性能将会大大降低?
slowman
2025 年 10 月 16 日
所以你压缩后节省了多少个%的空间?
另外,packfile 本身就是压缩的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1166058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX