btrfs 和缺少可用空间

eas*_*egg 9 filesystem btrfs compression disk-usage

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

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

这样做时,我注意到我的 ssd 已经完全填满了 - 在我有 6gigs 的可用空间之前。不,我一无所有。

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
Run Code Online (Sandbox Code Playgroud)

easteregg@x201s:~$ df -ha
Filesystem        Size  Used Avail Use% Mounted on
/dev/sda1          75G   60G  852M  99% /
Run Code Online (Sandbox Code Playgroud)

所以现在。我怎样才能重新获得我的可用空间。由于 lzo 压缩,我希望获得更多空间。现在!

fs 已正确安装。

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

任何想法如何解决这个问题?

小智 9

我知道这个问题很老 - 但截至今天, balance 命令解决了这个问题:

在转换过程中,大量空间将被全部覆盖以将东西移动到其中。分配后,它将不再显示为“空闲”或“未分配”。要解决这个问题,只需开始平衡

btrfs balance start "path"
Run Code Online (Sandbox Code Playgroud)

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

btrfs balance start "path" -dusage=0 -musage=0
Run Code Online (Sandbox Code Playgroud)

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

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

  • 对于一个古老的回答,一个更古老的问题,今天这救了我。谢谢。 (2认同)

ram*_*lök 5

查看输出btrfs fi df

Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB
Run Code Online (Sandbox Code Playgroud)

total部分是分配的空间,同时used是实际使用BTRFS。(大约 15 GB)之间的差异是您缺少的空间。totalused如您所见,它已经被分配给元数据块。

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

一如既往,使用备份。