收起左侧

飞牛-存储空间中容量详情中的其他文件优化方法

3
回复
479
查看
[ 复制链接 ]

1

主题

2

回帖

0

牛值

江湖小虾

2026-5-27 20:57:10 显示全部楼层 阅读模式
为什么“其他”空间会越来越大?
Btrfs 的写时复制(CoW)特性意味着每次修改文件时,系统不会覆盖原数据,而是将新数据写入新的数据块。导致“其他”空间膨胀的原因通常有两个:
  • 文件碎片化: 频繁修改的大文件(如虚拟机镜像、数据库、BT下载文件)会产生大量碎片,占用额外开销。
  • 快照(Snapshots)滞留: 这是最常见的原因。如果您开启了定时快照,当文件被修改或删除后,由于快照仍“锁定”着旧版本的数据块,这部分空间就无法被释放,在存储空间详情里往往会被归类为“其他”。

Btrfs 维护命令备忘录
在官方图形化菜单上线之前,您可以保存以下这些核心命令。只需通过 SSH 登录系统即可执行(挂载点是 /vol1):

1. 数据完整性校验 (Scrub)校验数据一致性并自动修复


# 开始后台校验sudo btrfs scrub start /vol1# 查看校验进度或结果sudo btrfs scrub status /vol1



2. 碎片整理与透明压缩 (Defragment & Compress)如果数据完整性良好,您可以对目录进行碎片整理,并强制启用压缩(例如使用 zstd 算法)来腾出空间:
Bash

# 递归(-r)整理碎片,显示详细信息(-v),并使用 zstd 算法压缩(-czstd)sudo btrfs filesystem defragment -r -v -czstd /vol1


注意:对带有大量快照的目录进行碎片整理,可能会打断快照与原文件的共享数据块,反而导致空间占用短暂增加。建议在执行前清理不必要的旧快照。

3. 空间平衡 (Balance)有时磁盘显示满了,但实际上是因为 Btrfs 的“数据块组(Block Groups)”分配不均。回收那些使用率极低的块组也能释放空间:
Bash

# 只重新平衡使用率低于 10% 的数据块,速度快且安全sudo btrfs balance start -dusage=10 /vol1


命令执行完后,其他空间已经为0了。






收藏
送赞 3
分享

1

主题

2

回帖

0

牛值

江湖小虾

2026-5-27 20:58:26 楼主 显示全部楼层
我自己亲测 没有问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

5

回帖

0

牛值

江湖小虾

2026-6-3 22:47:50 显示全部楼层

找了好久方法 确实有效 tql大佬

0

主题

4

回帖

0

牛值

江湖小虾

2026-6-6 03:32:03 显示全部楼层

总结

Btrfs 文件系统的“其他”空间(Other Space)可能会随时间增长,主要原因包括:

  1. 文件碎片化:频繁修改大文件(如虚拟机镜像、数据库、下载的文件)会产生碎片,占用额外空间。
  2. 快照滞留:旧快照会锁定数据块,导致无法释放空间,通常被归类为“其他”。

维护命令

通过 SSH 登录系统并挂载点 /vol1 执行以下命令:

1. 数据完整性校验(Scrub)

  • 校验数据一致性并自动修复:
    sudo btrfs scrub start /vol1  
    
  • 查看校验进度或结果:
    sudo btrfs scrub status /vol1  
    

2. 碎片整理与压缩(Defragment & Compress)

  • 递归整理碎片、启用 zstd 压缩(注意:可能打断快照共享数据,先清理旧快照):
    sudo btrfs filesystem defragment -r -v -czstd /vol1  
    

3. 空间平衡(Balance)

  • 重新平衡使用率低于 10% 的数据块组(释放“其他”空间):

    sudo btrfs balance start -dusage=10 /vol1  
    

    效果:执行后,“其他”空间可能归零(如文中提到的情况)。


使用建议

  • 定期运行 scrub 确保数据完整性。
  • 在进行碎片整理前,删除不必要的旧快照,以避免临时空间增长。
  • 使用 balance 命令释放因块组分配不均导致的“其他”空间。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则