btrfs和缺少的可用空间


8

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

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

这样做的时候,我注意到我的SSD已完全装满-在我有6Gig的可用空间之前。不,我一无所有。

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)

任何想法如何解决此问题?


我现在明白了:您不能进行在线重新平衡。这就解释了为什么对我没有任何作用。因此,我刚刚启动了救援系统,并重新平衡了整个磁盘,然后执行了启用压缩的碎片整理命令。现在我有大约17个演出的空闲空间!不错:)
Easteregg

1
最佳做法是,仅保留少量快照并删除不必要的快照,以避免浪费卷上的空间,因为btrfs是写时复制文件系统,随着时间的流逝,将更改越来越多的数据块,从而使快照占据磁盘上越来越多的空间。
特里·王

2
另请参阅此问题该问题有详尽的解释和有用的注释。
ignis

Answers:


8

我知道这个问题很旧-但直到今天,balance命令解决了这些问题:

在转换过程中,将分配大量空间以将内容移入其中。分配后,它将不再显示为“免费”或“未分配”。要解决这个问题,只需开始一个平衡

btrfs balance start "path"

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

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

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

玩balance命令,应该会有所帮助。


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

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

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

与往常一样,请使用备份。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.