fir*_*iku 10 btrfs defragmentation copy-on-write
如果您打开 的defragment
部分btrfs-filesystem(8)
,您将看到以下开发人员留下的不祥铭文:
警告:使用 Linux 内核版本 < 3.9 或 ? 3.14-rc2 以及 Linux 稳定内核版本?3.10.31,?3.12.12 还是?3.13.4 将打破 COW 数据的 ref-links(例如使用 复制的文件
cp --reflink
、快照或去重数据)。根据断开的引用链接,这可能会导致空间使用量的显着增加。
这听起来很可怕。一个卖点btrfs
是它能够在不复制所有内容的情况下创建快照。我主要创建只读快照。
只读快照的文件是否也算作“COW-data”,或者父子卷重复数据删除会在不使磁盘空间膨胀的情况下继续存在吗?
只是您指向它的特定实例。所以,如果你有子卷A
和快照S1
以及S2
该子体积A
,然后运行磁盘碎片整理上刚子卷A
将打破它和快照之间的reflinks,但S1
并S2
仍将分享他们彼此最初的任何数据。如果您随后拍摄 的第三个快照A
,它将与 共享数据A
,但不会与S1
或S2
(因为A
不再与S1
或共享数据S2
)。
鉴于这种行为,在谈论持久快照时,您又会遇到三种潜在情况:
A
在上述解释中仅对子卷进行碎片整理),并按照与快照轮换一致的时间表进行碎片整理。这个想法是defragment
在您拍摄快照之前,并且在空间使用和性能之间提供良好平衡的频率。作为一般规则,如果您采用这条路线,如果您正在执行每日或每周快照,则首先每月进行一次碎片整理,如果不是,则每四个快照进行一次,然后根据这对您的影响来调整间隔空间使用。来源:Btrfs 邮件列表,由 Spacedog 引用。
根据我的反复试验经验,btrfs 碎片整理快照(使用新的 zstd 压缩)导致 100% 独占和 0.00 字节的共享数据。
之前btrfs defragment
:
# btrfs filesystem du -s /mnt/btrfs/Backups.backupdb/d2/readonly-snapshot/
Total Exclusive Set shared Filename
1.41GiB 6.27MiB 1.41GiB /mnt/btrfs/Backups.backupdb/d2/readonly-snapshot/
Run Code Online (Sandbox Code Playgroud)
之后btrfs defragment
:
# btrfs filesystem du -s /mnt/btrfs/Backups.backupdb/d2/readonly-snapshot/
Total Exclusive Set shared Filename
1.42GiB 1.42GiB 0.00B /mnt/btrfs/Backups.backupdb/d2/readonly-snapshot/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9347 次 |
最近记录: |