我想将 250GB ext4 分区缩小到 200GBresize2fs.
该df
工具显示分区已填满约 40%。所以,我想我至少可以将分区缩小到那个水平。
然而,当我尝试使用 缩小分区时resize2fs
,它失败了。它表示缩小的分区大小“小于最小值”。
我认为这是因为分区仍然有以前删除的文件的痕迹,所以resize2fs
认为它们仍在分区上,而收缩可能意味着丢失这些数据,从而拒绝收缩分区。
所以我的问题是:
- 我怎样才能
resize2fs
意识到分区确实有 60% 是空的,以便我可以缩小它? - 有什么方法可以重新分配已使用的块或类似的东西吗?
笔记:我是一位经验丰富的 Xubuntu 用户。
答案1
resize2fs
不关心你删除的数据。如果它拒绝将文件系统缩小到 200 GiB,那是因为它认为需要更多空间来存储调整大小后的文件系统结构或执行调整大小操作本身。你可以看到详细信息在这里(假设你能读懂C);总之:
- 给定 inode 数量,文件系统需要足够的空间来存储所需数量的组描述符;
- 需要足够的空间来存储文件中的数据;
- 调整大小操作需要额外的 inode 表用于其后台操作,以确保调整大小成功完成;
- 每个索引节点组都会产生一些开销,必须考虑这些开销(并且可能会影响数据在组之间分割的方式,需要更多的组,从而产生更多的开销);
- 需要保留空间以允许范围树在必要时增长,这可能会导致大量开销(特别是在调整大小时,如果文件系统部分中有大量数据需要清除)。
还增加了一些额外的捏造开销(文件系统工具往往非常安全)。
您可以通过运行来了解您的文件系统可以缩小到多小resize2fs -P
。resize2fs -M
会自动使其尽可能小。
答案2
就我而言,问题是块设备正在使用中,但由于某种未报告的原因,我卸载了文件系统,然后关闭使用它的 libvirt-lxc 虚拟机,然后它更改了错误消息,最后让我调整它的大小