Btrfs介绍
文件系统3d单词文件夹组织历史档案文件,File System 3d words Folders
Btrfs 是一种现代的写时复制(CoW)linux 文件系统,已经并入内核主线。Btrfs 致力于实现一些高级功能,同时着重于容错性、修复性以及易于管理性。它由多家企业共同开发,以 GNU GPL 协议授权,并欢迎任何人的贡献。
Btrfs有很多有趣的特性,本文将介绍Btrfs的透明压缩功能。
压缩
Btrfs支持透明文件压缩。这就减小了文件的大小,通过减少文件写入增幅来显著延长闪存介质(flash-baesd media)的寿命。在某些特定的场景下(比如单线程、重负荷的文件 I/O)还提高了性能。尽管在其他的场景下(比如多线程和/或大文件 I/O 高强度 CPU 任务)还是明显影响了性能。有三种算法可用:zlib, lzo, zstd,通常使用更快的压缩算法,比如 zstd 和 lzo 可以获得更好的性能。
如何启用压缩?
要在新的 Btrfs 分区上安装Linux时就启用压缩功能 ,在mount文件系统时使用 compress 选项:mount -o compress=zstd /dev/sda1 /mnt/。在配置过程中,请在 fstab 中把 compress=zstd 添加到根目录文件系统的挂载选项里,zstd也可替换成lzo或zlib。只有在加入挂载选项后创建或修改的文件才会被压缩。
fstab
如果想压缩已经存在Btrfs上的未压缩文件,可用 Btrfs filesystem defragment -r -v -czstd / ,会使用zstd的压缩方式将整个文件系统重新压缩。
如何设置压缩级别
zlib:支持9个级别,默认值为Level 3,它提供了高的压缩比,并且速度仍然相当快。级别越高,所需时间越长。可以将级别指定为挂载选项,如“compress=zlib:1”。
zstd: zstd支持包括多达15个级别。整数值越大越慢,压缩效果越好;值越小越快,压缩效果越小。级别0映射到默认值。
lzo: 不支持设置压缩级别
压缩方法之间有什么区别?
zlib:更慢,更高的压缩率
lzo:比zlib更快的压缩/解压缩速度,较差的压缩率,旨在快速
zstd:压缩与zlib相当,具有更高的压缩/解压缩速度和不同的比率级别
差异取决于实际数据集,不能用单个数字或建议来表示。对于一般应用,lzo似乎给出了令人满意的结果。
查看压缩类型和压缩比
btrfs-compsize 软件包能获取一个文件列表 (或一整个 Btrfs 文件系统),并测量出它们使用的压缩类型和其有效压缩比。