btrfs 和缺少可用空间

btrfs 和缺少可用空间

我将 ext4 分区转换为 btrfs,然后删除了保存子卷。然后我在 fstab 文件中启用了文件系统的压缩 (lzo),到目前为止一切都正确。

然后我使用带有参数 -c 的碎片整理命令强制压缩所有文件,以便将新的压缩应用于所有文件。

在执行此操作时,我注意到我的 SSD 已完全填满 - 在我拥有 6GB 的可用空间之前。没有剩余空间。

easteregg@x201s:~$ btrfs fi df /
Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB

easteregg@x201s:~$ df -ha
Filesystem        Size  Used Avail Use% Mounted on
/dev/sda1          75G   60G  852M  99% /

那么现在。我怎样才能重新获得可用空间。我原本希望通过 lzo 压缩获得更多空间。现在!

fs 已正确安装。

easteregg@x201s:~$ mount
/dev/sda1 on / type btrfs (rw,noatime,ssd,compress=lzo)

有什么想法可以解决这个问题吗?

答案1

我知道这个问题已经很老了 - 但是从今天起,balance 命令解决了这个问题:

在转换过程中,会占用大量空间来移动内容。一旦分配,它将不再显示为“空闲”或“未分配”。要解决此问题,只需启动平衡

btrfs balance start "path"

您还可以告诉 balance 命令,只平衡用于特定百分比的块 - 例如 0% 意味着块是空的:

btrfs balance start "path" -dusage=0 -musage=0

参数-d表示数据的选项。参数-m表示元数据的选项。

使用平衡命令,它应该会有所帮助。

答案2

查看输出btrfs fi df

Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB

部分total是分配的空间,而used是 btrfs 实际使用的空间。total和之间的差值used(大约 15 GB)就是您丢失的空间。如您所见,它已被分配给元数据块。

我对 btrfs 只是业余爱好,但我认为 ext4 转换不是创建布局良好的 btrfs 文件系统的最佳方式。幸运的是,您可以重新平衡整个文件系统,使其重新进行所有分配。

与往常一样,使用备份。

相关内容