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 表示元数据的选项。
玩平衡命令,它应该会有所帮助。
查看输出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 文件系统的最佳方式。幸运的是,您可以重新平衡整个文件系统以使其重新执行所有分配。
一如既往,使用备份。