我将 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 文件系统的最佳方式。幸运的是,您可以重新平衡整个文件系统,使其重新进行所有分配。
与往常一样,使用备份。